@@ -584,6 +584,9 @@ const grammar: Grammar = {
584
584
{ "name" : "kw_continue" , "symbols" : [ ( lexerAny . has ( "word" ) ? { type : "word" } : word ) ] , "postprocess" : notReservedKw ( 'continue' ) } ,
585
585
{ "name" : "kw_share" , "symbols" : [ ( lexerAny . has ( "word" ) ? { type : "word" } : word ) ] , "postprocess" : notReservedKw ( 'share' ) } ,
586
586
{ "name" : "kw_refresh" , "symbols" : [ ( lexerAny . has ( "word" ) ? { type : "word" } : word ) ] , "postprocess" : notReservedKw ( 'refresh' ) } ,
587
+ { "name" : "kw_nowait" , "symbols" : [ ( lexerAny . has ( "word" ) ? { type : "word" } : word ) ] , "postprocess" : notReservedKw ( 'nowait' ) } ,
588
+ { "name" : "kw_skip" , "symbols" : [ ( lexerAny . has ( "word" ) ? { type : "word" } : word ) ] , "postprocess" : notReservedKw ( 'skip' ) } ,
589
+ { "name" : "kw_locked" , "symbols" : [ ( lexerAny . has ( "word" ) ? { type : "word" } : word ) ] , "postprocess" : notReservedKw ( 'locked' ) } ,
587
590
{ "name" : "kw_ifnotexists" , "symbols" : [ "kw_if" , ( lexerAny . has ( "kw_not" ) ? { type : "kw_not" } : kw_not ) , "kw_exists" ] } ,
588
591
{ "name" : "kw_ifexists" , "symbols" : [ "kw_if" , "kw_exists" ] } ,
589
592
{ "name" : "kw_withordinality" , "symbols" : [ ( lexerAny . has ( "kw_with" ) ? { type : "kw_with" } : kw_with ) , "kw_ordinality" ] } ,
@@ -816,15 +819,21 @@ const grammar: Grammar = {
816
819
{ "name" : "select_statement$ebnf$4" , "symbols" : [ ] , "postprocess" : ( ) => null } ,
817
820
{ "name" : "select_statement$ebnf$5" , "symbols" : [ "select_limit_offset" ] , "postprocess" : id } ,
818
821
{ "name" : "select_statement$ebnf$5" , "symbols" : [ ] , "postprocess" : ( ) => null } ,
819
- { "name" : "select_statement$ebnf$6" , "symbols" : [ "select_for" ] , "postprocess" : id } ,
822
+ { "name" : "select_statement$ebnf$6$subexpression$1$ebnf$1" , "symbols" : [ "select_skip" ] , "postprocess" : id } ,
823
+ { "name" : "select_statement$ebnf$6$subexpression$1$ebnf$1" , "symbols" : [ ] , "postprocess" : ( ) => null } ,
824
+ { "name" : "select_statement$ebnf$6$subexpression$1" , "symbols" : [ "select_for" , "select_statement$ebnf$6$subexpression$1$ebnf$1" ] } ,
825
+ { "name" : "select_statement$ebnf$6" , "symbols" : [ "select_statement$ebnf$6$subexpression$1" ] , "postprocess" : id } ,
820
826
{ "name" : "select_statement$ebnf$6" , "symbols" : [ ] , "postprocess" : ( ) => null } ,
821
827
{ "name" : "select_statement" , "symbols" : [ "select_what" , "select_statement$ebnf$1" , "select_statement$ebnf$2" , "select_statement$ebnf$3" , "select_statement$ebnf$4" , "select_statement$ebnf$5" , "select_statement$ebnf$6" ] , "postprocess" : x => {
822
- let [ what , from , where , _groupBy , orderBy , limit , selectFor ] = x ;
828
+ let [ what , from , where , _groupBy , orderBy , limit , _selectFor ] = x ;
823
829
from = unwrap ( from ) ;
824
830
let groupBy = _groupBy && _groupBy [ 0 ] ;
825
831
let having = _groupBy && _groupBy [ 1 ] ;
826
832
groupBy = groupBy && ( groupBy . length === 1 && groupBy [ 0 ] . type === 'list' ? groupBy [ 0 ] . expressions : groupBy ) ;
827
833
having = having && unwrap ( having ) ;
834
+ let selectFor = _selectFor && _selectFor [ 0 ] ;
835
+ let skip = _selectFor && _selectFor [ 1 ] ;
836
+ skip = unwrap ( skip ) ;
828
837
return track ( x , {
829
838
...what ,
830
839
...from ? { from : Array . isArray ( from ) ? from : [ from ] } : { } ,
@@ -834,6 +843,7 @@ const grammar: Grammar = {
834
843
...orderBy ? { orderBy } : { } ,
835
844
...where ? { where } : { } ,
836
845
...selectFor ? { for : selectFor [ 1 ] } : { } ,
846
+ ...skip ? { skip } : { } ,
837
847
type : 'select' ,
838
848
} ) ;
839
849
} } ,
@@ -1018,6 +1028,9 @@ const grammar: Grammar = {
1018
1028
{ "name" : "select_for$subexpression$1" , "symbols" : [ "kw_share" ] , "postprocess" : x => track ( x , { type : 'share' } ) } ,
1019
1029
{ "name" : "select_for$subexpression$1" , "symbols" : [ "kw_key" , "kw_share" ] , "postprocess" : x => track ( x , { type : 'key share' } ) } ,
1020
1030
{ "name" : "select_for" , "symbols" : [ ( lexerAny . has ( "kw_for" ) ? { type : "kw_for" } : kw_for ) , "select_for$subexpression$1" ] } ,
1031
+ { "name" : "select_skip$subexpression$1" , "symbols" : [ "kw_nowait" ] , "postprocess" : x => track ( x , { type : 'nowait' } ) } ,
1032
+ { "name" : "select_skip$subexpression$1" , "symbols" : [ "kw_skip" , "kw_locked" ] , "postprocess" : x => track ( x , { type : 'skip locked' } ) } ,
1033
+ { "name" : "select_skip" , "symbols" : [ "select_skip$subexpression$1" ] } ,
1021
1034
{ "name" : "select_order_by$subexpression$1" , "symbols" : [ ( lexerAny . has ( "kw_order" ) ? { type : "kw_order" } : kw_order ) , "kw_by" ] } ,
1022
1035
{ "name" : "select_order_by$ebnf$1" , "symbols" : [ ] } ,
1023
1036
{ "name" : "select_order_by$ebnf$1$subexpression$1" , "symbols" : [ "comma" , "select_order_by_expr" ] , "postprocess" : last } ,
0 commit comments