Re: [HACKERS] How to turn off TOAST on a table/column

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Barry Lind <barry(at)xythos(dot)com>
Cc: pgsql-general(at)postgresql(dot)org, PostgreSQL Development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: [HACKERS] How to turn off TOAST on a table/column
Date: 2001-11-27 20:52:27
Message-ID: 28775.1006894347@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-hackers

Barry Lind <barry(at)xythos(dot)com> writes:
> So how do I create a table without toast enabled?

Unless you want to muck with the backend code, the only way to create
a table that has no toast table attached is to declare columns that
the backend can prove to itself will never add up to more than BLCKSZ
space per tuple. For example, use varchar(n) not text. (If you've got
MULTIBYTE enabled then that doesn't work either, since the n is
measure in characters not bytes.)

However, the mere existence of a toast table doesn't cost anything
(except for some increase of the time for CREATE TABLE). What you
probably really want to do is turn on and off the *use* of the toast
table. Which you can do by mucking with the attstorage attributes of
the table columns. I don't think anyone's gotten round to providing
a nice clean ALTER TABLE interface, but a quick

UPDATE pg_attribute SET attstorage = 'p'
WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'mytable')
AND attnum > 0

would suffice to disable toasting of all columns in 'mytable'.

See src/include/pg_attribute.h for documentation of the allowed values
for attstorage.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Bruce Momjian 2001-11-27 21:01:55 Re: Bug in createlang?
Previous Message Barry Lind 2001-11-27 20:25:04 How to turn off TOAST on a table/column

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2001-11-27 21:01:55 Re: Bug in createlang?
Previous Message Hannu Krosing 2001-11-27 20:48:11 Re: Announcement: I've joined Red Hat