summaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/test
diff options
context:
space:
mode:
authorMichael Meskes <meskes@postgresql.org>2000-02-16 16:18:29 +0000
committerMichael Meskes <meskes@postgresql.org>2000-02-16 16:18:29 +0000
commit35ba9de276150fd3d589509a86ae651924f34cb3 (patch)
tree8d3c867e2fbb1bd7404036f7e798e9c113fa4859 /src/interfaces/ecpg/test
parent988d53e5ea6d87a284e8d3c81829e86b89455fa9 (diff)
downloadpostgresql-35ba9de276150fd3d589509a86ae651924f34cb3.tar.gz
*** empty log message ***
Diffstat (limited to 'src/interfaces/ecpg/test')
-rw-r--r--src/interfaces/ecpg/test/Makefile7
-rw-r--r--src/interfaces/ecpg/test/dyntest.pgc127
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;
+}