@@ -252,10 +252,7 @@ public override async Task Rewrite_compare_bool_with_bool(bool async)
252
252
253
253
AssertSql (
254
254
"""
255
- SELECT [e].[Id], CASE
256
- WHEN [e].[BoolA] = [e].[BoolB] THEN CAST(1 AS bit)
257
- ELSE CAST(0 AS bit)
258
- END AS [X]
255
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] ^ CAST(1 AS bit) AS [X]
259
256
FROM [Entities1] AS [e]
260
257
""" ,
261
258
//
@@ -280,10 +277,7 @@ FROM [Entities1] AS [e]
280
277
""" ,
281
278
//
282
279
"""
283
- SELECT [e].[Id], CASE
284
- WHEN [e].[BoolA] <> [e].[BoolB] THEN CAST(1 AS bit)
285
- ELSE CAST(0 AS bit)
286
- END AS [X]
280
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X]
287
281
FROM [Entities1] AS [e]
288
282
""" ,
289
283
//
@@ -364,10 +358,7 @@ FROM [Entities1] AS [e]
364
358
""" ,
365
359
//
366
360
"""
367
- SELECT [e].[Id], CASE
368
- WHEN [e].[BoolA] <> [e].[BoolB] THEN CAST(1 AS bit)
369
- ELSE CAST(0 AS bit)
370
- END AS [X]
361
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X]
371
362
FROM [Entities1] AS [e]
372
363
""" ,
373
364
//
@@ -392,10 +383,7 @@ WHERE [e].[BoolA] <> [e].[NullableBoolB]
392
383
""" ,
393
384
//
394
385
"""
395
- SELECT [e].[Id], CASE
396
- WHEN [e].[BoolA] = [e].[BoolB] THEN CAST(1 AS bit)
397
- ELSE CAST(0 AS bit)
398
- END AS [X]
386
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] ^ CAST(1 AS bit) AS [X]
399
387
FROM [Entities1] AS [e]
400
388
""" ,
401
389
//
@@ -476,10 +464,7 @@ FROM [Entities1] AS [e]
476
464
""" ,
477
465
//
478
466
"""
479
- SELECT [e].[Id], CASE
480
- WHEN [e].[BoolA] <> [e].[BoolB] THEN CAST(1 AS bit)
481
- ELSE CAST(0 AS bit)
482
- END AS [X]
467
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X]
483
468
FROM [Entities1] AS [e]
484
469
""" ,
485
470
//
@@ -504,10 +489,7 @@ WHERE [e].[BoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL
504
489
""" ,
505
490
//
506
491
"""
507
- SELECT [e].[Id], CASE
508
- WHEN [e].[BoolA] = [e].[BoolB] THEN CAST(1 AS bit)
509
- ELSE CAST(0 AS bit)
510
- END AS [X]
492
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] ^ CAST(1 AS bit) AS [X]
511
493
FROM [Entities1] AS [e]
512
494
""" ,
513
495
//
@@ -588,10 +570,7 @@ FROM [Entities1] AS [e]
588
570
""" ,
589
571
//
590
572
"""
591
- SELECT [e].[Id], CASE
592
- WHEN [e].[BoolA] = [e].[BoolB] THEN CAST(1 AS bit)
593
- ELSE CAST(0 AS bit)
594
- END AS [X]
573
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] ^ CAST(1 AS bit) AS [X]
595
574
FROM [Entities1] AS [e]
596
575
""" ,
597
576
//
@@ -616,10 +595,7 @@ FROM [Entities1] AS [e]
616
595
""" ,
617
596
//
618
597
"""
619
- SELECT [e].[Id], CASE
620
- WHEN [e].[BoolA] <> [e].[BoolB] THEN CAST(1 AS bit)
621
- ELSE CAST(0 AS bit)
622
- END AS [X]
598
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X]
623
599
FROM [Entities1] AS [e]
624
600
""" ,
625
601
//
@@ -700,10 +676,7 @@ FROM [Entities1] AS [e]
700
676
""" ,
701
677
//
702
678
"""
703
- SELECT [e].[Id], CASE
704
- WHEN [e].[BoolA] <> [e].[BoolB] THEN CAST(1 AS bit)
705
- ELSE CAST(0 AS bit)
706
- END AS [X]
679
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X]
707
680
FROM [Entities1] AS [e]
708
681
""" ,
709
682
//
@@ -728,10 +701,7 @@ WHERE [e].[BoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL
728
701
""" ,
729
702
//
730
703
"""
731
- SELECT [e].[Id], CASE
732
- WHEN [e].[BoolA] = [e].[BoolB] THEN CAST(1 AS bit)
733
- ELSE CAST(0 AS bit)
734
- END AS [X]
704
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] ^ CAST(1 AS bit) AS [X]
735
705
FROM [Entities1] AS [e]
736
706
""" ,
737
707
//
@@ -812,10 +782,7 @@ FROM [Entities1] AS [e]
812
782
""" ,
813
783
//
814
784
"""
815
- SELECT [e].[Id], CASE
816
- WHEN [e].[BoolA] = [e].[BoolB] THEN CAST(1 AS bit)
817
- ELSE CAST(0 AS bit)
818
- END AS [X]
785
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] ^ CAST(1 AS bit) AS [X]
819
786
FROM [Entities1] AS [e]
820
787
""" ,
821
788
//
@@ -840,10 +807,7 @@ FROM [Entities1] AS [e]
840
807
""" ,
841
808
//
842
809
"""
843
- SELECT [e].[Id], CASE
844
- WHEN [e].[BoolA] <> [e].[BoolB] THEN CAST(1 AS bit)
845
- ELSE CAST(0 AS bit)
846
- END AS [X]
810
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X]
847
811
FROM [Entities1] AS [e]
848
812
""" ,
849
813
//
@@ -924,10 +888,7 @@ FROM [Entities1] AS [e]
924
888
""" ,
925
889
//
926
890
"""
927
- SELECT [e].[Id], CASE
928
- WHEN [e].[BoolA] = [e].[BoolB] THEN CAST(1 AS bit)
929
- ELSE CAST(0 AS bit)
930
- END AS [X]
891
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] ^ CAST(1 AS bit) AS [X]
931
892
FROM [Entities1] AS [e]
932
893
""" ,
933
894
//
@@ -952,10 +913,7 @@ FROM [Entities1] AS [e]
952
913
""" ,
953
914
//
954
915
"""
955
- SELECT [e].[Id], CASE
956
- WHEN [e].[BoolA] <> [e].[BoolB] THEN CAST(1 AS bit)
957
- ELSE CAST(0 AS bit)
958
- END AS [X]
916
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X]
959
917
FROM [Entities1] AS [e]
960
918
""" ,
961
919
//
@@ -1036,10 +994,7 @@ FROM [Entities1] AS [e]
1036
994
""" ,
1037
995
//
1038
996
"""
1039
- SELECT [e].[Id], CASE
1040
- WHEN [e].[BoolA] <> [e].[BoolB] THEN CAST(1 AS bit)
1041
- ELSE CAST(0 AS bit)
1042
- END AS [X]
997
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X]
1043
998
FROM [Entities1] AS [e]
1044
999
""" ,
1045
1000
//
@@ -1064,10 +1019,7 @@ WHERE [e].[BoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL
1064
1019
""" ,
1065
1020
//
1066
1021
"""
1067
- SELECT [e].[Id], CASE
1068
- WHEN [e].[BoolA] = [e].[BoolB] THEN CAST(1 AS bit)
1069
- ELSE CAST(0 AS bit)
1070
- END AS [X]
1022
+ SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] ^ CAST(1 AS bit) AS [X]
1071
1023
FROM [Entities1] AS [e]
1072
1024
""" ,
1073
1025
//
@@ -1756,10 +1708,7 @@ public override async Task Compare_complex_equal_equal_equal(bool async)
1756
1708
"""
1757
1709
SELECT [e].[Id]
1758
1710
FROM [Entities1] AS [e]
1759
- WHERE CASE
1760
- WHEN [e].[BoolA] = [e].[BoolB] THEN CAST(1 AS bit)
1761
- ELSE CAST(0 AS bit)
1762
- END = CASE
1711
+ WHERE [e].[BoolA] ^ [e].[BoolB] ^ CAST(1 AS bit) = CASE
1763
1712
WHEN [e].[IntA] = [e].[IntB] THEN CAST(1 AS bit)
1764
1713
ELSE CAST(0 AS bit)
1765
1714
END
@@ -1798,10 +1747,7 @@ public override async Task Compare_complex_equal_not_equal_equal(bool async)
1798
1747
"""
1799
1748
SELECT [e].[Id]
1800
1749
FROM [Entities1] AS [e]
1801
- WHERE CASE
1802
- WHEN [e].[BoolA] = [e].[BoolB] THEN CAST(1 AS bit)
1803
- ELSE CAST(0 AS bit)
1804
- END <> CASE
1750
+ WHERE [e].[BoolA] ^ [e].[BoolB] ^ CAST(1 AS bit) <> CASE
1805
1751
WHEN [e].[IntA] = [e].[IntB] THEN CAST(1 AS bit)
1806
1752
ELSE CAST(0 AS bit)
1807
1753
END
@@ -1840,10 +1786,7 @@ public override async Task Compare_complex_not_equal_equal_equal(bool async)
1840
1786
"""
1841
1787
SELECT [e].[Id]
1842
1788
FROM [Entities1] AS [e]
1843
- WHERE CASE
1844
- WHEN [e].[BoolA] <> [e].[BoolB] THEN CAST(1 AS bit)
1845
- ELSE CAST(0 AS bit)
1846
- END = CASE
1789
+ WHERE [e].[BoolA] ^ [e].[BoolB] = CASE
1847
1790
WHEN [e].[IntA] = [e].[IntB] THEN CAST(1 AS bit)
1848
1791
ELSE CAST(0 AS bit)
1849
1792
END
@@ -1882,10 +1825,7 @@ public override async Task Compare_complex_not_equal_not_equal_equal(bool async)
1882
1825
"""
1883
1826
SELECT [e].[Id]
1884
1827
FROM [Entities1] AS [e]
1885
- WHERE CASE
1886
- WHEN [e].[BoolA] <> [e].[BoolB] THEN CAST(1 AS bit)
1887
- ELSE CAST(0 AS bit)
1888
- END <> CASE
1828
+ WHERE [e].[BoolA] ^ [e].[BoolB] <> CASE
1889
1829
WHEN [e].[IntA] = [e].[IntB] THEN CAST(1 AS bit)
1890
1830
ELSE CAST(0 AS bit)
1891
1831
END
@@ -1924,10 +1864,7 @@ public override async Task Compare_complex_not_equal_equal_not_equal(bool async)
1924
1864
"""
1925
1865
SELECT [e].[Id]
1926
1866
FROM [Entities1] AS [e]
1927
- WHERE CASE
1928
- WHEN [e].[BoolA] <> [e].[BoolB] THEN CAST(1 AS bit)
1929
- ELSE CAST(0 AS bit)
1930
- END = CASE
1867
+ WHERE [e].[BoolA] ^ [e].[BoolB] = CASE
1931
1868
WHEN [e].[IntA] <> [e].[IntB] THEN CAST(1 AS bit)
1932
1869
ELSE CAST(0 AS bit)
1933
1870
END
@@ -1966,10 +1903,7 @@ public override async Task Compare_complex_not_equal_not_equal_not_equal(bool as
1966
1903
"""
1967
1904
SELECT [e].[Id]
1968
1905
FROM [Entities1] AS [e]
1969
- WHERE CASE
1970
- WHEN [e].[BoolA] <> [e].[BoolB] THEN CAST(1 AS bit)
1971
- ELSE CAST(0 AS bit)
1972
- END <> CASE
1906
+ WHERE [e].[BoolA] ^ [e].[BoolB] <> CASE
1973
1907
WHEN [e].[IntA] <> [e].[IntB] THEN CAST(1 AS bit)
1974
1908
ELSE CAST(0 AS bit)
1975
1909
END
@@ -4485,10 +4419,7 @@ public override async Task Is_null_on_column_followed_by_OrElse_optimizes_nullab
4485
4419
SELECT [e].[Id], [e].[BoolA], [e].[BoolB], [e].[BoolC], [e].[IntA], [e].[IntB], [e].[IntC], [e].[NullableBoolA], [e].[NullableBoolB], [e].[NullableBoolC], [e].[NullableIntA], [e].[NullableIntB], [e].[NullableIntC], [e].[NullableStringA], [e].[NullableStringB], [e].[NullableStringC], [e].[StringA], [e].[StringB], [e].[StringC]
4486
4420
FROM [Entities1] AS [e]
4487
4421
WHERE CASE
4488
- WHEN [e].[NullableBoolA] IS NULL THEN CASE
4489
- WHEN [e].[BoolA] = [e].[BoolB] THEN CAST(1 AS bit)
4490
- ELSE CAST(0 AS bit)
4491
- END
4422
+ WHEN [e].[NullableBoolA] IS NULL THEN [e].[BoolA] ^ [e].[BoolB] ^ CAST(1 AS bit)
4492
4423
WHEN [e].[NullableBoolC] IS NULL THEN CASE
4493
4424
WHEN ([e].[NullableBoolA] <> [e].[NullableBoolC] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolC] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolC] IS NOT NULL) THEN CAST(1 AS bit)
4494
4425
ELSE CAST(0 AS bit)
0 commit comments