Snowflake: Hybrid Tables
Supported by: Snowflake
Depot can back an object schema with a Snowflake hybrid table instead of a standard table. Hybrid tables use row-based storage with an enforced primary key, which suits workloads that need fast single-row lookups and writes.
Enabling hybrid tables
Set the snowflake.sql.tableType extension on the object schema to HYBRID. When the extension is absent the
table type defaults to STANDARD (the existing behaviour, a regular Snowflake table).
PetInventory:
type: object
extensions:
snowflake.sql.tableType: HYBRID
properties:
name:
type: string
count:
type: integer
This emits a CREATE HYBRID TABLE statement instead of CREATE TABLE.
Primary keys
Hybrid tables require a primary key, which Depot adds automatically:
- object tables use
id; - history tables use
id + version(anidis not unique across history versions).
The constraint is named ${tableName}_PK. When a schema is HYBRID and history is enabled, the
history table is created as a hybrid table too.
Switching table type
Snowflake cannot change a table's type in place, so switching a schema between STANDARD and HYBRID
requires a version bump. Depot performs the switch by recreating the table: it
creates a new table of the target type, copies the object and history rows across (preserving version numbers
and the full history), and soft-deletes the old table. The recreate is migration-aware, so the same version
bump may also add or remove columns and use a custom expression migration to populate new columns.
Limitations
- Hybrid tables are not supported for Iceberg / S3 Tables
datasets; declaring
HYBRIDon such a dataset is rejected at deploy time. - A new required column added during a type switch must be given a value by a migration expression (otherwise the migration is rejected); make the column nullable if no value is available.