aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/catalog/heap.c4
-rw-r--r--src/backend/commands/tablecmds.c9
-rw-r--r--src/include/catalog/heap.h3
-rw-r--r--src/test/regress/output/constraints.source2
4 files changed, 12 insertions, 6 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);
diff --git a/src/include/catalog/heap.h b/src/include/catalog/heap.h
index c5e40ff017d..b3e8fdd9c60 100644
--- a/src/include/catalog/heap.h
+++ b/src/include/catalog/heap.h
@@ -102,7 +102,8 @@ extern List *AddRelationNewConstraints(Relation rel,
List *newConstraints,
bool allow_merge,
bool is_local,
- bool is_internal);
+ bool is_internal,
+ const char *queryString);
extern void RelationClearMissing(Relation rel);
extern void SetAttrMissing(Oid relid, char *attname, char *value);
diff --git a/src/test/regress/output/constraints.source b/src/test/regress/output/constraints.source
index a6a1df18e73..e8389064b0a 100644
--- a/src/test/regress/output/constraints.source
+++ b/src/test/regress/output/constraints.source
@@ -228,6 +228,8 @@ CREATE TABLE SYS_COL_CHECK_TBL (city text, state text, is_capital bool,
altitude int,
CHECK (NOT (is_capital AND ctid::text = 'sys_col_check_tbl')));
ERROR: system column "ctid" reference in check constraint is invalid
+LINE 3: CHECK (NOT (is_capital AND ctid::text = 'sys_col_check...
+ ^
--
-- Check inheritance of defaults and constraints
--