FYI,
during the day I committed a couple of changes to TOAST.
- Secondary relations for the toaster (to move off values) are now automatically created during CREATE
TABLE, ALTER TABLE ... ADD COLUMN and SELECT ... INTO, whenever the first toastable attribute appears in
thetable schema.
- The TOAST tables are now of kind RELKIND_TOASTVALUE.
- TOAST tables cannot be vacuumed separately. They are allways vacuumend if their master table is,
whileVACUUM still holds the lock on the master table.
- VACUUM doesn't propagate ANALYZE to TOAST tables. Statistics for them are needless because the
toastaccess is allways hardcoded indexed.
- TOAST tables are protected against manual INSERT, UPDATE and DELETE operations. SELECT is still
possiblefor debugging purposes. The name of the TOAST table is pg_toast_<oid-of-master>.
- The chunk_data attribute has been changed to type bytea.
For now, "lztext" is the only test candidate datatype to invoke the toaster. It can hold up to
multi-megabytesnow. But be warned, this datatype will disappear as soon as "text" is toastable.
Next I'll make pg_dump TOAST-safe. Will only take a couple of minutes I think.
Toast tables aren't automatically created for system catalogs. Thus I'll add
ALTER TABLE pg_rewrite CREATE TOAST TABLE
to initdb. So we'll get unlimited view complexity for free. As soon as arrays are toastable, we might want
to add pg_class because of relacl too.
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== JanWieck@Yahoo.com #