Postgres anteriores a 9.5 - Cuidado com precedência de operadores !

Posted Over 7 years ago. Visible to the public.

No momento em que escrevo (11/10/2016) o postgres já lançou até a versão 9.6

Na versão 9.5 do postgres houve uma correção das precedências dos operadores se adaptando ao SQL standard

Como consequência temos a possibilidade de utilizar a seguinte validação em uma consulta:

WHERE campoA <> campoB IS TRUE

Mas caso você precise trabalhar com versões anteriores do postgres (9.4.X, 9.3.X, 9.2.X, etc) utilizar esta sintaxe lança a seguinte exceção:

argument of IS TRUE must be type boolean, not type numeric

A sintaxe compatível com as versões antigas é a seguinte, explicitando as precedências desejadas:

WHERE (campoA <> campoB) IS TRUE

Portanto cuidado em ficar mal acostumado com as correções de 9.5+ enquanto estiver trabalhando com 9.4-

Fonte: https://www.postgresql.org/docs/9.5/static/release-9-5.html

Bruno Vieira
Last edit
Over 7 years ago
Bruno Vieira
Posted by Bruno Vieira to ZeroGlosa (2016-10-11 20:57)