Re: Is this a buggy behavior?

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: Is this a buggy behavior?
Дата
Msg-id 582a40a4-ac92-4247-8cea-bae9f2da5c73@aklaver.com
обсуждение исходный текст
Ответ на Re: Is this a buggy behavior?  (Thiemo Kellner <thiemo@gelassene-pferde.biz>)
Ответы Re: Is this a buggy behavior?
Список pgsql-general
On 3/24/24 08:28, Thiemo Kellner wrote:
> 
> Am 24.03.2024 um 16:17 schrieb Tom Lane:
> 
>> To do that, we'd have to remember that you'd said NULL, which we
>> don't: the word is just discarded as a noise clause.  Considering
>> that this usage of NULL isn't even permitted by the SQL standard,
>> that seems like a bit too much work.
> 
> If I understood correctly, only the NOT NULL expression gets remembered, 
> but the NULL gets discarded. No, I do not quite get it. Somehow, it has 
> to be decided whether to create a "check constraint" or not, but this 
> information is not available any more when creating the primary key? Not 
> even in some kind of intermediary catalogue?
> 
> "Considering that this usage of NULL isn't even permitted by the SQL 
> standard" is in my opinion a strange argument. To me, it is similar as 
> to say, well a column has a not null constraint and that must be enough, 
> we do not check whether the data complies when inserting or updating. 
> Sure, my example has lots more side effect than silently do the right 
> thing.

That is sort of the point the OPs example was for a CREATE TABLE and 
hence had no data. The OP also wanted a PK and per:

https://www.postgresql.org/docs/current/sql-createtable.html

"PRIMARY KEY enforces the same data constraints as a combination of 
UNIQUE and NOT NULL. "

they got a compound PK with the specified constraints.

If they had being doing a ALTER TABLE to add a PK over the columns after 
null values where added they result would be different:

CREATE TABLE test1
(
c1 varchar(36)   NULL ,
c2 varchar(36)  NOT NULL
) ;

insert into test1 values (null, 'test');

alter table test1 add constraint test_pk PRIMARY KEY(c1,c2);
ERROR:  column "c1" of relation "test1" contains null values

> 
> Please do not get me wrong. I can totally understand that something 
> needs to much work to implement. I am just puzzled.
> 
> 

-- 
Adrian Klaver
adrian.klaver@aklaver.com




В списке pgsql-general по дате отправления:

Предыдущее
От: Erik Wienhold
Дата:
Сообщение: Re: Is this a buggy behavior?
Следующее
От: Christophe Pettus
Дата:
Сообщение: Re: Is this a buggy behavior?