From: | yamt(at)mwd(dot)biglobe(dot)ne(dot)jp (YAMAMOTO Takashi) |
---|---|
To: | tgl(at)sss(dot)pgh(dot)pa(dot)us |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: reduce null bitmap size |
Date: | 2011-11-11 09:26:53 |
Message-ID: | 20111111092654.15F4914A2AD@mail.netbsd.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
hi,
> yamt(at)mwd(dot)biglobe(dot)ne(dot)jp (YAMAMOTO Takashi) writes:
>> how about making heap_form_tuple and its variants use smaller natts for
>> tuples whose trailing columns are NULL?
>
> This idea has been proposed before, and rejected on the basis that it's
> unlikely to save enough to be worth the cycles needed to check for the
> case. Keep in mind that you aren't going to save anything at all unless
> the bitmap length decreases across a MAXALIGN boundary.
but it also means that, if one-bit descrease happens to cross the boundary,
you can save a MAXALIGN, right?
btw, while playing with this, i noticed that pg_column_size+rowtype+aggregate
produces unstable results. i guess it's because when nodeAgg handles
grp_firstTuple, the tuple is converted to a short varlena. i don't know
if it can be a real problem than just a weird looking.
YAMAMOTO Takashi
test=# create table t (i int);
CREATE TABLE
test=# insert into t values (1),(2),(3);
INSERT 0 3
test=# select pg_column_size(t.*) from t;
pg_column_size
----------------
28
28
28
(3 rows)
test=# select string_agg(pg_column_size(t.*)::text,',') from t;
string_agg
------------
25,28,28
(1 row)
test=#
>
> regards, tom lane
>
> --
> Sent via pgsql-hackers mailing list (pgsql-hackers(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers
From | Date | Subject | |
---|---|---|---|
Next Message | Heikki Linnakangas | 2011-11-11 09:29:30 | Re: Allow substitute allocators for PGresult. |
Previous Message | Kyotaro HORIGUCHI | 2011-11-11 09:18:43 | Allow substitute allocators for PGresult. |