Applied two bug fixes by Christof Petig.
This commit is contained in:
parent
234599e943
commit
c9ecf3d1f1
@ -1047,5 +1047,9 @@ Tue Jan 23 08:54:14 CET 2001
|
|||||||
Thu Jan 25 21:14:38 CET 2001
|
Thu Jan 25 21:14:38 CET 2001
|
||||||
|
|
||||||
- Synced gram.y and preproc.y.
|
- Synced gram.y and preproc.y.
|
||||||
|
|
||||||
|
Wed Jan 31 17:11:04 CET 2001
|
||||||
|
|
||||||
|
- Added two bug fixes by Christof Petig.
|
||||||
- Set ecpg version to 2.8.0.
|
- Set ecpg version to 2.8.0.
|
||||||
- Set library version to 3.2.0.
|
- Set library version to 3.2.0.
|
||||||
|
@ -288,48 +288,52 @@ ECPGis_type_an_array(int type,const struct statement * stmt,const struct variabl
|
|||||||
|
|
||||||
if ((stmt->connection->cache_head)==NULL)
|
if ((stmt->connection->cache_head)==NULL)
|
||||||
{
|
{
|
||||||
|
/* Text like types are not an array for ecpg, but postgres counts them as
|
||||||
|
an array. This define reminds you to not 'correct' these values. */
|
||||||
|
#define not_an_array_in_ecpg false
|
||||||
|
|
||||||
/* populate cache with well known types to speed things up */
|
/* populate cache with well known types to speed things up */
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), BOOLOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), BOOLOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), BYTEAOID, true, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), BYTEAOID, not_an_array_in_ecpg, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), CHAROID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), CHAROID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), NAMEOID, true, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), NAMEOID, not_an_array_in_ecpg, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), INT8OID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), INT8OID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), INT2OID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), INT2OID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), INT2VECTOROID, true, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), INT2VECTOROID, true, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), INT4OID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), INT4OID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), REGPROCOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), REGPROCOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), TEXTOID, true, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), TEXTOID, not_an_array_in_ecpg, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), OIDOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), OIDOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), TIDOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), TIDOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), XIDOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), XIDOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), CIDOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), CIDOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), OIDVECTOROID, true, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), OIDVECTOROID, true, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), POINTOID, true, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), POINTOID, true, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), LSEGOID, true, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), LSEGOID, true, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), PATHOID, true, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), PATHOID, not_an_array_in_ecpg , stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), BOXOID, true, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), BOXOID, true, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), POLYGONOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), POLYGONOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), LINEOID, true, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), LINEOID, true, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), FLOAT4OID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), FLOAT4OID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), FLOAT8OID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), FLOAT8OID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), ABSTIMEOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), ABSTIMEOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), RELTIMEOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), RELTIMEOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), TINTERVALOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), TINTERVALOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), UNKNOWNOID, true, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), UNKNOWNOID, not_an_array_in_ecpg, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), CIRCLEOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), CIRCLEOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), CASHOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), CASHOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), INETOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), INETOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), CIDROID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), CIDROID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), BPCHAROID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), BPCHAROID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), VARCHAROID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), VARCHAROID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), DATEOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), DATEOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), TIMEOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), TIMEOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), TIMESTAMPOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), TIMESTAMPOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), INTERVALOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), INTERVALOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), TIMETZOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), TIMETZOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), ZPBITOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), ZPBITOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), VARBITOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), VARBITOID, false, stmt->lineno);
|
||||||
ECPGtypeinfocache_push(&(stmt->connection->cache_head), NUMERICOID, false, stmt->lineno);
|
ECPGtypeinfocache_push(&(stmt->connection->cache_head), NUMERICOID, false, stmt->lineno);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (cache_entry = (stmt->connection->cache_head);cache_entry != NULL;cache_entry=cache_entry->next)
|
for (cache_entry = (stmt->connection->cache_head);cache_entry != NULL;cache_entry=cache_entry->next)
|
||||||
@ -630,13 +634,27 @@ ECPGexecute(struct statement * stmt)
|
|||||||
{
|
{
|
||||||
strncpy(mallocedval, "'{", sizeof("'{"));
|
strncpy(mallocedval, "'{", sizeof("'{"));
|
||||||
|
|
||||||
for (element = 0; element < var->arrsize; element++)
|
if (var->offset==sizeof(char))
|
||||||
sprintf(mallocedval + strlen(mallocedval), "%c,", (((char *) var->value)[element]) ? 't' : 'f');
|
for (element = 0; element < var->arrsize; element++)
|
||||||
|
sprintf(mallocedval + strlen(mallocedval), "%c,", (((char *) var->value)[element]) ? 't' : 'f');
|
||||||
|
// this is necessary since sizeof(C++'s bool)==sizeof(int)
|
||||||
|
else if (var->offset==sizeof(int))
|
||||||
|
for (element = 0; element < var->arrsize; element++)
|
||||||
|
sprintf(mallocedval + strlen(mallocedval), "%c,", (((int *) var->value)[element]) ? 't' : 'f');
|
||||||
|
else
|
||||||
|
ECPGraise(stmt->lineno, ECPG_CONVERT_BOOL, "different size");
|
||||||
|
|
||||||
strncpy(mallocedval + strlen(mallocedval) - 1, "}'", sizeof("}'"));
|
strncpy(mallocedval + strlen(mallocedval) - 1, "}'", sizeof("}'"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sprintf(mallocedval, "'%c'", (*((char *) var->value)) ? 't' : 'f');
|
{
|
||||||
|
if (var->offset==sizeof(char))
|
||||||
|
sprintf(mallocedval, "'%c'", (*((char *) var->value)) ? 't' : 'f');
|
||||||
|
else if (var->offset==sizeof(int))
|
||||||
|
sprintf(mallocedval, "'%c'", (*((int *) var->value)) ? 't' : 'f');
|
||||||
|
else
|
||||||
|
ECPGraise(stmt->lineno, ECPG_CONVERT_BOOL, "different size");
|
||||||
|
}
|
||||||
|
|
||||||
tobeinserted = mallocedval;
|
tobeinserted = mallocedval;
|
||||||
break;
|
break;
|
||||||
@ -1006,7 +1024,7 @@ ECPGdo(int lineno, const char *connection_name, char *query,...)
|
|||||||
*
|
*
|
||||||
* Copyright (c) 2000, Christof Petig <christof.petig@wtal.de>
|
* Copyright (c) 2000, Christof Petig <christof.petig@wtal.de>
|
||||||
*
|
*
|
||||||
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.16 2001/01/02 22:03:02 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.17 2001/01/31 16:12:34 meskes Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
PGconn *ECPG_internal_get_connection(char *name);
|
PGconn *ECPG_internal_get_connection(char *name);
|
||||||
|
@ -18,9 +18,10 @@ dyntest2: dyntest2.c
|
|||||||
test_code100: test_code100.c
|
test_code100: test_code100.c
|
||||||
test_notice: test_notice.c
|
test_notice: test_notice.c
|
||||||
test_init: test_init.c
|
test_init: test_init.c
|
||||||
|
test_text: test_text.c
|
||||||
|
|
||||||
.pgc.c:
|
.pgc.c:
|
||||||
$(ECPG) $?
|
$(ECPG) $?
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f test1 test2 test3 test4 perftest *.c log dyntest dyntest2 test_notice test_code100 test_init
|
rm -f test1 test2 test3 test4 perftest *.c log dyntest dyntest2 test_notice test_code100 test_init test_text
|
||||||
|
23
src/interfaces/ecpg/test/test_text.pgc
Normal file
23
src/interfaces/ecpg/test/test_text.pgc
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
// $Id: test_text.pgc,v 1.1 2001/01/31 16:12:34 meskes Exp $
|
||||||
|
|
||||||
|
exec sql include sqlca;
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{ exec sql begin declare section;
|
||||||
|
int index;
|
||||||
|
char lab[15];
|
||||||
|
exec sql end declare section;
|
||||||
|
|
||||||
|
ECPGdebug(1,stdout);
|
||||||
|
|
||||||
|
exec sql connect to mm;
|
||||||
|
if (sqlca.sqlcode) printf("%ld:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
|
||||||
|
|
||||||
|
exec sql select 'a1234567890'::text into :lab;
|
||||||
|
if (sqlca.sqlcode) printf("%ld:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
|
||||||
|
|
||||||
|
exec sql disconnect;
|
||||||
|
if (sqlca.sqlcode) printf("%ld:%s\n",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user