aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/adt/array_userfuncs.c14
-rw-r--r--src/test/regress/expected/arrays.out24
2 files changed, 21 insertions, 17 deletions
diff --git a/src/backend/utils/adt/array_userfuncs.c b/src/backend/utils/adt/array_userfuncs.c
index 468e444e139..e1fc3f26db0 100644
--- a/src/backend/utils/adt/array_userfuncs.c
+++ b/src/backend/utils/adt/array_userfuncs.c
@@ -6,7 +6,7 @@
* Copyright (c) 2003-2005, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/array_userfuncs.c,v 1.17 2005/11/17 22:14:52 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/array_userfuncs.c,v 1.18 2005/11/19 01:50:08 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -152,6 +152,13 @@ array_push(PG_FUNCTION_ARGS)
result = array_set(v, 1, &indx, newelem, isNull,
-1, typlen, typbyval, typalign);
+ /*
+ * Readjust result's LB to match the input's. This does nothing in the
+ * append case, but it's the simplest way to implement the prepend case.
+ */
+ if (ARR_NDIM(v) == 1)
+ ARR_LBOUND(result)[0] = ARR_LBOUND(v)[0];
+
PG_RETURN_ARRAYTYPE_P(result);
}
@@ -305,7 +312,7 @@ array_cat(PG_FUNCTION_ARGS)
{
/*
* resulting array has the second argument as the outer array, with
- * the first argument appended to the front of the outer dimension
+ * the first argument inserted at the front of the outer dimension
*/
ndims = ndims2;
dims = (int *) palloc(ndims * sizeof(int));
@@ -316,9 +323,6 @@ array_cat(PG_FUNCTION_ARGS)
/* increment number of elements in outer array */
dims[0] += 1;
- /* decrement outer array lower bound */
- lbs[0] -= 1;
-
/* make sure the added element matches our existing elements */
for (i = 0; i < ndims1; i++)
{
diff --git a/src/test/regress/expected/arrays.out b/src/test/regress/expected/arrays.out
index da218f0047c..11b83ea9936 100644
--- a/src/test/regress/expected/arrays.out
+++ b/src/test/regress/expected/arrays.out
@@ -224,9 +224,9 @@ SELECT array_append(array[42], 6) AS "{42,6}";
(1 row)
SELECT array_prepend(6, array[42]) AS "{6,42}";
- {6,42}
---------------
- [0:1]={6,42}
+ {6,42}
+--------
+ {6,42}
(1 row)
SELECT array_cat(ARRAY[1,2], ARRAY[3,4]) AS "{1,2,3,4}";
@@ -236,9 +236,9 @@ SELECT array_cat(ARRAY[1,2], ARRAY[3,4]) AS "{1,2,3,4}";
(1 row)
SELECT array_cat(ARRAY[1,2], ARRAY[[3,4],[5,6]]) AS "{{1,2},{3,4},{5,6}}";
- {{1,2},{3,4},{5,6}}
---------------------------------
- [0:2][1:2]={{1,2},{3,4},{5,6}}
+ {{1,2},{3,4},{5,6}}
+---------------------
+ {{1,2},{3,4},{5,6}}
(1 row)
SELECT array_cat(ARRAY[[3,4],[5,6]], ARRAY[1,2]) AS "{{3,4},{5,6},{1,2}}";
@@ -267,9 +267,9 @@ SELECT ARRAY[1,2] || 3 AS "{1,2,3}";
(1 row)
SELECT 0 || ARRAY[1,2] AS "{0,1,2}";
- {0,1,2}
----------------
- [0:2]={0,1,2}
+ {0,1,2}
+---------
+ {0,1,2}
(1 row)
SELECT ARRAY[1,2] || ARRAY[3,4] AS "{1,2,3,4}";
@@ -297,9 +297,9 @@ SELECT ARRAY[0,0] || ARRAY[1,1] || ARRAY[2,2] AS "{0,0,1,1,2,2}";
(1 row)
SELECT 0 || ARRAY[1,2] || 3 AS "{0,1,2,3}";
- {0,1,2,3}
------------------
- [0:3]={0,1,2,3}
+ {0,1,2,3}
+-----------
+ {0,1,2,3}
(1 row)
-- array casts