> transform_null_equals only catches the exact syntax "something = NULL". It
> does not touch "something <> NULL". The latter is always going to yield
> NULL, by definition.
Yes, I saw this in parser_expr.c and the documentation.
1)In code "dtpagto IS NULL" is not the same thing that !(dtpagto IS NULL),
or either, a condition bolean.
2) if "dtpagto <> NULL" is not a valid codification and not checked, he
would not be correct that a message of error while creating constraint.
The fact not to occur the error message, can delude the programmer of the
SGBD with in sample of test.
CONSTRAINT ttt CHECK (valorpg > 0::numeric AND dtpagto <> NULL::date OR
valorpg = 0::numeric AND dtpagto IS NULL)
) WITH OIDS;
ALTER TABLE cntpagit1 OWNER postgres;
-- Result of sql.
insert into cntpagit1 values(1, NULL);
Query returned successfully: one row 20545 with OID inserted, 70 ms
execution times.
insert into cntpagit1 values(0, '20050115 ');
ERROR: new row will be relation "cntpagit1" violates check constraint "ttt"
regards,
Luiz Gonzaga da Mata.
Brasil.