diff options
author | Álvaro Herrera | 2025-03-21 09:55:06 +0000 |
---|---|---|
committer | Álvaro Herrera | 2025-03-21 09:55:06 +0000 |
commit | 1d617a20284f887cb9cdfe5693eec155e8016517 (patch) | |
tree | 08fd172488013d02355a7385c5882397060bcb1d /src/backend/commands | |
parent | ce1a75c4feada55e7435edc5aac4b85afec734e6 (diff) |
Change one loop in ATRewriteTable to use 1-based attnums
All TupleDescAttr() calls in tablecmds.c that aren't in loops across all
attributes use AttrNumber-style indexes (1-based); there was only one
place in ATRewriteTable that was stashing 0-based indexes in a list for
later processing. Switch that to use attnums for consistency.
Author: jian he <[email protected]>
Discussion: https://postgr.es/m/CACJufxEoYA5ScUr2=CmA1xcpaS_1ixneDbEkVU77X1ctGxY2mA@mail.gmail.com
Diffstat (limited to 'src/backend/commands')
-rw-r--r-- | src/backend/commands/tablecmds.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 129c97fdf28..1202544ebd0 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -6189,7 +6189,7 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap) Form_pg_attribute attr = TupleDescAttr(newTupDesc, i); if (attr->attnotnull && !attr->attisdropped) - notnull_attrs = lappend_int(notnull_attrs, i); + notnull_attrs = lappend_int(notnull_attrs, attr->attnum); } if (notnull_attrs) needscan = true; @@ -6370,20 +6370,18 @@ ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap) /* Now check any constraints on the possibly-changed tuple */ econtext->ecxt_scantuple = insertslot; - foreach(l, notnull_attrs) + foreach_int(attn, notnull_attrs) { - int attn = lfirst_int(l); - - if (slot_attisnull(insertslot, attn + 1)) + if (slot_attisnull(insertslot, attn)) { - Form_pg_attribute attr = TupleDescAttr(newTupDesc, attn); + Form_pg_attribute attr = TupleDescAttr(newTupDesc, attn - 1); ereport(ERROR, (errcode(ERRCODE_NOT_NULL_VIOLATION), errmsg("column \"%s\" of relation \"%s\" contains null values", NameStr(attr->attname), RelationGetRelationName(oldrel)), - errtablecol(oldrel, attn + 1))); + errtablecol(oldrel, attn))); } } |