postgres.git / summary / log / commit / refs
commit d2f58c42a2613cc65cddd7a223f85b6bfc0093fb
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Thu Apr 23 18:05:27 2026 +0000
First released in: 14.23, 15.18, 16.14, 17.10, 18.4
Don't call CheckAttributeType() with InvalidOid on dropped cols
If CheckAttributeType() is called with InvalidOid, it performs a bunch
of pointless, futile syscache lookups with InvalidOid, but ultimately
tolerates it and has no effect. We were calling it with InvalidOid on
dropped columns, but it seems accidental that it works, so let's stop
doing it.
Reviewed-by: Chao Li <li.evan.chao@gmail.com>
Discussion: https://www.postgresql.org/message-id/93ce56cd-02a6-4db1-8224-c8999372facc@iki.fi
Backpatch-through: 14
src/backend/catalog/heap.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index b8643efee91..5404eee0019 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -550,9 +550,13 @@ CheckAttributeNamesTypes(TupleDesc tupdesc, char relkind,
*/
for (i = 0; i < natts; i++)
{
- CheckAttributeType(NameStr(TupleDescAttr(tupdesc, i)->attname),
- TupleDescAttr(tupdesc, i)->atttypid,
- TupleDescAttr(tupdesc, i)->attcollation,
+ Form_pg_attribute attr = TupleDescAttr(tupdesc, i);
+
+ if (attr->attisdropped)
+ continue;
+ CheckAttributeType(NameStr(attr->attname),
+ attr->atttypid,
+ attr->attcollation,
NIL, /* assume we're creating a new rowtype */
flags);
}
[parent: c7a1d5fc6513]