Thread

  1. Show VIRTUAL keyword for virtual generated columns in pg_dump and psql

    Lakshmi N <lakshmin.jhs@gmail.com> — 2026-04-13T08:22:07Z

    Hi,
    
    Adding Peter and Dean based on the recent commit history for generated
    columns.
    
    pg_dump and psql's \d currently display stored and virtual generated
    columns asymmetrically:
    
        s_total integer GENERATED ALWAYS AS ((a + b)) STORED
        v_total integer GENERATED ALWAYS AS ((a + b))
    
    Since VIRTUAL is default most likely this was omitted but with this
    puts the burden on the reader to identify whether it is STORED or
    VIRTUAL since both kinds coexist in v19.
    
    The attached patch adds the VIRTUAL keyword to the output of both
    pg_dump and psql \d, so the display becomes:
    
        s_total integer GENERATED ALWAYS AS ((a + b)) STORED
        v_total integer GENERATED ALWAYS AS ((a + b)) VIRTUAL
    
    The fix is three one-line changes:
    
      - src/bin/pg_dump/pg_dump.c: append " VIRTUAL" instead of bare ")"
      - src/bin/psql/describe.c: same for \d display
      - src/bin/pg_dump/t/002_pg_dump.pl: update TAP test regex
    
    The parser already accepts the VIRTUAL keyword, so pg_dump output
    round-trips correctly (dump -> restore -> \d shows identical schema).
    I verified this with a CTAS + dump + restore cycle.
    
    Regards,
    Lakshmi
    
  2. Re: Show VIRTUAL keyword for virtual generated columns in pg_dump and psql

    David G. Johnston <david.g.johnston@gmail.com> — 2026-04-13T12:27:06Z

    On Monday, April 13, 2026, Lakshmi N <lakshmin.jhs@gmail.com> wrote:
    >
    > pg_dump and psql's \d currently display stored and virtual generated
    > columns asymmetrically:
    >
    
    >
    >     s_total integer GENERATED ALWAYS AS ((a + b)) STORED
    >     v_total integer GENERATED ALWAYS AS ((a + b))
    >
    > Since VIRTUAL is default most likely this was omitted but with this
    >
    puts the burden on the reader to identify whether it is STORED or
    > VIRTUAL since both kinds coexist in v19.
    >
    
    The output follows existing conventions of not printing extraneous text.
    Additionally, storage itself is non-standard so the absence of a modifier
    is producing standard-compliant output.  I would -1 changing pg_dump on
    this basis.  I’d be inclined to go with the symmetry/readability argument
    for psql \d though.
    
    David J.
    
  3. Re: Show VIRTUAL keyword for virtual generated columns in pg_dump and psql

    Lakshmi N <lakshmin.jhs@gmail.com> — 2026-04-13T20:49:12Z

    Hi,
    
    On Mon, Apr 13, 2026 at 5:27 AM David G. Johnston <
    david.g.johnston@gmail.com> wrote:
    
    > On Monday, April 13, 2026, Lakshmi N <lakshmin.jhs@gmail.com> wrote:
    >>
    >> pg_dump and psql's \d currently display stored and virtual generated
    >> columns asymmetrically:
    >>
    >
    >>
    >>     s_total integer GENERATED ALWAYS AS ((a + b)) STORED
    >>     v_total integer GENERATED ALWAYS AS ((a + b))
    >>
    >> Since VIRTUAL is default most likely this was omitted but with this
    >>
    > puts the burden on the reader to identify whether it is STORED or
    >> VIRTUAL since both kinds coexist in v19.
    >>
    >
    > The output follows existing conventions of not printing extraneous text.
    > Additionally, storage itself is non-standard so the absence of a modifier
    > is producing standard-compliant output.  I would -1 changing pg_dump on
    > this basis.  I’d be inclined to go with the symmetry/readability argument
    > for psql \d though.
    >
    
    Thank you for the feedback! Updated the patch for psql \d only.
    
     Regards,
    Lakshmi