diff --git a/src/interfaces/ecpg/ecpglib/data.c b/src/interfaces/ecpg/ecpglib/data.c index 5aa46b94dde..fe258dba8f8 100644 --- a/src/interfaces/ecpg/ecpglib/data.c +++ b/src/interfaces/ecpg/ecpglib/data.c @@ -1,4 +1,4 @@ -/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.20.2.1 2003/11/12 08:42:57 meskes Exp $ */ +/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.20.2.2 2005/08/24 10:35:54 meskes Exp $ */ #define POSTGRES_ECPG_INTERNAL #include "postgres_fe.h" @@ -46,29 +46,6 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno, ECPGlog("ECPGget_data line %d: RESULT: %s offset: %ld array: %d\n", lineno, pval ? pval : "", offset, isarray); - /* pval is a pointer to the value */ - /* let's check if it really is an array if it should be one */ - if (isarray == ECPG_ARRAY_ARRAY) - { - if (*pval != '{') - { - ECPGraise(lineno, ECPG_DATA_NOT_ARRAY, ECPG_SQLSTATE_DATATYPE_MISMATCH, NULL); - return (false); - } - - switch (type) - { - case ECPGt_char: - case ECPGt_unsigned_char: - case ECPGt_varchar: - break; - - default: - pval++; - break; - } - } - /* We will have to decode the value */ /* @@ -125,6 +102,29 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno, if (value_for_indicator == -1) return (true); + /* pval is a pointer to the value */ + /* let's check if it really is an array if it should be one */ + if (isarray == ECPG_ARRAY_ARRAY) + { + if (*pval != '{') + { + ECPGraise(lineno, ECPG_DATA_NOT_ARRAY, ECPG_SQLSTATE_DATATYPE_MISMATCH, NULL); + return (false); + } + + switch (type) + { + case ECPGt_char: + case ECPGt_unsigned_char: + case ECPGt_varchar: + break; + + default: + pval++; + break; + } + } + do { switch (type) diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y index eede4bb9d37..80b166221b0 100644 --- a/src/interfaces/ecpg/preproc/preproc.y +++ b/src/interfaces/ecpg/preproc/preproc.y @@ -1,4 +1,4 @@ -/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.263.2.19 2004/11/10 13:49:17 meskes Exp $ */ +/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.263.2.20 2005/08/24 10:35:54 meskes Exp $ */ /* Copyright comment */ %{ @@ -5121,7 +5121,8 @@ variable: opt_pointer ECPGColLabelCommon opt_array_bounds opt_initializer *dim = '\0'; else sprintf(dim, "[%s]", dimension); - if (strcmp(length, "0") == 0) + /* if (strcmp(length, "0") == 0)*/ + if (atoi(length) <= 0) mmerror(PARSE_ERROR, ET_ERROR, "pointer to varchar are not implemented"); if (strcmp(dimension, "0") == 0)