1
0
mirror of https://github.com/postgres/postgres.git synced 2025-05-18 17:41:14 +03:00

- Check for NULL before checking whether argument is an array.

- Removed stray character from string quoting.
	- Fixed check to report missing varchar pointer implementation.
This commit is contained in:
Michael Meskes 2005-08-24 10:35:54 +00:00
parent e2e2e15cf8
commit d00f6b249a
2 changed files with 27 additions and 26 deletions

View File

@ -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)

View File

@ -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)