BUG #16150: UPDATE set NULL value in non-null columns

Поиск
Список
Период
Сортировка
От PG Bug reporting form
Тема BUG #16150: UPDATE set NULL value in non-null columns
Дата
Msg-id 16150-dc6886080d71e985@postgresql.org
обсуждение исходный текст
Ответы Re: BUG #16150: UPDATE set NULL value in non-null columns  (Mahendra Singh <mahi6run@gmail.com>)
Re: BUG #16150: UPDATE set NULL value in non-null columns  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
The following bug has been logged on the website:

Bug reference:      16150
Logged by:          Maxim Votyakov
Email address:      maximaximax@gmail.com
PostgreSQL version: 12.0
Operating system:   Windows
Description:

Hi guys

Today I found a big problem, I can write a valid UPDATE which put NULL value
in non-null column.

Let's create a domain, two tables and insert 1 row into them:

create domain d_text_not_null as text default '' not null;

create table person (name d_text_not_null);
create table town (name d_text_not_null);

insert into person(name) values ('test');
insert into town(name) values ('test2');

select * from person; -- 1 row with value test  

Now let's try to update person name to null. It failed and it is correct:

update person set name = null; -- SQL Error [23502]: ERROR: domain
d_text_not_null does not allow null values

But now let's try to update person name to with sub-query. It updates a row
without any problem:

update person set name = (select name from town where name = 'wrong'); -- 1
row updated

Let's check data and see the result:

select * from person; -- 1 row with value NULL in non-null column !!!

I think it is very dangerous and important bug and it has to be fixed to not
damage data in databases - if I backup/restore such tables they become
empty.


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

Предыдущее
От: Petr Fedorov
Дата:
Сообщение: A row-level trigger on a partitioned table is not created on asub-partition created later
Следующее
От: PG Bug reporting form
Дата:
Сообщение: BUG #16151: startup timing problem