Skip to content

Commit 94e811f

Browse files
kundadebdattaealsurneildshsourabh1007aavasthy
authored
[Internal] Msdata/Direct: Refactors msdata/direct branch with latest v3 master and Cosmos.Direct v3.30.4 (#3776)
* [Internal] Client Telemetry: Fixes tests leaking environment variables (#3517) * Adding log lines * More logs * Debugging further * Removing other builds * And more debugging * Wrong build parameters * Wrong category * Removing noise * Fixing test * Adding utils * Adding test with client telemetry enabled * Fixing leak in Client Telemetry Tests * Reenabling test * cpu monitor initialization * Adding name details * Undo another file * Updated change log and bumped up the version. (#3526) * Query: Fixes performance regression on target partition on some ORDER BY queries with continuation (#3525) * Revert performance regression caused by #1289 * Remove irrelevant comment * Add a test for validating formatted filters for the target partition * [Internal] AI Integration: Adds SubStatusCode Information in attributes (#3533) * wip * regenerated baseline * add test * fix test Co-authored-by: Sourabh Jain <sourabhjain@microsoft.com> * Diagnostics: Removes unused properties and reduces size (#3519) * Remove starttime and id from diagnostics string * Remove starttime and id from diagnostics string * Update xml files for trace baseline tests * Update xml files for trace baseline tests * Update xml files for trace baseline tests * Whitespaces update * Changed starttime position based on code review Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * [Internal] docs: Add address caches conceptual flow (#3534) * Rough draft * Some more changes * Adding a new section * Some more refinement * Some changes Lets get the feedback * Some MISC changes * Release: Adds SDK version and changelog for 3.31.2 (#3546) * Bumped SDK version and changelog * Added contracts file for 3.31.2 * [Internal] Documentation: Removes invalid comment from ReadThroughputAsync (#3516) * [Internal] nugetconfig: Removes specific overrides (#3551) * Query: Fixes partition range evaluation for spatial queries (#3495) * Initial commit * Update. * Pull/Rebase * Addressed comments. * Build fix * [Internal] Documentation: Refactors cache content on its own document (#3554) * Add cache file * Moving content away * [Internal] Emulator unit tests: Adds IdEncoding unit tests for ComputeGateway (#3556) * Adding IdEncoding unit tests for ComputeGateway * Reacting to code review feedback * Updating md files * Change Feed Processor: Adds support for Resource Tokens (#3566) * Adding rid parsing * Test * Removing dead code * Contract update * [Internal] AI integration: Refactor code how container and database name is flowing to opentelemetry module (#3532) * wip * WIP * Revert "WIP" This reverts commit 71275de54b9e67fa54a37e79d450b9597e173934. * Revert "wip" This reverts commit 586fa9865cc3f40dabd7ef90fb3e0cf499a045bc. * wip add containe and database info * redesign how container and database name information flows into opne telemetry data * test fix * fix test * fix tests * fix typos * baseline test fix Co-authored-by: Sourabh Jain <sourabhjain@microsoft.com> * [Internal] AI Integration: Adds a new flag in DistributedTracingOptions (#3562) * add flag in diagnostic options * test fixes * rename variable * test fix * add validation * fix baseline * test fix Co-authored-by: Sourabh Jain <sourabhjain@microsoft.com> * Query: Fixes default to BadRequestException in case of internal errors in ServiceInterop (#3399) * Don't default to BadRequestException in case of errors in ServiceInterop * Incorporate code review feedback * Fix build error * fix up failing test * [Internal] Query: Adds unit tests for Merge/Split implementation with OptimisticDirectExecution pipeline (#3510) * Added tests to test different aspects of merge/split support with OptimisticDirectExecution pipeline. Tests check for gone exception handling, pipeline switching etc. * Added gone exception simulation tests. * Added new tests and improved test infra * Removed ParalleContEvocation test. Fixed comments * Removed CreateParallelCrossPartitionPipelineStateAsync() as it is not being used anymore * Removed while loop in CreateDocumentContainerAsync() * Fixed comments. * Updated ExecuteGoneExceptionOnODEPipeline() * Added type Assert for ExecuteGoneExceptionOnODEPipeline() * Updated OptimisticDirectExecution pipeline abbreviation * Updated TestBaseline folder with new xml * Client Retry Policy: Adds HTTP timeouts with request-level cross-region retry (#3555) * Fixes to ReadThroughputAsync for databases with no provisioned throughput and null as request options * fixed failure to ReadReplaceThroughputResponseTests * Added Stream Method * Ran UpdateContract.ps1 * Encryption implemtation * Fixed spelling error * Update Microsoft.Azure.Cosmos.Encryption/src/EncryptionDatabase.cs Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * Variable name change * Update Microsoft.Azure.Cosmos/src/Resource/Database/Database.cs Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * Suggested Changes and fixes * Removed manufactured ResponseMessage + nits * Simplified PR * nits * nits * initial changes TODO: Update tests * updated tests * nits' * Ran UpdateContracts.ps1 * nits + requested changes * Delete NuGet.Config * Update Microsoft.Azure.Cosmos/src/HttpClient/CosmosHttpClientCore.cs Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * Update Microsoft.Azure.Cosmos/src/HttpClient/HttpTimeoutPolicy.cs Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * Update Microsoft.Azure.Cosmos/src/HttpClient/HttpTimeoutPolicy.cs Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * Update Microsoft.Azure.Cosmos/src/HttpClient/HttpTimeoutPolicy.cs Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * Use Cosmos Exception Factory, Simplified Tests * removed unused code * nits: removed unused code * removed unused code Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> Co-authored-by: Nalu Tripician <ntripician@microsoft.com> * Documentation: Fixes EUAP in Comments (#3579) * Query: Fixes incorrect FeedResponse.Count when result contains undefined elements (#3574) * Do not maintain an independent count on QueryResponse that can go out of sync * Add more test coverage for QueryResponse<T>.Count * Output the correct count from CosmosElementSerializer when the input contains CosmosUndefined * Add untyped tests for CosmosUndefined * Remove commented code * removed allr eference (#3581) Co-authored-by: Sourabh Jain <sourabhjain@microsoft.com> * Trace: Fixes Tracing/diagnostics hour-times to 24Hours (#3577) * Trace: Fixes Tracing/diagnostics hour-times to 24Hours * fixing baseline tests Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * AI Integration: Adds cosmetic fixes (#3576) * wip * status code int and internal and client kind activity * remove unused imports * update baselines * fix test * fixed baseline tests * fix tests * update base tetss Co-authored-by: Sourabh Jain <sourabhjain@microsoft.com> * Query: Adds ALL Scalar Expression (#3509) * Add SqlAllScalarExpression to v3 DOM * updated generated parser files * Parsing for ALL * Added tests for ALL and baselines * Added more tests * added new test, cleanup * cleaning & fix typos * fixed typo * Added new baseline test file names to csproj file * renamed AggregateAll to AggregateSubquery to accomodate FIRST and LAST later * Added keywords for 'left' and 'right' and respective function calls * fixed bug from last commit * cleaning * replace tabs with spaces * cleaning * Release: Adds API contracts for 3.31.2-preview (#3586) * [Internal] sccignore: Adds a .sccignore file to apply an exception for artifacts configuration issues (#3589) * [Internal] PermissionTests: Adds CosmosPermissionTests Coverage (#3593) * Ensures that both Direct and Gateway connection modes are tested * Validates that container read works with PermissionMode.Read (test was previously only validating that Delete was blocked - i.e. the negative case). * [Internal] AI Integration: Refactors to Operation prefix and add tests (#3583) * add tests for otel and custome listener * clean up * null pointer fix * fix tets * handle event generation also at operation level * added documentation * wip * change event sourcename * rename event Name Co-authored-by: Sourabh Jain <sourabhjain@microsoft.com> * [Internal] HttpTimeoutPolicy: Removes Data Plane Writes from being able to be retried (#3607) * data plane writes no longer failover on timeout * removed duplication of test\ * [Internal] Performance Testing: Adds Distributed Tracing option in benchmarks (#3611) Co-authored-by: Sourabh Jain <sourabhjain@microsoft.com> * [Internal] Benchmark: Refactors code to make Memory Stream capacity configurable (#3624) Co-authored-by: Sourabh Jain <sourabhjain@microsoft.com> * add new LatestVersion changefeed mode that has same behavior as Incremental; renamed FullFidelity to AllVersionsAndDeletes (#3596) * Query: Fixes handling of CosmosUndefined, CosmosGuid and CosmosBinary in unordered DISTINCT (#3632) * Handle CosmosUndefined, CosmosGuid and CosmosBinary in DistinctMap.UnorderedDistinctMap * Address code review feedback and remove unnecessary allocations from DistinctQueryPipelineStageTests * [Internal] Subpartitioning: Adds updates to test coverage for subpartitioning (#3618) * updates to test coverage for subpartitioning * bug fixes * now useses Assert.ThrowsException * Seperated into multiple tests for clarity * Put MultiHash test into seperate test file * nit * [Internal] ContainerProperties: Fixes version reset when setting PartitionKeyPath (#3637) * Remember previous value * test * [Internal] AI Integration: Adds CorrelationId and Activity Id Attributes for query operation (#3630) * add activityid in Otel attributes * added correlation id * operation type fix * remove test changes * test fix * fix baseline test * rename correlationId * fix tests again * include only not null attributes in test * fixed tests * changefeedxml * test fix * ordering activity in operationname oerder * fix test * review comments * refator header getter setter * clean up Co-authored-by: Sourabh Jain <sourabhjain@microsoft.com> * Documentation: Fixes CosmosClientBuilder.WithConnectionModeGateway parameter description (#3643) * Fixed CosmosClientBuilder.WithConnectionModeGateway documentation * Update Microsoft.Azure.Cosmos/src/Fluent/CosmosClientBuilder.cs Co-authored-by: Ruben Bartelink <ruben@bartelink.com> Co-authored-by: Augsten <aaugsten@harbourvest.com> Co-authored-by: Ruben Bartelink <ruben@bartelink.com> * Upgrade Resiliency: Refactors Implementation for Opening Rntbd Connections to Backend Replicas in Direct Mode. (#3640) * Code changes to refactor implementations for opening connections to all replicas. Fixed test failures due to Direct package upgrade. * Code changes to add poland central region as a part of Regions.cs * Code changes to update contract to reflect new regions. * Revert "Code changes to update contract to reflect new regions." This reverts commit f171b3c1c9889043556ddf96bcd33ccd79565ad9. * Revert "Code changes to add poland central region as a part of Regions.cs" This reverts commit 1aafbf18f6d80e9a92baa301b6b23cf065e4b155. * [Preview] AI integration: Adds IsDistributedTracingEnabled flag as public API to enable/disable this feature (#3598) * make api public for preview * add null check * fix tests * singleton listener initialization * assign null to listeners * fix test * concurrent bag in listener * renamed to LatencyThresholdForDiagnosticEvent * renamed to IsDistributedTracingEnabled * updated xml * update contract * made latency threshold flag internal * fix test * regeneratebaselines * update documentation * rename builder api * add docs * updated contracts and all * doc update * import cleanup Co-authored-by: Sourabh Jain <sourabhjain@microsoft.com> * Change Feed Processor: Fixes behavior with StartTime on Local (#3645) * To UTC * Test * [Internal] Client Telemetry: Refactors code to use base useragent string (#3653) * [Internal] AI Integration: Refactors code to rename event name (#3648) * first draft * rename event name * updated xmls * update files * Region Availability: Adds Poland Central Region For Public Usage (#3656) * Client Encryption: Adds validation code to check if the Key Vault URI provided in wrap metadata is a valid key identifier. (#3642) * Check if the key vault uri provided is a valid Kid * test fix. * update changelog and build props * Update Directory.Build.props * Update Microsoft.Azure.Cosmos.Encryption.csproj * Fixed preview version * Refactor * Update EncryptionDatabaseExtensions.cs * [Internal] Query: Adds Split Support for Ode (#3572) * Added tests to test different aspects of merge/split support with OptimisticDirectExecution pipeline. Tests check for gone exception handling, pipeline switching etc. * Added gone exception simulation tests. * Added new tests and improved test infra * Removed ParalleContEvocation test. Fixed comments * Removed CreateParallelCrossPartitionPipelineStateAsync() as it is not being used anymore * Removed while loop in CreateDocumentContainerAsync() * Fixed comments. * Updated ExecuteGoneExceptionOnODEPipeline() * Added type Assert for ExecuteGoneExceptionOnODEPipeline() * Replaced try-catch with if statement in MoveNextAsync() * Added delegate to access TryCreateCoreContextAsync() * Added check to confirm Ode pipeline is not called in fallback plan * Updated method name from OptimisticDirectExecutionContext() to TryCreateOptimisticDirectExecutionContext() * Using delegate instead of Func<>. * Ode fallback plan always calls Specialized pipeline * Using ServiceInterop/Gateway to get QueryPlan for Specialized Pipeline * Added new test to check handling of failing fallback pipeline * Code cleanup * Added logic for handling non ODE continuation tokens * Moved delegate away from member variables * Added tests for Merge case * Updated method names * Added checks for tryCatch * Updated SetCancellationToken() to use Try * Updated TryUnwrapContinuationToken() * Removed changes in FlakyDocumentContainer.cs * Removed unused imports * Updated comments * Fixed comments and cleaned up test code * Added CosmosElement null check in TryUnwrapContinuationToken() * Removed FlakyDocumentContainer.cs from pull request * Removed unused imports * Updated TryUnwrapContinuationToken() * Update MoveNextAsync() call in OptimisticDirectExecutionQueryBaselineTests.cs * Made MergeTestUtil.IsFailedFallbackPipelineTest a readonly property * Added IsPartitionSplitException() overload to take CosmosElement * Fixed bug regarding syntax error queries * [Internal] AI Integration : Fixes operation type for batch (#3660) * fix op type * fix conflict * CosmosClientOptions: Adds ServerCertificateCustomValidationCallback for Http and TCP (#3636) * Adding ServerCertificateCustomValidationCallback in clientoptions * Adding Server callback for Http and fixing tests * Fixing failing E2Etests * Resolving merge conflicts * Running update contracts script * Running Update contracts script * Running Update contracts script * Reverting the v3 version change * Update based on review comments * Added unit tests * Added remarks for callback delegate * Ran update contracts script * Update based on review comments * Ran update contracts script * Updated unit tests * Making ssl validation function private * Updating test files * Update remarks for sslvalidation public contract * Added emulator tests for server validation Co-authored-by: Debdatta Kunda <87335885+kundadebdatta@users.noreply.github.com> * Query: Adds EnableOptimisticDirectExecution flag to QueryRequestOptions (#3664) * Added new flag to QueryRequestOptions to allow customers to use Ode pipeline * Updated comments in QueryRequestOptions.cs * Renamed enabledOde to enableOde * Removed default setting for EnableOptimisticDirectExecution * [Internal] Tests: Removes Direct/HTTPS emulator tests (#3679) * Removing direct/https tests * mppreference * [Internal] Benchmark : Fixes issue with dependency on Cosmos Project (#3673) * users/sourabhjain/benchmarkfix * update pipeline * Revert "users/sourabhjain/benchmarkfix" This reverts commit 81b48f0. * fix compilation error * add parama for preview pkg also --------- Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * LocalQuorum: Adds Quorum reads on Consistent Prefix Accounts (#3680) Co-authored-by: DESKTOP-ED57J7H\Prashanth Venkataram <vprashanth1987@hotmail.com> * 3.32.0: Adds new SDK version and contract files (#3687) * 3.32.0: Adds new SDK version and contract files * 3.32.0: Adds new SDK version and contract files * Updating changelog version * Updating changelog version * Added more commits to changelog and updated release contract * Added documentation tags PR in changelog * Updated changelog based on reviews * Updated PR decsription in changelog * Update changelog.md Updated full fidelity change description Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> --------- Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * [Internal] Samples: Adds change feed pull model samples (#3646) * add change feed pull samples * refactor appsettings validation * addressing pr comments * move task delay * update sample to use latest change feed mode names --------- Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * [Internal] Tests: Refactors emulator CI (#3688) * [Internal] GitHub Template: Adds needs-investigation label (#3708) By default, all "Bug report" issues will have "needs-investigation" * Adding fabric bot action (#3709) * CosmosNullReferenceException: Refactors CosmosNullReferenceException to pass along InnerException property on parent NullReferenceException (#3713) * Passed inner exception details to NullReferenceException ctor when instantiating CosmosNullReferenceException. * Added unit tests. * Addressed PR feedback. * [Internal] PriorityRequests: Fixes header value (#3714) Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * [Internal] Query: Adds single physical partition check for OptimisticDirectExecution queries (#3699) * Added single physical partition check for Ode queries. Updated test infrastructure for Ode emulator tests too. * Refactored emulator tests to have all the test cases at the top of the file * Updated TryGetTargetRangeOptimisticDirectExecutionAsync() * Uodated logic on how many times CreateIngestQueryDeleteAsync() gets called * Added debug asserts for partitionKeyDefinition * Added pageSizeOptions parameter in CreateInput() in EmulatorTests * Fixed comments * [Internal] CTL: Fixes Reservoir Sampling Logic (#3712) * Code changes to fix the reservoir sampling logic in CTL * Code changes to modify help text on reservoir type. * Code changes to address minor code refactor. * Diagnostics: Adds startDate in Summary (#3707) * Adding start date * Updated trace files * PR comment * Committing missing tests --------- Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * [Internal] Client Telemetry: Adds network information in the payload (#3691) * first draft * clean code * add test * fix test * add replica info collection * fix substatuscode and operation type error * fix code * collect http infor in cache also * message to stacktrace * remove rntbd recording from cache * print proper exception message * fix test * cleanup unused code and added few status codes in ignore list * fixed all exception logging * refactor conditions * fix tests * Documentation: Fixes Database.ReadAsync description (#3457) * Documentation: Modify retry time to timespan Modify retry time in seconds to timespan of parameter maxRetryWaitTimeOnThrottledRequests (Method: [WithThrottlingRetryOptions](https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.cosmos.fluent.cosmosclientbuilder.withthrottlingretryoptions?view=azure-dotnet#feedback)) Resolves Azure/azure-sdk-for-net#29567 * Documentation: Fixes DeleteItemAsync Example Documentation: Fixes DeleteItemAsync Example * Documentation: Fixes ItemRequestOptions Example Documentation: Fixes ItemRequestOptions Example * Documentation:Update Database.ReadAsync description Documentation: Update Database.ReadAsync description * Documentation: Update Database.ReadAsync description Documentation: Update Database.ReadAsync description * Documentation: Updated ToStreamIterator example Documentation: Updated ToStreamIterator example * Modified StreamIterator section * Update Microsoft.Azure.Cosmos/src/Resource/Database/Database.cs Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * Remarks correction * Revert the StreamIterator changes Revert the StreamIterator changes Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> Co-authored-by: Kiran Kumar Kolli <kirankk@microsoft.com> * Upgrade Resiliency: Adds Implementation for Validating the Unhealthy Backend Replicas in Direct mode (#3631) * Code changes to implement replica validation in dotnet v3 sdk. * Cosmetic changes to add inline code comments. * Code chages to address review comments. * Code changes to cover a scenario for async cache. * Code changes to refactor async non-blocking cache code. * Code changes to address minor review comments. --------- Co-authored-by: Kiran Kumar Kolli <kirankk@microsoft.com> * ReadMany: Fixes BadRequest when using Ids with single quotes (#3732) * Use parameters * Emulator tests * Release: Adds SDK version and changelog for 3.32.1 (#3733) * version bump * Contracts * [Internal] Build: Fixes static tool analysis versions (#3736) * Update Binskim and follow warnings * Fixing task * More version bumps * binskim args * Padding * policheck * postanalysis parameters * analysis settings * Query: Fixes System.ArgumentException when using PartitionKey.None on x86, Linux or in Optimistic Direct Execution (#3730) * Minor clean up of OptimisticDirectExecutionQueryTests * More minor cleanup in OptimisticDirectExecutionQueryTests * Add emulator tests for the bypass query parsing scenario * Handle PartitionKey.None while creating QueryIterator. This is a workaround for the PartitionKeyInternal.None not following its own contract * Fix up to correctly handle PartitionKey.None using the CachedContainerQueryProperties * Add more tests where PartitionKey.None maps to PartitionKey.Undefined --------- Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * Query: Adds FIRST and LAST Scalar Expressions (#3629) * Add FIRST and LAST objects and update visitors * add FIRST LAST evaluation and update offline engine visitors * Add FIRST and LAST to parser * update another visitor * Fix typo * fix typo * added new tests and baselines * cleaning * cleaning --------- Co-authored-by: neildsh <35383880+neildsh@users.noreply.github.com> Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * Subpartitioning: Adds support for Prefix Partition Key searches for sub partitioned containers (#3109) * 1st round of changes to support subpartitioning for ChangeFeed * name change and moved a method to FeedRangePartitionKey * support for prefix partition change feed and query including unit and emulator tests. need to verify using FeedRange with QueryIterator * splitting out unit tests from emulator tests * 1st round of changes to support subpartitioning for ChangeFeed * name change and moved a method to FeedRangePartitionKey * support for prefix partition change feed and query including unit and emulator tests. need to verify using FeedRange with QueryIterator * splitting out unit tests from emulator tests * moved logic to choose for prefix partition query and change feed * additional conditional to check for MultiHash partitionkeydefinition kind * removed unnecessary using * cleanup * unnecessary using * removed PREVIEW from proj * unit tests for ResolveFeedRangeBasedOnPrefixContainerAsync * change access modifier * since I changed to static, needed to fix tests * dealing with some testing nits * removed Console.Writeline * slight change in test use containerProperties and partitionKeyDefinition * big fix for resolve feedrange, changes to error behavior, added additional test coverage * test changes * ran updateContracts.ps1 * reverting to 3ad5309 * Ran Update Contracts * ran updateContracts.ps1 * UpdateContracts.ps1 * updatecontracts * removed bad check from test, removed changes from updatecontracts.ps1 * revert UpdateContracts changes * Reverting to 756a123 * removed accidental change from changelog * removed unwanted change from Directory.build.props * added test clean up * removed console.writelines * updates to query test * removed preview flag * ran UpdateContrats.ps1 * no longer recread feedRange for queries unless using prefix pk * simplified if statement * fixed bug --------- Co-authored-by: Nalu Tripician <nalutrip@icloud.com> * [Internal] ClientTelemetry: Adds logic to limit payload size to 2 MB (#3717) * first draft wip fix test and logic * resolve conflicts * limit 2 mb * ad callback * fix tests * code refactor * cosmos json to newtosoft json * clean up files * fix logging to argumrnt based * code refactor * add null check * Query: Fixes regression from LINQ custom serializer fix (#3749) Co-authored-by: Minh Le <leminh@microsoft.com> Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> * [Internal] LocalQuorum: Refactors override (i.e. strong) to allow from any account consistency (#3753) - Localquorum override (i.e. strong) to allow from any account consistency - Facilitates no-downtime downgrade of existing accounts (i.e. existing Strong/bounded accounts migration to Eventual) * Release: Adds SDK version and change log for 3.32.2 (#3752) * version bump * contract * changelog * version bump * Fixing changelog text * Add another PR * Subpartitioning: Adds APIs for public release and increase REST API version (#3763) * initial commit, Http version issues still needs to be resolved * updateContracts + update Http Version * updateded version in test * update contracts * requested changed * changed name in comments to subpartitioning from multihash * undid changes to TestLiteralSerialization.xml * removed changes to non API.json files * removed non XXXAPI.json file changes * changed verbage on public comments * changed error message to reflect verbage change * Change Feed Processor: Fixes LeaseLostException leaks on notification APIs for Renew scenarios (#3775) * Adding cases * Tests * Upgrade Resiliency: Refactors GatewayAddressCache to Mark TransportAddresses to Unhealthy when Connection Reset Event Occurs (#3768) * Code changes to mark the transport uri to unhealthy for which a connection reset event occures through the connection state listener. * Code changes to bump up the direct version. * Code changes to clean up Gateway Address Cache. * Code changes to fix pipeline build. * Code changes to fix serilization test failures. * Code changes to add force refresh to the gateway function callback delegate. * Code changes to sync up msdata direct. * Removing direct dependency from documents.test. --------- Co-authored-by: Matias Quaranta <ealsur@users.noreply.github.com> Co-authored-by: neildsh <35383880+neildsh@users.noreply.github.com> Co-authored-by: Sourabh Jain <sourabh.jain.107@gmail.com> Co-authored-by: Sourabh Jain <sourabhjain@microsoft.com> Co-authored-by: aavasthy <113193425+aavasthy@users.noreply.github.com> Co-authored-by: Kiran Kumar Kolli <kirankk@microsoft.com> Co-authored-by: Aditya <adityasa@users.noreply.github.com> Co-authored-by: Fabian Meiswinkel <fabian@meiswinkel.com> Co-authored-by: akotalwar <94020786+akotalwar@users.noreply.github.com> Co-authored-by: Nalu Tripician <nalutrip@icloud.com> Co-authored-by: Nalu Tripician <ntripician@microsoft.com> Co-authored-by: Pramod Valavala <43602528+PramodValavala-MSFT@users.noreply.github.com> Co-authored-by: Ezra Haleva <115735172+ezrahaleva-msft@users.noreply.github.com> Co-authored-by: Vivek Ravindran <vivekra@microsoft.com> Co-authored-by: Prasad Ullal <36418906+prasadu-microsoft@users.noreply.github.com> Co-authored-by: Philip Thomas <86612891+philipthomas-MSFT@users.noreply.github.com> Co-authored-by: Arthur Augsten <arthuraugsten@gmail.com> Co-authored-by: Augsten <aaugsten@harbourvest.com> Co-authored-by: Ruben Bartelink <ruben@bartelink.com> Co-authored-by: Santosh Kulkarni <66682828+kr-santosh@users.noreply.github.com> Co-authored-by: pravengithub <124255233+pravengithub@users.noreply.github.com> Co-authored-by: DESKTOP-ED57J7H\Prashanth Venkataram <vprashanth1987@hotmail.com> Co-authored-by: Justine Cocchi <jucocchi@microsoft.com> Co-authored-by: Abhijeet Mohanty <mabhijeet1995@gmail.com> Co-authored-by: Achint-Agrawal <45819170+Achint-Agrawal@users.noreply.github.com> Co-authored-by: Nimit Shah <nimit.svnit@gmail.com> Co-authored-by: SaurabhSharma-MSFT <38112130+SaurabhSharma-MSFT@users.noreply.github.com> Co-authored-by: leminh98 <leminh.ams@gmail.com> Co-authored-by: Minh Le <leminh@microsoft.com> Co-authored-by: Nalu Tripician <27316859+NaluTripician@users.noreply.github.com>
1 parent 5addb1c commit 94e811f

File tree

155 files changed

+13524
-3249
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

155 files changed

+13524
-3249
lines changed

Directory.Build.props

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
22
<PropertyGroup>
3-
<ClientOfficialVersion>3.32.0</ClientOfficialVersion>
4-
<ClientPreviewVersion>3.32.0</ClientPreviewVersion>
3+
<ClientOfficialVersion>3.32.2</ClientOfficialVersion>
4+
<ClientPreviewVersion>3.32.2</ClientPreviewVersion>
55
<ClientPreviewSuffixVersion>preview</ClientPreviewSuffixVersion>
6-
<DirectVersion>3.30.2</DirectVersion>
6+
<DirectVersion>3.30.4</DirectVersion>
77
<EncryptionOfficialVersion>2.0.1</EncryptionOfficialVersion>
88
<EncryptionPreviewVersion>2.0.1</EncryptionPreviewVersion>
99
<EncryptionPreviewSuffixVersion>preview</EncryptionPreviewSuffixVersion>

Microsoft.Azure.Cosmos/contracts/API_3.32.1-preview.txt

+1,531
Large diffs are not rendered by default.

Microsoft.Azure.Cosmos/contracts/API_3.32.1.txt

+1,478
Large diffs are not rendered by default.

Microsoft.Azure.Cosmos/contracts/API_3.32.2-preview.txt

+1,531
Large diffs are not rendered by default.

Microsoft.Azure.Cosmos/contracts/API_3.32.2.txt

+1,478
Large diffs are not rendered by default.

Microsoft.Azure.Cosmos/src/ChangeFeedProcessor/LeaseManagement/DocumentServiceLeaseManagerCosmos.cs

+44-4
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,17 @@ await this.leaseUpdater.UpdateLeaseAsync(
190190
if (serverLease.Owner != lease.Owner)
191191
{
192192
DefaultTrace.TraceInformation("Lease with token {0} no need to release lease. The lease was already taken by another host '{1}'.", lease.CurrentLeaseToken, serverLease.Owner);
193-
throw new LeaseLostException(lease);
193+
throw new LeaseLostException(
194+
lease,
195+
CosmosExceptionFactory.Create(
196+
statusCode: HttpStatusCode.PreconditionFailed,
197+
message: $"{lease.CurrentLeaseToken} lease token was taken over by owner '{serverLease.Owner}'",
198+
headers: new Headers(),
199+
stackTrace: default,
200+
trace: NoOpTrace.Singleton,
201+
error: default,
202+
innerException: default),
203+
isGone: false);
194204
}
195205
serverLease.Owner = null;
196206
return serverLease;
@@ -232,7 +242,17 @@ public override async Task<DocumentServiceLease> RenewAsync(DocumentServiceLease
232242
if (serverLease.Owner != lease.Owner)
233243
{
234244
DefaultTrace.TraceInformation("Lease with token {0} was taken over by owner '{1}'", lease.CurrentLeaseToken, serverLease.Owner);
235-
throw new LeaseLostException(lease);
245+
throw new LeaseLostException(
246+
lease,
247+
CosmosExceptionFactory.Create(
248+
statusCode: HttpStatusCode.PreconditionFailed,
249+
message: $"{lease.CurrentLeaseToken} lease token was taken over by owner '{serverLease.Owner}'",
250+
headers: new Headers(),
251+
stackTrace: default,
252+
trace: NoOpTrace.Singleton,
253+
error: default,
254+
innerException: default),
255+
isGone: false);
236256
}
237257
return serverLease;
238258
}).ConfigureAwait(false);
@@ -245,7 +265,17 @@ public override async Task<DocumentServiceLease> UpdatePropertiesAsync(DocumentS
245265
if (lease.Owner != this.options.HostName)
246266
{
247267
DefaultTrace.TraceInformation("Lease with token '{0}' was taken over by owner '{1}' before lease properties update", lease.CurrentLeaseToken, lease.Owner);
248-
throw new LeaseLostException(lease);
268+
throw new LeaseLostException(
269+
lease,
270+
CosmosExceptionFactory.Create(
271+
statusCode: HttpStatusCode.PreconditionFailed,
272+
message: $"{lease.CurrentLeaseToken} lease token was taken over by owner '{lease.Owner}'",
273+
headers: new Headers(),
274+
stackTrace: default,
275+
trace: NoOpTrace.Singleton,
276+
error: default,
277+
innerException: default),
278+
isGone: false);
249279
}
250280

251281
return await this.leaseUpdater.UpdateLeaseAsync(
@@ -257,7 +287,17 @@ public override async Task<DocumentServiceLease> UpdatePropertiesAsync(DocumentS
257287
if (serverLease.Owner != lease.Owner)
258288
{
259289
DefaultTrace.TraceInformation("Lease with token '{0}' was taken over by owner '{1}'", lease.CurrentLeaseToken, serverLease.Owner);
260-
throw new LeaseLostException(lease);
290+
throw new LeaseLostException(
291+
lease,
292+
CosmosExceptionFactory.Create(
293+
statusCode: HttpStatusCode.PreconditionFailed,
294+
message: $"{lease.CurrentLeaseToken} lease token was taken over by owner '{serverLease.Owner}'",
295+
headers: new Headers(),
296+
stackTrace: default,
297+
trace: NoOpTrace.Singleton,
298+
error: default,
299+
innerException: default),
300+
isGone: false);
261301
}
262302
serverLease.Properties = lease.Properties;
263303
return serverLease;

Microsoft.Azure.Cosmos/src/CosmosClient.cs

+1-4
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,8 @@ public class CosmosClient : IDisposable
115115

116116
static CosmosClient()
117117
{
118-
#if PREVIEW
119118
HttpConstants.Versions.CurrentVersion = HttpConstants.Versions.v2020_07_15;
120-
#else
121-
HttpConstants.Versions.CurrentVersion = HttpConstants.Versions.v2018_12_31;
122-
#endif
119+
123120
HttpConstants.Versions.CurrentVersionUTF8 = Encoding.UTF8.GetBytes(HttpConstants.Versions.CurrentVersion);
124121

125122
ServiceInteropWrapper.AssembliesExist = new Lazy<bool>(() =>

Microsoft.Azure.Cosmos/src/Handler/RequestInvokerHandler.cs

+29
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,14 @@ public virtual async Task<ResponseMessage> SendAsync(
161161

162162
if (feedRange != null)
163163
{
164+
if (!request.OperationType.IsPointOperation())
165+
{
166+
feedRange = await RequestInvokerHandler.ResolveFeedRangeBasedOnPrefixContainerAsync(
167+
feedRange: feedRange,
168+
cosmosContainerCore: cosmosContainerCore,
169+
cancellationToken: cancellationToken);
170+
}
171+
164172
if (feedRange is FeedRangePartitionKey feedRangePartitionKey)
165173
{
166174
if (cosmosContainerCore == null && object.ReferenceEquals(feedRangePartitionKey.PartitionKey, Cosmos.PartitionKey.None))
@@ -480,5 +488,26 @@ private static bool IsClientNoResponseSet(CosmosClientOptions clientOptions, Ope
480488
&& clientOptions.EnableContentResponseOnWrite.HasValue
481489
&& RequestInvokerHandler.IsItemNoRepsonseSet(clientOptions.EnableContentResponseOnWrite.Value, operationType);
482490
}
491+
492+
internal static async Task<FeedRange> ResolveFeedRangeBasedOnPrefixContainerAsync(
493+
FeedRange feedRange,
494+
ContainerInternal cosmosContainerCore,
495+
CancellationToken cancellationToken)
496+
{
497+
if (feedRange is FeedRangePartitionKey feedRangePartitionKey)
498+
{
499+
PartitionKeyDefinition partitionKeyDefinition = await cosmosContainerCore
500+
.GetPartitionKeyDefinitionAsync(cancellationToken)
501+
.ConfigureAwait(false);
502+
503+
if (partitionKeyDefinition != null && partitionKeyDefinition.Kind == PartitionKind.MultiHash
504+
&& feedRangePartitionKey.PartitionKey.InternalKey?.Components?.Count < partitionKeyDefinition.Paths?.Count)
505+
{
506+
feedRange = new FeedRangeEpk(feedRangePartitionKey.PartitionKey.InternalKey.GetEPKRangeForPrefixPartitionKey(partitionKeyDefinition));
507+
}
508+
}
509+
510+
return feedRange;
511+
}
483512
}
484513
}

Microsoft.Azure.Cosmos/src/Handler/TelemetryHandler.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,12 @@ public override async Task<ResponseMessage> SendAsync(
4040
resourceType: request.ResourceType,
4141
consistencyLevel: request.Headers?[Documents.HttpConstants.HttpHeaders.ConsistencyLevel],
4242
requestCharge: response.Headers.RequestCharge,
43-
subStatusCode: response.Headers.SubStatusCode);
43+
subStatusCode: response.Headers.SubStatusCode,
44+
trace: response.Trace);
4445
}
4546
catch (Exception ex)
4647
{
47-
DefaultTrace.TraceError("Error while collecting telemetry information : " + ex.Message);
48+
DefaultTrace.TraceError("Error while collecting telemetry information : {0}", ex);
4849
}
4950
}
5051
return response;

Microsoft.Azure.Cosmos/src/Linq/CosmosLinqExtensions.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ public static FeedIterator<T> ToFeedIterator<T>(this IQueryable<T> query)
186186
/// <code language="c#">
187187
/// <![CDATA[
188188
/// IOrderedQueryable<ToDoActivity> linqQueryable = this.Container.GetItemLinqQueryable<ToDoActivity>();
189-
/// using (FeedIterator setIterator = linqQueryable.Where(item => (item.taskNum < 100)).ToFeedIterator()
189+
/// using (FeedIterator setIterator = linqQueryable.Where(item => (item.taskNum < 100)).ToStreamIterator())
190190
/// ]]>
191191
/// </code>
192192
/// </example>

Microsoft.Azure.Cosmos/src/Linq/ExpressionToSQL.cs

+15-32
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ namespace Microsoft.Azure.Cosmos.Linq
1010
using System.Collections.ObjectModel;
1111
using System.Diagnostics;
1212
using System.Globalization;
13-
using System.IO;
1413
using System.Linq;
1514
using System.Linq.Expressions;
1615
using System.Reflection;
@@ -111,10 +110,10 @@ public static SqlQuery TranslateQuery(
111110
/// </summary>
112111
/// <param name="inputExpression">Expression to translate.</param>
113112
/// <param name="context">Context for translation.</param>
114-
private static Collection Translate(Expression inputExpression, TranslationContext context)
113+
private static Collection Translate(Expression inputExpression, TranslationContext context)
115114
{
116-
Debug.Assert(context != null, "Translation Context should not be null");
117-
115+
Debug.Assert(context != null, "Translation Context should not be null");
116+
118117
if (inputExpression == null)
119118
{
120119
throw new ArgumentNullException("inputExpression");
@@ -552,7 +551,7 @@ private static SqlScalarExpression ApplyCustomConverters(Expression left, SqlLit
552551
else if (memberType == typeof(DateTime))
553552
{
554553
SqlStringLiteral serializedDateTime = (SqlStringLiteral)right.Literal;
555-
value = DateTime.Parse(serializedDateTime.Value, provider: null, DateTimeStyles.RoundtripKind);
554+
value = DateTime.Parse(serializedDateTime.Value, provider: null, DateTimeStyles.RoundtripKind);
556555
}
557556

558557
if (value != default(object))
@@ -712,23 +711,7 @@ public static SqlScalarExpression VisitConstant(ConstantExpression inputExpressi
712711

713712
return SqlArrayCreateScalarExpression.Create(arrayItems.ToImmutableArray());
714713
}
715-
716-
if (context.linqSerializerOptions?.CustomCosmosSerializer != null)
717-
{
718-
StringWriter writer = new StringWriter(CultureInfo.InvariantCulture);
719-
720-
// Use the user serializer for the parameter values so custom conversions are correctly handled
721-
using (Stream stream = context.linqSerializerOptions.CustomCosmosSerializer.ToStream(inputExpression.Value))
722-
{
723-
using (StreamReader streamReader = new StreamReader(stream))
724-
{
725-
string propertyValue = streamReader.ReadToEnd();
726-
writer.Write(propertyValue);
727-
return CosmosElement.Parse(writer.ToString()).Accept(CosmosElementToSqlScalarExpressionVisitor.Singleton);
728-
}
729-
}
730-
}
731-
714+
732715
return CosmosElement.Parse(JsonConvert.SerializeObject(inputExpression.Value)).Accept(CosmosElementToSqlScalarExpressionVisitor.Singleton);
733716
}
734717

@@ -757,21 +740,21 @@ private static SqlScalarExpression VisitParameter(ParameterExpression inputExpre
757740
private static SqlScalarExpression VisitMemberAccess(MemberExpression inputExpression, TranslationContext context)
758741
{
759742
SqlScalarExpression memberExpression = ExpressionToSql.VisitScalarExpression(inputExpression.Expression, context);
760-
string memberName = inputExpression.Member.GetMemberName(context.linqSerializerOptions);
743+
string memberName = inputExpression.Member.GetMemberName(context.linqSerializerOptions);
761744

762745
// if expression is nullable
763746
if (inputExpression.Expression.Type.IsNullable())
764747
{
765-
MemberNames memberNames = context.memberNames;
766-
748+
MemberNames memberNames = context.memberNames;
749+
767750
// ignore .Value
768-
if (memberName == memberNames.Value)
751+
if (memberName == memberNames.Value)
769752
{
770753
return memberExpression;
771754
}
772755

773756
// convert .HasValue to IS_DEFINED expression
774-
if (memberName == memberNames.HasValue)
757+
if (memberName == memberNames.HasValue)
775758
{
776759
return SqlFunctionCallScalarExpression.CreateBuiltin("IS_DEFINED", memberExpression);
777760
}
@@ -2028,11 +2011,11 @@ public SqlScalarExpression Visit(CosmosString cosmosString)
20282011
{
20292012
return SqlLiteralScalarExpression.Create(SqlStringLiteral.Create(cosmosString.Value));
20302013
}
2031-
2032-
public SqlScalarExpression Visit(CosmosUndefined cosmosUndefined)
2033-
{
2034-
return SqlLiteralScalarExpression.Create(SqlUndefinedLiteral.Create());
2035-
}
2014+
2015+
public SqlScalarExpression Visit(CosmosUndefined cosmosUndefined)
2016+
{
2017+
return SqlLiteralScalarExpression.Create(SqlUndefinedLiteral.Create());
2018+
}
20362019
}
20372020
private enum SubqueryKind
20382021
{

Microsoft.Azure.Cosmos/src/PartitionKeyBuilder.cs

+1-6
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,7 @@ namespace Microsoft.Azure.Cosmos
1111
/// <summary>
1212
/// Represents a partition key value list in the Azure Cosmos DB service.
1313
/// </summary>
14-
#if PREVIEW
15-
public
16-
#else
17-
internal
18-
#endif
19-
sealed class PartitionKeyBuilder
14+
public sealed class PartitionKeyBuilder
2015
{
2116
private readonly List<object> partitionKeyValues;
2217

Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs

+20
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,16 @@ public override SqlObject VisitExistsScalarExpression([NotNull] sqlParser.Exists
568568
return SqlExistsScalarExpression.Create(subquery);
569569
}
570570

571+
public override SqlObject VisitFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext context)
572+
{
573+
Contract.Requires(context != null);
574+
// K_FIRST '(' sql_query ')'
575+
Contract.Requires(context.ChildCount == 4);
576+
577+
SqlQuery subquery = (SqlQuery)this.Visit(context.children[2]);
578+
return SqlFirstScalarExpression.Create(subquery);
579+
}
580+
571581
public override SqlObject VisitFunctionCallScalarExpression([NotNull] sqlParser.FunctionCallScalarExpressionContext context)
572582
{
573583
Contract.Requires(context != null);
@@ -627,6 +637,16 @@ public override SqlObject VisitIn_scalar_expression([NotNull] sqlParser.In_scala
627637
return SqlInScalarExpression.Create(needle, not, searchList.ToImmutableArray());
628638
}
629639

640+
public override SqlObject VisitLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext context)
641+
{
642+
Contract.Requires(context != null);
643+
// K_LAST '(' sql_query ')'
644+
Contract.Requires(context.ChildCount == 4);
645+
646+
SqlQuery subquery = (SqlQuery)this.Visit(context.children[2]);
647+
return SqlLastScalarExpression.Create(subquery);
648+
}
649+
630650
public override SqlObject VisitLike_scalar_expression([NotNull] sqlParser.Like_scalar_expressionContext context)
631651
{
632652
Contract.Requires(context != null);

Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs

+24
Original file line numberDiff line numberDiff line change
@@ -562,6 +562,18 @@ internal interface IsqlListener : IParseTreeListener {
562562
/// <param name="context">The parse tree.</param>
563563
void ExitObjectCreateScalarExpression([NotNull] sqlParser.ObjectCreateScalarExpressionContext context);
564564
/// <summary>
565+
/// Enter a parse tree produced by the <c>FirstScalarExpression</c>
566+
/// labeled alternative in <see cref="sqlParser.primary_expression"/>.
567+
/// </summary>
568+
/// <param name="context">The parse tree.</param>
569+
void EnterFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext context);
570+
/// <summary>
571+
/// Exit a parse tree produced by the <c>FirstScalarExpression</c>
572+
/// labeled alternative in <see cref="sqlParser.primary_expression"/>.
573+
/// </summary>
574+
/// <param name="context">The parse tree.</param>
575+
void ExitFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext context);
576+
/// <summary>
565577
/// Enter a parse tree produced by the <c>ArrayCreateScalarExpression</c>
566578
/// labeled alternative in <see cref="sqlParser.primary_expression"/>.
567579
/// </summary>
@@ -670,6 +682,18 @@ internal interface IsqlListener : IParseTreeListener {
670682
/// <param name="context">The parse tree.</param>
671683
void ExitArrayScalarExpression([NotNull] sqlParser.ArrayScalarExpressionContext context);
672684
/// <summary>
685+
/// Enter a parse tree produced by the <c>LastScalarExpression</c>
686+
/// labeled alternative in <see cref="sqlParser.primary_expression"/>.
687+
/// </summary>
688+
/// <param name="context">The parse tree.</param>
689+
void EnterLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext context);
690+
/// <summary>
691+
/// Exit a parse tree produced by the <c>LastScalarExpression</c>
692+
/// labeled alternative in <see cref="sqlParser.primary_expression"/>.
693+
/// </summary>
694+
/// <param name="context">The parse tree.</param>
695+
void ExitLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext context);
696+
/// <summary>
673697
/// Enter a parse tree produced by the <c>PropertyRefScalarExpressionRecursive</c>
674698
/// labeled alternative in <see cref="sqlParser.primary_expression"/>.
675699
/// </summary>

Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlVisitor.cs

+14
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,13 @@ internal interface IsqlVisitor<Result> : IParseTreeVisitor<Result> {
347347
/// <return>The visitor result.</return>
348348
Result VisitObjectCreateScalarExpression([NotNull] sqlParser.ObjectCreateScalarExpressionContext context);
349349
/// <summary>
350+
/// Visit a parse tree produced by the <c>FirstScalarExpression</c>
351+
/// labeled alternative in <see cref="sqlParser.primary_expression"/>.
352+
/// </summary>
353+
/// <param name="context">The parse tree.</param>
354+
/// <return>The visitor result.</return>
355+
Result VisitFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext context);
356+
/// <summary>
350357
/// Visit a parse tree produced by the <c>ArrayCreateScalarExpression</c>
351358
/// labeled alternative in <see cref="sqlParser.primary_expression"/>.
352359
/// </summary>
@@ -410,6 +417,13 @@ internal interface IsqlVisitor<Result> : IParseTreeVisitor<Result> {
410417
/// <return>The visitor result.</return>
411418
Result VisitArrayScalarExpression([NotNull] sqlParser.ArrayScalarExpressionContext context);
412419
/// <summary>
420+
/// Visit a parse tree produced by the <c>LastScalarExpression</c>
421+
/// labeled alternative in <see cref="sqlParser.primary_expression"/>.
422+
/// </summary>
423+
/// <param name="context">The parse tree.</param>
424+
/// <return>The visitor result.</return>
425+
Result VisitLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext context);
426+
/// <summary>
413427
/// Visit a parse tree produced by the <c>PropertyRefScalarExpressionRecursive</c>
414428
/// labeled alternative in <see cref="sqlParser.primary_expression"/>.
415429
/// </summary>

0 commit comments

Comments
 (0)