aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/lib/data.c
diff options
context:
space:
mode:
authorMichael Meskes <meskes@postgresql.org>2001-12-05 15:32:07 +0000
committerMichael Meskes <meskes@postgresql.org>2001-12-05 15:32:07 +0000
commitee14711ce889698dfc2b3357b1eb8aab04c53a6c (patch)
tree8515d1318835c50ac7887cda5a54388c004ae9b2 /src/interfaces/ecpg/lib/data.c
parent15790465c2e05173e015e5cd37150aee97476c29 (diff)
downloadpostgresql-ee14711ce889698dfc2b3357b1eb8aab04c53a6c.tar.gz
postgresql-ee14711ce889698dfc2b3357b1eb8aab04c53a6c.zip
- Fixed variable handling in AT statement.
- Fixed bug that caused segfault when given incorrect DB name. - Fixed bug in ecpglib causing indicator to list the size of the variable instead of the size of the data.
Diffstat (limited to 'src/interfaces/ecpg/lib/data.c')
-rw-r--r--src/interfaces/ecpg/lib/data.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/interfaces/ecpg/lib/data.c b/src/interfaces/ecpg/lib/data.c
index 81bdad751bf..b0d91b9453a 100644
--- a/src/interfaces/ecpg/lib/data.c
+++ b/src/interfaces/ecpg/lib/data.c
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/data.c,v 1.19 2001/11/14 11:11:49 meskes Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/data.c,v 1.20 2001/12/05 15:32:06 meskes Exp $ */
#include "postgres_fe.h"
@@ -277,15 +277,15 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
{
case ECPGt_short:
case ECPGt_unsigned_short:
- ((short *) ind)[act_tuple] = varcharsize;
+ ((short *) ind)[act_tuple] = strlen(pval);
break;
case ECPGt_int:
case ECPGt_unsigned_int:
- ((int *) ind)[act_tuple] = varcharsize;
+ ((int *) ind)[act_tuple] = strlen(pval);
break;
case ECPGt_long:
case ECPGt_unsigned_long:
- ((long *) ind)[act_tuple] = varcharsize;
+ ((long *) ind)[act_tuple] = strlen(pval);
break;
default:
break;
@@ -300,12 +300,12 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
struct ECPGgeneric_varchar *variable =
(struct ECPGgeneric_varchar *) ((long) var + offset * act_tuple);
+ variable->len = strlen(pval);
if (varcharsize == 0)
- strncpy(variable->arr, pval, strlen(pval));
+ strncpy(variable->arr, pval, variable->len);
else
strncpy(variable->arr, pval, varcharsize);
- variable->len = strlen(pval);
if (varcharsize > 0 && variable->len > varcharsize)
{
/* truncation */
@@ -313,15 +313,15 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
{
case ECPGt_short:
case ECPGt_unsigned_short:
- ((short *) ind)[act_tuple] = varcharsize;
+ ((short *) ind)[act_tuple] = variable->len;
break;
case ECPGt_int:
case ECPGt_unsigned_int:
- ((int *) ind)[act_tuple] = varcharsize;
+ ((int *) ind)[act_tuple] = variable->len;
break;
case ECPGt_long:
case ECPGt_unsigned_long:
- ((long *) ind)[act_tuple] = varcharsize;
+ ((long *) ind)[act_tuple] = variable->len;
break;
default:
break;