From 30f16e72a4951c1e8c70a2d33822d2f64d4a1806 Mon Sep 17 00:00:00 2001 From: Michael Meskes Date: Tue, 15 Feb 2000 19:23:20 +0000 Subject: [PATCH] *** empty log message *** --- src/interfaces/ecpg/include/sqlca.h | 4 +++- src/interfaces/ecpg/lib/ecpglib.c | 23 +++++++++++++---------- src/interfaces/ecpg/test/Makefile | 10 +++++----- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/interfaces/ecpg/include/sqlca.h b/src/interfaces/ecpg/include/sqlca.h index 44e7908f59..0fa4a62418 100644 --- a/src/interfaces/ecpg/include/sqlca.h +++ b/src/interfaces/ecpg/include/sqlca.h @@ -1,6 +1,8 @@ #ifndef POSTGRES_SQLCA_H #define POSTGRES_SQLCA_H +#define SQLERRMC_LEN 70 + #ifdef __cplusplus extern "C" { @@ -14,7 +16,7 @@ extern "C" struct { int sqlerrml; - char sqlerrmc[70]; + char sqlerrmc[SQLERRMC_LEN]; } sqlerrm; char sqlerrp[8]; long sqlerrd[6]; diff --git a/src/interfaces/ecpg/lib/ecpglib.c b/src/interfaces/ecpg/lib/ecpglib.c index 15440d09d9..205a051a1e 100644 --- a/src/interfaces/ecpg/lib/ecpglib.c +++ b/src/interfaces/ecpg/lib/ecpglib.c @@ -109,7 +109,7 @@ register_error(long code, char *fmt,...) sqlca.sqlcode = code; va_start(args, fmt); - vsprintf(sqlca.sqlerrm.sqlerrmc, fmt, args); + vsnprintf(sqlca.sqlerrm.sqlerrmc, SQLERRMC_LEN, fmt, args); va_end(args); sqlca.sqlerrm.sqlerrml = strlen(sqlca.sqlerrm.sqlerrmc); @@ -649,7 +649,8 @@ ECPGexecute(struct statement * stmt) int nfields, ntuples, act_tuple, - act_field; + act_field, + isarray; case PGRES_TUPLES_OK: nfields = PQnfields(results); @@ -678,6 +679,16 @@ ECPGexecute(struct statement * stmt) return (false); } + array_query = (char *)ecpg_alloc(strlen("select typelem from pg_type where oid=") + 11, stmt -> lineno); + sprintf(array_query, "select typelem from pg_type where oid=%d", PQftype(results, act_field)); + query = PQexec(stmt->connection->connection, array_query); + isarray = 0; + if (PQresultStatus(query) == PGRES_TUPLES_OK) { + isarray = atol((char *)PQgetvalue(query, 0, 0)); + ECPGlog("ECPGexecute line %d: TYPE database: %d C: %d array: %s\n", stmt->lineno, PQftype(results, act_field), var->type, isarray ? "yes" : "no"); + } + PQclear(query); + /* * if we don't have enough space, we cannot read all * tuples @@ -726,14 +737,6 @@ ECPGexecute(struct statement * stmt) add_mem(var->value, stmt->lineno); } -#if 0 - array_query = (char *)ecpg_alloc(strlen("select typelem from pg_type where oid=") + 11, stmt -> lineno); - sprintf(array_query, "select typelem from pg_type where oid=%d", PQftype(results, act_field)); - query = PQexec(stmt->connection->connection, array_query); - if (PQresultStatus(query) == PGRES_TUPLES_OK) - ECPGlog("ECPGexecute line %d: TYPE database: %d C: %d array OID: %s\n", stmt->lineno, PQftype(results, act_field), var->type, (char *)PQgetvalue(query, 0, 0)); - PQclear(query); -#endif for (act_tuple = 0; act_tuple < ntuples && status; act_tuple++) { pval = (char *)PQgetvalue(results, act_tuple, act_field); diff --git a/src/interfaces/ecpg/test/Makefile b/src/interfaces/ecpg/test/Makefile index fb7ba0d25a..c6b5621acf 100644 --- a/src/interfaces/ecpg/test/Makefile +++ b/src/interfaces/ecpg/test/Makefile @@ -1,12 +1,12 @@ all: stp.so test1 test2 test3 test4 test5 perftest #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 -ECPG=/usr/bin/ecpg -I/usr/include/postgresql +ECPG=../preproc/ecpg -I../include +#ECPG=/usr/bin/ecpg -I/usr/include/postgresql .SUFFIXES: .pgc .c @@ -22,7 +22,7 @@ perftest: perftest.c stp.so: stp.c cc -fPIC -I../include -I/usr/include/postgresql -c -o stp.o stp.c - ld -Bdynamic -shared -soname stp.so -o stp.so stp.o -lpq -lecpg + ld -Bdynamic -shared -soname stp.so -o stp.so stp.o -lpq -lecpg -lc clean: