diff options
author | Michael Meskes <meskes@postgresql.org> | 2006-09-05 12:11:03 +0000 |
---|---|---|
committer | Michael Meskes <meskes@postgresql.org> | 2006-09-05 12:11:03 +0000 |
commit | c9970d5948b0ffcf771eef8499c9d3e7a57f4952 (patch) | |
tree | 5dc976bccd4c7e77fa484e81aed7a60e973a1787 /src/interfaces/ecpg/test/preproc | |
parent | 276b3bb3e366cef0163bf0e3be7d4c5f5c9d84ec (diff) | |
download | postgresql-c9970d5948b0ffcf771eef8499c9d3e7a57f4952.tar.gz postgresql-c9970d5948b0ffcf771eef8499c9d3e7a57f4952.zip |
Started to cleanup complex tests.
Added some interval checks to regression suite.
Diffstat (limited to 'src/interfaces/ecpg/test/preproc')
-rw-r--r-- | src/interfaces/ecpg/test/preproc/Makefile | 11 | ||||
-rw-r--r-- | src/interfaces/ecpg/test/preproc/define.pgc | 64 | ||||
-rw-r--r-- | src/interfaces/ecpg/test/preproc/init.pgc | 100 |
3 files changed, 175 insertions, 0 deletions
diff --git a/src/interfaces/ecpg/test/preproc/Makefile b/src/interfaces/ecpg/test/preproc/Makefile new file mode 100644 index 00000000000..2184beb187f --- /dev/null +++ b/src/interfaces/ecpg/test/preproc/Makefile @@ -0,0 +1,11 @@ +subdir = src/interfaces/ecpg/test/preproc +top_builddir = ../../../../.. +include $(top_builddir)/src/Makefile.global +include $(top_srcdir)/$(subdir)/../Makefile.regress + + +TESTS = define define.c \ + init init.c + +all: $(TESTS) + diff --git a/src/interfaces/ecpg/test/preproc/define.pgc b/src/interfaces/ecpg/test/preproc/define.pgc new file mode 100644 index 00000000000..1a4ac7444b8 --- /dev/null +++ b/src/interfaces/ecpg/test/preproc/define.pgc @@ -0,0 +1,64 @@ +#include <stdio.h> +#include <stdlib.h> + +EXEC SQL include ../regression; + +EXEC SQL typedef long mmInteger; +EXEC SQL typedef char mmChar; +EXEC SQL typedef short mmSmallInt; + +EXEC SQL BEGIN DECLARE SECTION; +struct TBempl +{ + mmInteger idnum; + mmChar name[21]; + mmSmallInt accs; +}; +EXEC SQL END DECLARE SECTION; + +int +main (void) +{ + EXEC SQL BEGIN DECLARE SECTION; + struct TBempl empl; + EXEC SQL END DECLARE SECTION; + + ECPGdebug (1, stderr); + + empl.idnum = 1; + EXEC SQL connect to REGRESSDB1; + if (sqlca.sqlcode) + { + printf ("connect error = %ld\n", sqlca.sqlcode); + exit (sqlca.sqlcode); + } + + EXEC SQL create table empl + (idnum integer, name char (20), accs smallint); + if (sqlca.sqlcode) + { + printf ("create error = %ld\n", sqlca.sqlcode); + exit (sqlca.sqlcode); + } + + EXEC SQL insert into empl values (1, 'first user', 320); + if (sqlca.sqlcode) + { + printf ("insert error = %ld\n", sqlca.sqlcode); + exit (sqlca.sqlcode); + } + + EXEC SQL select idnum, name, accs + into :empl + from empl + where idnum =:empl.idnum; + if (sqlca.sqlcode) + { + printf ("select error = %ld\n", sqlca.sqlcode); + exit (sqlca.sqlcode); + } + printf ("id=%ld name=%s, accs=%d\n", empl.idnum, empl.name, empl.accs); + + EXEC SQL disconnect; + exit (0); +} diff --git a/src/interfaces/ecpg/test/preproc/init.pgc b/src/interfaces/ecpg/test/preproc/init.pgc new file mode 100644 index 00000000000..8521e44ee10 --- /dev/null +++ b/src/interfaces/ecpg/test/preproc/init.pgc @@ -0,0 +1,100 @@ +exec sql include sqlca; + +enum e { ENUM0, ENUM1 }; +struct sa { int member; }; + +static int fa(void) +{ + printf("in fa\n"); + return 2; +} + +static int +fb(int x) +{ + printf("in fb (%d)\n", x); + return x; +} + +static int +fc(const char *x) +{ + printf("in fc (%s)\n", x); + return *x; +} + +static int fd(const char *x,int i) +{ + printf("in fd (%s, %d)\n", x, i); + return (*x)*i; +} + +static int fe(enum e x) +{ + printf("in fe (%d)\n", (int) x); + return (int)x; +} + +static void sqlnotice(char *notice, short trans) +{ + if (!notice) + notice = "-empty-"; + printf("in sqlnotice (%s, %d)\n", notice, trans); +} + +exec sql define NONO 0; + +#define YES 1 + +#ifdef _cplusplus +namespace N +{ + static const int i=2; +}; +#endif + +int main(void) +{ + struct sa x = { 14 },*y = &x; + exec sql begin declare section; + int a=(int)2; + int b=2+2; + int b2=(14*7); + int d=x.member; + int g=fb(2); + int i=3^1; + int j=1?1:2; + + int e=y->member; + int c=10>>2; + bool h=2||1; + long iay /* = 1L */ ; + exec sql end declare section; + + int f=fa(); + +#ifdef _cplusplus + exec sql begin declare section; + int k=N::i; /* compile error */ + exec sql end declare section; +#endif + + ECPGdebug(1, stderr); + + printf("%d %d %d %d %d %d %d %d %d %d %d\n", a, b, b2, c, d, e, f, g, h, i, j); + iay = 0; + printf("%ld\n", iay); + 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(); + exec sql whenever sqlerror do sqlnotice(NULL, NONO); + exec sql select now(); + return 0; +} |