From 238e23a1761831d279fdea748877b9e0f5ce56e7 Mon Sep 17 00:00:00 2001 From: Sourabh Jain Date: Thu, 1 Jul 2021 02:56:21 +0530 Subject: [PATCH] LINQ : Fixes ArgumentNullException while calling ToQueryDefinition() (#2580) This fixes ArguementNullException in ToQueryDefinition for read feed scenarios where there has been no filters applied to the linq query. --- .../src/Query/v3Query/QueryDefinition.cs | 3 ++- .../CosmosItemLinqTests.cs | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Microsoft.Azure.Cosmos/src/Query/v3Query/QueryDefinition.cs b/Microsoft.Azure.Cosmos/src/Query/v3Query/QueryDefinition.cs index d68a4fcea5..c1eed49cb3 100644 --- a/Microsoft.Azure.Cosmos/src/Query/v3Query/QueryDefinition.cs +++ b/Microsoft.Azure.Cosmos/src/Query/v3Query/QueryDefinition.cs @@ -55,7 +55,8 @@ internal static QueryDefinition CreateFromQuerySpec(SqlQuerySpec sqlQuery) { if (sqlQuery == null) { - throw new ArgumentNullException(nameof(sqlQuery)); + // It is to support scenarios where all the data needs to be read + return null; } QueryDefinition queryDefinition = new QueryDefinition(sqlQuery.QueryText); diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/CosmosItemLinqTests.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/CosmosItemLinqTests.cs index 5d72595e39..849b2afd0a 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/CosmosItemLinqTests.cs +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/CosmosItemLinqTests.cs @@ -797,6 +797,18 @@ async Task TestSearch(Expression> expression, string ex } + [TestMethod] + public async Task LinqSelectEverythingWithoutQueryableTest() + { + await ToDoActivity.CreateRandomItems(this.Container, pkCount: 2, perPKItemCount: 1, randomPartitionKey: true); + + QueryDefinition queryDefinition = this.Container + .GetItemLinqQueryable() + .ToQueryDefinition(); + + Assert.AreEqual(2, (await this.FetchResults(queryDefinition)).Count); + } + private class NumberLinqItem { public string id;