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