summaryrefslogtreecommitdiff
path: root/src/backend/commands
diff options
context:
space:
mode:
authorÁlvaro Herrera2025-03-21 09:55:06 +0000
committerÁlvaro Herrera2025-03-21 09:55:06 +0000
commit1d617a20284f887cb9cdfe5693eec155e8016517 (patch)
tree08fd172488013d02355a7385c5882397060bcb1d /src/backend/commands
parentce1a75c4feada55e7435edc5aac4b85afec734e6 (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.c12
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)));
}
}