Skip to content

feat: replicate stored generated columns on Postgres 18 - #1017

Open
9bany wants to merge 1 commit into
supabase:mainfrom
9bany:generate-columns
Open

9bany wants to merge 1 commit into
supabase:mainfrom
9bany:generate-columns

Conversation

@9bany

@9bany 9bany commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Include stored generated columns in table schema snapshots and let the replication mask decide whether they flow. With
publish_generated_columns = stored they now reach the destination via copy and CDC; on earlier versions they stay out of the mask, preserving existing behavior.

  • Add ColumnSchema.generated, persisted in etl.table_columns
  • Return attgenerated from etl.describe_table_schema, and null out default_expression so a generation expression never becomes a destination DEFAULT
  • Exclude generated columns from the pre-PG15 and empty-attnames mask fallbacks, which would widen the mask past the tuple width
  • Replace the stale "not supported" warning with a mask-aware one
  • Reject array generated-column additions on ClickHouse

Solve: #77

What kind of change does this PR introduce?

Bug fix, feature, docs update, ...

What is the current behavior?

Please link any relevant issues here.

What is the new behavior?

Feel free to include screenshots if it includes visual changes.

Additional context

Add any other context or screenshots.

Include stored generated columns in table schema snapshots and let the
replication mask decide whether they flow. With
`publish_generated_columns = stored` they now reach the destination via
copy and CDC; on earlier versions they stay out of the mask, preserving
existing behavior.

- Add `ColumnSchema.generated`, persisted in `etl.table_columns`
- Return `attgenerated` from `etl.describe_table_schema`, and null out
  `default_expression` so a generation expression never becomes a
  destination DEFAULT
- Exclude generated columns from the pre-PG15 and empty-attnames mask
  fallbacks, which would widen the mask past the tuple width
- Replace the stale "not supported" warning with a mask-aware one
- Reject array generated-column additions on ClickHouse
@9bany
9bany requested a review from a team as a code owner September 8, 2026 09:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant