summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meskes2000-05-17 06:03:14 +0000
committerMichael Meskes2000-05-17 06:03:14 +0000
commite39a1186941200fdab0187e6022d714f41fc1945 (patch)
tree6b40bf6b22a0b9bd8275c87622cf5bab134fa8fe
parent76da5b80b1424cbf467ec8871a264db3885efd53 (diff)
*** empty log message ***
-rw-r--r--src/interfaces/ecpg/ChangeLog5
-rw-r--r--src/interfaces/ecpg/lib/Makefile.in4
-rw-r--r--src/interfaces/ecpg/lib/data.c24
-rw-r--r--src/interfaces/ecpg/test/Makefile5
-rw-r--r--src/interfaces/ecpg/test/test1.pgc18
-rw-r--r--src/interfaces/ecpg/test/test4.pgc6
6 files changed, 44 insertions, 18 deletions
diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 29a59fa3207..6f292eeb4c3 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -919,4 +919,9 @@ Mon May 15 10:51:31 CEST 2000
- Added patch by SAKAIDA Masaaki <[email protected]> to fix segfault.
- Set ecpg version to 2.7.1.
+Wed May 17 07:52:59 CEST 2000
+
+ - Added patch by SAKAIDA Masaaki <[email protected]> to fix array
+ handling.
+ - Set library version to 3.1.1.
diff --git a/src/interfaces/ecpg/lib/Makefile.in b/src/interfaces/ecpg/lib/Makefile.in
index 20f5c314dd1..d48c75ea230 100644
--- a/src/interfaces/ecpg/lib/Makefile.in
+++ b/src/interfaces/ecpg/lib/Makefile.in
@@ -6,13 +6,13 @@
# Copyright (c) 1994, Regents of the University of California
#
# IDENTIFICATION
-# $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/Makefile.in,v 1.65 2000/03/30 11:41:34 meskes Exp $
+# $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/Makefile.in,v 1.66 2000/05/17 06:03:13 meskes Exp $
#
#-------------------------------------------------------------------------
NAME= ecpg
SO_MAJOR_VERSION= 3
-SO_MINOR_VERSION= 1.0
+SO_MINOR_VERSION= 1.1
SRCDIR= @top_srcdir@
include $(SRCDIR)/Makefile.global
diff --git a/src/interfaces/ecpg/lib/data.c b/src/interfaces/ecpg/lib/data.c
index 29675a89728..18ac49805bd 100644
--- a/src/interfaces/ecpg/lib/data.c
+++ b/src/interfaces/ecpg/lib/data.c
@@ -1,4 +1,5 @@
#include <stdlib.h>
+#include <string.h>
#include <ecpgtype.h>
#include <ecpglib.h>
@@ -26,8 +27,18 @@ get_data(PGresult *results, int act_tuple, int act_field, int lineno,
ECPGraise(lineno, ECPG_DATA_NOT_ARRAY, NULL);
return (false);
}
- else
- ++pval;
+
+ switch (type)
+ {
+ case ECPGt_char:
+ case ECPGt_unsigned_char:
+ case ECPGt_varchar:
+ break;
+
+ default:
+ pval++;
+ break;
+ }
}
/* We will have to decode the value */
@@ -144,7 +155,14 @@ get_data(PGresult *results, int act_tuple, int act_field, int lineno,
case ECPGt_double:
if (pval)
{
- dres = strtod(pval, &scan_length);
+ if (isarray && *pval == '"')
+ dres = strtod(pval + 1, &scan_length);
+ else
+ dres = strtod(pval, &scan_length);
+
+ if (isarray && *scan_length == '"')
+ scan_length++;
+
if ((isarray && *scan_length != ',' && *scan_length != '}')
|| (!isarray && *scan_length != '\0')) /* Garbage left */
{
diff --git a/src/interfaces/ecpg/test/Makefile b/src/interfaces/ecpg/test/Makefile
index 72f38035d3a..0b9135a5afb 100644
--- a/src/interfaces/ecpg/test/Makefile
+++ b/src/interfaces/ecpg/test/Makefile
@@ -2,7 +2,8 @@ all: test1 test2 test3 test4 perftest dyntest dyntest2
LDFLAGS=-g -I /usr/local/pgsql/include -L/usr/local/pgsql/lib -lecpg -lpq
-ECPG=../preproc/ecpg -I../include
+ECPG=/usr/local/pgsql/bin/ecpg -I../include
+#ECPG=../preproc/ecpg -I../include
.SUFFIXES: .pgc .c
@@ -18,4 +19,4 @@ dyntest2: dyntest2.c
$(ECPG) $?
clean:
- rm -f test1 test2 test3 test4 perftest *.c *.o log dyntest dyntest2
+ rm -f test1 test2 test3 test4 perftest *.c log dyntest dyntest2
diff --git a/src/interfaces/ecpg/test/test1.pgc b/src/interfaces/ecpg/test/test1.pgc
index 67c1aa847fc..f98719d56f8 100644
--- a/src/interfaces/ecpg/test/test1.pgc
+++ b/src/interfaces/ecpg/test/test1.pgc
@@ -1,5 +1,3 @@
-
-
exec sql include sqlca;
exec sql whenever sqlerror do PrintAndStop(msg);
@@ -88,8 +86,9 @@ exec sql end declare section;
strcpy(msg, "commit");
exec sql commit;
- /* Stop automatic transactioning for connection pm. */
- exec sql at pm set autocommit to off;
+ /* Start automatic transactioning for connection pm. */
+ exec sql at pm set autocommit to on;
+ exec sql at pm begin transaction;
strcpy(msg, "select");
exec sql select name, amount, letter into :name, :amount, :letter from "Test";
@@ -117,14 +116,17 @@ exec sql end declare section;
for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)
printf("name[%d]=%8.8s\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;
+ /* Start automatic transactioning for connection main. */
+ exec sql set autocommit to on;
+
+ strcpy(msg, "drop");
+ exec sql drop table "Test";
+ exec sql at pm drop table "Test";
+
strcpy(msg, "disconnect");
exec sql disconnect main;
exec sql disconnect pm;
diff --git a/src/interfaces/ecpg/test/test4.pgc b/src/interfaces/ecpg/test/test4.pgc
index 0ac00008e49..a45abc1ae6a 100644
--- a/src/interfaces/ecpg/test/test4.pgc
+++ b/src/interfaces/ecpg/test/test4.pgc
@@ -8,7 +8,7 @@ int
main ()
{
EXEC SQL BEGIN DECLARE SECTION;
- int i = 3;
+ int i = 1;
int *did = &i;
int a[10] = {9,8,7,6,5,4,3,2,1,0};
char text[10] = "klmnopqrst";
@@ -31,7 +31,7 @@ EXEC SQL END DECLARE SECTION;
EXEC SQL CREATE TABLE test (f float, i int, a int[10], text char(10), b bool);
- EXEC SQL INSERT INTO test(f,i,a,text,b) VALUES(404.90,1,'{0,1,2,3,4,5,6,7,8,9}','abcdefghij', 'f');
+ EXEC SQL INSERT INTO test(f,i,a,text,b) VALUES(404.90,3,'{0,1,2,3,4,5,6,7,8,9}','abcdefghij', 'f');
EXEC SQL INSERT INTO test(f,i,a,text,b) VALUES(140787.0,2,:a,:text,'t');
@@ -48,7 +48,7 @@ EXEC SQL END DECLARE SECTION;
printf("Found f=%f text=%10.10s b=%d\n", f, text, b);
- f=14.07;
+ f=140787;
EXEC SQL SELECT a,text
INTO :a,:t
FROM test