OSDN Git Service

Fix toast table creation.
authorRobert Haas <rhaas@postgresql.org>
Thu, 14 Apr 2011 01:07:14 +0000 (18:07 -0700)
committerRobert Haas <rhaas@postgresql.org>
Thu, 14 Apr 2011 01:17:52 +0000 (18:17 -0700)
commit39a68e5c6ca7b41b889e773ca58535324af69630
tree83abdbf0e7496a1ec1addc0f1e09fc6219f3af71
parenteca75a12a27d28b972fc269c1c8813cd8eb15441
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
src/backend/catalog/toasting.c
src/backend/commands/tablecmds.c
src/test/regress/expected/alter_table.out
src/test/regress/input/misc.source
src/test/regress/output/misc.source
src/test/regress/sql/alter_table.sql