mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +03:00
- Check for NULL before checking whether argument is an array.
- Remove stary character from string quoting. - Fixed check to report missing varchar pointer implementation.
This commit is contained in:
parent
9012bb63fd
commit
f417ebf03a
@ -1929,6 +1929,12 @@ Thu Jun 2 14:22:32 CEST 2005
|
|||||||
- Fixed memory leak in ecpglib by adding some missing free() commands.
|
- Fixed memory leak in ecpglib by adding some missing free() commands.
|
||||||
- Added patch by Gavin Scott <gavin@planetacetech.com> for Intel 64bit
|
- Added patch by Gavin Scott <gavin@planetacetech.com> for Intel 64bit
|
||||||
hardware.
|
hardware.
|
||||||
|
|
||||||
|
Wed Aug 24 12:17:48 CEST 2005
|
||||||
|
|
||||||
|
- Check for NULL before checking whether argument is an array.
|
||||||
|
- Removed stray character from string quoting.
|
||||||
|
- Fixed check to report missing varchar pointer implementation.
|
||||||
- Set ecpg library version to 5.1.
|
- Set ecpg library version to 5.1.
|
||||||
- Set ecpg version to 4.1.1.
|
- Set ecpg version to 4.1.1.
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.27 2004/08/29 05:06:59 momjian Exp $ */
|
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.28 2005/08/24 10:34:19 meskes Exp $ */
|
||||||
|
|
||||||
#define POSTGRES_ECPG_INTERNAL
|
#define POSTGRES_ECPG_INTERNAL
|
||||||
#include "postgres_fe.h"
|
#include "postgres_fe.h"
|
||||||
@ -50,29 +50,6 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
|
|||||||
|
|
||||||
ECPGlog("ECPGget_data line %d: RESULT: %s offset: %ld array: %s\n", lineno, pval ? pval : "", offset, isarray ? "Yes" : "No");
|
ECPGlog("ECPGget_data line %d: RESULT: %s offset: %ld array: %s\n", lineno, pval ? pval : "", offset, isarray ? "Yes" : "No");
|
||||||
|
|
||||||
/* 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 */
|
/* We will have to decode the value */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -129,6 +106,29 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
|
|||||||
if (value_for_indicator == -1)
|
if (value_for_indicator == -1)
|
||||||
return (true);
|
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
|
do
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.309 2005/08/22 20:25:03 momjian Exp $ */
|
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.310 2005/08/24 10:34:19 meskes Exp $ */
|
||||||
|
|
||||||
/* Copyright comment */
|
/* Copyright comment */
|
||||||
%{
|
%{
|
||||||
@ -5144,7 +5144,8 @@ variable: opt_pointer ECPGColLabel opt_array_bounds opt_initializer
|
|||||||
*dim = '\0';
|
*dim = '\0';
|
||||||
else
|
else
|
||||||
sprintf(dim, "[%s]", dimension);
|
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");
|
mmerror(PARSE_ERROR, ET_ERROR, "pointer to varchar are not implemented");
|
||||||
|
|
||||||
if (strcmp(dimension, "0") == 0)
|
if (strcmp(dimension, "0") == 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user