diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/adt/array_userfuncs.c | 14 | ||||
-rw-r--r-- | src/test/regress/expected/arrays.out | 24 |
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 |