Commit 9356877b authored by Tom Lane's avatar Tom Lane

Repair oidvectorrecv and int2vectorrecv, which I broke while changing

them to use array_recv :-(.  Per report from Tim Kordas.
parent 487b7f5d
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/int.c,v 1.69 2005/11/17 22:14:53 tgl Exp $ * $PostgreSQL: pgsql/src/backend/utils/adt/int.c,v 1.70 2006/03/02 21:13:04 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -212,13 +212,28 @@ Datum ...@@ -212,13 +212,28 @@ Datum
int2vectorrecv(PG_FUNCTION_ARGS) int2vectorrecv(PG_FUNCTION_ARGS)
{ {
StringInfo buf = (StringInfo) PG_GETARG_POINTER(0); StringInfo buf = (StringInfo) PG_GETARG_POINTER(0);
FunctionCallInfoData locfcinfo;
int2vector *result; int2vector *result;
result = (int2vector *) /*
DatumGetPointer(DirectFunctionCall3(array_recv, * Normally one would call array_recv() using DirectFunctionCall3,
PointerGetDatum(buf), * but that does not work since array_recv wants to cache some data
ObjectIdGetDatum(INT2OID), * using fcinfo->flinfo->fn_extra. So we need to pass it our own
Int32GetDatum(-1))); * flinfo parameter.
*/
InitFunctionCallInfoData(locfcinfo, fcinfo->flinfo, 3, NULL, NULL);
locfcinfo.arg[0] = PointerGetDatum(buf);
locfcinfo.arg[1] = ObjectIdGetDatum(INT2OID);
locfcinfo.arg[2] = Int32GetDatum(-1);
locfcinfo.argnull[0] = false;
locfcinfo.argnull[1] = false;
locfcinfo.argnull[2] = false;
result = (int2vector *) DatumGetPointer(array_recv(&locfcinfo));
Assert(!locfcinfo.isnull);
/* sanity checks: int2vector must be 1-D, no nulls */ /* sanity checks: int2vector must be 1-D, no nulls */
if (ARR_NDIM(result) != 1 || if (ARR_NDIM(result) != 1 ||
ARR_HASNULL(result) || ARR_HASNULL(result) ||
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/oid.c,v 1.66 2005/11/22 18:17:23 momjian Exp $ * $PostgreSQL: pgsql/src/backend/utils/adt/oid.c,v 1.67 2006/03/02 21:13:04 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -254,13 +254,28 @@ Datum ...@@ -254,13 +254,28 @@ Datum
oidvectorrecv(PG_FUNCTION_ARGS) oidvectorrecv(PG_FUNCTION_ARGS)
{ {
StringInfo buf = (StringInfo) PG_GETARG_POINTER(0); StringInfo buf = (StringInfo) PG_GETARG_POINTER(0);
FunctionCallInfoData locfcinfo;
oidvector *result; oidvector *result;
result = (oidvector *) /*
DatumGetPointer(DirectFunctionCall3(array_recv, * Normally one would call array_recv() using DirectFunctionCall3,
PointerGetDatum(buf), * but that does not work since array_recv wants to cache some data
ObjectIdGetDatum(OIDOID), * using fcinfo->flinfo->fn_extra. So we need to pass it our own
Int32GetDatum(-1))); * flinfo parameter.
*/
InitFunctionCallInfoData(locfcinfo, fcinfo->flinfo, 3, NULL, NULL);
locfcinfo.arg[0] = PointerGetDatum(buf);
locfcinfo.arg[1] = ObjectIdGetDatum(OIDOID);
locfcinfo.arg[2] = Int32GetDatum(-1);
locfcinfo.argnull[0] = false;
locfcinfo.argnull[1] = false;
locfcinfo.argnull[2] = false;
result = (oidvector *) DatumGetPointer(array_recv(&locfcinfo));
Assert(!locfcinfo.isnull);
/* sanity checks: oidvector must be 1-D, no nulls */ /* sanity checks: oidvector must be 1-D, no nulls */
if (ARR_NDIM(result) != 1 || if (ARR_NDIM(result) != 1 ||
ARR_HASNULL(result) || ARR_HASNULL(result) ||
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment