---
title: "HeliosDB-Lite v3.6.0 Release Notes"
---

# HeliosDB-Lite v3.6.0 Release Notes


## Headline

v3.6.0 is the **largest feature release** in HeliosDB-Lite history, adding 22 previously internal-only features to the SQL interface, comprehensive database hardening, and a 129x query performance improvement via plan caching.

## Performance

- **Plan Cache:** 129x average speedup on repeated queries (skip parse/plan/optimize)
- **vs PostgreSQL 16:** 33 of 35 benchmark categories won (up from 34/35 in v3.5)
- **REFRESH MATVIEW:** Flipped from PostgreSQL win (5.8x) to Helios win (1,279x)

## New SQL Commands

| Command | Description |
|---------|-------------|
| `BACKUP DATABASE [INCREMENTAL] [TO '<path>']` | COW incremental-forever backup |
| `RESTORE DATABASE FROM '<id>' [TO BRANCH '<name>']` | Restore with chain walking |
| `RECOVER DATABASE TO TIMESTAMP '<ts>' [AS BRANCH '<name>']` | Point-in-time recovery with branch forking |
| `VACUUM [FULL] [ANALYZE] [table]` | MVCC version cleanup + statistics |
| `CHECKPOINT [FORCE]` | WAL flush and rotation |
| `REINDEX TABLE/INDEX` | Force index rebuild |
| `ALTER TABLE ENABLE/DISABLE ROW LEVEL SECURITY` | RLS toggle |
| `CREATE/DROP POLICY` | Row-level security policies |
| `CREATE ROLE WITH RATE_LIMIT <rpm>` | Per-user rate limiting |
| `CREATE ROLE WITH SSL_REQUIRED` | Connection-level SSL enforcement |
| `ALTER SYSTEM ROTATE ENCRYPTION KEY` | Encryption key rotation |
| `ALTER TABLE ENABLE/DISABLE ZERO KNOWLEDGE ENCRYPTION` | Per-table ZKE |
| `ALTER COLUMN SET COMPRESSION zstd/lz4/none` | Per-column compression |
| `ALTER MATERIALIZED VIEW SET (refresh_interval='5m')` | MV auto-refresh scheduling |
| `CREATE/DROP EXTENSION FROM '<path>'` | WASM plugin management |
| `CREATE/DROP PUBLICATION/SUBSCRIPTION` | Logical replication (feature-gated) |
| `CONSOLIDATE FILTER [table]` | SMFI rebuild |
| `GRANT role TO user` | Role hierarchy via custom parser |

## New SQL Functions

| Function | Description |
|---------|-------------|
| `pg_cancel_backend(pid)` | Cancel a running query |
| `pg_terminate_backend(pid)` | Terminate a session |
| `pg_backend_pid()` | Get current process ID |
| `%` (modulo operator) | Integer and float modulo |

## New System Views (22 views added, 94 total)

| View | Category |
|------|----------|
| `helios_dictionary` | Lists all 94 system views (Oracle DICT equivalent) |
| `helios_audit_log` | Tamper-proof audit trail |
| `helios_bloom_filters` | Bloom filter statistics |
| `helios_zone_maps` | Zone map min/max statistics |
| `helios_resource_usage` | HTAP quota monitoring |
| `helios_index_stats` | Index metadata |
| `helios_advisor_recommendations` | Workload advisor output |
| `pg_stats` | PG-compatible column statistics |
| `helios_dedup_stats` | Content-addressed dedup ratios |
| `helios_prefetch_stats` | Prefetch cache stats |
| `helios_smfi_status` | Self-maintaining filter status |
| `helios_encryption_keys` | Key rotation history |
| `helios_zke_status` | ZKE per-table status |
| `helios_mv_refresh_status` | MV auto-refresh schedule |
| `helios_column_compression` | Per-column codec |
| `pg_publications` | Logical replication publications |
| `pg_subscriptions` | Logical replication subscriptions |
| `helios_extensions` | WASM plugin registry |
| `helios_graphql_status` | GraphQL gateway status |
| `helios_circuit_breaker_status` | Circuit breaker config |
| `helios_backups` | Backup metadata catalog |
| `helios_user_quotas` | Rate limit quota tracking |

## Security Hardening

- **PBKDF2:** 100,000 iterations (was 4,096)
- **Resource limits:** max_result_rows (1M), CTE depth (1000), subquery depth (64), expression depth (128), memory per query
- **CRC32 checksums:** Opt-in data integrity verification
- **PRAGMA integrity_check:** Full data corruption scan
- **API validation:** SQL size (1MB), param count (64K), timeout bounds
- **PostgREST:** Refactored to parameterized queries (SQL injection eliminated)

## PL/pgSQL Enhancements

- FOR loops (numeric + query)
- WHILE loops
- CASE (searched + simple)
- Cursors (OPEN/FETCH/CLOSE)
- EXIT/CONTINUE
- SELECT INTO
- EXECUTE (dynamic SQL)

## Optimizer

- More robust error handling in the optimizer
- CTE conflict in filtered scans resolved

## Graph Adjacency Lists

Property graph layer with concurrent adjacency lists:

- **Nodes:** 64-bit ID with optional label and properties
- **Edges:** Directed, typed, optionally weighted
- **Traversal:** BFS, Dijkstra shortest path, A* with pluggable heuristic
- **SQL functions:** `graph_bfs()`, `graph_shortest_path()`, `graph_a_star()`, `graph_neighbors()` (declared; wiring pending storage backend integration)

## BM25 & Hybrid Search

RAG-native lexical and hybrid search:

- **BM25 inverted index** with Okapi parameters (k1=1.2, b=0.75)
- **Unicode-aware tokenizer** with ASCII folding
- **Hybrid search:** weighted linear combination or Reciprocal Rank Fusion (RRF)
- **Rerankers:** RRF (Cormack/Clarke 2009, k=60) and Maximal Marginal Relevance (MMR)
- **Bloom filter skip:** short-circuit term lookups for non-existent terms

## Compiled Query Plans

- Normalized-SQL fingerprinting (comments stripped, literals replaced)
- Prepared plans with typed parameter slots
- Bounded LRU plan cache (512 entries)

## Production Hardening

| Feature | Description |
|---------|-------------|
| FK constraint enforcement | INSERT/UPDATE/DELETE validate foreign keys |
| MVCC GC background thread | 5-minute interval, 1-hour retention window |
| Backup snapshot consistency | Single-pass scan for consistent snapshots |
| Index error escalation | PK/UNIQUE violations return ERROR, not warning |
| NaN/Infinity guards | Aggregate functions reject NaN/Infinity |
| SQL cursors | DECLARE/FETCH/CLOSE for streaming result sets |
| Connection management | Timeouts, idle disconnect, rollback on disconnect |
| DDL locking | Schema operations are serialized |
| /metrics endpoint | Prometheus-compatible metrics |
| /health endpoint | Health check (HTTP 200 + JSON) |
| SET TRANSACTION ISOLATION LEVEL | Runtime isolation level control |

## Breaking Changes

None. All changes are additive.
