mirror of
https://github.com/postgres/postgres.git
synced 2025-06-11 20:28:21 +03:00
Make SQL arrays support null elements. This commit fixes the core array
functionality, but I still need to make another pass looking at places that incidentally use arrays (such as ACL manipulation) to make sure they are null-safe. Contrib needs work too. I have not changed the behaviors that are still under discussion about array comparison and what to do with lower bounds.
This commit is contained in:
@ -208,12 +208,13 @@ ArrayType *
|
||||
new_intArrayType(int num)
|
||||
{
|
||||
ArrayType *r;
|
||||
int nbytes = ARR_OVERHEAD(NDIM) + sizeof(int) * num;
|
||||
int nbytes = ARR_OVERHEAD_NONULLS(NDIM) + sizeof(int) * num;
|
||||
|
||||
r = (ArrayType *) palloc0(nbytes);
|
||||
|
||||
ARR_SIZE(r) = nbytes;
|
||||
ARR_NDIM(r) = NDIM;
|
||||
r->dataoffset = 0; /* marker for no null bitmap */
|
||||
ARR_ELEMTYPE(r) = INT4OID;
|
||||
*((int *) ARR_DIMS(r)) = num;
|
||||
*((int *) ARR_LBOUND(r)) = 1;
|
||||
@ -224,7 +225,7 @@ new_intArrayType(int num)
|
||||
ArrayType *
|
||||
resize_intArrayType(ArrayType *a, int num)
|
||||
{
|
||||
int nbytes = ARR_OVERHEAD(NDIM) + sizeof(int) * num;
|
||||
int nbytes = ARR_OVERHEAD_NONULLS(NDIM) + sizeof(int) * num;
|
||||
|
||||
if (num == ARRNELEMS(a))
|
||||
return a;
|
||||
|
Reference in New Issue
Block a user