Skip to content

Commit f84c9d9

Browse files
committed
Merge branch 'users/akotalwar/TurnOnODEByDefault' of https://github.com/Azure/azure-cosmos-dotnet-v3 into users/akotalwar/TurnOnODEByDefault
2 parents 131112c + 78ea0e4 commit f84c9d9

File tree

5 files changed

+567
-18
lines changed

5 files changed

+567
-18
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,8 @@ private static SqlScalarExpression ApplyCustomConverters(Expression left, SqlLit
495495
memberExpression = left as MemberExpression;
496496
}
497497

498-
if (memberExpression != null)
498+
if (memberExpression != null &&
499+
right.Literal is not SqlNullLiteral)
499500
{
500501
Type memberType = memberExpression.Type;
501502
if (memberType.IsNullable())

Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/BaselineTest/TestBaseline/LinqTranslationWithCustomSerializerBaseline.TestMemberInitializerDataMember.xml

Lines changed: 216 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ WHERE (root["numericFieldDataMember"] = 1)]]></SqlQuery>
2929
<SqlQuery><![CDATA[
3030
SELECT VALUE root
3131
FROM root
32-
WHERE (root = {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null})]]></SqlQuery>
32+
WHERE (root = {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null, "DateTimeFieldDataMember": null, "DataTypeFieldDataMember": null})]]></SqlQuery>
3333
<InputData><![CDATA[[
3434
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
3535
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-True\", \"Pk\": \"Test\"}",
@@ -48,7 +48,7 @@ WHERE (root = {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id":
4848
</Input>
4949
<Output>
5050
<SqlQuery><![CDATA[
51-
SELECT VALUE {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null}
51+
SELECT VALUE {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null, "DateTimeFieldDataMember": null, "DataTypeFieldDataMember": null}
5252
FROM root]]></SqlQuery>
5353
<InputData><![CDATA[[
5454
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
@@ -75,7 +75,7 @@ FROM root]]></SqlQuery>
7575
</Input>
7676
<Output>
7777
<SqlQuery><![CDATA[
78-
SELECT VALUE ((root["numericFieldDataMember"] > 1) ? {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null} : {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null})
78+
SELECT VALUE ((root["numericFieldDataMember"] > 1) ? {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null, "DateTimeFieldDataMember": null, "DataTypeFieldDataMember": null} : {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null, "DateTimeFieldDataMember": null, "DataTypeFieldDataMember": null})
7979
FROM root]]></SqlQuery>
8080
<InputData><![CDATA[[
8181
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
@@ -112,6 +112,111 @@ WHERE (root = {"numericFieldDataMember": root["numericFieldDataMember"], "string
112112
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-False\", \"Pk\": \"Test\"}",
113113
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-False\", \"Pk\": \"Test\"}",
114114
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-False\", \"Pk\": \"Test\"}"
115+
]]]></InputData>
116+
<Results><![CDATA[[]]]></Results>
117+
</Output>
118+
</Result>
119+
<Result>
120+
<Input>
121+
<Description><![CDATA[Filter w/ nullable property, camelcase = True]]></Description>
122+
<Expression><![CDATA[query.Where(doc => (doc.DateTimeField != null))]]></Expression>
123+
</Input>
124+
<Output>
125+
<SqlQuery><![CDATA[
126+
SELECT VALUE root
127+
FROM root
128+
WHERE (root["dateTimeFieldDataMember"] != null)]]></SqlQuery>
129+
<InputData><![CDATA[[
130+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
131+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-True\", \"Pk\": \"Test\"}",
132+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-True\", \"Pk\": \"Test\"}",
133+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-False\", \"Pk\": \"Test\"}",
134+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-False\", \"Pk\": \"Test\"}",
135+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-False\", \"Pk\": \"Test\"}"
136+
]]]></InputData>
137+
<Results><![CDATA[[]]]></Results>
138+
</Output>
139+
</Result>
140+
<Result>
141+
<Input>
142+
<Description><![CDATA[Filter w/ nullable enum, camelcase = True]]></Description>
143+
<Expression><![CDATA[query.Where(doc => (doc.DataTypeField != null))]]></Expression>
144+
</Input>
145+
<Output>
146+
<SqlQuery><![CDATA[
147+
SELECT VALUE root
148+
FROM root
149+
WHERE (root["dataTypeFieldDataMember"] != null)]]></SqlQuery>
150+
<InputData><![CDATA[[
151+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
152+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-True\", \"Pk\": \"Test\"}",
153+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-True\", \"Pk\": \"Test\"}",
154+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-False\", \"Pk\": \"Test\"}",
155+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-False\", \"Pk\": \"Test\"}",
156+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-False\", \"Pk\": \"Test\"}"
157+
]]]></InputData>
158+
<Results><![CDATA[[]]]></Results>
159+
</Output>
160+
</Result>
161+
<Result>
162+
<Input>
163+
<Description><![CDATA[Filter w/ non-null nullable property]]></Description>
164+
<Expression><![CDATA[query.Where(doc => (doc.DateTimeField == Convert(new DateTime(1970, 1, 1, 0, 0, 0, 0, Utc), Nullable`1)))]]></Expression>
165+
</Input>
166+
<Output>
167+
<SqlQuery><![CDATA[
168+
SELECT VALUE root
169+
FROM root
170+
WHERE (root["dateTimeFieldDataMember"] = "1970-01-01T00:00:00Z")]]></SqlQuery>
171+
<InputData><![CDATA[[
172+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
173+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-True\", \"Pk\": \"Test\"}",
174+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-True\", \"Pk\": \"Test\"}",
175+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-False\", \"Pk\": \"Test\"}",
176+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-False\", \"Pk\": \"Test\"}",
177+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-False\", \"Pk\": \"Test\"}"
178+
]]]></InputData>
179+
<Results><![CDATA[[]]]></Results>
180+
</Output>
181+
</Result>
182+
<Result>
183+
<Input>
184+
<Description><![CDATA[Filter w/ non-null nullable enum]]></Description>
185+
<Expression><![CDATA[query.Where(doc => (Convert(doc.DataTypeField, Nullable`1) == Convert(Point, Nullable`1)))]]></Expression>
186+
</Input>
187+
<Output>
188+
<SqlQuery><![CDATA[
189+
SELECT VALUE root
190+
FROM root
191+
WHERE (root["dataTypeFieldDataMember"] = 2)]]></SqlQuery>
192+
<InputData><![CDATA[[
193+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
194+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-True\", \"Pk\": \"Test\"}",
195+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-True\", \"Pk\": \"Test\"}",
196+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-False\", \"Pk\": \"Test\"}",
197+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-False\", \"Pk\": \"Test\"}",
198+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-False\", \"Pk\": \"Test\"}"
199+
]]]></InputData>
200+
<Results><![CDATA[[]]]></Results>
201+
</Output>
202+
</Result>
203+
<Result>
204+
<Input>
205+
<Description><![CDATA[Filter w/ string null comparison, camelcase = True]]></Description>
206+
<Expression><![CDATA[query.Where(doc => (doc.StringField != null))]]></Expression>
207+
</Input>
208+
<Output>
209+
<SqlQuery><![CDATA[
210+
SELECT VALUE root
211+
FROM root
212+
WHERE (root["stringFieldDataMember"] != null)]]></SqlQuery>
213+
<InputData><![CDATA[[
214+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
215+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-True\", \"Pk\": \"Test\"}",
216+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-True\", \"Pk\": \"Test\"}",
217+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-False\", \"Pk\": \"Test\"}",
218+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-False\", \"Pk\": \"Test\"}",
219+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-False\", \"Pk\": \"Test\"}"
115220
]]]></InputData>
116221
<Results><![CDATA[[]]]></Results>
117222
</Output>
@@ -146,7 +251,7 @@ WHERE (root["NumericFieldDataMember"] = 1)]]></SqlQuery>
146251
<SqlQuery><![CDATA[
147252
SELECT VALUE root
148253
FROM root
149-
WHERE (root = {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null})]]></SqlQuery>
254+
WHERE (root = {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null, "DateTimeFieldDataMember": null, "DataTypeFieldDataMember": null})]]></SqlQuery>
150255
<InputData><![CDATA[[
151256
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
152257
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-True\", \"Pk\": \"Test\"}",
@@ -165,7 +270,7 @@ WHERE (root = {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id":
165270
</Input>
166271
<Output>
167272
<SqlQuery><![CDATA[
168-
SELECT VALUE {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null}
273+
SELECT VALUE {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null, "DateTimeFieldDataMember": null, "DataTypeFieldDataMember": null}
169274
FROM root]]></SqlQuery>
170275
<InputData><![CDATA[[
171276
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
@@ -192,7 +297,7 @@ FROM root]]></SqlQuery>
192297
</Input>
193298
<Output>
194299
<SqlQuery><![CDATA[
195-
SELECT VALUE ((root["NumericFieldDataMember"] > 1) ? {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null} : {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null})
300+
SELECT VALUE ((root["NumericFieldDataMember"] > 1) ? {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null, "DateTimeFieldDataMember": null, "DataTypeFieldDataMember": null} : {"NumericFieldDataMember": 1, "StringFieldDataMember": "1", "id": null, "Pk": null, "DateTimeFieldDataMember": null, "DataTypeFieldDataMember": null})
196301
FROM root]]></SqlQuery>
197302
<InputData><![CDATA[[
198303
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
@@ -229,6 +334,111 @@ WHERE (root = {"NumericFieldDataMember": root["NumericFieldDataMember"], "String
229334
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-False\", \"Pk\": \"Test\"}",
230335
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-False\", \"Pk\": \"Test\"}",
231336
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-False\", \"Pk\": \"Test\"}"
337+
]]]></InputData>
338+
<Results><![CDATA[[]]]></Results>
339+
</Output>
340+
</Result>
341+
<Result>
342+
<Input>
343+
<Description><![CDATA[Filter w/ nullable property, camelcase = False]]></Description>
344+
<Expression><![CDATA[query.Where(doc => (doc.DateTimeField != null))]]></Expression>
345+
</Input>
346+
<Output>
347+
<SqlQuery><![CDATA[
348+
SELECT VALUE root
349+
FROM root
350+
WHERE (root["DateTimeFieldDataMember"] != null)]]></SqlQuery>
351+
<InputData><![CDATA[[
352+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
353+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-True\", \"Pk\": \"Test\"}",
354+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-True\", \"Pk\": \"Test\"}",
355+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-False\", \"Pk\": \"Test\"}",
356+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-False\", \"Pk\": \"Test\"}",
357+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-False\", \"Pk\": \"Test\"}"
358+
]]]></InputData>
359+
<Results><![CDATA[[]]]></Results>
360+
</Output>
361+
</Result>
362+
<Result>
363+
<Input>
364+
<Description><![CDATA[Filter w/ nullable enum, camelcase = False]]></Description>
365+
<Expression><![CDATA[query.Where(doc => (doc.DataTypeField != null))]]></Expression>
366+
</Input>
367+
<Output>
368+
<SqlQuery><![CDATA[
369+
SELECT VALUE root
370+
FROM root
371+
WHERE (root["DataTypeFieldDataMember"] != null)]]></SqlQuery>
372+
<InputData><![CDATA[[
373+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
374+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-True\", \"Pk\": \"Test\"}",
375+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-True\", \"Pk\": \"Test\"}",
376+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-False\", \"Pk\": \"Test\"}",
377+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-False\", \"Pk\": \"Test\"}",
378+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-False\", \"Pk\": \"Test\"}"
379+
]]]></InputData>
380+
<Results><![CDATA[[]]]></Results>
381+
</Output>
382+
</Result>
383+
<Result>
384+
<Input>
385+
<Description><![CDATA[Filter w/ non-null nullable property]]></Description>
386+
<Expression><![CDATA[query.Where(doc => (doc.DateTimeField == Convert(new DateTime(1970, 1, 1, 0, 0, 0, 0, Utc), Nullable`1)))]]></Expression>
387+
</Input>
388+
<Output>
389+
<SqlQuery><![CDATA[
390+
SELECT VALUE root
391+
FROM root
392+
WHERE (root["DateTimeFieldDataMember"] = "1970-01-01T00:00:00Z")]]></SqlQuery>
393+
<InputData><![CDATA[[
394+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
395+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-True\", \"Pk\": \"Test\"}",
396+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-True\", \"Pk\": \"Test\"}",
397+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-False\", \"Pk\": \"Test\"}",
398+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-False\", \"Pk\": \"Test\"}",
399+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-False\", \"Pk\": \"Test\"}"
400+
]]]></InputData>
401+
<Results><![CDATA[[]]]></Results>
402+
</Output>
403+
</Result>
404+
<Result>
405+
<Input>
406+
<Description><![CDATA[Filter w/ non-null nullable enum]]></Description>
407+
<Expression><![CDATA[query.Where(doc => (Convert(doc.DataTypeField, Nullable`1) == Convert(Point, Nullable`1)))]]></Expression>
408+
</Input>
409+
<Output>
410+
<SqlQuery><![CDATA[
411+
SELECT VALUE root
412+
FROM root
413+
WHERE (root["DataTypeFieldDataMember"] = 2)]]></SqlQuery>
414+
<InputData><![CDATA[[
415+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
416+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-True\", \"Pk\": \"Test\"}",
417+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-True\", \"Pk\": \"Test\"}",
418+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-False\", \"Pk\": \"Test\"}",
419+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-False\", \"Pk\": \"Test\"}",
420+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-False\", \"Pk\": \"Test\"}"
421+
]]]></InputData>
422+
<Results><![CDATA[[]]]></Results>
423+
</Output>
424+
</Result>
425+
<Result>
426+
<Input>
427+
<Description><![CDATA[Filter w/ string null comparison, camelcase = False]]></Description>
428+
<Expression><![CDATA[query.Where(doc => (doc.StringField != null))]]></Expression>
429+
</Input>
430+
<Output>
431+
<SqlQuery><![CDATA[
432+
SELECT VALUE root
433+
FROM root
434+
WHERE (root["StringFieldDataMember"] != null)]]></SqlQuery>
435+
<InputData><![CDATA[[
436+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-True\", \"Pk\": \"Test\"}",
437+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-True\", \"Pk\": \"Test\"}",
438+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-True\", \"Pk\": \"Test\"}",
439+
"{\"NumericField\": 0, \"StringField\": \"0\", \"id\": \"0-False\", \"Pk\": \"Test\"}",
440+
"{\"NumericField\": 1, \"StringField\": \"1\", \"id\": \"1-False\", \"Pk\": \"Test\"}",
441+
"{\"NumericField\": 2, \"StringField\": \"2\", \"id\": \"2-False\", \"Pk\": \"Test\"}"
232442
]]]></InputData>
233443
<Results><![CDATA[[]]]></Results>
234444
</Output>

0 commit comments

Comments
 (0)