IntArray.patch
application/octet-stream
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: context
| File | + | − |
|---|---|---|
| src/backend/executor/execQual.c | 10 | 0 |
| src/include/c.h | 0 | 0 |
*** a/src/backend/executor/execQual.c
--- b/src/backend/executor/execQual.c
***************
*** 263,271 **** ExecEvalArrayRef(ArrayRefExprState *astate,
ListCell *l;
int i = 0,
j = 0;
! IntArray upper,
! lower;
! int *lIndex;
array_source = (ArrayType *)
DatumGetPointer(ExecEvalExpr(astate->refexpr,
--- 263,270 ----
ListCell *l;
int i = 0,
j = 0;
! int upper[MAXDIM],
! lower[MAXDIM];
array_source = (ArrayType *)
DatumGetPointer(ExecEvalExpr(astate->refexpr,
***************
*** 295,301 **** ExecEvalArrayRef(ArrayRefExprState *astate,
errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)",
i, MAXDIM)));
! upper.indx[i++] = DatumGetInt32(ExecEvalExpr(eltstate,
econtext,
&eisnull,
NULL));
--- 294,300 ----
errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)",
i, MAXDIM)));
! upper[i++] = DatumGetInt32(ExecEvalExpr(eltstate,
econtext,
&eisnull,
NULL));
***************
*** 323,329 **** ExecEvalArrayRef(ArrayRefExprState *astate,
errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)",
i, MAXDIM)));
! lower.indx[j++] = DatumGetInt32(ExecEvalExpr(eltstate,
econtext,
&eisnull,
NULL));
--- 322,328 ----
errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)",
i, MAXDIM)));
! lower[j++] = DatumGetInt32(ExecEvalExpr(eltstate,
econtext,
&eisnull,
NULL));
***************
*** 341,350 **** ExecEvalArrayRef(ArrayRefExprState *astate,
/* this can't happen unless parser messed up */
if (i != j)
elog(ERROR, "upper and lower index lists are not same length");
- lIndex = lower.indx;
}
- else
- lIndex = NULL;
if (isAssignment)
{
--- 340,346 ----
***************
*** 386,394 **** ExecEvalArrayRef(ArrayRefExprState *astate,
*isNull = false;
}
! if (lIndex == NULL)
resultArray = array_set(array_source, i,
! upper.indx,
sourceData,
eisnull,
astate->refattrlength,
--- 382,390 ----
*isNull = false;
}
! if (j == 0)
resultArray = array_set(array_source, i,
! upper,
sourceData,
eisnull,
astate->refattrlength,
***************
*** 397,403 **** ExecEvalArrayRef(ArrayRefExprState *astate,
astate->refelemalign);
else
resultArray = array_set_slice(array_source, i,
! upper.indx, lower.indx,
(ArrayType *) DatumGetPointer(sourceData),
eisnull,
astate->refattrlength,
--- 393,399 ----
astate->refelemalign);
else
resultArray = array_set_slice(array_source, i,
! upper, lower,
(ArrayType *) DatumGetPointer(sourceData),
eisnull,
astate->refattrlength,
***************
*** 407,414 **** ExecEvalArrayRef(ArrayRefExprState *astate,
return PointerGetDatum(resultArray);
}
! if (lIndex == NULL)
! return array_ref(array_source, i, upper.indx,
astate->refattrlength,
astate->refelemlength,
astate->refelembyval,
--- 403,410 ----
return PointerGetDatum(resultArray);
}
! if (j == 0)
! return array_ref(array_source, i, upper,
astate->refattrlength,
astate->refelemlength,
astate->refelembyval,
***************
*** 417,423 **** ExecEvalArrayRef(ArrayRefExprState *astate,
else
{
resultArray = array_get_slice(array_source, i,
! upper.indx, lower.indx,
astate->refattrlength,
astate->refelemlength,
astate->refelembyval,
--- 413,419 ----
else
{
resultArray = array_get_slice(array_source, i,
! upper, lower,
astate->refattrlength,
astate->refelemlength,
astate->refelembyval,
*** a/src/include/c.h
--- b/src/include/c.h
***************
*** 376,389 **** typedef uint32 CommandId;
#define FirstCommandId ((CommandId) 0)
- /*
- * Array indexing support
- */
#define MAXDIM 6
- typedef struct
- {
- int indx[MAXDIM];
- } IntArray;
/* ----------------
* Variable-length datatypes all share the 'struct varlena' header.
--- 376,382 ----