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

From: 德哥 <digoal(at)126(dot)com>
To: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
Cc: "pgsql-bugs(at)lists(dot)postgresql(dot)org" <pgsql-bugs(at)lists(dot)postgresql(dot)org>
Subject: Re:Re: BUG #17036: generated column cann't modifyed auto when update
Date: 2021-05-27 09:21:34
Message-ID: d89a6f8.4d3a.179ad210afa.Coremail.digoal@126.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

HI,

Using trigger is a good suggestion, we'll use trigger next, but I want to talk about whether this phenomenon is abnormal.
If the value of the immutable function changes, the immutable function should be recalculated.
For example, I have already demonstrated this:
` ` `
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
` ` `
2. How to explain this phenomenon? It doesn't seem to have been re-implemented! OK, I believe this is a bug. In addition to limiting the generated column expression to be immutable itself, we should also restrict the default value of the parameter to the function to be immutable.

best regards,
digoal

--

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

在 2021-05-27 11:16:10,"David G. Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> 写道:

On Wednesday, May 26, 2021, 德哥 <digoal(at)126(dot)com> wrote:

The generated column can be used to automatically generate the modified timestamp of a tuple, but PG 12 currently supports this scenario. PG 13 has started to change its behavior, which makes our application need to be modified. This is the first time I have ever seen a PG upgrade kill a nice feature.

It was never a feature in the first place so nothing has been killed. The documentation says the function must be immutable. Your function is not. You should have used a trigger, and the fact you had to write a wrapper function to hack the volatility means that, frankly, its your disregard for a known limitation that has produced this need to change your application with the release of a new major version - not any bug or decision on the part of PostgreSQL.

David J.

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message 德哥 2021-05-27 09:24:44 Re:Re: BUG #17036: generated column cann't modifyed auto when update
Previous Message okano.naoki@fujitsu.com 2021-05-27 09:09:52 CR is not removed with psql -f command on Windows.