diff options
Diffstat (limited to 'src/interfaces/ecpg/test')
-rw-r--r-- | src/interfaces/ecpg/test/Makefile | 12 | ||||
-rw-r--r-- | src/interfaces/ecpg/test/test_code100.pgc | 51 | ||||
-rw-r--r-- | src/interfaces/ecpg/test/test_init.pgc | 61 | ||||
-rwxr-xr-x | src/interfaces/ecpg/test/test_notice | bin | 0 -> 22483 bytes | |||
-rw-r--r-- | src/interfaces/ecpg/test/test_notice.pgc | 94 |
5 files changed, 214 insertions, 4 deletions
diff --git a/src/interfaces/ecpg/test/Makefile b/src/interfaces/ecpg/test/Makefile index 0b9135a5afb..9a6614a4087 100644 --- a/src/interfaces/ecpg/test/Makefile +++ b/src/interfaces/ecpg/test/Makefile @@ -1,9 +1,10 @@ -all: test1 test2 test3 test4 perftest dyntest dyntest2 +all: test1 test2 test3 test4 perftest dyntest dyntest2 test_notice -LDFLAGS=-g -I /usr/local/pgsql/include -L/usr/local/pgsql/lib -lecpg -lpq +#LDFLAGS=-g -I /usr/local/pgsql/include -L/usr/local/pgsql/lib -lecpg -lpq +LDFLAGS=-g -I ../include -I /usr/include/postgresql -L /usr/lib -lecpg -lpq -ECPG=/usr/local/pgsql/bin/ecpg -I../include -#ECPG=../preproc/ecpg -I../include +#ECPG=/usr/local/pgsql/bin/ecpg -I../include +ECPG=../preproc/ecpg -I../include .SUFFIXES: .pgc .c @@ -14,6 +15,9 @@ test4: test4.c perftest: perftest.c dyntest: dyntest.c dyntest2: dyntest2.c +test_code100: test_code100.c +test_notice: test_notice.c +test_init: test_init.c .pgc.c: $(ECPG) $? diff --git a/src/interfaces/ecpg/test/test_code100.pgc b/src/interfaces/ecpg/test/test_code100.pgc new file mode 100644 index 00000000000..913d5175c06 --- /dev/null +++ b/src/interfaces/ecpg/test/test_code100.pgc @@ -0,0 +1,51 @@ +// $Id: test_code100.pgc,v 1.1 2000/09/20 13:25:52 meskes Exp $ + +exec sql include sqlca; +#include <stdio.h> + +int main(int argc, char **argv) +{ exec sql begin declare section; + int index; + exec sql end declare section; + + + // ECPGdebug(1,stdout); + + exec sql connect to test; + if (sqlca.sqlcode) printf("%ld:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql create table test ( + "index" numeric(3) primary key, + "payload" int4 NOT NULL); + if (sqlca.sqlcode) printf("%ld:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + exec sql commit work; + if (sqlca.sqlcode) printf("%ld:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + for (index=0;index<10;++index) + { exec sql insert into test + (payload, index) + values (0, :index); + if (sqlca.sqlcode) printf("%ld:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + } + exec sql commit work; + if (sqlca.sqlcode) printf("%ld:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql update test + set payload=payload+1 where index=-1; + if (sqlca.sqlcode!=100) printf("%ld:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql delete from test where index=-1; + if (sqlca.sqlcode!=100) printf("%ld:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql insert into test (select * from test where index=-1); + if (sqlca.sqlcode!=100) printf("%ld:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql drop table test; + if (sqlca.sqlcode) printf("%ld:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + exec sql commit work; + if (sqlca.sqlcode) printf("%ld:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql disconnect; + if (sqlca.sqlcode) printf("%ld:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + return 0; +} diff --git a/src/interfaces/ecpg/test/test_init.pgc b/src/interfaces/ecpg/test/test_init.pgc new file mode 100644 index 00000000000..86e6b6da848 --- /dev/null +++ b/src/interfaces/ecpg/test/test_init.pgc @@ -0,0 +1,61 @@ +exec sql include sqlca; + +int fa() { return 2; } +int fb(int x) { return x; } +int fc(const char *x) { return *x; } +int fd(const char *x,int i) { return (*x)*i; } +enum e { ENUM0, ENUM1 }; +int fe(enum e x) { return (int)x; } +struct sa { int member; }; + +void sqlmeldung(char *meldung, short trans) +{ +} + +#define NO 0 +#define YES 1 + +#ifdef _cplusplus +namespace N +{ static const int i=2; +}; +#endif + +int main() +{ struct sa x,*y; +exec sql begin declare section; +int a=2; +int b=2+2; +int d=x.member; +int g=fb(2); +int i=3^1; +int j=1?1:2; + +/*int e=y->member; /* compile error */ +/*int c=10>>2; /* compile error */ +/*bool h=2||1; /* compile error */ +exec sql end declare section; + +/* not working */ +int f=fa(); + +#ifdef _cplusplus +exec sql begin declare section; +int k=N::i; /* compile error */ +exec sql end declare section; +#endif + +exec sql whenever sqlerror do fa(); +exec sql select now(); +exec sql whenever sqlerror do fb(20); +exec sql select now(); +exec sql whenever sqlerror do fc("50"); +exec sql select now(); +exec sql whenever sqlerror do fd("50",1); +exec sql select now(); +exec sql whenever sqlerror do fe(ENUM0); +exec sql select now(); +/* ex ec sql whenever sqlerror do sqlmeldung(NULL,NO); */ +exec sql select now(); +return 0; +} diff --git a/src/interfaces/ecpg/test/test_notice b/src/interfaces/ecpg/test/test_notice Binary files differnew file mode 100755 index 00000000000..9d9506a83bc --- /dev/null +++ b/src/interfaces/ecpg/test/test_notice diff --git a/src/interfaces/ecpg/test/test_notice.pgc b/src/interfaces/ecpg/test/test_notice.pgc new file mode 100644 index 00000000000..db700294e21 --- /dev/null +++ b/src/interfaces/ecpg/test/test_notice.pgc @@ -0,0 +1,94 @@ +// $Id: test_notice.pgc,v 1.1 2000/09/20 13:25:52 meskes Exp $ + +exec sql include sqlca; + +#include <stdio.h> + +void printwarning(void) +{ + if (sqlca.sqlwarn[0]) printf("sqlca.sqlwarn: %c",sqlca.sqlwarn[0]); + else return; + + if (sqlca.sqlwarn[1]) putchar('1'); + if (sqlca.sqlwarn[2]) putchar('2'); + + putchar('\n'); +} + +int main(int argc, char **argv) +{ + exec sql begin declare section; + int index,payload; + exec sql end declare section; + FILE *dbgs; + + /* actually this will print 'sql error' if a warning occurs */ + exec sql whenever sqlwarning do printwarning(); + + if ((dbgs = fopen("log", "w")) != NULL) + ECPGdebug(1, dbgs); + + exec sql connect to mm; + if (sqlca.sqlcode) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql create table test ( + "index" numeric(3) primary key, + "payload" int4 NOT NULL); + if (sqlca.sqlcode) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql commit work; + if (sqlca.sqlcode) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql begin work; + if (sqlca.sqlcode) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql begin work; + if (sqlca.sqlcode!=ECPG_NOTICE_IN_TRANSACTION) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql commit; + if (sqlca.sqlcode) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql commit; + if (sqlca.sqlcode!=ECPG_NOTICE_NO_TRANSACTION) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql rollback; + if (sqlca.sqlcode!=ECPG_NOTICE_NO_TRANSACTION) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + sqlca.sqlcode=0; + exec sql declare x cursor for select * from test; + if (sqlca.sqlcode) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql open x; + if (sqlca.sqlcode) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql open x; + if (sqlca.sqlcode!=ECPG_NOTICE_PORTAL_EXISTS) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql close x; + if (sqlca.sqlcode) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql close x; + if (sqlca.sqlcode!=ECPG_NOTICE_UNKNOWN_PORTAL) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql update test set nonexistent=2; + if (sqlca.sqlcode!=ECPG_PGSQL) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql select payload into :payload from test where index=1; + if (sqlca.sqlcode!=ECPG_NOTICE_QUERY_IGNORED) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql rollback; + if (sqlca.sqlcode) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + // this will raise a warning + exec sql drop table test; + if (sqlca.sqlcode) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + exec sql commit work; + if (sqlca.sqlcode) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + exec sql disconnect; + if (sqlca.sqlcode) printf("%d %ld:%s\n",__LINE__,sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + + if (dbgs != NULL) + fclose(dbgs); + return 0; +} |