mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-05 02:06:50 +02:00
Added patch by Dave Cramer for array handling in ecpglib.
This commit is contained in:
parent
e2605c8311
commit
3819afa759
@ -1714,3 +1714,11 @@ Mon Nov 3 15:43:19 CET 2003
|
|||||||
- Set pgtypes library to 1.0.0
|
- Set pgtypes library to 1.0.0
|
||||||
- Set compat library to 1.0.0
|
- Set compat library to 1.0.0
|
||||||
|
|
||||||
|
Wed Dec 3 09:45:21 CET 2003
|
||||||
|
|
||||||
|
- Added patch for array handling by Dave Cramer
|
||||||
|
- Set ecpg version to 3.1.0
|
||||||
|
- Set ecpg library to 4.1.0
|
||||||
|
- Set pgtypes library to 1.1.0
|
||||||
|
- Set compat library to 1.1.0
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.29 2003/11/29 19:52:08 pgsql Exp $ */
|
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.30 2003/12/03 08:49:17 meskes Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The aim is to get a simpler inteface to the database routines.
|
* The aim is to get a simpler inteface to the database routines.
|
||||||
@ -314,16 +314,21 @@ ECPGis_type_an_array(int type, const struct statement * stmt, const struct varia
|
|||||||
sprintf(array_query, "select typlen from pg_type where oid=%d and typelem<>0", type);
|
sprintf(array_query, "select typlen from pg_type where oid=%d and typelem<>0", type);
|
||||||
query = PQexec(stmt->connection->connection, array_query);
|
query = PQexec(stmt->connection->connection, array_query);
|
||||||
ECPGfree(array_query);
|
ECPGfree(array_query);
|
||||||
if (PQresultStatus(query) == PGRES_TUPLES_OK)
|
if (PQresultStatus(query) == PGRES_TUPLES_OK )
|
||||||
{
|
{
|
||||||
isarray = (atol((char *) PQgetvalue(query, 0, 0)) == -1) ? ECPG_ARRAY_ARRAY : ECPG_ARRAY_VECTOR;
|
if ( PQntuples(query) == 0 )
|
||||||
if (ECPGDynamicType(type) == SQL3_CHARACTER ||
|
|
||||||
ECPGDynamicType(type) == SQL3_CHARACTER_VARYING)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* arrays of character strings are not yet implemented
|
|
||||||
*/
|
|
||||||
isarray = ECPG_ARRAY_NONE;
|
isarray = ECPG_ARRAY_NONE;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
isarray = (atol((char *) PQgetvalue(query, 0, 0)) == -1) ? ECPG_ARRAY_ARRAY : ECPG_ARRAY_VECTOR;
|
||||||
|
if (ECPGDynamicType(type) == SQL3_CHARACTER ||
|
||||||
|
ECPGDynamicType(type) == SQL3_CHARACTER_VARYING)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* arrays of character strings are not yet implemented
|
||||||
|
*/
|
||||||
|
isarray = ECPG_ARRAY_NONE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
PQclear(query);
|
PQclear(query);
|
||||||
@ -353,7 +358,7 @@ ECPGstore_result(const PGresult *results, int act_field,
|
|||||||
{
|
{
|
||||||
ECPGlog("ECPGexecute line %d: Incorrect number of matches: %d don't fit into array of %d\n",
|
ECPGlog("ECPGexecute line %d: Incorrect number of matches: %d don't fit into array of %d\n",
|
||||||
stmt->lineno, ntuples, var->arrsize);
|
stmt->lineno, ntuples, var->arrsize);
|
||||||
ECPGraise(stmt->lineno, ECPG_TOO_MANY_MATCHES, ECPG_SQLSTATE_CARDINALITY_VIOLATION, NULL);
|
ECPGraise(stmt->lineno, INFORMIX_MODE(stmt->compat)?ECPG_INFORMIX_SUBSELECT_NOT_ONE:ECPG_TOO_MANY_MATCHES, ECPG_SQLSTATE_CARDINALITY_VIOLATION, NULL);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user