Fix toast table creation.
Robert Haas <rhaas@postgresql.org>
Fix toast table creation. Instead of using slightly-too-clever heuristics to decide when we must create a TOAST table, just check whether one is needed every time the table is altered. Checking whether a toast table is needed is cheap enough that we needn't worry about doing it on every ALTER TABLE command, and the previous coding is apparently prone to accidental breakage: commit 04e17bae50a73af524731fa11210d5c3f7d8e1f9 broken ALTER TABLE .. SET STORAGE, which moved some actions from AT_PASS_COL_ATTRS to AT_PASS_MISC, and commit 6c5723998594dffa5d47c3cf8c96ccf89c033aae broke ALTER TABLE .. ADD COLUMN by changing the way that adding columns recurses into child tables. Noah Misch, with one comment change by me
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/catalog/toasting.c | modified | +5 −5 |
| src/backend/commands/tablecmds.c | modified | +2 −8 |
| src/test/regress/expected/alter_table.out | modified | +13 −0 |
| src/test/regress/input/misc.source | modified | +6 −0 |
| src/test/regress/output/misc.source | modified | +11 −0 |
| src/test/regress/sql/alter_table.sql | modified | +10 −0 |