Re: [HACKERS] generated columns - Mailing list pgsql-hackers

From Erikjan Rijkers
Subject Re: [HACKERS] generated columns
Date
Msg-id 728602640f3ad29c5a355b9ff50377b7@xs4all.nl
Whole thread Raw
In response to Re: [HACKERS] generated columns  (Sergei Kornilov <sk@zsrv.org>)
Responses Re: [HACKERS] generated columns  (Simon Riggs <simon@2ndquadrant.com>)
Re: [HACKERS] generated columns  (Peter Eisentraut <peter.eisentraut@2ndquadrant.com>)
List pgsql-hackers
On 2018-10-30 16:14, Sergei Kornilov wrote:
> Hi
> 
> I applied this patch on top 2fe42baf7c1ad96b5f9eb898161e258315298351
> commit and found a bug while adding STORED column:
> 
> postgres=# create table test(i int);
> CREATE TABLE
> postgres=# insert into test values (1),(2);
> INSERT 0 2
> postgres=# alter table test add column gen_stored integer GENERATED
> ALWAYS AS ((i * 2)) STORED;
> ALTER TABLE
> postgres=# alter table test add column gen_virt integer GENERATED
> ALWAYS AS ((i * 2));
> ALTER TABLE
> postgres=# table test;
>  i | gen_stored | gen_virt
> ---+------------+----------
>  1 |            |        2
>  2 |            |        4
> 
> Virtual columns was calculated on table read and its ok, but stored
> column does not update table data.

This workaround is possible:

update test set i = i where gen_stored is null returning *;
  i | gen_stored | gen_virt
---+------------+----------
  1 |          2 |        2
  2 |          4 |        4
(2 rows)

table test ;
  i | gen_stored | gen_virt
---+------------+----------
  3 |          6 |        6
  4 |          8 |        8
  1 |          2 |        2
  2 |          4 |        4
(4 rows)


Hm, well, I suppose it's still a bug...


I have also noticed that logical replication isn't possible on tables 
with a generated column.  That's a shame but I suppsoe that is as 
expected.


Erik Rijkers

> 
> regards, Sergei


pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: syntax error: VACUUM ANALYZE VERBOSE (PostgreSQL 11 regression)
Next
From: Michael Paquier
Date:
Subject: Re: ToDo: show size of partitioned table