Re: Bug in check constraint?
От | Luiz Gonzaga da Mata |
---|---|
Тема | Re: Bug in check constraint? |
Дата | |
Msg-id | 1219.201.19.109.189.1105912801.squirrel@www.pbh.gov.br обсуждение исходный текст |
Ответ на | Re: Bug in check constraint? (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-bugs |
> 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.
В списке pgsql-bugs по дате отправления: