Considerando que o PostgreSQL não oferece garantias quanto à ordem em que os operandos são avaliados, essa expressão poderia retornar UNKNOWN se a última condição fosse avaliada antes da do meio?
"TradeOffer".status = 'Pending' AND
"TradeOffer".expiration_date IS NOT NULL AND
CURRENT_TIMESTAMP > "TradeOffer".expiration_date
Não, porque
select false and null;
retornafalse
.Ou, no
where
,select 1 where false and null;
não retorna nada (a condição where ainda é falsa)Você pode reescrever sua consulta para torná-la determinística novamente, mas isso só produziria uma varredura completa da tabela.
violino
Outra solução que usa varredura de índice de heap
violino