mirror of
https://github.com/postgres/postgres.git
synced 2025-06-30 21:42:05 +03:00
Add location field to DefElem
Add a location field to the DefElem struct, used to parse many utility commands. Update various error messages to supply error position information. To propogate the error position information in a more systematic way, create a ParseState in standard_ProcessUtility() and pass that to interested functions implementing the utility commands. This seems better than passing the query string and then reassembling a parse state ad hoc, which violates the encapsulation of the ParseState type. Reviewed-by: Pavel Stehule <pavel.stehule@gmail.com>
This commit is contained in:
@ -140,7 +140,7 @@ static void escape_yaml(StringInfo buf, const char *str);
|
||||
* execute an EXPLAIN command
|
||||
*/
|
||||
void
|
||||
ExplainQuery(ExplainStmt *stmt, const char *queryString,
|
||||
ExplainQuery(ParseState *pstate, ExplainStmt *stmt, const char *queryString,
|
||||
ParamListInfo params, DestReceiver *dest)
|
||||
{
|
||||
ExplainState *es = NewExplainState();
|
||||
@ -183,13 +183,15 @@ ExplainQuery(ExplainStmt *stmt, const char *queryString,
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
|
||||
errmsg("unrecognized value for EXPLAIN option \"%s\": \"%s\"",
|
||||
opt->defname, p)));
|
||||
opt->defname, p),
|
||||
parser_errposition(pstate, opt->location)));
|
||||
}
|
||||
else
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_SYNTAX_ERROR),
|
||||
errmsg("unrecognized EXPLAIN option \"%s\"",
|
||||
opt->defname)));
|
||||
opt->defname),
|
||||
parser_errposition(pstate, opt->location)));
|
||||
}
|
||||
|
||||
if (es->buffers && !es->analyze)
|
||||
|
Reference in New Issue
Block a user