mirror of
https://github.com/postgres/postgres.git
synced 2025-07-07 00:36:50 +03:00
From: Michael Meskes <Michael_Meskes@topmail.de>
+ + Son Feb 21 14:10:47 CET 1999 + + - Fixed variable detection in libecpg. + + Mon Feb 22 19:47:45 CET 1999 + + - Added 'at <db_connection>' option to all commands it is apllicable + to. Due to changing the API of some libecpg functions this + requires me to increase the major version number. + - Synced pgc.l with scan.l. + - Added support for unions. + - Set library version to 3.0.0 + - Set ecpg version to 3.0.0
This commit is contained in:
@ -15,4 +15,4 @@ perftest.c:perftest.pgc
|
||||
/usr/local/pgsql/bin/ecpg $?
|
||||
|
||||
clean:
|
||||
/bin/rm test1 test2 perftest *.c log
|
||||
-/bin/rm test1 test2 perftest *.c log
|
||||
|
@ -4,7 +4,7 @@ exec sql whenever sqlerror sqlprint;
|
||||
|
||||
exec sql include sqlca;
|
||||
|
||||
exec sql define AMOUNT 8;
|
||||
exec sql define AMOUNT 4;
|
||||
|
||||
exec sql type intarray is int[AMOUNT];
|
||||
exec sql type string is char(6);
|
||||
@ -30,21 +30,31 @@ exec sql end declare section;
|
||||
ECPGdebug(1, dbgs);
|
||||
|
||||
strcpy(msg, "connect");
|
||||
exec sql connect to mm;
|
||||
exec sql connect to mm as main;
|
||||
|
||||
strcpy(msg, "connect");
|
||||
exec sql connect to pm;
|
||||
|
||||
strcpy(msg, "create");
|
||||
exec sql at main create table test(name char(6), amount int, letter char(1));
|
||||
exec sql create table test(name char(6), amount int, letter char(1));
|
||||
|
||||
strcpy(msg, "commit");
|
||||
exec sql at main commit;
|
||||
exec sql commit;
|
||||
|
||||
strcpy(msg, "set connection");
|
||||
exec sql set connection main;
|
||||
|
||||
strcpy(msg, "execute insert 1");
|
||||
sprintf(command, "insert into test(name, amount, letter) values ('foobar', 1, 'f')");
|
||||
sprintf(command, "insert into test(name, amount, letter) values ('db: mm', 1, 'f')");
|
||||
exec sql execute immediate :command;
|
||||
sprintf(command, "insert into test(name, amount, letter) values ('db: mm', 2, 't')");
|
||||
exec sql execute immediate :command;
|
||||
|
||||
strcpy(msg, "execute insert 2");
|
||||
sprintf(command, "insert into test(name, amount, letter) select name, amount+1, letter from test");
|
||||
exec sql execute immediate :command;
|
||||
sprintf(command, "insert into test(name, amount, letter) values ('db: pm', 1, 'f')");
|
||||
exec sql at pm execute immediate :command;
|
||||
|
||||
strcpy(msg, "execute insert 3");
|
||||
sprintf(command, "insert into test(name, amount, letter) select name, amount+10, letter from test");
|
||||
@ -55,27 +65,35 @@ exec sql end declare section;
|
||||
strcpy(msg, "execute insert 4");
|
||||
sprintf(command, "insert into test(name, amount, letter) select name, amount+;;, letter from test");
|
||||
exec sql prepare I from :command;
|
||||
exec sql execute I using :increment;
|
||||
exec sql at pm execute I using :increment;
|
||||
|
||||
printf("Inserted %d tuples via prepared execute\n", sqlca.sqlerrd[2]);
|
||||
|
||||
strcpy(msg, "commit");
|
||||
exec sql commit;
|
||||
exec sql at pm commit;
|
||||
|
||||
strcpy(msg, "select");
|
||||
exec sql select name, amount, letter into :name, :amount, :letter from test;
|
||||
|
||||
for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)
|
||||
printf("name[%d]=%6.6s\tamount[%d]=%d\tletter[%d]=%c\n", i, name[i], i, amount[i],i, letter[i][0]);
|
||||
|
||||
exec sql at pm select name, amount, letter into :name, :amount, :letter from test;
|
||||
|
||||
for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)
|
||||
printf("name[%d]=%6.6s\tamount[%d]=%d\tletter[%d]=%c\n", i, name[i], i, amount[i],i, letter[i][0]);
|
||||
|
||||
strcpy(msg, "drop");
|
||||
exec sql drop table test;
|
||||
exec sql at pm drop table test;
|
||||
|
||||
strcpy(msg, "commit");
|
||||
exec sql commit;
|
||||
exec sql at pm commit;
|
||||
|
||||
strcpy(msg, "disconnect");
|
||||
exec sql disconnect;
|
||||
exec sql disconnect all;
|
||||
|
||||
if (dbgs != NULL)
|
||||
fclose(dbgs);
|
||||
|
@ -5,6 +5,9 @@ exec sql include header_test;
|
||||
exec sql type c is char reference;
|
||||
typedef char* c;
|
||||
|
||||
exec sql type ind is union { int integer; short smallinteger; };
|
||||
typedef union { int integer; short smallinteger; } ind;
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
@ -18,15 +21,17 @@ exec sql begin declare section;
|
||||
birthinfo ind_birth;
|
||||
} ind_personal;
|
||||
int ind_married;
|
||||
ind children;
|
||||
ind ind_children;
|
||||
char married[9];
|
||||
c testname="Petra";
|
||||
char *query="select name, born, age, married from meskes where name = :var1";
|
||||
char *query="select name, born, age, married, children from meskes where name = :var1";
|
||||
exec sql end declare section;
|
||||
|
||||
exec sql var ind_married is long;
|
||||
|
||||
exec sql declare cur cursor for
|
||||
select name, born, age, married from meskes;
|
||||
select name, born, age, married, children from meskes;
|
||||
|
||||
char msg[128], command[128];
|
||||
FILE *dbgs;
|
||||
@ -38,11 +43,11 @@ exec sql end declare section;
|
||||
exec sql connect to unix:postgresql://localhost:5432/mm;
|
||||
|
||||
strcpy(msg, "create");
|
||||
exec sql create table meskes(name char(8), born integer, age smallint, married char(8));
|
||||
exec sql create table meskes(name char(8), born integer, age smallint, married char(8), children integer);
|
||||
|
||||
strcpy(msg, "insert");
|
||||
exec sql insert into meskes(name, married) values ('Petra', '19900404');
|
||||
exec sql insert into meskes(name, born, age, married) values ('Michael', 19660117, 33, '19900404');
|
||||
exec sql insert into meskes(name, married, children) values ('Petra', '19900404', 3);
|
||||
exec sql insert into meskes(name, born, age, married, children) values ('Michael', 19660117, 33, '19900404', 3);
|
||||
exec sql insert into meskes(name, born, age) values ('Carsten', 19910103, 8);
|
||||
exec sql insert into meskes(name, born, age) values ('Marc', 19930907, 5);
|
||||
exec sql insert into meskes(name, born, age) values ('Chris', 19970923, 1);
|
||||
@ -57,7 +62,7 @@ exec sql end declare section;
|
||||
|
||||
while (1) {
|
||||
strcpy(msg, "fetch");
|
||||
exec sql fetch in cur into :personal:ind_personal, :married:ind_married;
|
||||
exec sql fetch in cur into :personal:ind_personal, :married:ind_married, :children.integer:ind_children.smallinteger;
|
||||
printf("%8.8s", personal.name.arr);
|
||||
if (!ind_personal.ind_birth.born)
|
||||
printf(", born %d", personal.birth.born);
|
||||
@ -65,6 +70,8 @@ exec sql end declare section;
|
||||
printf(", age = %d", personal.birth.age);
|
||||
if (!ind_married)
|
||||
printf(", married %s", married);
|
||||
if (!ind_children.smallinteger)
|
||||
printf(", children = %d", children.integer);
|
||||
putchar('\n');
|
||||
}
|
||||
|
||||
@ -82,7 +89,7 @@ exec sql end declare section;
|
||||
|
||||
while (1) {
|
||||
strcpy(msg, "fetch");
|
||||
exec sql fetch in prep into :personal:ind_personal, :married:ind_married;
|
||||
exec sql fetch in prep into :personal:ind_personal, :married:ind_married, :children.integer:ind_children.smallinteger;
|
||||
printf("%8.8s", personal.name.arr);
|
||||
if (!ind_personal.ind_birth.born)
|
||||
printf(", born %d", personal.birth.born);
|
||||
@ -90,6 +97,8 @@ exec sql end declare section;
|
||||
printf(", age = %d", personal.birth.age);
|
||||
if (!ind_married)
|
||||
printf(", married %s", married);
|
||||
if (!ind_children.smallinteger)
|
||||
printf(", children = %d", children.integer);
|
||||
putchar('\n');
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user