diff options
author | Noah Misch <noah@leadboat.com> | 2013-05-31 21:50:59 -0400 |
---|---|---|
committer | Noah Misch <noah@leadboat.com> | 2013-05-31 21:50:59 -0400 |
commit | 97c4d9b7c71519d9dc281394af2c4bcb28bdf136 (patch) | |
tree | aa9f2e148eb1c7f8a003223a57b950f3db79ea3c /src/backend/utils/adt/arrayfuncs.c | |
parent | 01497e738e58b0a5d87706353f28eccc5bea9591 (diff) | |
download | postgresql-97c4d9b7c71519d9dc281394af2c4bcb28bdf136.tar.gz postgresql-97c4d9b7c71519d9dc281394af2c4bcb28bdf136.zip |
Don't emit non-canonical empty arrays in array_remove().
Dean Rasheed
Diffstat (limited to 'src/backend/utils/adt/arrayfuncs.c')
-rw-r--r-- | src/backend/utils/adt/arrayfuncs.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c index 1d61d5c7c8d..438c3d0e9e6 100644 --- a/src/backend/utils/adt/arrayfuncs.c +++ b/src/backend/utils/adt/arrayfuncs.c @@ -5398,6 +5398,14 @@ array_replace_internal(ArrayType *array, return array; } + /* If all elements were removed return an empty array */ + if (nresult == 0) + { + pfree(values); + pfree(nulls); + return construct_empty_array(element_type); + } + /* Allocate and initialize the result array */ if (hasnulls) { |