@@ -34,7 +34,11 @@ simplestatements_tablespace -> kw_tablespace word {% x => track(x, {
3434 }) %}
3535
3636
37- simplestatements_set -> kw_set ( simplestatements_set_simple | simplestatements_set_timezone ) {% last %}
37+ simplestatements_set -> kw_set ( simplestatements_set_simple
38+ | simplestatements_set_timezone
39+ | simplestatements_set_session
40+ | simplestatements_set_transaction_snapshot
41+ | simplestatements_set_transaction ) {% last %}
3842
3943simplestatements_set_timezone -> kw_time kw_zone simplestatements_set_timezone_val {% x => track (x, { type: ' set timezone' , to: x[2 ] }) %}
4044
@@ -65,6 +69,27 @@ simplestatements_set_val_raw
6569
6670simplestatements_show -> kw_show ident {% x => track (x, { type: ' show' , variable: asName (x[1 ]) }) %}
6771
72+ # https://www.postgresql.org/docs/current/sql-set-transaction.html
73+ simplestatements_set_transaction_snapshot
74+ -> kw_transaction kw_snapshot ident {% x => track (x, { type: ' set transaction snapshot' , snapshotId: asName (x[2 ]) }) %}
75+
76+ simplestatements_set_session
77+ -> kw_session kw_characteristics %kw_as kw_transaction
78+ ( simplestatements_begin_isol | simplestatements_begin_writ | simplestatements_begin_def ):* {%
79+ x => track (x, {
80+ type: ' set session characteristics as transaction' ,
81+ ... x[4 ].reduce ((a : any , b : any ) => ({... unwrap (a), ... unwrap (b)}), {}),
82+ })
83+ %}
84+
85+ simplestatements_set_transaction
86+ -> kw_transaction ( simplestatements_begin_isol | simplestatements_begin_writ | simplestatements_begin_def ):* {%
87+ x => track (x, {
88+ type: ' set transaction' ,
89+ ... x[1 ].reduce ((a : any , b : any ) => ({... unwrap (a), ... unwrap (b)}), {}),
90+ })
91+ %}
92+
6893
6994# https://www.postgresql.org/docs/current/sql-createschema.html
7095create_schema -> ( %kw_create kw_schema ) kw_ifnotexists :? ident {% x => track (x, {
0 commit comments