@@ -1565,7 +1565,8 @@ show_stmt
15651565 /*
15661566 export interface show_stmt_node {
15671567 type: 'show';
1568- keyword: 'tables';
1568+ keyword: 'tables' | 'var';
1569+ var?: without_prefix_var_decl;
15691570 }
15701571 => AstStatement<show_stmt_node>
15711572 */
@@ -1577,6 +1578,18 @@ show_stmt
15771578 }
15781579 }
15791580 }
1581+ / KW_SHOW __ c :without_prefix_var_decl {
1582+ return {
1583+ // => AstStatement<show_stmt_node>
1584+ tableList: Array .from (tableList),
1585+ columnList: columnListTableAlias (columnList),
1586+ ast: {
1587+ type: ' show' ,
1588+ keyword: ' var' ,
1589+ var: c,
1590+ }
1591+ }
1592+ }
15801593
15811594deallocate_stmt
15821595 = KW_DEALLOCATE __ p :('PREPARE' i )? __ i :(ident_name / KW_ALL ) {
@@ -1776,12 +1789,12 @@ expr_item
17761789 }
17771790
17781791cast_data_type
1779- // => data_type & { quoted?: string }
1780- = '"' t : data_type '"' {
1781- t .quoted = ' "'
1792+ = p :'"' ? t : data_type s :'"' ? {
1793+ // => data_type & { quoted?: string }
1794+ if ((p && ! s) || (! p && s)) throw new Error (' double quoted not match' )
1795+ if (p && s) t .quoted = ' "'
17821796 return t
17831797 }
1784- / data_type
17851798
17861799column_list_item
17871800 = c :string_constants_escape {
@@ -3926,14 +3939,16 @@ var_decl
39263939 }
39273940
39283941without_prefix_var_decl
3929- = name :ident_name m :mem_chain {
3930- // => { type: 'var'; prefix: string; name: ident_name; members: mem_chain; }
3942+ = p : '"' ? name :ident_name m :mem_chain s : '"' ? {
3943+ // => { type: 'var'; prefix: string; name: ident_name; members: mem_chain; quoted: string | null }
39313944 // push for analysis
3945+ if ((p && ! s) || (! p && s)) throw new Error (' double quoted not match' )
39323946 varList .push (name);
39333947 return {
39343948 type: ' var' ,
39353949 name: name,
39363950 members: m,
3951+ quoted: p && s ? ' "' : null ,
39373952 prefix: null ,
39383953 };
39393954 }
0 commit comments