Re: TOAST table created for partitioned tables

Amit Langote <amitlangote09@gmail.com>

From: Amit Langote <amitlangote09@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2018-01-17T04:09:52Z
Lists: pgsql-hackers
On Wed, Jan 17, 2018 at 5:32 AM, Robert Haas <robertmhaas@gmail.com> wrote:
> On Tue, Jan 16, 2018 at 5:13 AM, Amit Langote
> <Langote_Amit_f8@lab.ntt.co.jp> wrote:
>> I used to think that $subject didn't happen, but it actually does and ends
>> up consuming a fixed 8192 bytes on the disk.
>>
>> create table p (a int[]) partition by list (a);
>> CREATE TABLE
>>
>> select pg_table_size('p');
>>  pg_table_size
>> ---------------
>>           8192
>> (1 row)
>>
>> select  pg_relation_size(c1.oid) as p_size,
>>         pg_relation_size(c1.reltoastrelid) as p_toast_heap_size,
>>         pg_relation_size(c2.oid) as p_toast_index_size
>> from    pg_class c1, pg_class c2, pg_index i
>> where   c1.relname = 'p' and
>>         c1.reltoastrelid = i.indrelid and
>>         c2.oid = i.indexrelid;
>>  p_size | p_toast_heap_size | p_toast_index_size
>> --------+-------------------+--------------------
>>       0 |                 0 |               8192
>> (1 row)
>
> Aargh.  Will apply this patch break pg_upgrade from v10?

AFAICS, it doesn't.  Partitioned tables that used to have a TOAST
table in v10 cluster will continue to have it after upgrading.
Whereas, any partitioned tables created with the patched won't have a
TOAST table.

Thanks,
Amit


Commits

  1. Avoid creating a TOAST table for a partitioned table.