mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-05 19:09:58 +08:00
array_map failed to insert correct result type in an empty array.
Per example from Florian Pflug.
This commit is contained in:
parent
92c001bbaf
commit
bd3bc4076e
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.113 2004/09/27 01:39:02 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.114 2004/12/17 20:58:26 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -2241,7 +2241,13 @@ array_map(FunctionCallInfo fcinfo, Oid inpType, Oid retType)
|
||||
|
||||
/* Check for empty array */
|
||||
if (nitems <= 0)
|
||||
PG_RETURN_ARRAYTYPE_P(v);
|
||||
{
|
||||
/* Return empty array */
|
||||
result = (ArrayType *) palloc0(sizeof(ArrayType));
|
||||
result->size = sizeof(ArrayType);
|
||||
result->elemtype = retType;
|
||||
PG_RETURN_ARRAYTYPE_P(result);
|
||||
}
|
||||
|
||||
/*
|
||||
* We arrange to look up info about input and return element types
|
||||
@ -2425,14 +2431,9 @@ construct_md_array(Datum *elems,
|
||||
if (ndims == 0)
|
||||
{
|
||||
/* Allocate and initialize 0-D result array */
|
||||
nbytes = ARR_OVERHEAD(ndims);
|
||||
result = (ArrayType *) palloc(nbytes);
|
||||
|
||||
result->size = nbytes;
|
||||
result->ndim = ndims;
|
||||
result->flags = 0;
|
||||
result = (ArrayType *) palloc0(sizeof(ArrayType));
|
||||
result->size = sizeof(ArrayType);
|
||||
result->elemtype = elmtype;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user