mirror of
https://github.com/postgres/postgres.git
synced 2025-06-27 23:21:58 +03:00
Provide an error cursor for "can't subscript" error messages.
Commit c7aba7c14
didn't add this, but after more fooling with the
feature I feel that it'd be useful. To make this possible, refactor
getSubscriptingRoutines() so that the caller is responsible for
throwing any error. (In clauses.c, I just chose to make the
most conservative assumption rather than throwing an error. We don't
expect failures there anyway really, so the code space for an error
message would be a poor investment.)
This commit is contained in:
@ -2536,6 +2536,14 @@ ExecInitSubscriptingRef(ExprEvalStep *scratch, SubscriptingRef *sbsref,
|
||||
|
||||
/* Look up the subscripting support methods */
|
||||
sbsroutines = getSubscriptingRoutines(sbsref->refcontainertype, NULL);
|
||||
if (!sbsroutines)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_DATATYPE_MISMATCH),
|
||||
errmsg("cannot subscript type %s because it does not support subscripting",
|
||||
format_type_be(sbsref->refcontainertype)),
|
||||
state->parent ?
|
||||
executor_errposition(state->parent->state,
|
||||
exprLocation((Node *) sbsref)) : 0));
|
||||
|
||||
/* Allocate sbsrefstate, with enough space for per-subscript arrays too */
|
||||
sbsrefstate = palloc0(MAXALIGN(sizeof(SubscriptingRefState)) +
|
||||
|
Reference in New Issue
Block a user