Re: generated columns

From: Daniel Gustafsson <daniel(at)yesql(dot)se>
To: Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>
Cc: Jaime Casanova <jaime(dot)casanova(at)2ndquadrant(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: generated columns
Date: 2017-10-02 11:51:55
Message-ID: FF486006-CA9E-47BA-BD0D-49FEC8EC1D69@yesql.se
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> On 12 Sep 2017, at 21:35, Jaime Casanova <jaime(dot)casanova(at)2ndquadrant(dot)com> wrote:
>
> On 10 September 2017 at 00:08, Jaime Casanova
> <jaime(dot)casanova(at)2ndquadrant(dot)com> wrote:
>>
>> During my own tests, though, i found some problems:
>
> a few more tests:
>
> create table t1 (
> id serial,
> height_cm int,
> height_in int generated always as (height_cm * 10)
> ) ;
>
>
> """
> postgres=# alter table t1 alter height_cm type numeric;
> ERROR: unexpected object depending on column: table t1 column height_in
> """
> should i drop the column and recreate it after the fact? this seems
> more annoying than the same problem with views (drop view & recreate),
> specially after you implement STORED
>
>
> """
> postgres=# alter table t1 alter height_in type numeric;
> ERROR: found unexpected dependency type 'a'
> """
> uh!?
>
>
> also is interesting that in triggers, both before and after, the
> column has a null. that seems reasonable in a before trigger but not
> in an after trigger
> """
> create function f_trg1() returns trigger as $$
> begin
> raise notice '%', new.height_in;
> return new;
> end
> $$ language plpgsql;
>
> create trigger trg1 before insert on t1
> for each row execute procedure f_trg1();
>
> postgres=# insert into t1 values(default, 100);
> NOTICE: <NULL>
> INSERT 0 1
>
> create trigger trg2 after insert on t1
> for each row execute procedure f_trg1();
>
> postgres=# insert into t1 values(default, 100);
> NOTICE: <NULL>
> NOTICE: <NULL>
> INSERT 0 1
> """
>
> the default value shouldn't be dropped.
> """
> postgres=# alter table t1 alter height_in drop default;
> ALTER TABLE
> postgres=# \d t1
> Table "public.t1"
> Column | Type | Collation | Nullable | Default
> ----------------+---------+-----------+----------+--------------------------------
> id | integer | | not null |
> nextval('t1_id_seq'::regclass)
> height_cm | integer | | |
> height_in | integer | | | generated always as ()
> “""

Based on this review, and the errors noted in upthread in the previous review,
I’m marking this Returned with feedback. When an updated version of the patch
is ready, please re-submit it to an upcoming commitfest.

cheers ./daniel

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2017-10-02 11:58:16 Re: path toward faster partition pruning
Previous Message Daniel Gustafsson 2017-10-02 10:49:58 Re: Support to COMMENT ON DATABASE CURRENT_DATABASE