@@ -2061,7 +2061,7 @@ with_clause
20612061 }
20622062
20632063cte_definition
2064- = name :(literal_string / ident_name / table_name ) __ columns :cte_column_definition ? __ KW_AS __ LPAREN __ stmt :set_op_stmt __ RPAREN {
2064+ = name :(literal_string / ident_name / table_name ) __ columns :cte_column_definition ? __ KW_AS __ LPAREN __ stmt :( value_clause / set_op_stmt ) __ RPAREN {
20652065 if (typeof name === ' string' ) name = { type: ' default' , value: name }
20662066 if (name .table ) name = { type: ' default' , value: name .table }
20672067 return { name, stmt, columns };
@@ -2411,12 +2411,11 @@ table_base
24112411 }
24122412 / stmt :value_clause __ alias :alias_clause ? {
24132413 return {
2414- expr: { type : ' values ' , values : stmt, prefix : ' row ' } ,
2414+ expr: stmt,
24152415 as: alias
24162416 };
24172417 }
24182418 / l :('LATERAL' i )? __ LPAREN __ stmt :(set_op_stmt / value_clause ) __ RPAREN __ alias :alias_clause ? {
2419- if (Array .isArray (stmt)) stmt = { type: ' values' , values: stmt, prefix: ' row' }
24202419 stmt .parentheses = true ;
24212420 const result = {
24222421 expr: stmt,
@@ -2654,8 +2653,8 @@ replace_insert_stmt
26542653 }
26552654 if (c) {
26562655 let table = t && t .table || null
2657- if (Array .isArray (v)) {
2658- v .forEach ((row , idx ) => {
2656+ if (Array .isArray (v . values )) {
2657+ v .values . forEach ((row , idx ) => {
26592658 if (row .value .length != c .length ) {
26602659 throw new Error (` Error: column count doesn't match value count at row ${ idx+ 1 } ` )
26612660 }
@@ -2756,15 +2755,16 @@ replace_insert
27562755 / KW_REPLACE { return ' replace' ; }
27572756
27582757value_clause
2759- = KW_VALUES __ l :value_list { return l; }
2758+ = KW_VALUES __ l :value_list { return { type : ' values ' , values : l } }
27602759
27612760value_list
27622761 = head :value_item tail :(__ COMMA __ value_item )* {
27632762 return createList (head, tail);
27642763 }
27652764
27662765value_item
2767- = 'ROW' i ? __ LPAREN __ l :expr_list __ RPAREN {
2766+ = r :'ROW' i ? __ LPAREN __ l :expr_list __ RPAREN {
2767+ l .prefix = r && r .toLowerCase ();
27682768 return l;
27692769 }
27702770
0 commit comments