Skip to content

Commit 2191de4

Browse files
committed
Added null check for key parameter
1 parent 5f29b91 commit 2191de4

File tree

4 files changed

+21
-11
lines changed

4 files changed

+21
-11
lines changed

Microsoft.Azure.Cosmos/src/Query/Core/QueryPlan/QueryPartitionProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ internal sealed class QueryPartitionProvider : IDisposable
4343

4444
private IntPtr serviceProvider;
4545
private bool disposed;
46-
public string queryengineConfiguration;
46+
private string queryengineConfiguration;
4747
public IDictionary<string, object> QueryEngineConfigurationValues;
4848

4949
public QueryPartitionProvider(IDictionary<string, object> queryengineConfiguration)

Microsoft.Azure.Cosmos/src/Query/v3Query/CosmosQueryClientCore.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,11 @@ public override async Task<PartitionedQueryExecutionInfo> ExecuteQueryPlanReques
211211

212212
public override async Task<object> GetQueryEngineConfigurationValueAsync(string key)
213213
{
214+
if (key == null)
215+
{
216+
throw new ArgumentNullException(nameof(key));
217+
}
218+
214219
QueryPartitionProvider provider = await this.clientContext.DocumentClient.QueryPartitionProvider;
215220
if (provider.QueryEngineConfigurationValues.TryGetValue(key, out object queryConfigProperty))
216221
{

Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/Query/OptimisticDirectExecutionQueryTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ await this.CreateIngestQueryDeleteAsync(
542542
}
543543

544544
[TestMethod]
545-
public async Task TestAllowOdeFlagInCosmosClient()
545+
public async Task TestClientDisableOdeFlagInCosmosClient()
546546
{
547547
string authKey = Utils.ConfigurationManager.AppSettings["MasterKey"];
548548
string endpoint = Utils.ConfigurationManager.AppSettings["GatewayEndpoint"];

Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OptimisticDirectExecutionQueryBaselineTests.cs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ public async Task TestOdeFlagsWithContinuationToken()
480480
{
481481
ParallelContinuationToken parallelContinuationToken = new ParallelContinuationToken(
482482
token: Guid.NewGuid().ToString(),
483-
range: new Documents.Routing.Range<string>("A", "B", true, false));
483+
range: new Range<string>("A", "B", true, false));
484484

485485
OptimisticDirectExecutionContinuationToken optimisticDirectExecutionContinuationToken = new OptimisticDirectExecutionContinuationToken(parallelContinuationToken);
486486
CosmosElement cosmosElementContinuationToken = OptimisticDirectExecutionContinuationToken.ToCosmosElement(optimisticDirectExecutionContinuationToken);
@@ -494,22 +494,21 @@ public async Task TestOdeFlagsWithContinuationToken()
494494
continuationToken: cosmosElementContinuationToken);
495495

496496
// All of these cases should throw the same exception message.
497-
await this.ValidateErrorMessageWithModifiedOdeFlag(input, enableOde: true, clientDisableOde: true);
498-
await this.ValidateErrorMessageWithModifiedOdeFlag(input, enableOde: false, clientDisableOde: true);
499-
await this.ValidateErrorMessageWithModifiedOdeFlag(input, enableOde: false, clientDisableOde: false);
497+
await this.ValidateErrorMessageWithModifiedOdeFlags(input, enableOde: true, clientDisableOde: true);
498+
await this.ValidateErrorMessageWithModifiedOdeFlags(input, enableOde: false, clientDisableOde: true);
499+
await this.ValidateErrorMessageWithModifiedOdeFlags(input, enableOde: false, clientDisableOde: false);
500500
}
501501

502-
private async Task ValidateErrorMessageWithModifiedOdeFlag(OptimisticDirectExecutionTestInput input, bool enableOde, bool clientDisableOde)
502+
private async Task ValidateErrorMessageWithModifiedOdeFlags(OptimisticDirectExecutionTestInput input, bool enableOde, bool clientDisableOde)
503503
{
504-
int numItems = 100;
505504
string expectedErrorMessage = "This query cannot be executed using the provided continuation token. " +
506505
"Please ensure that the EnableOptimisticDirectExecution flag is enabled in the QueryRequestOptions. " +
507506
"If after enabling this flag, you still see this error, contact the database administrator for assistance or retry the query without the continuation token.";
508507
try
509508
{
510509
int result = await this.GetPipelineAndDrainAsync(
511510
input,
512-
numItems: numItems,
511+
numItems: 100,
513512
isMultiPartition: false,
514513
expectedContinuationTokenCount: 10,
515514
requiresDist: false,
@@ -626,12 +625,12 @@ private async Task<int> GetPipelineAndDrainAsync(OptimisticDirectExecutionTestIn
626625
TryCatch<QueryPage> tryGetPage = queryPipelineStage.Current;
627626
tryGetPage.ThrowIfFailed();
628627

629-
if (clientDisableOde)
628+
if (clientDisableOde || !enableOptimisticDirectExecution)
630629
{
631630
Assert.AreNotEqual(TestInjections.PipelineType.OptimisticDirectExecution, queryRequestOptions.TestSettings.Stats.PipelineType.Value);
632631
}
633632

634-
if (!clientDisableOde && !requiresDist)
633+
if (!clientDisableOde && enableOptimisticDirectExecution && !requiresDist)
635634
{
636635
Assert.AreEqual(TestInjections.PipelineType.OptimisticDirectExecution, queryRequestOptions.TestSettings.Stats.PipelineType.Value);
637636
}
@@ -1069,6 +1068,7 @@ public TestCosmosQueryClient(QueryPartitionProvider queryPartitionProvider)
10691068
{
10701069
this.queryPartitionProvider = queryPartitionProvider;
10711070
}
1071+
10721072
public override Action<IQueryable> OnExecuteScalarQueryCallback => throw new NotImplementedException();
10731073

10741074
public override bool BypassQueryParsing()
@@ -1114,6 +1114,11 @@ public override Task<ContainerQueryProperties> GetCachedContainerQueryProperties
11141114

11151115
public override async Task<object> GetQueryEngineConfigurationValueAsync(string key)
11161116
{
1117+
if (key == null)
1118+
{
1119+
throw new ArgumentNullException(nameof(key));
1120+
}
1121+
11171122
if (this.queryPartitionProvider.QueryEngineConfigurationValues.TryGetValue(key, out object queryConfigProperty))
11181123
{
11191124
return queryConfigProperty;

0 commit comments

Comments
 (0)