|
8 | 8 | *
|
9 | 9 | *
|
10 | 10 | * IDENTIFICATION
|
11 |
| - * $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.74 2002/03/01 22:17:10 petere Exp $ |
| 11 | + * $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.75 2002/03/02 00:34:24 tgl Exp $ |
12 | 12 | *
|
13 | 13 | *-------------------------------------------------------------------------
|
14 | 14 | */
|
@@ -839,7 +839,8 @@ array_get_slice(ArrayType *array,
|
839 | 839 | inti,
|
840 | 840 | ndim,
|
841 | 841 | *dim,
|
842 |
| -*lb; |
| 842 | +*lb, |
| 843 | +*newlb; |
843 | 844 | intfixedDim[1],
|
844 | 845 | fixedLb[1];
|
845 | 846 | char*arraydataptr;
|
@@ -911,7 +912,14 @@ array_get_slice(ArrayType *array,
|
911 | 912 | newarray->ndim=ndim;
|
912 | 913 | newarray->flags=0;
|
913 | 914 | memcpy(ARR_DIMS(newarray),span,ndim*sizeof(int));
|
914 |
| -memcpy(ARR_LBOUND(newarray),lowerIndx,ndim*sizeof(int)); |
| 915 | +/* |
| 916 | + * Lower bounds of the new array are set to 1. Formerly (before 7.3) |
| 917 | + * we copied the given lowerIndx values ... but that seems confusing. |
| 918 | + */ |
| 919 | +newlb=ARR_LBOUND(newarray); |
| 920 | +for (i=0;i<ndim;i++) |
| 921 | +newlb[i]=1; |
| 922 | + |
915 | 923 | array_extract_slice(ndim,dim,lb,arraydataptr,elmlen,
|
916 | 924 | lowerIndx,upperIndx,ARR_DATA_PTR(newarray));
|
917 | 925 |
|
|