Re: Virtual generated columns

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Amit Kapila <amit.kapila16@gmail.com>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>, jian he <jian.universality@gmail.com>, Dean Rasheed <dean.a.rasheed@gmail.com>
Date: 2024-11-12T16:17:16Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Expand virtual generated columns for ALTER COLUMN TYPE

  2. Eliminate code duplication in replace_rte_variables callbacks

  3. Expand virtual generated columns in the planner

  4. Virtual generated columns

  5. Additional tests for stored generated columns

  6. Improve generated_stored test

  7. Fix handling of CREATE DOMAIN with GENERATED constraint syntax

  8. Add pg_constraint rows for not-null constraints

  9. Put generated_stored test objects in a schema

  10. Rename regress test generated to generated_stored

  11. Small code simplification

  12. Remove useless code

  13. Remove useless initializations

  14. doc: Clarify that pg_attrdef also stores generation expressions

  15. Clean out column-level pg_init_privs entries when dropping tables.

  16. Re-implement the ereport() macro using __VA_ARGS__.

On 10.11.24 04:16, Amit Kapila wrote:
> The possible idea to replicate virtual generated columns is to compute
> the corresponding expression before sending the data to the client. If
> we can allow it in the row filter than why not to publish it as well.

Row filters have pretty strong restrictions for what kind of operations 
they can contain.  Applying those restrictions to virtual generated 
columns would probably not make that feature very useful.  (You want to 
use virtual columns for expressions that are too cumbersome to write out 
by hand every time.)

Moreover, we would have to implement some elaborate cross-checks if a 
table gets added to a publication.  How would that work?  "Can't add 
table x to publication because it contains a virtual generated column 
with a non-simple expression"?  With row filters, this is less of a 
problem, because the row filter a property of the publication.