mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-20 16:02:19 +00:00
30 lines
1.5 KiB
SQL
30 lines
1.5 KiB
SQL
-- Per-partition materialization state for managed `// materialize` assets.
|
|
-- One row per (asset, partition): the latest materialization of that slice.
|
|
-- Drives: the partition-status grid (CE observability), run-stale/gap
|
|
-- detection, and the EE backfill worklist (missing/failed partitions). The
|
|
-- `partition` column uses '' as the sentinel for an unpartitioned (whole-table)
|
|
-- materialization, since partition is part of the primary key and cannot be
|
|
-- NULL.
|
|
CREATE TYPE MATERIALIZATION_STATUS AS ENUM ('running', 'materialized', 'failed');
|
|
|
|
CREATE TABLE IF NOT EXISTS materialized_partition (
|
|
workspace_id VARCHAR(50) NOT NULL REFERENCES workspace(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
asset_kind ASSET_KIND NOT NULL,
|
|
asset_path VARCHAR(255) NOT NULL,
|
|
partition TEXT NOT NULL DEFAULT '',
|
|
status MATERIALIZATION_STATUS NOT NULL,
|
|
-- DuckLake snapshot id produced by the write; NULL while running / on
|
|
-- failure. The pin that makes downstream reads reproducible.
|
|
snapshot_id BIGINT,
|
|
row_count BIGINT,
|
|
job_id UUID,
|
|
materialized_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
error TEXT,
|
|
PRIMARY KEY (workspace_id, asset_kind, asset_path, partition)
|
|
);
|
|
|
|
-- Backfill enumeration / grid "show only gaps": filter an asset's partitions
|
|
-- by status without scanning the whole table.
|
|
CREATE INDEX IF NOT EXISTS idx_materialized_partition_asset_status
|
|
ON materialized_partition (workspace_id, asset_kind, asset_path, status);
|