pg.ddx.io  pgsql-bugs@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: 德哥 <digoal@126.com>
To: David G. Johnston <david.g.johnston@gmail.com>
Cc: pgsql-bugs@lists.postgresql.org <pgsql-bugs@lists.postgresql.org>
Subject: Re:Re: BUG #17036: generated column cann't modifyed auto when update
Date: Thu, 27 May 2021 10:45:45 +0800 (CST)
Message-ID: <1c0fae20.18c7.179abb6ab3c.Coremail.digoal@126.com> (raw)
In-Reply-To: <CAKFQuwbkoz3zmL_bEC2ndSX5G9_3xm_+AL2fd+3OTFFH0VePow@mail.gmail.com>
References: <17036-e4d41f4221873a17@postgresql.org>
	<CAKFQuwarr8b2=2j2J4GuSV-FwqAXq38ebFR_wTUY=Lg9_YLCJg@mail.gmail.com>
	<23824c32.12e8.179ab97fa8a.Coremail.digoal@126.com>
	<CAKFQuwbkoz3zmL_bEC2ndSX5G9_3xm_+AL2fd+3OTFFH0VePow@mail.gmail.com>



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).


https://www.postgresql.org/message-id/CAM_DEiWR2DPT6U4xb-Ehigozzd3n3G37ZB1%2B867zbsEVtYoJww%40mail.g...



David J.

view thread (15+ messages)  latest in thread

Message-ID: <1c0fae20.18c7.179abb6ab3c.Coremail.digoal@126.com>
Permalink:  ../1c0fae20.18c7.179abb6ab3c.Coremail.digoal@126.com/
Also on:    postgresql.org/message-id/1c0fae20.18c7.179abb6ab3c.Coremail.digoal@126.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-bugs@postgresql.org
  Cc: digoal@126.com, david.g.johnston@gmail.com, pgsql-bugs@lists.postgresql.org
  Subject: Re:Re: BUG #17036: generated column cann't modifyed auto when update
  In-Reply-To: <1c0fae20.18c7.179abb6ab3c.Coremail.digoal@126.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox