Re:Re: BUG #17036: generated column cann't modifyed auto when update

Поиск
Список
Период
Сортировка
От 德哥
Тема Re:Re: BUG #17036: generated column cann't modifyed auto when update
Дата
Msg-id 68e07f0f.1179.179ab90ee08.Coremail.digoal@126.com
обсуждение исходный текст
Ответ на Re: BUG #17036: generated column cann't modifyed auto when update  ("David G. Johnston" <david.g.johnston@gmail.com>)
Список pgsql-bugs


But in PostgreSQL 12, it works fine.

```

postgres=> create or replace function im_now () returns timestamptz as $$  

postgres$>   select now();  

postgres$> $$ language sql strict immutable; 

CREATE FUNCTION

postgres=> 

postgres=> create table t1 (id int primary key, info text, crt_time timestamp, 

postgres(> mod_time timestamp GENERATED ALWAYS AS (im_now()) stored); 

CREATE TABLE

postgres=> 

postgres=> insert into t1 (id, info, crt_time) values (1,'test', now());  

INSERT 0 1

postgres=> 

postgres=> select * from t1; 

 id | info |          crt_time          |          mod_time          

----+------+----------------------------+----------------------------

  1 | test | 2021-05-27 10:01:58.361174 | 2021-05-27 10:01:58.361174

(1 row)


postgres=> 

postgres=> update t1 set info='a' where id=1;  

UPDATE 1

postgres=> select * from t1;

 id | info |          crt_time          |          mod_time          

----+------+----------------------------+----------------------------

  1 | a    | 2021-05-27 10:01:58.361174 | 2021-05-27 10:01:58.896861

(1 row)


postgres=> create or replace function im_now () returns timestamptz as $$  

postgres$>   select CURRENT_TIMESTAMP;  

postgres$> $$ language sql strict immutable;  

CREATE FUNCTION

postgres=> update t1 set info='a' where id=1; 

UPDATE 1

postgres=> select * from t1;                                                                                                                                                                               id | info |          crt_time          |          mod_time          

----+------+----------------------------+----------------------------

  1 | a    | 2021-05-27 10:01:58.361174 | 2021-05-27 10:02:24.134303

(1 row)


postgres=> update t1 set info='a' where id=1;

UPDATE 1

postgres=> select * from t1;

 id | info |          crt_time          |          mod_time          

----+------+----------------------------+----------------------------

  1 | a    | 2021-05-27 10:01:58.361174 | 2021-05-27 10:02:34.164966

(1 row)


postgres=> update t1 set info='a' where id=1;

UPDATE 1

postgres=> select * from t1;

 id | info |          crt_time          |          mod_time          

----+------+----------------------------+----------------------------

  1 | a    | 2021-05-27 10:01:58.361174 | 2021-05-27 10:02:37.535282

(1 row)


postgres=> create or replace function im_now () returns timestamptz as $$                                                                                                                                   select now();                                                                                                                                                                                           $$ language sql strict immutable;

CREATE FUNCTION

postgres=> update t1 set info='a' where id=1;                                                                                                                                                             UPDATE 1

postgres=> select * from t1;                                                                                                                                                                               id | info |          crt_time          |          mod_time          

----+------+----------------------------+----------------------------

  1 | a    | 2021-05-27 10:01:58.361174 | 2021-05-27 10:03:02.665515

(1 row)


postgres=> update t1 set info='a' where id=1;

UPDATE 1

postgres=> select * from t1;

 id | info |          crt_time          |          mod_time          

----+------+----------------------------+----------------------------

  1 | a    | 2021-05-27 10:01:58.361174 | 2021-05-27 10:03:05.414793

(1 row)

```



--公益是一辈子的事,I'm Digoal,Just Do It.


在 2021-05-26 20:25:00,"David G. Johnston" <david.g.johnston@gmail.com> 写道:

On Wednesday, May 26, 2021, PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the website:

Bug reference:      17036
Logged by:          Zhou Digoal
Email address:      digoal@126.com
PostgreSQL version: 14beta1
Operating system:   CentOS 7.7 x64
Description:       

postgres=> create or replace function im_now () returns timestamptz as $$   

                                                  select CURRENT_TIMESTAMP;


                   $$ language sql strict immutable;
CREATE FUNCTION

why mod_time cann't updated automatic?


Because that isn’t how this thing works...the lie you told it about being immutable is a dead giveaway,

David J.
 

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #17037: ST_Azimuth used with geography produces results not in accordance with documentation
Следующее
От: 德哥
Дата:
Сообщение: Re:Re: BUG #17036: generated column cann't modifyed auto when update