@@ -6662,8 +6662,16 @@ fn parse_joins_on() {
66626662 only( & verified_only_select( "SELECT * FROM t1 JOIN t2 ON c1 = c2" ) . from) . joins,
66636663 vec![ join_with_constraint( "t2" , None , false , JoinOperator :: Join ) ]
66646664 ) ;
6665+ assert_eq ! (
6666+ only( & verified_only_select( "SELECT * FROM t1 INNER JOIN t2 ON c1 = c2" ) . from) . joins,
6667+ vec![ join_with_constraint( "t2" , None , false , JoinOperator :: Inner ) ]
6668+ ) ;
66656669 assert_eq ! (
66666670 only( & verified_only_select( "SELECT * FROM t1 LEFT JOIN t2 ON c1 = c2" ) . from) . joins,
6671+ vec![ join_with_constraint( "t2" , None , false , JoinOperator :: Left ) ]
6672+ ) ;
6673+ assert_eq ! (
6674+ only( & verified_only_select( "SELECT * FROM t1 LEFT OUTER JOIN t2 ON c1 = c2" ) . from) . joins,
66676675 vec![ join_with_constraint(
66686676 "t2" ,
66696677 None ,
@@ -6673,6 +6681,10 @@ fn parse_joins_on() {
66736681 ) ;
66746682 assert_eq ! (
66756683 only( & verified_only_select( "SELECT * FROM t1 RIGHT JOIN t2 ON c1 = c2" ) . from) . joins,
6684+ vec![ join_with_constraint( "t2" , None , false , JoinOperator :: Right ) ]
6685+ ) ;
6686+ assert_eq ! (
6687+ only( & verified_only_select( "SELECT * FROM t1 RIGHT OUTER JOIN t2 ON c1 = c2" ) . from) . joins,
66766688 vec![ join_with_constraint(
66776689 "t2" ,
66786690 None ,
@@ -6795,10 +6807,18 @@ fn parse_joins_using() {
67956807 ) ;
67966808 assert_eq ! (
67976809 only( & verified_only_select( "SELECT * FROM t1 LEFT JOIN t2 USING(c1)" ) . from) . joins,
6810+ vec![ join_with_constraint( "t2" , None , JoinOperator :: Left ) ]
6811+ ) ;
6812+ assert_eq ! (
6813+ only( & verified_only_select( "SELECT * FROM t1 LEFT OUTER JOIN t2 USING(c1)" ) . from) . joins,
67986814 vec![ join_with_constraint( "t2" , None , JoinOperator :: LeftOuter ) ]
67996815 ) ;
68006816 assert_eq ! (
68016817 only( & verified_only_select( "SELECT * FROM t1 RIGHT JOIN t2 USING(c1)" ) . from) . joins,
6818+ vec![ join_with_constraint( "t2" , None , JoinOperator :: Right ) ]
6819+ ) ;
6820+ assert_eq ! (
6821+ only( & verified_only_select( "SELECT * FROM t1 RIGHT OUTER JOIN t2 USING(c1)" ) . from) . joins,
68026822 vec![ join_with_constraint( "t2" , None , JoinOperator :: RightOuter ) ]
68036823 ) ;
68046824 assert_eq ! (
@@ -6858,20 +6878,34 @@ fn parse_natural_join() {
68586878 only( & verified_only_select( "SELECT * FROM t1 NATURAL JOIN t2" ) . from) . joins,
68596879 vec![ natural_join( JoinOperator :: Join , None ) ]
68606880 ) ;
6881+
68616882 // inner join explicitly
68626883 assert_eq ! (
68636884 only( & verified_only_select( "SELECT * FROM t1 NATURAL INNER JOIN t2" ) . from) . joins,
68646885 vec![ natural_join( JoinOperator :: Inner , None ) ]
68656886 ) ;
6887+
68666888 // left join explicitly
68676889 assert_eq ! (
68686890 only( & verified_only_select( "SELECT * FROM t1 NATURAL LEFT JOIN t2" ) . from) . joins,
6891+ vec![ natural_join( JoinOperator :: Left , None ) ]
6892+ ) ;
6893+
6894+ // left outer join explicitly
6895+ assert_eq ! (
6896+ only( & verified_only_select( "SELECT * FROM t1 NATURAL LEFT OUTER JOIN t2" ) . from) . joins,
68696897 vec![ natural_join( JoinOperator :: LeftOuter , None ) ]
68706898 ) ;
68716899
68726900 // right join explicitly
68736901 assert_eq ! (
68746902 only( & verified_only_select( "SELECT * FROM t1 NATURAL RIGHT JOIN t2" ) . from) . joins,
6903+ vec![ natural_join( JoinOperator :: Right , None ) ]
6904+ ) ;
6905+
6906+ // right outer join explicitly
6907+ assert_eq ! (
6908+ only( & verified_only_select( "SELECT * FROM t1 NATURAL RIGHT OUTER JOIN t2" ) . from) . joins,
68756909 vec![ natural_join( JoinOperator :: RightOuter , None ) ]
68766910 ) ;
68776911
@@ -6951,22 +6985,12 @@ fn parse_join_nesting() {
69516985
69526986#[ test]
69536987fn parse_join_syntax_variants ( ) {
6954- one_statement_parses_to (
6955- "SELECT c1 FROM t1 JOIN t2 USING(c1)" ,
6956- "SELECT c1 FROM t1 JOIN t2 USING(c1)" ,
6957- ) ;
6958- one_statement_parses_to (
6959- "SELECT c1 FROM t1 INNER JOIN t2 USING(c1)" ,
6960- "SELECT c1 FROM t1 INNER JOIN t2 USING(c1)" ,
6961- ) ;
6962- one_statement_parses_to (
6963- "SELECT c1 FROM t1 LEFT OUTER JOIN t2 USING(c1)" ,
6964- "SELECT c1 FROM t1 LEFT JOIN t2 USING(c1)" ,
6965- ) ;
6966- one_statement_parses_to (
6967- "SELECT c1 FROM t1 RIGHT OUTER JOIN t2 USING(c1)" ,
6968- "SELECT c1 FROM t1 RIGHT JOIN t2 USING(c1)" ,
6969- ) ;
6988+ verified_stmt ( "SELECT c1 FROM t1 JOIN t2 USING(c1)" ) ;
6989+ verified_stmt ( "SELECT c1 FROM t1 INNER JOIN t2 USING(c1)" ) ;
6990+ verified_stmt ( "SELECT c1 FROM t1 LEFT JOIN t2 USING(c1)" ) ;
6991+ verified_stmt ( "SELECT c1 FROM t1 LEFT OUTER JOIN t2 USING(c1)" ) ;
6992+ verified_stmt ( "SELECT c1 FROM t1 RIGHT JOIN t2 USING(c1)" ) ;
6993+ verified_stmt ( "SELECT c1 FROM t1 RIGHT OUTER JOIN t2 USING(c1)" ) ;
69706994 one_statement_parses_to (
69716995 "SELECT c1 FROM t1 FULL OUTER JOIN t2 USING(c1)" ,
69726996 "SELECT c1 FROM t1 FULL JOIN t2 USING(c1)" ,
@@ -8028,7 +8052,7 @@ fn lateral_derived() {
80288052 let join = & from. joins [ 0 ] ;
80298053 assert_eq ! (
80308054 join. join_operator,
8031- JoinOperator :: LeftOuter ( JoinConstraint :: On ( Expr :: Value ( test_utils:: number( "1" ) ) ) )
8055+ JoinOperator :: Left ( JoinConstraint :: On ( Expr :: Value ( test_utils:: number( "1" ) ) ) )
80328056 ) ;
80338057 if let TableFactor :: Derived {
80348058 lateral,
@@ -8096,7 +8120,7 @@ fn lateral_function() {
80968120 alias: None ,
80978121 } ,
80988122 global: false ,
8099- join_operator: JoinOperator :: LeftOuter ( JoinConstraint :: None ) ,
8123+ join_operator: JoinOperator :: Left ( JoinConstraint :: None ) ,
81008124 } ] ,
81018125 } ] ,
81028126 lateral_views : vec ! [ ] ,
0 commit comments