summaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/test
diff options
context:
space:
mode:
authorMarc G. Fournier <scrappy@hub.org>1998-02-10 16:44:17 +0000
committerMarc G. Fournier <scrappy@hub.org>1998-02-10 16:44:17 +0000
commit38201e21d0849a469e165085e4d12ac0969f5018 (patch)
treeb9e0e9db026ea6b3838f57025aebbca014f998f4 /src/interfaces/ecpg/test
parenta8313f9671c621852dbdf16b6f47e19ceda489ea (diff)
Erk, the whole directory structure changed on us here...
Diffstat (limited to 'src/interfaces/ecpg/test')
-rw-r--r--src/interfaces/ecpg/test/Makefile14
-rw-r--r--src/interfaces/ecpg/test/Ptest1.c64
-rw-r--r--src/interfaces/ecpg/test/perftest.pgc72
-rw-r--r--src/interfaces/ecpg/test/test1.c60
-rw-r--r--src/interfaces/ecpg/test/test2.pgc50
5 files changed, 260 insertions, 0 deletions
diff --git a/src/interfaces/ecpg/test/Makefile b/src/interfaces/ecpg/test/Makefile
new file mode 100644
index 00000000000..0ec008964e5
--- /dev/null
+++ b/src/interfaces/ecpg/test/Makefile
@@ -0,0 +1,14 @@
+all: test2 perftest
+
+test2: test2.c
+ gcc -g -I ../include -I ../../../libpq -o test2 test2.c ../lib/libecpg.a ../../../libpq/libpq.a -lcrypt
+test2.c: test2.pgc
+ ../preproc/ecpg test2.pgc
+
+perftest: perftest.c
+ gcc -g -I ../include -I ../../../libpq -o perftest perftest.c ../lib/libecpg.a ../../../libpq/libpq.a -lcrypt
+perftest.c: perftest.pgc
+ ../preproc/ecpg perftest.pgc
+
+clean:
+ /bin/rm test2 test2.c perftest perftest.c
diff --git a/src/interfaces/ecpg/test/Ptest1.c b/src/interfaces/ecpg/test/Ptest1.c
new file mode 100644
index 00000000000..5aee48e7d5c
--- /dev/null
+++ b/src/interfaces/ecpg/test/Ptest1.c
@@ -0,0 +1,64 @@
+/* These two include files are added by the preprocessor */
+#include <ecpgtype.h>
+#include <ecpglib.h>
+/* exec sql begin declare section */
+
+ /* VARSIZE */struct varchar_uid { int len; char arr[200]; } uid;
+ struct varchar_name { int len; char arr[200]; } name;
+ short value;
+/* exec sql end declare section */
+
+
+#include "sqlca.h"
+
+#define DBCP(x,y) strcpy(x.arr,y);x.len = strlen(x.arr)
+#define LENFIX(x) x.len=strlen(x.arr)
+#define STRFIX(x) x.arr[x.len]='\0'
+#define SQLCODE sqlca.sqlcode
+
+void
+db_error (char *msg)
+{
+ sqlca.sqlerrm.sqlerrmc[sqlca.sqlerrm.sqlerrml] = '\0';
+ printf ("%s: db error %s\n", msg, sqlca.sqlerrm.sqlerrmc);
+ exit (1);
+}
+
+int
+main ()
+{
+ strcpy (uid.arr, "test/test");
+ LENFIX (uid);
+
+ ECPGconnect("kom");
+ if (SQLCODE)
+ db_error ("connect");
+
+ strcpy (name.arr, "opt1");
+ LENFIX (name);
+
+ ECPGdo(__LINE__, "declare cur cursor for select name , value from pace_test ", ECPGt_EOIT, ECPGt_EORT );
+ if (SQLCODE) db_error ("declare");
+
+
+ if (SQLCODE)
+ db_error ("open");
+
+ while (1) {
+ ECPGdo(__LINE__, "fetch in cur ", ECPGt_EOIT, ECPGt_varchar,&name,200,0,sizeof(struct varchar_name), ECPGt_short,&value,0,0,sizeof(short), ECPGt_EORT );
+ if (SQLCODE)
+ break;
+ STRFIX (name);
+ printf ("%s\t%d\n", name.arr, value);
+ }
+
+ if (SQLCODE < 0)
+ db_error ("fetch");
+
+ ECPGdo(__LINE__, "close cur ", ECPGt_EOIT, ECPGt_EORT );
+ if (SQLCODE) db_error ("close");
+ ECPGcommit(__LINE__);
+ if (SQLCODE) db_error ("commit");
+
+ return (0);
+}
diff --git a/src/interfaces/ecpg/test/perftest.pgc b/src/interfaces/ecpg/test/perftest.pgc
new file mode 100644
index 00000000000..9fb63fe6fad
--- /dev/null
+++ b/src/interfaces/ecpg/test/perftest.pgc
@@ -0,0 +1,72 @@
+#include <stdio.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+exec sql include sqlca;
+
+#define SQLCODE sqlca.sqlcode
+
+void
+db_error (char *msg)
+{
+ sqlca.sqlerrm.sqlerrmc[sqlca.sqlerrm.sqlerrml] = '\0';
+ printf ("%s: db error %s\n", msg, sqlca.sqlerrm.sqlerrmc);
+ exit (1);
+}
+
+int
+main ()
+{
+exec sql begin declare section;
+ long i;
+exec sql end declare section;
+ struct timeval tvs, tve;
+
+ gettimeofday(&tvs, NULL);
+
+ exec sql connect 'mm';
+ if (SQLCODE)
+ db_error ("connect");
+
+ exec sql create table perftest(number int4, ascii char16);
+ if (SQLCODE)
+ db_error ("create t");
+
+ exec sql create unique index number on perftest(number);
+ if (SQLCODE)
+ db_error ("create i");
+
+ for (i = 0;i < 1407; i++)
+ {
+ exec sql begin declare section;
+ char text[16];
+ exec sql end declare section;
+
+ sprintf(text, "%ld", i);
+ exec sql insert into perftest(number, ascii) values (:i, :text);
+ if (SQLCODE)
+ db_error ("insert");
+
+ exec sql commit;
+ if (SQLCODE)
+ db_error ("commit");
+ }
+
+ exec sql drop index number;
+ if (SQLCODE)
+ db_error ("drop i");
+
+ exec sql drop table perftest;
+ if (SQLCODE)
+ db_error ("drop t");
+
+ exec sql commit;
+ if (SQLCODE)
+ db_error ("commit");
+
+ gettimeofday(&tve, NULL);
+
+ printf("I needed %ld seconds and %ld microseconds for this test\n", tve.tv_sec - tvs.tv_sec, tve.tv_usec - tvs.tv_usec);
+
+ return (0);
+}
diff --git a/src/interfaces/ecpg/test/test1.c b/src/interfaces/ecpg/test/test1.c
new file mode 100644
index 00000000000..68d9dd53981
--- /dev/null
+++ b/src/interfaces/ecpg/test/test1.c
@@ -0,0 +1,60 @@
+exec sql begin declare section;
+VARCHAR uid[200 /* VARSIZE */];
+varchar name[200];
+short value;
+exec sql end declare section;
+
+exec sql include sqlca;
+
+#define DBCP(x,y) strcpy(x.arr,y);x.len = strlen(x.arr)
+#define LENFIX(x) x.len=strlen(x.arr)
+#define STRFIX(x) x.arr[x.len]='\0'
+#define SQLCODE sqlca.sqlcode
+
+void
+db_error (char *msg)
+{
+ sqlca.sqlerrm.sqlerrmc[sqlca.sqlerrm.sqlerrml] = '\0';
+ printf ("%s: db error %s\n", msg, sqlca.sqlerrm.sqlerrmc);
+ exit (1);
+}
+
+int
+main ()
+{
+ strcpy (uid.arr, "test/test");
+ LENFIX (uid);
+
+ exec sql connect 'kom';
+ if (SQLCODE)
+ db_error ("connect");
+
+ strcpy (name.arr, "opt1");
+ LENFIX (name);
+
+ exec sql declare cur cursor for
+ select name, value from pace_test;
+ if (SQLCODE) db_error ("declare");
+
+ exec sql open cur;
+ if (SQLCODE)
+ db_error ("open");
+
+ while (1) {
+ exec sql fetch in cur into :name, :value;
+ if (SQLCODE)
+ break;
+ STRFIX (name);
+ printf ("%s\t%d\n", name.arr, value);
+ }
+
+ if (SQLCODE < 0)
+ db_error ("fetch");
+
+ exec sql close cur;
+ if (SQLCODE) db_error ("close");
+ exec sql commit;
+ if (SQLCODE) db_error ("commit");
+
+ return (0);
+}
diff --git a/src/interfaces/ecpg/test/test2.pgc b/src/interfaces/ecpg/test/test2.pgc
new file mode 100644
index 00000000000..5e944950876
--- /dev/null
+++ b/src/interfaces/ecpg/test/test2.pgc
@@ -0,0 +1,50 @@
+exec sql include sqlca;
+
+#define SQLCODE sqlca.sqlcode
+
+void
+db_error (char *msg)
+{
+ sqlca.sqlerrm.sqlerrmc[sqlca.sqlerrm.sqlerrml] = '\0';
+ printf ("%s: db error %s\n", msg, sqlca.sqlerrm.sqlerrmc);
+ exit (1);
+}
+
+int
+main ()
+{
+exec sql begin declare section;
+ varchar text[8];
+ int count;
+ double control;
+exec sql end declare section;
+
+ exec sql connect 'mm';
+ if (SQLCODE)
+ db_error ("connect");
+
+ exec sql declare cur cursor for
+ select text, control, count from test;
+ if (SQLCODE) db_error ("declare");
+
+ exec sql open cur;
+ if (SQLCODE)
+ db_error ("open");
+
+ while (1) {
+ exec sql fetch in cur into :text, :control, :count;
+ if (SQLCODE)
+ break;
+ printf ("%8.8s %d %f\n", text.arr, count, control);
+ }
+
+ if (SQLCODE < 0)
+ db_error ("fetch");
+
+ exec sql close cur;
+ if (SQLCODE) db_error ("close");
+ exec sql commit;
+ if (SQLCODE) db_error ("commit");
+
+ return (0);
+}