Skip to content

feat(iceberg_table): support externally managed (catalog-linked) Iceberg tables #32

Description

@GClunies

What & Why

SnowflakeIcebergTable (snowcap/resources/iceberg_table.py) only models Snowflake-managed Iceberg tables (external_volume, catalog, base_location, catalog_sync). It cannot express externally managed / catalog-linked Iceberg tables that reference a catalog integration (e.g. AWS Glue / S3 Tables via the Iceberg REST catalog) — those need CATALOG = '<integration>', CATALOG_TABLE_NAME, and AUTO_REFRESH.

Ironically the catalog integration side is already supported (IcebergRestCatalogIntegration, PR #16) — but the tables that consume it still require manual SQL:

CREATE ICEBERG TABLE IF NOT EXISTS s3tables_page_snapshots
  CATALOG            = 'iceberg_catalog_agentic'   -- IcebergRestCatalogIntegration
  CATALOG_TABLE_NAME = 'page_snapshots'
  AUTO_REFRESH       = TRUE;

Acceptance Criteria

  • Iceberg table resource variant (or extended props) for externally managed tables: catalog (integration name), catalog_table_name, catalog_namespace, auto_refresh, optional external_volume
  • Validation: externally-managed props are mutually exclusive with Snowflake-managed props (base_location, column definitions)
  • Fetch/plan round-trips externally managed tables without spurious drift
  • Docs page under docs/resources/

Resources

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions