[Feature] Seeds have no Iceberg/external-catalog awareness — always create a plain (non-Iceberg) table
- Dominant language
- Rust
- Stars
- 13.8k
- Forks
- 2.6k
- Avg merge
- 21h 31m
- Merged PRs (30d)
- 56
Description
## Current behavior
The seed materialization always calls `create_csv_table` (`dbt-snowflake/macros/materializations/seed.sql:8`, no Snowflake-specific override), which falls through to `default__create_csv_table` (`dbt-adapters/macros/materializations/seeds/helpers.sql:8-28`). That macro has no reference to `iceberg`, `table_format`, or `catalog_relation` — it always issues a plain `CREATE TABLE`, never `CREATE ICEBERG TABLE`, regardless of the seed's configured catalog/table_format.
On the Rust side, `quote_seed_column` (`dbt-adapter/src/adapter/adapter_impl.rs:2593-2619`) branches only on `AdapterType`, with no catalog-type or `is_iceberg` parameter — so seed column quoting doesn't get the lowercase/quote treatment that table/incremental materializations apply for catalogs like Glue.
## Impact
A seed configured with `+table_format: iceberg` (or targeting a catalog whose only table type is Iceberg) either silently lands as a native table instead of an Iceberg one, or fails/produces casing-inconsistent identifiers if downstream models expect it to be a proper Iceberg table in the external catalog.
## Expected behavior
Seeds should route through the same catalog-relation-aware create (and create+insert vs. CTAS, and casing) logic used by the `table` materialization, rather than an entirely separate, catalog-blind code path.
## Related
Depends on the capability-model sub-issue on this EPIC for the CTAS/casing decision; the Snowflake Glue casing pattern in `make_glue_compatible_relation` is the template to generalize from.
Contributor guide
Assessment
This issue has not been assessed yet.