diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index a68f78e..711dd2b 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -1465,6 +1465,7 @@ generic_set: n->name = $1; $$ = n; } + ; set_rest_more: /* Generic SET syntaxes: */ generic_set {$$ = $1;} diff --git a/src/interfaces/ecpg/test/expected/sql-show.c b/src/interfaces/ecpg/test/expected/sql-show.c index 1b52d5e..5997a15 100644 --- a/src/interfaces/ecpg/test/expected/sql-show.c +++ b/src/interfaces/ecpg/test/expected/sql-show.c @@ -112,7 +112,7 @@ if (sqlca.sqlcode < 0) sqlprint();} printf("Var: Standard conforming strings: %s\n", var); - { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "set time zone PST8PDT", ECPGt_EOIT, ECPGt_EORT); + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "set standard_conforming_strings to default", ECPGt_EOIT, ECPGt_EORT); #line 30 "show.pgc" if (sqlca.sqlwarn[0] == 'W') sqlprint(); @@ -121,7 +121,7 @@ if (sqlca.sqlwarn[0] == 'W') sqlprint(); if (sqlca.sqlcode < 0) sqlprint();} #line 30 "show.pgc" - { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "show time zone", ECPGt_EOIT, + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "show standard_conforming_strings", ECPGt_EOIT, ECPGt_char,(var),(long)25,(long)1,(25)*sizeof(char), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); #line 31 "show.pgc" @@ -132,9 +132,9 @@ if (sqlca.sqlwarn[0] == 'W') sqlprint(); if (sqlca.sqlcode < 0) sqlprint();} #line 31 "show.pgc" - printf("Time Zone: %s\n", var); + printf("Var: Standard conforming strings: %s\n", var); - { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "set transaction isolation level read committed", ECPGt_EOIT, ECPGt_EORT); + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "set time zone PST8PDT", ECPGt_EOIT, ECPGt_EORT); #line 34 "show.pgc" if (sqlca.sqlwarn[0] == 'W') sqlprint(); @@ -143,7 +143,7 @@ if (sqlca.sqlwarn[0] == 'W') sqlprint(); if (sqlca.sqlcode < 0) sqlprint();} #line 34 "show.pgc" - { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "show transaction isolation level", ECPGt_EOIT, + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "show time zone", ECPGt_EOIT, ECPGt_char,(var),(long)25,(long)1,(25)*sizeof(char), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); #line 35 "show.pgc" @@ -154,9 +154,9 @@ if (sqlca.sqlwarn[0] == 'W') sqlprint(); if (sqlca.sqlcode < 0) sqlprint();} #line 35 "show.pgc" - printf("Transaction isolation level: %s\n", var); + printf("Time Zone: %s\n", var); - { ECPGdisconnect(__LINE__, "ALL"); + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "set transaction isolation level read committed", ECPGt_EOIT, ECPGt_EORT); #line 38 "show.pgc" if (sqlca.sqlwarn[0] == 'W') sqlprint(); @@ -165,6 +165,28 @@ if (sqlca.sqlwarn[0] == 'W') sqlprint(); if (sqlca.sqlcode < 0) sqlprint();} #line 38 "show.pgc" + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "show transaction isolation level", ECPGt_EOIT, + ECPGt_char,(var),(long)25,(long)1,(25)*sizeof(char), + ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); +#line 39 "show.pgc" + +if (sqlca.sqlwarn[0] == 'W') sqlprint(); +#line 39 "show.pgc" + +if (sqlca.sqlcode < 0) sqlprint();} +#line 39 "show.pgc" + + printf("Transaction isolation level: %s\n", var); + + { ECPGdisconnect(__LINE__, "ALL"); +#line 42 "show.pgc" + +if (sqlca.sqlwarn[0] == 'W') sqlprint(); +#line 42 "show.pgc" + +if (sqlca.sqlcode < 0) sqlprint();} +#line 42 "show.pgc" + return 0; } diff --git a/src/interfaces/ecpg/test/expected/sql-show.stderr b/src/interfaces/ecpg/test/expected/sql-show.stderr index c303a84..dc58659 100644 --- a/src/interfaces/ecpg/test/expected/sql-show.stderr +++ b/src/interfaces/ecpg/test/expected/sql-show.stderr @@ -44,33 +44,47 @@ [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_get_data on line 27: RESULT: off offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 30: query: set time zone PST8PDT; with 0 parameter(s) on connection ecpg1_regression +[NO_PID]: ecpg_execute on line 30: query: set standard_conforming_strings to default; with 0 parameter(s) on connection ecpg1_regression [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_execute on line 30: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_process_output on line 30: OK: SET [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 31: query: show time zone; with 0 parameter(s) on connection ecpg1_regression +[NO_PID]: ecpg_execute on line 31: query: show standard_conforming_strings; with 0 parameter(s) on connection ecpg1_regression [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_execute on line 31: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_process_output on line 31: correctly got 1 tuples with 1 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 31: RESULT: PST8PDT offset: -1; array: no +[NO_PID]: ecpg_get_data on line 31: RESULT: on offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 34: query: set transaction isolation level read committed; with 0 parameter(s) on connection ecpg1_regression +[NO_PID]: ecpg_execute on line 34: query: set time zone PST8PDT; with 0 parameter(s) on connection ecpg1_regression [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_execute on line 34: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_process_output on line 34: OK: SET [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 35: query: show transaction isolation level; with 0 parameter(s) on connection ecpg1_regression +[NO_PID]: ecpg_execute on line 35: query: show time zone; with 0 parameter(s) on connection ecpg1_regression [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_execute on line 35: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_process_output on line 35: correctly got 1 tuples with 1 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 35: RESULT: read committed offset: -1; array: no +[NO_PID]: ecpg_get_data on line 35: RESULT: PST8PDT offset: -1; array: no +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_execute on line 38: query: set transaction isolation level read committed; with 0 parameter(s) on connection ecpg1_regression +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_execute on line 38: using PQexec +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_process_output on line 38: OK: SET +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_execute on line 39: query: show transaction isolation level; with 0 parameter(s) on connection ecpg1_regression +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_execute on line 39: using PQexec +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_process_output on line 39: correctly got 1 tuples with 1 fields +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_get_data on line 39: RESULT: read committed offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_finish: connection ecpg1_regression closed [NO_PID]: sqlca: code: 0, state: 00000 diff --git a/src/interfaces/ecpg/test/expected/sql-show.stdout b/src/interfaces/ecpg/test/expected/sql-show.stdout index 9319c5d..1b0d19c 100644 --- a/src/interfaces/ecpg/test/expected/sql-show.stdout +++ b/src/interfaces/ecpg/test/expected/sql-show.stdout @@ -1,5 +1,6 @@ Var: Search path: public Var: Search path: public Var: Standard conforming strings: off +Var: Standard conforming strings: on Time Zone: PST8PDT Transaction isolation level: read committed diff --git a/src/interfaces/ecpg/test/sql/show.pgc b/src/interfaces/ecpg/test/sql/show.pgc index 339678a..d243aba 100644 --- a/src/interfaces/ecpg/test/sql/show.pgc +++ b/src/interfaces/ecpg/test/sql/show.pgc @@ -27,6 +27,10 @@ int main() { EXEC SQL SHOW standard_conforming_strings INTO :var; printf("Var: Standard conforming strings: %s\n", var); + EXEC SQL SET standard_conforming_strings TO DEFAULT; + EXEC SQL SHOW standard_conforming_strings INTO :var; + printf("Var: Standard conforming strings: %s\n", var); + EXEC SQL SET TIME ZONE PST8PDT; EXEC SQL SHOW TIME ZONE INTO :var; printf("Time Zone: %s\n", var);