diff --git a/src/interfaces/ecpg/test/expected/sql-quote.c b/src/interfaces/ecpg/test/expected/sql-quote.c index e32aa683125c1c2b993675ea166f4ea03c4ca70d..fd57df2b1f2856d406fbf4e5a93e27a0210bc99c 100644 --- a/src/interfaces/ecpg/test/expected/sql-quote.c +++ b/src/interfaces/ecpg/test/expected/sql-quote.c @@ -61,9 +61,7 @@ if (sqlca.sqlcode < 0) sqlprint();} #line 20 "quote.pgc" - { 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); + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "set standard_conforming_strings to off", ECPGt_EOIT, ECPGt_EORT); #line 22 "quote.pgc" if (sqlca.sqlwarn[0] == 'W') sqlprint(); @@ -72,85 +70,110 @@ if (sqlca.sqlwarn[0] == 'W') sqlprint(); if (sqlca.sqlcode < 0) sqlprint();} #line 22 "quote.pgc" + + { 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 24 "quote.pgc" + +if (sqlca.sqlwarn[0] == 'W') sqlprint(); +#line 24 "quote.pgc" + +if (sqlca.sqlcode < 0) sqlprint();} +#line 24 "quote.pgc" + printf("Standard conforming strings: %s\n", var); /* this is a\\b actually */ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into \"My_Table\" values ( 1 , 'a\\\\\\\\b' )", ECPGt_EOIT, ECPGt_EORT); -#line 26 "quote.pgc" +#line 28 "quote.pgc" if (sqlca.sqlwarn[0] == 'W') sqlprint(); -#line 26 "quote.pgc" +#line 28 "quote.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 26 "quote.pgc" +#line 28 "quote.pgc" /* this is a\\b */ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into \"My_Table\" values ( 1 , E'a\\\\\\\\b' )", ECPGt_EOIT, ECPGt_EORT); -#line 28 "quote.pgc" +#line 30 "quote.pgc" if (sqlca.sqlwarn[0] == 'W') sqlprint(); -#line 28 "quote.pgc" +#line 30 "quote.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 28 "quote.pgc" +#line 30 "quote.pgc" { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "set standard_conforming_strings to on", ECPGt_EOIT, ECPGt_EORT); -#line 30 "quote.pgc" +#line 32 "quote.pgc" if (sqlca.sqlwarn[0] == 'W') sqlprint(); -#line 30 "quote.pgc" +#line 32 "quote.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 30 "quote.pgc" +#line 32 "quote.pgc" + + { 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 34 "quote.pgc" + +if (sqlca.sqlwarn[0] == 'W') sqlprint(); +#line 34 "quote.pgc" + +if (sqlca.sqlcode < 0) sqlprint();} +#line 34 "quote.pgc" + + printf("Standard conforming strings: %s\n", var); /* this is a\\\\b actually */ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into \"My_Table\" values ( 2 , 'a\\\\\\\\b' )", ECPGt_EOIT, ECPGt_EORT); -#line 33 "quote.pgc" +#line 38 "quote.pgc" if (sqlca.sqlwarn[0] == 'W') sqlprint(); -#line 33 "quote.pgc" +#line 38 "quote.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 33 "quote.pgc" +#line 38 "quote.pgc" /* this is a\\b */ { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into \"My_Table\" values ( 2 , E'a\\\\\\\\b' )", ECPGt_EOIT, ECPGt_EORT); -#line 35 "quote.pgc" +#line 40 "quote.pgc" if (sqlca.sqlwarn[0] == 'W') sqlprint(); -#line 35 "quote.pgc" +#line 40 "quote.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 35 "quote.pgc" +#line 40 "quote.pgc" { ECPGtrans(__LINE__, NULL, "begin"); -#line 37 "quote.pgc" +#line 42 "quote.pgc" if (sqlca.sqlwarn[0] == 'W') sqlprint(); -#line 37 "quote.pgc" +#line 42 "quote.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 37 "quote.pgc" +#line 42 "quote.pgc" /* declare C cursor for select * from \"My_Table\" */ -#line 38 "quote.pgc" +#line 43 "quote.pgc" { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare C cursor for select * from \"My_Table\"", ECPGt_EOIT, ECPGt_EORT); -#line 40 "quote.pgc" +#line 45 "quote.pgc" if (sqlca.sqlwarn[0] == 'W') sqlprint(); -#line 40 "quote.pgc" +#line 45 "quote.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 40 "quote.pgc" +#line 45 "quote.pgc" /* exec sql whenever not found break ; */ -#line 42 "quote.pgc" +#line 47 "quote.pgc" while (true) @@ -160,47 +183,47 @@ if (sqlca.sqlcode < 0) sqlprint();} ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_char,(var),(long)25,(long)1,(25)*sizeof(char), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); -#line 46 "quote.pgc" +#line 51 "quote.pgc" if (sqlca.sqlcode == ECPG_NOT_FOUND) break; -#line 46 "quote.pgc" +#line 51 "quote.pgc" if (sqlca.sqlwarn[0] == 'W') sqlprint(); -#line 46 "quote.pgc" +#line 51 "quote.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 46 "quote.pgc" +#line 51 "quote.pgc" printf("value: %d %s\n", i, var); } { ECPGtrans(__LINE__, NULL, "rollback"); -#line 50 "quote.pgc" +#line 55 "quote.pgc" if (sqlca.sqlwarn[0] == 'W') sqlprint(); -#line 50 "quote.pgc" +#line 55 "quote.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 50 "quote.pgc" +#line 55 "quote.pgc" { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "drop table \"My_Table\"", ECPGt_EOIT, ECPGt_EORT); -#line 51 "quote.pgc" +#line 56 "quote.pgc" if (sqlca.sqlwarn[0] == 'W') sqlprint(); -#line 51 "quote.pgc" +#line 56 "quote.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 51 "quote.pgc" +#line 56 "quote.pgc" { ECPGdisconnect(__LINE__, "ALL"); -#line 53 "quote.pgc" +#line 58 "quote.pgc" if (sqlca.sqlwarn[0] == 'W') sqlprint(); -#line 53 "quote.pgc" +#line 58 "quote.pgc" if (sqlca.sqlcode < 0) sqlprint();} -#line 53 "quote.pgc" +#line 58 "quote.pgc" return 0; diff --git a/src/interfaces/ecpg/test/expected/sql-quote.stderr b/src/interfaces/ecpg/test/expected/sql-quote.stderr index 4c9a8f074a32df5aae4361adb1f527f5b8da6d2e..866774b10ddb81004f3d77b765db4c03f8c05d73 100644 --- a/src/interfaces/ecpg/test/expected/sql-quote.stderr +++ b/src/interfaces/ecpg/test/expected/sql-quote.stderr @@ -10,112 +10,126 @@ [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_execute on line 20: OK: CREATE TABLE [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 22: query: show standard_conforming_strings; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 22: query: set standard_conforming_strings to off; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_execute on line 22: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 22: correctly got 1 tuples with 1 fields +[NO_PID]: ecpg_execute on line 22: OK: SET [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 22: RESULT: off offset: -1; array: no +[NO_PID]: ecpg_execute on line 24: query: show standard_conforming_strings; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 26: query: insert into "My_Table" values ( 1 , 'a\\\\b' ); with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 24: using PQexec +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_execute on line 24: correctly got 1 tuples with 1 fields +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_get_data on line 24: RESULT: off offset: -1; array: no +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_execute on line 28: query: insert into "My_Table" values ( 1 , 'a\\\\b' ); with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ECPGnoticeReceiver: nonstandard use of \\ in a string literal [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: raising sqlcode 0 [NO_PID]: sqlca: code: 0, state: 22P06 -[NO_PID]: ecpg_execute on line 26: using PQexec +[NO_PID]: ecpg_execute on line 28: using PQexec [NO_PID]: sqlca: code: 0, state: 22P06 -[NO_PID]: ecpg_execute on line 26: OK: INSERT 0 1 +[NO_PID]: ecpg_execute on line 28: OK: INSERT 0 1 [NO_PID]: sqlca: code: 0, state: 22P06 SQL error: nonstandard use of \\ in a string literal -[NO_PID]: ecpg_execute on line 28: query: insert into "My_Table" values ( 1 , E'a\\\\b' ); with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 30: query: insert into "My_Table" values ( 1 , E'a\\\\b' ); with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 28: using PQexec +[NO_PID]: ecpg_execute on line 30: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 28: OK: INSERT 0 1 +[NO_PID]: ecpg_execute on line 30: OK: INSERT 0 1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 30: query: set standard_conforming_strings to on; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 32: query: set standard_conforming_strings to on; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 30: using PQexec +[NO_PID]: ecpg_execute on line 32: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 30: OK: SET +[NO_PID]: ecpg_execute on line 32: OK: SET [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 33: query: insert into "My_Table" values ( 2 , 'a\\\\b' ); with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 34: query: show standard_conforming_strings; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 33: using PQexec +[NO_PID]: ecpg_execute on line 34: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 33: OK: INSERT 0 1 +[NO_PID]: ecpg_execute on line 34: correctly got 1 tuples with 1 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 35: query: insert into "My_Table" values ( 2 , E'a\\\\b' ); with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_get_data on line 34: RESULT: on offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 35: using PQexec +[NO_PID]: ecpg_execute on line 38: query: insert into "My_Table" values ( 2 , 'a\\\\b' ); with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 35: OK: INSERT 0 1 +[NO_PID]: ecpg_execute on line 38: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ECPGtrans on line 37: action "begin"; connection "regress1" +[NO_PID]: ecpg_execute on line 38: OK: INSERT 0 1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 40: query: declare C cursor for select * from "My_Table"; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 40: query: insert into "My_Table" values ( 2 , E'a\\\\b' ); with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_execute on line 40: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 40: OK: DECLARE CURSOR +[NO_PID]: ecpg_execute on line 40: OK: INSERT 0 1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 46: query: fetch C; with 0 parameter(s) on connection regress1 +[NO_PID]: ECPGtrans on line 42: action "begin"; connection "regress1" [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 46: using PQexec +[NO_PID]: ecpg_execute on line 45: query: declare C cursor for select * from "My_Table"; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 46: correctly got 1 tuples with 2 fields +[NO_PID]: ecpg_execute on line 45: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 46: RESULT: 1 offset: -1; array: no +[NO_PID]: ecpg_execute on line 45: OK: DECLARE CURSOR [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 46: RESULT: a\\b offset: -1; array: no +[NO_PID]: ecpg_execute on line 51: query: fetch C; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 46: query: fetch C; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 51: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 46: using PQexec +[NO_PID]: ecpg_execute on line 51: correctly got 1 tuples with 2 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 46: correctly got 1 tuples with 2 fields +[NO_PID]: ecpg_get_data on line 51: RESULT: 1 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 46: RESULT: 1 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 51: RESULT: a\\b offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 46: RESULT: a\\b offset: -1; array: no +[NO_PID]: ecpg_execute on line 51: query: fetch C; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 46: query: fetch C; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 51: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 46: using PQexec +[NO_PID]: ecpg_execute on line 51: correctly got 1 tuples with 2 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 46: correctly got 1 tuples with 2 fields +[NO_PID]: ecpg_get_data on line 51: RESULT: 1 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 46: RESULT: 2 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 51: RESULT: a\\b offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 46: RESULT: a\\\\b offset: -1; array: no +[NO_PID]: ecpg_execute on line 51: query: fetch C; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 46: query: fetch C; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 51: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 46: using PQexec +[NO_PID]: ecpg_execute on line 51: correctly got 1 tuples with 2 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 46: correctly got 1 tuples with 2 fields +[NO_PID]: ecpg_get_data on line 51: RESULT: 2 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 46: RESULT: 2 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 51: RESULT: a\\\\b offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 46: RESULT: a\\b offset: -1; array: no +[NO_PID]: ecpg_execute on line 51: query: fetch C; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 46: query: fetch C; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 51: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 46: using PQexec +[NO_PID]: ecpg_execute on line 51: correctly got 1 tuples with 2 fields [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 46: correctly got 0 tuples with 2 fields +[NO_PID]: ecpg_get_data on line 51: RESULT: 2 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: raising sqlcode 100 on line 46: no data found on line 46 -[NO_PID]: sqlca: code: 100, state: 02000 -[NO_PID]: ECPGtrans on line 50: action "rollback"; connection "regress1" +[NO_PID]: ecpg_get_data on line 51: RESULT: a\\b offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 51: query: drop table "My_Table"; with 0 parameter(s) on connection regress1 +[NO_PID]: ecpg_execute on line 51: query: fetch C; with 0 parameter(s) on connection regress1 [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_execute on line 51: using PQexec [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_execute on line 51: OK: DROP TABLE +[NO_PID]: ecpg_execute on line 51: correctly got 0 tuples with 2 fields +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: raising sqlcode 100 on line 51: no data found on line 51 +[NO_PID]: sqlca: code: 100, state: 02000 +[NO_PID]: ECPGtrans on line 55: action "rollback"; connection "regress1" +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_execute on line 56: query: drop table "My_Table"; with 0 parameter(s) on connection regress1 +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_execute on line 56: using PQexec +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_execute on line 56: OK: DROP TABLE [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_finish: connection regress1 closed [NO_PID]: sqlca: code: 0, state: 00000 diff --git a/src/interfaces/ecpg/test/expected/sql-quote.stdout b/src/interfaces/ecpg/test/expected/sql-quote.stdout index 5ec018963e0ecfe1a720f94245a68ad446b34536..2f92f994831de5349662528487122ce623843c45 100644 --- a/src/interfaces/ecpg/test/expected/sql-quote.stdout +++ b/src/interfaces/ecpg/test/expected/sql-quote.stdout @@ -1,4 +1,5 @@ Standard conforming strings: off +Standard conforming strings: on value: 1 a\\b value: 1 a\\b value: 2 a\\\\b diff --git a/src/interfaces/ecpg/test/sql/quote.pgc b/src/interfaces/ecpg/test/sql/quote.pgc index 50680646f639995a0941d00aab7f3a345bfb32b8..26cd7ee87f7bcc9cdbb1f9b8a7215fe82790fc85 100644 --- a/src/interfaces/ecpg/test/sql/quote.pgc +++ b/src/interfaces/ecpg/test/sql/quote.pgc @@ -19,6 +19,8 @@ int main() { EXEC SQL CREATE TABLE "My_Table" ( Item1 int, Item2 text ); + EXEC SQL SET standard_conforming_strings TO off; + EXEC SQL SHOW standard_conforming_strings INTO :var; printf("Standard conforming strings: %s\n", var); @@ -29,6 +31,9 @@ int main() { EXEC SQL SET standard_conforming_strings TO on; + EXEC SQL SHOW standard_conforming_strings INTO :var; + printf("Standard conforming strings: %s\n", var); + /* this is a\\\\b actually */ EXEC SQL INSERT INTO "My_Table" VALUES ( 2, 'a\\\\b' ); /* this is a\\b */