IS NULL と = NULL の挙動の違いはよく言われるけど、IS TRUE と = TRUE の違いも注意が必要。
$ psql83
Welcome to psql83 8.3.1, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
juno=# SELECT TRUE = TRUE;
?column?
----------
t
(1 row)
juno=# SELECT NULL = TRUE;
?column?
----------
(1 row)
juno=# SELECT TRUE IS TRUE;
?column?
----------
t
(1 row)
juno=# SELECT NULL IS TRUE;
?column?
----------
f
(1 row)




