aboutsummaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2018-08-22 08:42:49 +0200
committerPeter Eisentraut <peter_e@gmx.net>2018-08-30 08:20:23 +0200
commita4a232b1e70229a6ba0e592f6775c019bb171d9a (patch)
tree32da1b78844852199c1c620a968b95cf412a8aaf /src/backend
parent4b035841a1bcaadbe4f9e0e174aef773a4fa41f6 (diff)
downloadpostgresql-a4a232b1e70229a6ba0e592f6775c019bb171d9a.tar.gz
postgresql-a4a232b1e70229a6ba0e592f6775c019bb171d9a.zip
Error position support for defaults and check constraints
Add support for error position reporting for the expressions contained in defaults and check constraint definitions. This currently works only for CREATE TABLE, not ALTER TABLE, because the latter is not set up to pass around the original query string. Reviewed-by: Fabien COELHO <coelho@cri.ensmp.fr>
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/catalog/heap.c4
-rw-r--r--src/backend/commands/tablecmds.c9
2 files changed, 8 insertions, 5 deletions
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index ac5a677c5f7..910d3db063f 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -2460,7 +2460,8 @@ AddRelationNewConstraints(Relation rel,
List *newConstraints,
bool allow_merge,
bool is_local,
- bool is_internal)
+ bool is_internal,
+ const char *queryString)
{
List *cookedConstraints = NIL;
TupleDesc tupleDesc;
@@ -2489,6 +2490,7 @@ AddRelationNewConstraints(Relation rel,
* rangetable entry. We need a ParseState for transformExpr.
*/
pstate = make_parsestate(NULL);
+ pstate->p_sourcetext = queryString;
rte = addRangeTableEntryForRelation(pstate,
rel,
NULL,
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 2a12d64aeb7..552ad8c5929 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -985,7 +985,7 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId,
*/
if (rawDefaults || stmt->constraints)
AddRelationNewConstraints(rel, rawDefaults, stmt->constraints,
- true, true, false);
+ true, true, false, queryString);
ObjectAddressSet(address, RelationRelationId, relationId);
@@ -5587,7 +5587,7 @@ ATExecAddColumn(List **wqueue, AlteredTableInfo *tab, Relation rel,
* _list_ of defaults, but we just do one.
*/
AddRelationNewConstraints(rel, list_make1(rawEnt), NIL,
- false, true, false);
+ false, true, false, NULL);
/* Make the additional catalog changes visible */
CommandCounterIncrement();
@@ -6178,7 +6178,7 @@ ATExecColumnDefault(Relation rel, const char *colName,
* _list_ of defaults, but we just do one.
*/
AddRelationNewConstraints(rel, list_make1(rawEnt), NIL,
- false, true, false);
+ false, true, false, NULL);
}
ObjectAddressSubSet(address, RelationRelationId,
@@ -7215,7 +7215,8 @@ ATAddCheckConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel,
list_make1(copyObject(constr)),
recursing | is_readd, /* allow_merge */
!recursing, /* is_local */
- is_readd); /* is_internal */
+ is_readd, /* is_internal */
+ NULL); /* queryString not available here */
/* we don't expect more than one constraint here */
Assert(list_length(newcons) <= 1);