Changelog
All notable changes to LakeTS are documented in this file.
Format follows Keep a Changelog, versioning follows Semantic Versioning.
[Unreleased]
[0.1.3] - 2026-06-09
Fixed
- Timezone-stable chunk names.
_ensure_partitionsrenderedchunk_namewithto_char(range_start, …)in the session timezone, whilerange_startis an absolutetimestamptz. Running the partition manager under different session timezones (e.g. a job in UTC vs a client in UTC+2) produced names that no longer matchedrange_start, so the partition manager hitduplicate key value violates unique constraint "idx_chunk_metadata_chunk_name"(theON CONFLICT (chronotable_id, range_start)couldn't absorb achunk_namecollision). Names are now rendered from the instant in UTC (v_start AT TIME ZONE 'UTC'), keepingchunk_name1:1 withrange_startregardless of session timezone.
Upgrade by reinstalling dist/lakets.sql. Any chunk rows created before this fix under a non-UTC session keep their old names; if the partition manager still collides, drop the stale rows for already-dropped chunks (their partitions are gone) and let it recreate them.
[0.1.2] - 2026-06-08
Fixed
add_tiered_retention_policynow actually tiers. The flag/tier phase only recognizedtieringpolicies, so a combinedtiered_retentionpolicy was never flagged (Found 0 table(s) with tiering policies) — only its drop horizon worked. Fixed across the flag path: the tiering job and_get_chunks_to_tiernow matchpolicy_type IN ('tiering', 'tiered_retention')and read the horizon fromafterortier_after.add_tiered_retention_policyalso installs the write-tracking trigger, backfillslast_write_lsnon existing chunks, and setstiering_enabled = TRUE— without these,tier_chunkdeferred every chunk.
Upgrade by reinstalling dist/lakets.sql and redeploying the maintenance jobs (the fix spans both SQL and tiering_job.py).
[0.1.1] - 2026-06-08
Fixed
- Sync/tiering no longer require
USAGEon the Lakebase-managedwal2deltaschema.enable_sync()previously aborted withpermission denied for schema wal2deltawhen the connected role couldn't see the CDF subsystem schema. The CDF probe now toleratesinsufficient_privilege:enable_sync()warns and continues (the shadow and trigger are created as usual), and the tiering durability gate fails closed (it evicts nothing it cannot verify). See Troubleshooting for the grants needed if you want CDF-gated tiering to evict.
Upgrade by reinstalling dist/lakets.sql (the change is function-level — no schema migration required).
[0.1.0] - 2026-06-05
Initial public release. LakeTS turns Databricks Lakebase (PostgreSQL 17+) into a time-series database — pure PL/pgSQL, no custom extensions.
Added
- ChronoTables — automatic time-based partitioning via
create_chronotable(), plus multi-metric (tag + field) tables viacreate_metric_table(). - Time-series functions —
time_bucket,time_bucket_gapfill,first/lastaggregates,locf,interpolate,delta,rate, andhistogram. - RollUp engine — incremental aggregates with watermark-driven refresh, per-bucket invalidation tracking, chunk-skip pruning, and DAG-ordered cascade refresh.
- Last Value Cache — sub-10ms latest-state lookups via
enable_lvc(). - Lifecycle — policy-driven tiering that flags chunks once durable in Unity Catalog, and retention that drops Lakebase partitions only after CDF confirms durability (with a force override).
- Unity Catalog sync —
enable_sync()mirrors ChronoTables and RollUps to Unity Catalog through Lakebase CDF via an unpartitioned shadow table. - Alerts — SQL-native
alert_check()andalert_deadman(). - Bulk ingest —
ingest_batch()for JSONB arrays andingest_prometheus(). - Monitoring — Prometheus-compatible metrics,
chunk_health(), and a Databricks AI/BI dashboard. - Databricks jobs — serverless maintenance for partitioning, RollUp refresh, tiering, and retention.