Re: BUG #16465: Inconsistent results from comparison of row value expressions

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #16465: Inconsistent results from comparison of row value expressions
Дата
Msg-id 5355.1590581815@sss.pgh.pa.us
обсуждение исходный текст
Ответ на BUG #16465: Inconsistent results from comparison of row value expressions  (PG Bug reporting form <noreply@postgresql.org>)
Список pgsql-bugs
PG Bug reporting form <noreply@postgresql.org> writes:
> It seems the comparison of row value expressions with respect to NULLs is
> inconsistent depending on whether the expressions are compared directly
> (first column), or indirectly from derived tables (second column). My
> reading of the SQL standard is that the second one is incorrect.

This is per the documentation [1], which says

    The SQL specification requires row-wise comparison to return NULL if
    the result depends on comparing two NULL values or a NULL and a
    non-NULL. PostgreSQL does this only when comparing the results of two
    row constructors (as in Section 9.23.5) or comparing a row constructor
    to the output of a subquery (as in Section 9.22). In other contexts
    where two composite-type values are compared, two NULL field values
    are considered equal, and a NULL is considered larger than a
    non-NULL. This is necessary in order to have consistent sorting and
    indexing behavior for composite types.

The short answer here is that comparison of two non-null composite type
values cannot be allowed to yield null, or we could not sort or index
them.  That'd be a high price to pay for conforming to a dubious-to-
begin-with spec detail.

            regards, tom lane

[1] https://www.postgresql.org/docs/current/functions-comparisons.html#COMPOSITE-TYPE-COMPARISON



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

Предыдущее
От: Andrey Klychkov
Дата:
Сообщение: Re[4]:
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Re[2]: