Skip to content

fix: same-named tables in different schemas mixed in one Iceberg table - #92

Merged
hasyimibhar merged 1 commit into
mainfrom
fix/namespace-collision
Oct 5, 2026
Merged

hasyimibhar merged 1 commit into
mainfrom
fix/namespace-collision

Conversation

@hasyimibhar

@hasyimibhar hasyimibhar commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator

This fixes same_named_tables_under_one_sink_namespace_stay_apart.

With sink.namespace set, each table's Iceberg namespace replaces its PG schema. public.orders and sales.orders therefore both materialized into <namespace>.orders: one Iceberg table holding both tables' rows, where rows sharing a key overwrite each other. Nothing checked for it.

With sink.namespace set, every table's Iceberg namespace replaces its PG
schema, so public.orders and sales.orders both materialized into
<namespace>.orders: one table holding both tables' rows, each overwriting
the other's on shared keys. Nothing checked for it.

Config loading now refuses two tables that map to one Iceberg table (and
a table listed twice), so every subcommand fails fast with a pointer to
sink.namespace. TableConfig::iceberg_ident is the one definition of the
mapping, replacing three copies in setup.rs and run.rs.

The DST's sink.namespace dimension now replicates sales.returns as
public.returns, still exercising the PG → Iceberg name translation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hasyimibhar
hasyimibhar merged commit 13d6e34 into main Oct 5, 2026
2 of 4 checks passed
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