Re: patch submission: truncate trailing nulls from heap rows to reduce the size of the null bitmap [Review]

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: patch submission: truncate trailing nulls from heap rows to reduce the size of the null bitmap [Review]
Дата
Msg-id 13816.1372085393@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: patch submission: truncate trailing nulls from heap rows to reduce the size of the null bitmap [Review]  (Amit Kapila <amit.kapila@huawei.com>)
Ответы Re: patch submission: truncate trailing nulls from heap rows to reduce the size of the null bitmap [Review]  (Simon Riggs <simon@2ndQuadrant.com>)
Re: patch submission: truncate trailing nulls from heap rows to reduce the size of the null bitmap [Review]  (Amit Kapila <amit.kapila@huawei.com>)
Список pgsql-hackers
Amit Kapila <amit.kapila@huawei.com> writes:
> I will summarize the results, and if most of us feel that they are not good
> enough, then we can return this patch.

Aside from the question of whether there's really any generally-useful
performance improvement from this patch, it strikes me that this change
forecloses other games that we might want to play with interpretation of
the value of a tuple's natts.

In particular, when I was visiting Salesforce last week, the point came
up that they'd really like ALTER TABLE ADD COLUMN to be "free" even when
the column had a non-null DEFAULT.  It's not too difficult to imagine
how we might support that, at least when the default expression is a
constant: decree that if the requested attribute number is beyond natts,
look aside at the tuple descriptor to see if the column is marked as
having a magic default value, and if so, substitute that rather than
just returning NULL.  (This has to be a "magic" value separate from
the current default, else a subsequent DROP or SET DEFAULT would do
the wrong thing.)

However, this idea conflicts with an optimization that supposes it can
reduce natts to suppress null columns: if the column was actually stored
as null, you'd lose that information, and would incorrectly return the
magic default on subsequent reads.

I think it might be possible to make both ideas play together, by
not reducing natts further than the last column with a magic default.
However, that means extra complexity in heap_form_tuple, which would
invalidate the performance measurements done in support of this patch.

In short, there's no free lunch ...
        regards, tom lane



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Kevin Grittner
Дата:
Сообщение: Re: changeset generation v5-01 - Patches & git tree
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Re: FILTER for aggregates [was Re: Department of Redundancy Department: makeNode(FuncCall) division]