Re: Performance optimization of btree binary search

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Performance optimization of btree binary search
Дата
Msg-id 13674.1386251935@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Performance optimization of btree binary search  (Andres Freund <andres@2ndquadrant.com>)
Ответы Re: Performance optimization of btree binary search
Список pgsql-hackers
Andres Freund <andres@2ndquadrant.com> writes:
> On 2013-12-04 18:48:44 -0500, Robert Haas wrote:
>> And record_image_eq does a rather elaborate dance around here, calling
>> the appropriate GET_x_BYTES macro depending on the type-width.  If we
>> can really count on the high-order bits to be zero, that's all
>> completely unnecessary tomfoolery.

> I don't think we can get rid of that dance in record_image_eq - it very
> well could used on records originally generated when those bits haven't
> been guaranteed to be zeroed.

No, you're failing to think about the context here.  A Datum is not an
on-disk concept, only an in-memory one.  In the case of record_image_eq,
simplifying the comparison of by-value Datums is unconditionally safe
as long as heap_deform_tuple is consistent about using the proper
GetDatum macros, which it is.  (So actually, that "elaborate dance"
is a 100% waste of effort today, regardless of any changes we're
discussing here.)

The risk we take by simplifying comparisons in a more general context
is that some function somewhere might've been sloppy about doing a
native-type-to-Datum conversion on its result.  In the case of V0
functions that risk is unavoidable except by adding some explicit cleanup
code, but I'm a bit worried that somebody, particularly third-party code,
might've sloppily written "return foo" in a V1 function when "return
Int32GetDatum(foo)" would be correct.  In that case, the resultant Datum
might have not-per-spec high-order bits, and if it reaches the fast
comparator without ever having been squeezed into a physical tuple,
we've got a problem.

I would certainly regard this as a bug in that function, but nonetheless
it's a hazard that we need to set against any performance improvement
that we can buy this way.
        regards, tom lane



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

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: Re: same-address mappings vs. relative pointers
Следующее
От: Andres Freund
Дата:
Сообщение: Re: same-address mappings vs. relative pointers