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 1c0fae20.18c7.179abb6ab3c.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

When i use the im_now(float8 default random()) dynamic parameter, it also not work for PG 14 within generated column. 

```

postgres=# drop function im_now(anyelement) ;

DROP FUNCTION

postgres=# drop function im_now ;

DROP FUNCTION

postgres=# drop table t1;

DROP TABLE

postgres=# 

postgres=# create or replace function im_now (float8 default random()) returns timestamptz as $$  

postgres$#   select now();  

postgres$# $$ language sql strict immutable; 

CREATE FUNCTION

postgres=# 

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

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

CREATE TABLE

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

INSERT 0 1

postgres=# 

postgres=# select * from t1; 

 id | c1 | info |          crt_time          |          mod_time          

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

  1 |  1 | test | 2021-05-27 10:43:32.278616 | 2021-05-27 10:43:32.278616

(1 row)


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

UPDATE 1

postgres=# select * from t1;

 id | c1 | info |          crt_time          |          mod_time          

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

  1 |  1 | a    | 2021-05-27 10:43:32.278616 | 2021-05-27 10:43:32.278616

(1 row)


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

UPDATE 1

postgres=# select * from t1;

 id | c1 | info |          crt_time          |          mod_time          

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

  1 |  1 | a    | 2021-05-27 10:43:32.278616 | 2021-05-27 10:43:32.278616

(1 row)


postgres=# select im_now();

            im_now             

-------------------------------

 2021-05-27 10:44:03.749108+08

(1 row)


postgres=# select im_now();

            im_now             

-------------------------------

 2021-05-27 10:44:04.509058+08

(1 row)


postgres=# select im_now();

            im_now             

-------------------------------

 2021-05-27 10:44:06.781393+08

(1 row)

```




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


在 2021-05-27 10:33:40,"David G. Johnston" <david.g.johnston@gmail.com> 写道:

On Wednesday, May 26, 2021, 德哥 <digoal@126.com> wrote:


And immutable function is stable when parameter not change, when parameter changed , the immutable function will recall and recompute.
but in PG 13 and PG 14 , it is also wrong.

```
create or replace function im_now (anyelement) returns timestamptz as $$  
  select now();  
$$ language sql strict immutable; 

create table t1 (id int primary key, c1 int, info text, crt_time timestamp, 
mod_time timestamp GENERATED ALWAYS AS (im_now(t1)) stored); 
 
This seems to be related to this already reported bug (the similar one I noted in my other reply).


David J.

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

Предыдущее
От: "David G. Johnston"
Дата:
Сообщение: Re: BUG #17036: generated column cann't modifyed auto when update
Следующее
От: 德哥
Дата:
Сообщение: Re:Re: BUG #17036: generated column cann't modifyed auto when update