aboutsummaryrefslogtreecommitdiff
path: root/contrib/intarray
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2013-09-07 11:44:33 -0400
committerBruce Momjian <bruce@momjian.us>2013-09-07 11:44:33 -0400
commitc155f654b4f755b4111bd9adb60559fe22526a10 (patch)
treecda3d17422b556034e8a9f28241c933a593a7d98 /contrib/intarray
parentb8104730c8eae1f81ccbc8673bbd2a3566e660ae (diff)
downloadpostgresql-c155f654b4f755b4111bd9adb60559fe22526a10.tar.gz
postgresql-c155f654b4f755b4111bd9adb60559fe22526a10.zip
intarray: return empty zero-dimensional array for an empty array
Previously a one-dimensional empty array was returned, but its text representation matched a zero-dimensional array, and there is no way to dump/reload a one-dimensional empty array. BACKWARD INCOMPATIBILITY Per report from elein
Diffstat (limited to 'contrib/intarray')
-rw-r--r--contrib/intarray/_int_tool.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/contrib/intarray/_int_tool.c b/contrib/intarray/_int_tool.c
index 863557672ee..fc462b20766 100644
--- a/contrib/intarray/_int_tool.c
+++ b/contrib/intarray/_int_tool.c
@@ -246,6 +246,13 @@ resize_intArrayType(ArrayType *a, int num)
int nbytes = ARR_DATA_OFFSET(a) + sizeof(int) * num;
int i;
+ /* if no elements, return a zero-dimensional array */
+ if (num == 0)
+ {
+ ARR_NDIM(a) = 0;
+ return a;
+ }
+
if (num == ARRNELEMS(a))
return a;