Virtual generated columns

From: Peter Eisentraut <peter(at)eisentraut(dot)org>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Virtual generated columns
Date: 2024-04-29 08:23:53
Message-ID: a368248e-69e4-40be-9c07-6c3b5880b0a6@eisentraut.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Here is a patch set to implement virtual generated columns.

Some history first: The original development of generated columns was
discussed in [0]. It started with virtual columns, then added stored
columns. Before the release of PG12, it was decided that only stored
columns were ready, so I cut out virtual columns, and stored generated
columns shipped with PG12, which is where we are today.

Virtual generated columns are occasionally requested still, and it's a
bit of unfinished business for me, too, so I started to resurrect it.
What I did here first was to basically reverse interdiff the patches
where I cut out virtual generated columns above (this was between
patches v8 and v9 in [0]) and clean that up and make it work again.

One thing that I needed to decide was how to organize the tests for
this. The original patch series had both stored and virtual tests in
the same test file src/test/regress/sql/generated.sql. As that file has
grown, I think it would have been a mess to weave another whole set of
tests into that. So instead I figured I'd make two separate test files

src/test/regress/sql/generated_stored.sql (renamed from current)
src/test/regress/sql/generated_virtual.sql

and kind of try to keep them aligned, similar to how the various
collate* tests are handled. So I put that renaming in as preparatory
patches. And there are also some other preparatory cleanup patches that
I'm including.

The main feature patch (0005 here) generally works but has a number of
open corner cases that need to be thought about and/or fixed, many of
which are marked in the code or the tests. I'll continue working on
that. But I wanted to see if I can get some feedback on the test
structure, so I don't have to keep changing it around later.

[0]:
https://www.postgresql.org/message-id/flat/b151f851-4019-bdb1-699e-ebab07d2f40a(at)2ndquadrant(dot)com

Attachment Content-Type Size
v0-0001-Rename-regress-test-generated-to-generated_stored.patch text/plain 2.0 KB
v0-0002-Put-generated_stored-test-objects-in-a-schema.patch text/plain 18.9 KB
v0-0003-Remove-useless-initializations.patch text/plain 996 bytes
v0-0004-Remove-useless-code.patch text/plain 2.5 KB
v0-0005-WIP-Virtual-generated-columns.patch text/plain 159.7 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Heikki Linnakangas 2024-04-29 08:38:17 Re: Direct SSL connection with ALPN and HBA rules
Previous Message Antonin Houska 2024-04-29 08:10:36 Use "unique keys" to enhance outer join removal