|
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 |
|
|