@@ -820,7 +820,7 @@ fn parse_top_level() {
820
820
verified_stmt ( "(SELECT 1)" ) ;
821
821
verified_stmt ( "((SELECT 1))" ) ;
822
822
verified_stmt ( "VALUES (1)" ) ;
823
- verified_stmt ( "VALUES ROW(1, true , 'a'), ROW(2, false , 'b')" ) ;
823
+ verified_stmt ( "VALUES ROW(1, NULL , 'a'), ROW(2, NULL , 'b')" ) ;
824
824
}
825
825
826
826
#[ test]
@@ -1499,7 +1499,7 @@ fn parse_is_not_distinct_from() {
1499
1499
#[ test]
1500
1500
fn parse_not_precedence ( ) {
1501
1501
// NOT has higher precedence than OR/AND, so the following must parse as (NOT true) OR true
1502
- let sql = "NOT true OR true " ;
1502
+ let sql = "NOT 1 OR 1 " ;
1503
1503
assert_matches ! (
1504
1504
verified_expr( sql) ,
1505
1505
Expr :: BinaryOp {
@@ -1919,44 +1919,6 @@ fn parse_binary_all() {
1919
1919
) ;
1920
1920
}
1921
1921
1922
- #[ test]
1923
- fn parse_logical_xor ( ) {
1924
- let sql = "SELECT true XOR true, false XOR false, true XOR false, false XOR true" ;
1925
- let select = verified_only_select ( sql) ;
1926
- assert_eq ! (
1927
- SelectItem :: UnnamedExpr ( Expr :: BinaryOp {
1928
- left: Box :: new( Expr :: Value ( Value :: Boolean ( true ) ) ) ,
1929
- op: BinaryOperator :: Xor ,
1930
- right: Box :: new( Expr :: Value ( Value :: Boolean ( true ) ) ) ,
1931
- } ) ,
1932
- select. projection[ 0 ]
1933
- ) ;
1934
- assert_eq ! (
1935
- SelectItem :: UnnamedExpr ( Expr :: BinaryOp {
1936
- left: Box :: new( Expr :: Value ( Value :: Boolean ( false ) ) ) ,
1937
- op: BinaryOperator :: Xor ,
1938
- right: Box :: new( Expr :: Value ( Value :: Boolean ( false ) ) ) ,
1939
- } ) ,
1940
- select. projection[ 1 ]
1941
- ) ;
1942
- assert_eq ! (
1943
- SelectItem :: UnnamedExpr ( Expr :: BinaryOp {
1944
- left: Box :: new( Expr :: Value ( Value :: Boolean ( true ) ) ) ,
1945
- op: BinaryOperator :: Xor ,
1946
- right: Box :: new( Expr :: Value ( Value :: Boolean ( false ) ) ) ,
1947
- } ) ,
1948
- select. projection[ 2 ]
1949
- ) ;
1950
- assert_eq ! (
1951
- SelectItem :: UnnamedExpr ( Expr :: BinaryOp {
1952
- left: Box :: new( Expr :: Value ( Value :: Boolean ( false ) ) ) ,
1953
- op: BinaryOperator :: Xor ,
1954
- right: Box :: new( Expr :: Value ( Value :: Boolean ( true ) ) ) ,
1955
- } ) ,
1956
- select. projection[ 3 ]
1957
- ) ;
1958
- }
1959
-
1960
1922
#[ test]
1961
1923
fn parse_between ( ) {
1962
1924
fn chk ( negated : bool ) {
@@ -4113,14 +4075,14 @@ fn parse_alter_table_alter_column() {
4113
4075
) ;
4114
4076
4115
4077
match alter_table_op ( verified_stmt ( & format ! (
4116
- "{alter_stmt} ALTER COLUMN is_active SET DEFAULT false "
4078
+ "{alter_stmt} ALTER COLUMN is_active SET DEFAULT 0 "
4117
4079
) ) ) {
4118
4080
AlterTableOperation :: AlterColumn { column_name, op } => {
4119
4081
assert_eq ! ( "is_active" , column_name. to_string( ) ) ;
4120
4082
assert_eq ! (
4121
4083
op,
4122
4084
AlterColumnOperation :: SetDefault {
4123
- value: Expr :: Value ( Value :: Boolean ( false ) )
4085
+ value: Expr :: Value ( test_utils :: number ( "0" ) )
4124
4086
}
4125
4087
) ;
4126
4088
}
@@ -6502,7 +6464,7 @@ fn parse_values() {
6502
6464
verified_stmt ( "SELECT * FROM (VALUES (1), (2), (3))" ) ;
6503
6465
verified_stmt ( "SELECT * FROM (VALUES (1), (2), (3)), (VALUES (1, 2, 3))" ) ;
6504
6466
verified_stmt ( "SELECT * FROM (VALUES (1)) UNION VALUES (1)" ) ;
6505
- verified_stmt ( "SELECT * FROM (VALUES ROW(1, true , 'a'), ROW(2, false , 'b')) AS t (a, b, c)" ) ;
6467
+ verified_stmt ( "SELECT * FROM (VALUES ROW(1, NULL , 'a'), ROW(2, NULL , 'b')) AS t (a, b, c)" ) ;
6506
6468
}
6507
6469
6508
6470
#[ test]
@@ -7321,15 +7283,15 @@ fn lateral_derived() {
7321
7283
let lateral_str = if lateral_in { "LATERAL " } else { "" } ;
7322
7284
let sql = format ! (
7323
7285
"SELECT * FROM customer LEFT JOIN {lateral_str}\
7324
- (SELECT * FROM order WHERE order .customer = customer.id LIMIT 3) AS order ON true "
7286
+ (SELECT * FROM orders WHERE orders .customer = customer.id LIMIT 3) AS orders ON 1 "
7325
7287
) ;
7326
7288
let select = verified_only_select ( & sql) ;
7327
7289
let from = only ( select. from ) ;
7328
7290
assert_eq ! ( from. joins. len( ) , 1 ) ;
7329
7291
let join = & from. joins [ 0 ] ;
7330
7292
assert_eq ! (
7331
7293
join. join_operator,
7332
- JoinOperator :: LeftOuter ( JoinConstraint :: On ( Expr :: Value ( Value :: Boolean ( true ) ) ) )
7294
+ JoinOperator :: LeftOuter ( JoinConstraint :: On ( Expr :: Value ( test_utils :: number ( "1" ) ) ) )
7333
7295
) ;
7334
7296
if let TableFactor :: Derived {
7335
7297
lateral,
@@ -7338,10 +7300,10 @@ fn lateral_derived() {
7338
7300
} = join. relation
7339
7301
{
7340
7302
assert_eq ! ( lateral_in, lateral) ;
7341
- assert_eq ! ( Ident :: new( "order " ) , alias. name) ;
7303
+ assert_eq ! ( Ident :: new( "orders " ) , alias. name) ;
7342
7304
assert_eq ! (
7343
7305
subquery. to_string( ) ,
7344
- "SELECT * FROM order WHERE order .customer = customer.id LIMIT 3"
7306
+ "SELECT * FROM orders WHERE orders .customer = customer.id LIMIT 3"
7345
7307
) ;
7346
7308
} else {
7347
7309
unreachable ! ( )
@@ -8381,7 +8343,7 @@ fn parse_merge() {
8381
8343
_ => unreachable ! ( ) ,
8382
8344
} ;
8383
8345
8384
- let sql = "MERGE INTO s.bar AS dest USING newArrivals AS S ON false WHEN NOT MATCHED THEN INSERT VALUES (stg.A, stg.B, stg.C)" ;
8346
+ let sql = "MERGE INTO s.bar AS dest USING newArrivals AS S ON (1 > 1) WHEN NOT MATCHED THEN INSERT VALUES (stg.A, stg.B, stg.C)" ;
8385
8347
verified_stmt ( sql) ;
8386
8348
}
8387
8349
@@ -11160,13 +11122,11 @@ fn parse_explain_with_option_list() {
11160
11122
11161
11123
#[ test]
11162
11124
fn test_create_policy ( ) {
11163
- let sql = concat ! (
11164
- "CREATE POLICY my_policy ON my_table " ,
11165
- "AS PERMISSIVE FOR SELECT " ,
11166
- "TO my_role, CURRENT_USER " ,
11167
- "USING (c0 = 1) " ,
11168
- "WITH CHECK (true)"
11169
- ) ;
11125
+ let sql: & str = "CREATE POLICY my_policy ON my_table \
11126
+ AS PERMISSIVE FOR SELECT \
11127
+ TO my_role, CURRENT_USER \
11128
+ USING (c0 = 1) \
11129
+ WITH CHECK (1 = 1)";
11170
11130
11171
11131
match all_dialects ( ) . verified_stmt ( sql) {
11172
11132
Statement :: CreatePolicy {
@@ -11194,7 +11154,14 @@ fn test_create_policy() {
11194
11154
right: Box :: new( Expr :: Value ( Value :: Number ( "1" . parse( ) . unwrap( ) , false ) ) ) ,
11195
11155
} )
11196
11156
) ;
11197
- assert_eq ! ( with_check, Some ( Expr :: Value ( Value :: Boolean ( true ) ) ) ) ;
11157
+ assert_eq ! (
11158
+ with_check,
11159
+ Some ( Expr :: BinaryOp {
11160
+ left: Box :: new( Expr :: Value ( Value :: Number ( "1" . parse( ) . unwrap( ) , false ) ) ) ,
11161
+ op: BinaryOperator :: Eq ,
11162
+ right: Box :: new( Expr :: Value ( Value :: Number ( "1" . parse( ) . unwrap( ) , false ) ) ) ,
11163
+ } )
11164
+ ) ;
11198
11165
}
11199
11166
_ => unreachable ! ( ) ,
11200
11167
}
@@ -11205,7 +11172,7 @@ fn test_create_policy() {
11205
11172
"AS PERMISSIVE FOR SELECT " ,
11206
11173
"TO my_role, CURRENT_USER " ,
11207
11174
"USING (c0 IN (SELECT column FROM t0)) " ,
11208
- "WITH CHECK (true )"
11175
+ "WITH CHECK (1 = 1 )"
11209
11176
) ) ;
11210
11177
// omit AS / FOR / TO / USING / WITH CHECK clauses is allowed
11211
11178
all_dialects ( ) . verified_stmt ( "CREATE POLICY my_policy ON my_table" ) ;
0 commit comments