aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/execQual.c
diff options
context:
space:
mode:
authorTeodor Sigaev <teodor@sigaev.ru>2015-12-18 21:35:22 +0300
committerTeodor Sigaev <teodor@sigaev.ru>2015-12-18 21:35:22 +0300
commitbbbd807097092c7f292872e7da02eee35d67e54b (patch)
tree754831612e24305dee439214ba0c55089a0847db /src/backend/executor/execQual.c
parent3c7042a7d7871b47dae3c9777c8020e41dedee89 (diff)
downloadpostgresql-bbbd807097092c7f292872e7da02eee35d67e54b.tar.gz
postgresql-bbbd807097092c7f292872e7da02eee35d67e54b.zip
Revert 9246af6799819847faa33baf441251003acbb8fe because
I miss too much. Patch is returned to commitfest process.
Diffstat (limited to 'src/backend/executor/execQual.c')
-rw-r--r--src/backend/executor/execQual.c44
1 files changed, 9 insertions, 35 deletions
diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c
index d9bf9773fe8..29f058ce5cb 100644
--- a/src/backend/executor/execQual.c
+++ b/src/backend/executor/execQual.c
@@ -268,12 +268,10 @@ ExecEvalArrayRef(ArrayRefExprState *astate,
bool eisnull;
ListCell *l;
int i = 0,
- j = 0,
- indexexpr;
+ j = 0;
IntArray upper,
lower;
int *lIndex;
- AnyArrayType *arrays;
array_source = ExecEvalExpr(astate->refexpr,
econtext,
@@ -295,7 +293,6 @@ ExecEvalArrayRef(ArrayRefExprState *astate,
foreach(l, astate->refupperindexpr)
{
ExprState *eltstate = (ExprState *) lfirst(l);
- eisnull = false;
if (i >= MAXDIM)
ereport(ERROR,
@@ -303,23 +300,10 @@ ExecEvalArrayRef(ArrayRefExprState *astate,
errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)",
i + 1, MAXDIM)));
- if (eltstate == NULL && astate->refattrlength <= 0)
- {
- if (isAssignment)
- ereport(ERROR,
- (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
- errmsg("cannot determine upper index for empty array")));
- arrays = (AnyArrayType *)DatumGetArrayTypeP(array_source);
- indexexpr = AARR_LBOUND(arrays)[i] + AARR_DIMS(arrays)[i] - 1;
- }
- else
- indexexpr = DatumGetInt32(ExecEvalExpr(eltstate,
- econtext,
- &eisnull,
- NULL));
-
- upper.indx[i++] = indexexpr;
-
+ upper.indx[i++] = DatumGetInt32(ExecEvalExpr(eltstate,
+ econtext,
+ &eisnull,
+ NULL));
/* If any index expr yields NULL, result is NULL or error */
if (eisnull)
{
@@ -337,7 +321,6 @@ ExecEvalArrayRef(ArrayRefExprState *astate,
foreach(l, astate->reflowerindexpr)
{
ExprState *eltstate = (ExprState *) lfirst(l);
- eisnull = false;
if (j >= MAXDIM)
ereport(ERROR,
@@ -345,19 +328,10 @@ ExecEvalArrayRef(ArrayRefExprState *astate,
errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)",
j + 1, MAXDIM)));
- if (eltstate == NULL)
- {
- arrays = (AnyArrayType *)DatumGetArrayTypeP(array_source);
- indexexpr = AARR_LBOUND(arrays)[j];
- }
- else
- indexexpr = DatumGetInt32(ExecEvalExpr(eltstate,
- econtext,
- &eisnull,
- NULL));
-
- lower.indx[j++] = indexexpr;
-
+ lower.indx[j++] = DatumGetInt32(ExecEvalExpr(eltstate,
+ econtext,
+ &eisnull,
+ NULL));
/* If any index expr yields NULL, result is NULL or error */
if (eisnull)
{