Re: Virtual generated columns

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Tomasz Rybak <tomasz.rybak@post.pl>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-07-01T10:56:22Z
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 17.06.24 21:31, Tomasz Rybak wrote:
> v1-0001-Rename-regress-test-generated-to-generated_stored.patch:
> no objections here, makes sense as preparation for future changes
> 
> v1-0002-Put-generated_stored-test-objects-in-a-schema.patch:
> also no objections.
> OTOH other tests (like publication.out, rowsecurity.out, stats_ext.out,
> tablespace.out) are creating schemas and later dropping them - so here
> it might also make sense to drop schema at the end of testing.

The existing tests for generated columns don't drop what they create at 
the end, which can be useful for pg_upgrade testing for example.  So 
unless there are specific reasons to change it, I would leave that as is.

Other tests might have other reasons.  For example, publications or row 
security might interfere with many other tests.

> v1-0003-Remove-useless-initializations.patch:
> All other cases (I checked directory src/backend/utils/cache)
> calling MemoryContextAllocZero only initialize fields when they
> are non-zero, so removing partial initialization with false brings
> consistency to the code.
> 
> v1-0004-Remove-useless-code.patch:
> Patch removes filling in of constraints from function
> BuildDescForRelation. This function is only called from file
> view.c and tablecmds.c (twice). In none of those cases
> result->constr is used, so proposed change makes sense.
> While I do not know code well, so might be wrong here,
> I would apply this patch.

I have committed these two now.