Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita4a232b

Browse files
committed
Error position support for defaults and check constraints
Add support for error position reporting for the expressions containedin defaults and check constraint definitions. This currently works onlyfor CREATE TABLE, not ALTER TABLE, because the latter is not set up topass around the original query string.Reviewed-by: Fabien COELHO <coelho@cri.ensmp.fr>
1 parent4b03584 commita4a232b

File tree

4 files changed

+12
-6
lines changed

4 files changed

+12
-6
lines changed

‎src/backend/catalog/heap.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2460,7 +2460,8 @@ AddRelationNewConstraints(Relation rel,
24602460
List*newConstraints,
24612461
boolallow_merge,
24622462
boolis_local,
2463-
boolis_internal)
2463+
boolis_internal,
2464+
constchar*queryString)
24642465
{
24652466
List*cookedConstraints=NIL;
24662467
TupleDesctupleDesc;
@@ -2489,6 +2490,7 @@ AddRelationNewConstraints(Relation rel,
24892490
* rangetable entry. We need a ParseState for transformExpr.
24902491
*/
24912492
pstate=make_parsestate(NULL);
2493+
pstate->p_sourcetext=queryString;
24922494
rte=addRangeTableEntryForRelation(pstate,
24932495
rel,
24942496
NULL,

‎src/backend/commands/tablecmds.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -985,7 +985,7 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId,
985985
*/
986986
if (rawDefaults||stmt->constraints)
987987
AddRelationNewConstraints(rel,rawDefaults,stmt->constraints,
988-
true, true, false);
988+
true, true, false,queryString);
989989

990990
ObjectAddressSet(address,RelationRelationId,relationId);
991991

@@ -5587,7 +5587,7 @@ ATExecAddColumn(List **wqueue, AlteredTableInfo *tab, Relation rel,
55875587
* _list_ of defaults, but we just do one.
55885588
*/
55895589
AddRelationNewConstraints(rel,list_make1(rawEnt),NIL,
5590-
false, true, false);
5590+
false, true, false,NULL);
55915591

55925592
/* Make the additional catalog changes visible */
55935593
CommandCounterIncrement();
@@ -6178,7 +6178,7 @@ ATExecColumnDefault(Relation rel, const char *colName,
61786178
* _list_ of defaults, but we just do one.
61796179
*/
61806180
AddRelationNewConstraints(rel,list_make1(rawEnt),NIL,
6181-
false, true, false);
6181+
false, true, false,NULL);
61826182
}
61836183

61846184
ObjectAddressSubSet(address,RelationRelationId,
@@ -7215,7 +7215,8 @@ ATAddCheckConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel,
72157215
list_make1(copyObject(constr)),
72167216
recursing |is_readd,/* allow_merge */
72177217
!recursing,/* is_local */
7218-
is_readd);/* is_internal */
7218+
is_readd,/* is_internal */
7219+
NULL);/* queryString not available here */
72197220

72207221
/* we don't expect more than one constraint here */
72217222
Assert(list_length(newcons) <=1);

‎src/include/catalog/heap.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,8 @@ extern List *AddRelationNewConstraints(Relation rel,
102102
List*newConstraints,
103103
boolallow_merge,
104104
boolis_local,
105-
boolis_internal);
105+
boolis_internal,
106+
constchar*queryString);
106107

107108
externvoidRelationClearMissing(Relationrel);
108109
externvoidSetAttrMissing(Oidrelid,char*attname,char*value);

‎src/test/regress/output/constraints.source

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,8 @@ CREATE TABLE SYS_COL_CHECK_TBL (city text, state text, is_capital bool,
228228
altitude int,
229229
CHECK (NOT (is_capital AND ctid::text = 'sys_col_check_tbl')));
230230
ERROR: system column "ctid" reference in check constraint is invalid
231+
LINE 3: CHECK (NOT (is_capital AND ctid::text = 'sys_col_check...
232+
^
231233
--
232234
-- Check inheritance of defaults and constraints
233235
--

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp