File tree Expand file tree Collapse file tree 6 files changed +191
-22
lines changed
Expand file tree Collapse file tree 6 files changed +191
-22
lines changed Original file line number Diff line number Diff line change @@ -4644,7 +4644,9 @@ fn string_literal(p: &mut Parser<'_>) {
46444644
46454645fn opt_bool_literal ( p : & mut Parser < ' _ > ) -> bool {
46464646 let m = p. start ( ) ;
4647- if p. eat ( TRUE_KW ) || p. eat ( FALSE_KW ) {
4647+ // TOOD: we might want to check if its 1 or 0 specificially, not just `INT_NUMBER`
4648+ // https://www.postgresql.org/docs/current/sql-explain.html
4649+ if p. eat ( TRUE_KW ) || p. eat ( FALSE_KW ) || p. eat ( OFF_KW ) || p. eat ( ON_KW ) || p. eat ( INT_NUMBER ) {
46484650 m. complete ( p, LITERAL ) ;
46494651 true
46504652 } else {
Original file line number Diff line number Diff line change @@ -8,9 +8,9 @@ explain analyze select a from t;
88explain (
99 analyze,
1010 verbose,
11- costs,
12- costs true,
13- costs false,
11+ costs,
12+ costs true,
13+ costs false,
1414 settings,
1515 generic_plan,
1616 buffers,
@@ -69,3 +69,14 @@ explain analyze (((((select 1)))));
6969-- parens_values
7070explain analyze (((((values (1 ))))));
7171
72+ -- boolean off
73+ EXPLAIN (COSTS OFF) SELECT * FROM foo WHERE i = 4 ;
74+
75+ -- boolean on
76+ EXPLAIN (COSTS ON ) SELECT * FROM foo WHERE i = 4 ;
77+
78+ -- boolean 1
79+ EXPLAIN (COSTS 1 ) SELECT * FROM foo WHERE i = 4 ;
80+
81+ -- boolean 0
82+ EXPLAIN (COSTS 0 ) SELECT * FROM foo WHERE i = 4 ;
Original file line number Diff line number Diff line change @@ -468,11 +468,8 @@ SOURCE_FILE
468468 WHITESPACE " "
469469 EQ " ="
470470 WHITESPACE " "
471- PATH_TYPE
472- PATH
473- PATH_SEGMENT
474- NAME_REF
475- OFF_KW " off"
471+ LITERAL
472+ OFF_KW " off"
476473 R_PAREN " )"
477474 SEMICOLON " ;"
478475 WHITESPACE " \n\n "
@@ -634,11 +631,8 @@ SOURCE_FILE
634631 WHITESPACE " "
635632 EQ " ="
636633 WHITESPACE " "
637- PATH_TYPE
638- PATH
639- PATH_SEGMENT
640- NAME_REF
641- OFF_KW " off"
634+ LITERAL
635+ OFF_KW " off"
642636 R_PAREN " )"
643637 SEMICOLON " ;"
644638 WHITESPACE " \n\n "
Original file line number Diff line number Diff line change @@ -131,11 +131,8 @@ SOURCE_FILE
131131 WHITESPACE " "
132132 EQ " ="
133133 WHITESPACE " "
134- PATH_TYPE
135- PATH
136- PATH_SEGMENT
137- NAME_REF
138- OFF_KW " off"
134+ LITERAL
135+ OFF_KW " off"
139136 COMMA " ,"
140137 WHITESPACE " \n "
141138 PATH
Original file line number Diff line number Diff line change @@ -62,19 +62,19 @@ SOURCE_FILE
6262 WHITESPACE " \n "
6363 IDENT " costs"
6464 COMMA " ,"
65- WHITESPACE " \n "
65+ WHITESPACE " \n "
6666 IDENT " costs"
6767 WHITESPACE " "
6868 LITERAL
6969 TRUE_KW " true"
7070 COMMA " ,"
71- WHITESPACE " \n "
71+ WHITESPACE " \n "
7272 IDENT " costs"
7373 WHITESPACE " "
7474 LITERAL
7575 FALSE_KW " false"
7676 COMMA " ,"
77- WHITESPACE " \n "
77+ WHITESPACE " \n "
7878 IDENT " settings"
7979 COMMA " ,"
8080 WHITESPACE " \n "
@@ -619,3 +619,159 @@ SOURCE_FILE
619619 R_PAREN " )"
620620 SEMICOLON " ;"
621621 WHITESPACE " \n\n "
622+ COMMENT " -- boolean off"
623+ WHITESPACE " \n "
624+ EXPLAIN_STMT
625+ EXPLAIN_KW " EXPLAIN"
626+ WHITESPACE " "
627+ L_PAREN " ("
628+ IDENT " COSTS"
629+ WHITESPACE " "
630+ LITERAL
631+ OFF_KW " OFF"
632+ R_PAREN " )"
633+ WHITESPACE " "
634+ SELECT
635+ SELECT_CLAUSE
636+ SELECT_KW " SELECT"
637+ WHITESPACE " "
638+ TARGET_LIST
639+ TARGET
640+ STAR " *"
641+ WHITESPACE " "
642+ FROM_CLAUSE
643+ FROM_KW " FROM"
644+ WHITESPACE " "
645+ NAME_REF
646+ IDENT " foo"
647+ WHITESPACE " "
648+ WHERE_CLAUSE
649+ WHERE_KW " WHERE"
650+ WHITESPACE " "
651+ BIN_EXPR
652+ NAME_REF
653+ IDENT " i"
654+ WHITESPACE " "
655+ EQ " ="
656+ WHITESPACE " "
657+ LITERAL
658+ INT_NUMBER " 4"
659+ SEMICOLON " ;"
660+ WHITESPACE " \n\n "
661+ COMMENT " -- boolean on"
662+ WHITESPACE " \n "
663+ EXPLAIN_STMT
664+ EXPLAIN_KW " EXPLAIN"
665+ WHITESPACE " "
666+ L_PAREN " ("
667+ IDENT " COSTS"
668+ WHITESPACE " "
669+ LITERAL
670+ ON_KW " ON"
671+ R_PAREN " )"
672+ WHITESPACE " "
673+ SELECT
674+ SELECT_CLAUSE
675+ SELECT_KW " SELECT"
676+ WHITESPACE " "
677+ TARGET_LIST
678+ TARGET
679+ STAR " *"
680+ WHITESPACE " "
681+ FROM_CLAUSE
682+ FROM_KW " FROM"
683+ WHITESPACE " "
684+ NAME_REF
685+ IDENT " foo"
686+ WHITESPACE " "
687+ WHERE_CLAUSE
688+ WHERE_KW " WHERE"
689+ WHITESPACE " "
690+ BIN_EXPR
691+ NAME_REF
692+ IDENT " i"
693+ WHITESPACE " "
694+ EQ " ="
695+ WHITESPACE " "
696+ LITERAL
697+ INT_NUMBER " 4"
698+ SEMICOLON " ;"
699+ WHITESPACE " \n\n "
700+ COMMENT " -- boolean 1"
701+ WHITESPACE " \n "
702+ EXPLAIN_STMT
703+ EXPLAIN_KW " EXPLAIN"
704+ WHITESPACE " "
705+ L_PAREN " ("
706+ IDENT " COSTS"
707+ WHITESPACE " "
708+ LITERAL
709+ INT_NUMBER " 1"
710+ R_PAREN " )"
711+ WHITESPACE " "
712+ SELECT
713+ SELECT_CLAUSE
714+ SELECT_KW " SELECT"
715+ WHITESPACE " "
716+ TARGET_LIST
717+ TARGET
718+ STAR " *"
719+ WHITESPACE " "
720+ FROM_CLAUSE
721+ FROM_KW " FROM"
722+ WHITESPACE " "
723+ NAME_REF
724+ IDENT " foo"
725+ WHITESPACE " "
726+ WHERE_CLAUSE
727+ WHERE_KW " WHERE"
728+ WHITESPACE " "
729+ BIN_EXPR
730+ NAME_REF
731+ IDENT " i"
732+ WHITESPACE " "
733+ EQ " ="
734+ WHITESPACE " "
735+ LITERAL
736+ INT_NUMBER " 4"
737+ SEMICOLON " ;"
738+ WHITESPACE " \n\n "
739+ COMMENT " -- boolean 0"
740+ WHITESPACE " \n "
741+ EXPLAIN_STMT
742+ EXPLAIN_KW " EXPLAIN"
743+ WHITESPACE " "
744+ L_PAREN " ("
745+ IDENT " COSTS"
746+ WHITESPACE " "
747+ LITERAL
748+ INT_NUMBER " 0"
749+ R_PAREN " )"
750+ WHITESPACE " "
751+ SELECT
752+ SELECT_CLAUSE
753+ SELECT_KW " SELECT"
754+ WHITESPACE " "
755+ TARGET_LIST
756+ TARGET
757+ STAR " *"
758+ WHITESPACE " "
759+ FROM_CLAUSE
760+ FROM_KW " FROM"
761+ WHITESPACE " "
762+ NAME_REF
763+ IDENT " foo"
764+ WHITESPACE " "
765+ WHERE_CLAUSE
766+ WHERE_KW " WHERE"
767+ WHITESPACE " "
768+ BIN_EXPR
769+ NAME_REF
770+ IDENT " i"
771+ WHITESPACE " "
772+ EQ " ="
773+ WHITESPACE " "
774+ LITERAL
775+ INT_NUMBER " 4"
776+ SEMICOLON " ;"
777+ WHITESPACE " \n "
Original file line number Diff line number Diff line change 22use camino:: Utf8Path ;
33use dir_test:: { dir_test, Fixture } ;
44use insta:: { assert_snapshot, with_settings} ;
5+ use std:: fs:: remove_file;
56
67mod utils;
78
@@ -100,5 +101,13 @@ fn regression_suite(fixture: Fixture<&str>) {
100101 } , {
101102 assert_snapshot!( test_name, parsed) ;
102103 } ) ;
104+ } else {
105+ let snapshot_path = Utf8Path :: new ( "tests/snapshots/regression_suite" )
106+ . join ( format ! ( "tests__{}.snap" , test_name) ) ;
107+ let new_snapshot_path = Utf8Path :: new ( "tests/snapshots/regression_suite" )
108+ . join ( format ! ( "tests__{}.snap.new" , test_name) ) ;
109+
110+ let _ = remove_file ( snapshot_path) ;
111+ let _ = remove_file ( new_snapshot_path) ;
103112 }
104113}
You can’t perform that action at this time.
0 commit comments