diff --git a/src/interfaces/ecpg/test/ecpg_schedule b/src/interfaces/ecpg/test/ecpg_schedule index c3ec125c36fdc0298c4b23efe4de884cab98d406..206f712552b97a2bed0c619eafda2c4113831dff 100644 --- a/src/interfaces/ecpg/test/ecpg_schedule +++ b/src/interfaces/ecpg/test/ecpg_schedule @@ -46,6 +46,7 @@ test: sql/indicators test: sql/oldexec test: sql/quote test: sql/show +test: sql/twophase test: sql/insupd test: sql/parser test: thread/thread diff --git a/src/interfaces/ecpg/test/expected/sql-twophase.c b/src/interfaces/ecpg/test/expected/sql-twophase.c new file mode 100644 index 0000000000000000000000000000000000000000..cf491fc078c65c2b5936d150ff22c38552c6ff72 --- /dev/null +++ b/src/interfaces/ecpg/test/expected/sql-twophase.c @@ -0,0 +1,114 @@ +/* Processed by ecpg (regression mode) */ +/* These include files are added by the preprocessor */ +#include <ecpglib.h> +#include <ecpgerrno.h> +#include <sqlca.h> +/* End of automatic include section */ +#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y)) + +#line 1 "twophase.pgc" +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + + +#line 1 "regression.h" + + + + + + +#line 5 "twophase.pgc" + + +/* exec sql whenever sqlerror sqlprint ; */ +#line 7 "twophase.pgc" + + +int main(void) +{ + char msg[128]; + + ECPGdebug(1, stderr); + + strcpy(msg, "connect"); + { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0); +#line 16 "twophase.pgc" + +if (sqlca.sqlcode < 0) sqlprint();} +#line 16 "twophase.pgc" + + { ECPGsetcommit(__LINE__, "off", NULL); +#line 17 "twophase.pgc" + +if (sqlca.sqlcode < 0) sqlprint();} +#line 17 "twophase.pgc" + + + strcpy(msg, "create"); + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table t1 ( c int )", ECPGt_EOIT, ECPGt_EORT); +#line 20 "twophase.pgc" + +if (sqlca.sqlcode < 0) sqlprint();} +#line 20 "twophase.pgc" + + + strcpy(msg, "commit"); + { ECPGtrans(__LINE__, NULL, "commit"); +#line 23 "twophase.pgc" + +if (sqlca.sqlcode < 0) sqlprint();} +#line 23 "twophase.pgc" + + + strcpy(msg, "begin"); + { ECPGtrans(__LINE__, NULL, "begin"); +#line 26 "twophase.pgc" + +if (sqlca.sqlcode < 0) sqlprint();} +#line 26 "twophase.pgc" + + + strcpy(msg, "insert"); + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into t1 values ( 1 )", ECPGt_EOIT, ECPGt_EORT); +#line 29 "twophase.pgc" + +if (sqlca.sqlcode < 0) sqlprint();} +#line 29 "twophase.pgc" + + + strcpy(msg, "prepare transaction"); + { ECPGtrans(__LINE__, NULL, "prepare transaction 'gxid'"); +#line 32 "twophase.pgc" + +if (sqlca.sqlcode < 0) sqlprint();} +#line 32 "twophase.pgc" + + + strcpy(msg, "commit prepared"); + { ECPGtrans(__LINE__, NULL, "commit prepared 'gxid'"); +#line 35 "twophase.pgc" + +if (sqlca.sqlcode < 0) sqlprint();} +#line 35 "twophase.pgc" + + + strcpy(msg, "drop"); + { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "drop table t1", ECPGt_EOIT, ECPGt_EORT); +#line 38 "twophase.pgc" + +if (sqlca.sqlcode < 0) sqlprint();} +#line 38 "twophase.pgc" + + + strcpy(msg, "disconnect"); + { ECPGdisconnect(__LINE__, "CURRENT"); +#line 41 "twophase.pgc" + +if (sqlca.sqlcode < 0) sqlprint();} +#line 41 "twophase.pgc" + + + return (0); +} diff --git a/src/interfaces/ecpg/test/expected/sql-twophase.stderr b/src/interfaces/ecpg/test/expected/sql-twophase.stderr new file mode 100644 index 0000000000000000000000000000000000000000..18415ff5a3dcfcbcfa9b46153f701ddfa10dbd1b --- /dev/null +++ b/src/interfaces/ecpg/test/expected/sql-twophase.stderr @@ -0,0 +1,34 @@ +[NO_PID]: ECPGdebug: set to 1 +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ECPGconnect: opening database ecpg1_regression on <DEFAULT> port <DEFAULT> +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ECPGsetcommit on line 17: action "off"; connection "ecpg1_regression" +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_execute on line 20: query: create table t1 ( c int ); with 0 parameter(s) on connection ecpg1_regression +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_execute on line 20: using PQexec +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_process_output on line 20: OK: CREATE TABLE +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ECPGtrans on line 23: action "commit"; connection "ecpg1_regression" +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ECPGtrans on line 26: action "begin"; connection "ecpg1_regression" +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_execute on line 29: query: insert into t1 values ( 1 ); with 0 parameter(s) on connection ecpg1_regression +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_execute on line 29: using PQexec +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_process_output on line 29: OK: INSERT 0 1 +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ECPGtrans on line 32: action "prepare transaction 'gxid'"; connection "ecpg1_regression" +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ECPGtrans on line 35: action "commit prepared 'gxid'"; connection "ecpg1_regression" +[NO_PID]: sqlca: code: 0, state: 00000 +[NO_PID]: ecpg_execute on line 38: query: drop table t1; 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: DROP TABLE +[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-twophase.stdout b/src/interfaces/ecpg/test/expected/sql-twophase.stdout new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/interfaces/ecpg/test/sql/Makefile b/src/interfaces/ecpg/test/sql/Makefile index 6bc67e92daf8f2f9b44fb9f97f5e91f938ae0877..b7bc034e4ef7a6b25c9351a8f30e0c16b17e78eb 100644 --- a/src/interfaces/ecpg/test/sql/Makefile +++ b/src/interfaces/ecpg/test/sql/Makefile @@ -22,6 +22,7 @@ TESTS = array array.c \ parser parser.c \ quote quote.c \ show show.c \ + twophase twophase.c \ insupd insupd.c all: $(TESTS) diff --git a/src/interfaces/ecpg/test/sql/twophase.pgc b/src/interfaces/ecpg/test/sql/twophase.pgc new file mode 100644 index 0000000000000000000000000000000000000000..867a28e4c46f05dbff69d309b2f348c9815a2ecb --- /dev/null +++ b/src/interfaces/ecpg/test/sql/twophase.pgc @@ -0,0 +1,44 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +exec sql include ../regression; + +exec sql whenever sqlerror sqlprint; + +int main(void) +{ + char msg[128]; + + ECPGdebug(1, stderr); + + strcpy(msg, "connect"); + exec sql connect to REGRESSDB1; + exec sql set autocommit to off; + + strcpy(msg, "create"); + exec sql create table t1(c int); + + strcpy(msg, "commit"); + exec sql commit; + + strcpy(msg, "begin"); + exec sql begin; + + strcpy(msg, "insert"); + exec sql insert into t1 values(1); + + strcpy(msg, "prepare transaction"); + exec sql prepare transaction 'gxid'; + + strcpy(msg, "commit prepared"); + exec sql commit prepared 'gxid'; + + strcpy(msg, "drop"); + exec sql drop table t1; + + strcpy(msg, "disconnect"); + exec sql disconnect current; + + return (0); +}