Reset relhassubclass upon attaching table as a partition
Alvaro Herrera <alvherre@alvh.no-ip.org>
Reset relhassubclass upon attaching table as a partition We don't allow inheritance parents as partitions, and have checks to prevent this; but if a table _was_ in the past an inheritance parents and all their children are removed, the pg_class.relhassubclass flag may remain set, which confuses the partition pruning code (most obviously, it results in an assertion failure; in production builds it may be worse.) Fix by resetting relhassubclass on attach. Backpatch to all supported versions. Reported-by: Alexander Lakhin <exclusion@gmail.com> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/18550-d5e047e9a897a889@postgresql.org
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/catalog/heap.c | modified | +8 −0 |
| src/test/regress/expected/alter_table.out | modified | +9 −1 |
| src/test/regress/sql/alter_table.sql | modified | +7 −0 |
Discussion
- BUG #18550: Cross-partition update of a former inheritance parent leads to an assertion failure 5 messages · 2024-07-23 → 2024-07-24