diff options
| author | Michael Meskes <meskes@postgresql.org> | 2000-02-16 16:18:29 +0000 |
|---|---|---|
| committer | Michael Meskes <meskes@postgresql.org> | 2000-02-16 16:18:29 +0000 |
| commit | 35ba9de276150fd3d589509a86ae651924f34cb3 (patch) | |
| tree | 8d3c867e2fbb1bd7404036f7e798e9c113fa4859 /src/interfaces/ecpg/test | |
| parent | 988d53e5ea6d87a284e8d3c81829e86b89455fa9 (diff) | |
| download | postgresql-35ba9de276150fd3d589509a86ae651924f34cb3.tar.gz | |
*** empty log message ***
Diffstat (limited to 'src/interfaces/ecpg/test')
| -rw-r--r-- | src/interfaces/ecpg/test/Makefile | 7 | ||||
| -rw-r--r-- | src/interfaces/ecpg/test/dyntest.pgc | 127 |
2 files changed, 131 insertions, 3 deletions
diff --git a/src/interfaces/ecpg/test/Makefile b/src/interfaces/ecpg/test/Makefile index 03afc89b6d..9b945793e2 100644 --- a/src/interfaces/ecpg/test/Makefile +++ b/src/interfaces/ecpg/test/Makefile @@ -1,8 +1,8 @@ -all: stp.so test1 test2 test3 test4 test5 perftest +all: stp.so test1 test2 test3 test4 test5 perftest dyntest #LDFLAGS=-g -I /usr/local/pgsql/include -L/usr/local/pgsql/lib -lecpg -lpq -lcrypt -#LDFLAGS=-g -I../include -I/usr/include/postgresql -L/usr/lib/postgresql -L../lib -lecpg -lpq -lcrypt -LDFLAGS=-g -I/usr/include/postgresql -lecpg -lpq -lcrypt +LDFLAGS=-g -I../include -I/usr/include/postgresql -L/usr/lib/postgresql -L../lib -lecpg -lpq -lcrypt +#LDFLAGS=-g -I/usr/include/postgresql -lecpg -lpq -lcrypt #ECPG=/usr/local/pgsql/bin/ecpg ECPG=../preproc/ecpg -I../include @@ -16,6 +16,7 @@ test3: test3.c test4: test4.c test5: test5.c perftest: perftest.c +dyntest: dyntest.c .pgc.c: $(ECPG) $? diff --git a/src/interfaces/ecpg/test/dyntest.pgc b/src/interfaces/ecpg/test/dyntest.pgc new file mode 100644 index 0000000000..451d82ad90 --- /dev/null +++ b/src/interfaces/ecpg/test/dyntest.pgc @@ -0,0 +1,127 @@ +/* dynamic SQL test program + * + * Copyright (c) 2000, Christof Petig <christof.petig@wtal.de> + * + * $Header: /cvsroot/pgsql/src/interfaces/ecpg/test/Attic/dyntest.pgc,v 1.1 2000/02/16 16:18:29 meskes Exp $ + */ + +#include <stdio.h> + +exec sql include sql3types; +exec sql include sqlca; + +void error() +{ printf("#%d:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); + exit(1); +} + +int main(int argc,char **argv) +{ exec sql begin declare section; + int COUNT; + int INTVAR; + int INDEX; + int INDICATOR; + int TYPE,LENGTH,OCTET_LENGTH,PRECISION,SCALE,NULLABLE,RETURNED_OCTET_LENGTH; + int DATETIME_INTERVAL_CODE; + char NAME[120]; + char STRINGVAR[1024]; + float FLOATVAR; + double DOUBLEVAR; + char QUERY[1024]; + exec sql end declare section; + int done=0; + + snprintf(QUERY,sizeof QUERY,"select * from %s",argc>1?argv[1]:"pg_tables"); + + exec sql whenever sqlerror do error(); + + exec sql allocate descriptor MYDESC; + + exec sql connect to test; + + exec sql prepare MYQUERY from :QUERY; + exec sql declare MYCURS cursor for MYQUERY; + + exec sql open MYCURS; + + while (1) + { exec sql fetch in MYCURS into sql descriptor MYDESC; + + if (sqlca.sqlcode) break; + + exec sql get descriptor MYDESC :COUNT = count; + if (!done) + { printf("Count %d\n",COUNT); + done=1; + } + + for (INDEX=1;INDEX<=COUNT;++INDEX) + { exec sql get descriptor MYDESC value :INDEX + :TYPE = type, + :LENGTH = length, :OCTET_LENGTH=octet_length, + :RETURNED_OCTET_LENGTH=returned_octet_length, + :PRECISION = precision, :SCALE=scale, + :NULLABLE=nullable, :NAME=name, + :INDICATOR=indicator; + printf("%2d %s %d(%d)(%d,%d) %d,%d %d = " + ,INDEX,NAME,TYPE,LENGTH,PRECISION,SCALE + ,OCTET_LENGTH,RETURNED_OCTET_LENGTH,NULLABLE); + if (INDICATOR==-1) printf("NULL\n"); + else switch (TYPE) + { case SQL3_BOOLEAN: + exec sql get descriptor MYDESC value :INDEX :INTVAR=data; + printf("%s\n",INTVAR?"true":"false"); + break; + case SQL3_NUMERIC: + case SQL3_DECIMAL: + if (SCALE==0) + { exec sql get descriptor MYDESC value :INDEX :INTVAR=data; + printf("%d\n",INTVAR); + } + else + { exec sql get descriptor MYDESC value :INDEX :FLOATVAR=data; + printf("%.*f\n",SCALE,FLOATVAR); + } + break; + case SQL3_INTEGER: + case SQL3_SMALLINT: + exec sql get descriptor MYDESC value :INDEX :INTVAR=data; + printf("%d\n",INTVAR); + break; + case SQL3_FLOAT: + case SQL3_REAL: + exec sql get descriptor MYDESC value :INDEX :FLOATVAR=data; + printf("%.*f\n",PRECISION,FLOATVAR); + break; + case SQL3_DOUBLE_PRECISION: + exec sql get descriptor MYDESC value :INDEX :DOUBLEVAR=data; + printf("%.*f\n",PRECISION,DOUBLEVAR); + break; + case SQL3_DATE_TIME_TIMESTAMP: + exec sql get descriptor MYDESC value :INDEX + :DATETIME_INTERVAL_CODE=datetime_interval_code, + :STRINGVAR=data; + printf("%d \"%s\"\n",DATETIME_INTERVAL_CODE,STRINGVAR); + break; + case SQL3_INTERVAL: + exec sql get descriptor MYDESC value :INDEX :STRINGVAR=data; + printf("\"%s\"\n",STRINGVAR); + break; + case SQL3_CHARACTER: + case SQL3_CHARACTER_VARYING: + exec sql get descriptor MYDESC value :INDEX :STRINGVAR=data; + printf("\"%s\"\n",STRINGVAR); + break; + default: + exec sql get descriptor MYDESC value :INDEX :STRINGVAR=data; + printf("<\"%s\">\n",STRINGVAR); + break; + } + } + } + + exec sql close MYCURS; + + exec sql deallocate descriptor MYDESC; + return 0; +} |
