diff options
author | Michael Meskes <meskes@postgresql.org> | 2000-09-19 11:47:16 +0000 |
---|---|---|
committer | Michael Meskes <meskes@postgresql.org> | 2000-09-19 11:47:16 +0000 |
commit | e9c3f0255fb54600e1c03533cc2e72d78928634d (patch) | |
tree | e8bee36a63e6a5958cd6e08faa024b1065357aa7 /src/interfaces/ecpg/lib/execute.c | |
parent | a5a290cab923c8203ed01631989daa616003ebf8 (diff) | |
download | postgresql-e9c3f0255fb54600e1c03533cc2e72d78928634d.tar.gz postgresql-e9c3f0255fb54600e1c03533cc2e72d78928634d.zip |
*** empty log message ***
Diffstat (limited to 'src/interfaces/ecpg/lib/execute.c')
-rw-r--r-- | src/interfaces/ecpg/lib/execute.c | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/src/interfaces/ecpg/lib/execute.c b/src/interfaces/ecpg/lib/execute.c index f606a88e843..0741db622aa 100644 --- a/src/interfaces/ecpg/lib/execute.c +++ b/src/interfaces/ecpg/lib/execute.c @@ -305,6 +305,11 @@ ECPGexecute(struct statement * stmt) if (*(long *) var->ind_value < 0L) strcpy(buff, "null"); break; + case ECPGt_long_long: + case ECPGt_unsigned_long_long: + if (*(long long int*) var->ind_value < 0LL) + strcpy(buff, "null"); + break; default: break; } @@ -428,6 +433,44 @@ ECPGexecute(struct statement * stmt) tobeinserted = mallocedval; break; + + case ECPGt_long_long: + if (!(mallocedval = ecpg_alloc(var->arrsize * 25, stmt->lineno))) + return false; + + if (var->arrsize > 1) + { + strncpy(mallocedval, "'{", sizeof("'{")); + + for (element = 0; element < var->arrsize; element++) + sprintf(mallocedval + strlen(mallocedval), "%lld,", ((long long *) var->value)[element]); + + strncpy(mallocedval + strlen(mallocedval) - 1, "}'", sizeof("}'")); + } + else + sprintf(mallocedval, "%lld", *((long long *) var->value)); + + tobeinserted = mallocedval; + break; + + case ECPGt_unsigned_long_long: + if (!(mallocedval = ecpg_alloc(var->arrsize * 25, stmt->lineno))) + return false; + + if (var->arrsize > 1) + { + strncpy(mallocedval, "'{", sizeof("'{")); + + for (element = 0; element < var->arrsize; element++) + sprintf(mallocedval + strlen(mallocedval), "%llu,", ((unsigned long long *) var->value)[element]); + + strncpy(mallocedval + strlen(mallocedval) - 1, "}'", sizeof("}'")); + } + else + sprintf(mallocedval, "%llu", *((unsigned long long*) var->value)); + + tobeinserted = mallocedval; + break; case ECPGt_float: if (!(mallocedval = ecpg_alloc(var->arrsize * 20, stmt->lineno))) @@ -868,7 +911,7 @@ ECPGdo(int lineno, const char *connection_name, char *query,...) * * Copyright (c) 2000, Christof Petig <christof.petig@wtal.de> * - * $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.7 2000/05/29 21:25:00 momjian Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/execute.c,v 1.8 2000/09/19 11:47:13 meskes Exp $ */ PGconn *ECPG_internal_get_connection(char *name); |