# Documentation changelog

Recent updates and improvements to the QuestDB documentation.

# Documentation changelog

This page tracks significant updates to the QuestDB documentation.

## May 2026

### New

- [Upgrade QuestDB](/docs/operations/upgrade/) - Guide for upgrading QuestDB versions
- [Table/column versioning](/docs/concepts/deep-dive/root-directory-structure/) - Added versioning info to root directory structure
- [DECLARE with Grafana time range](/docs/cookbook/integrations/grafana/declare-time-range/) - Pass Grafana dashboard time range into QuestDB `DECLARE` variables

### Reference

- Added [`ntile()`](/docs/query/functions/window-functions/reference/#ntile), [`cume_dist()`](/docs/query/functions/window-functions/reference/#cume_dist), and [`nth_value()`](/docs/query/functions/window-functions/reference/#nth_value) window functions
- Fixed `timestamp_ns` valid range documentation
- Added precise microsecond-grained timestamp examples for PHP clients
- Fixed PIVOT syntax: removed redundant `FOR` from multiple pivot statements
- Updated Python client to use `sender.new_buffer()` for buffer initialization

### Updated

- [Aggregation functions](/docs/query/functions/aggregation/) - Added demo tags and updated examples with runnable queries
- [LATEST ON](/docs/query/sql/latest-on/) - Added demo tags to examples
- [JOIN](/docs/query/sql/join/) - Updated examples to use demo data
- [GROUP BY](/docs/query/sql/group-by/) - Replaced examples with fx_trades demo queries
- [DISTINCT](/docs/query/sql/distinct/) - Replaced examples with fx_trades demo queries
- [CAST](/docs/query/sql/cast/) - Added demo tags to examples
- [PIVOT](/docs/query/sql/pivot/) - Fixed examples to use demo server data
- [Array functions](/docs/query/functions/array/) - Improved page with demo examples
- [TICK syntax](/docs/query/operators/tick/) - Documented imprecise date support
- [SAMPLE BY](/docs/query/sql/sample-by/) - Documented `FILL(PREV(col))` fast-path syntax and updated FROM-TO limitations for keyed queries
- [Grafana integration](/docs/integrations/visualization/grafana/) - Restructured query macros section with full documentation of all five plugin macros
- [Configuration reference](/docs/configuration/overview/) - Revamped into 17 dedicated per-subsystem pages with epigraph-style property listings

## April 2026

### Releases

- [9.3.5](https://questdb.com/release-notes/) - Released April 13, 2026

### New

- [Storage policy](/docs/concepts/storage-policy/) - Documentation for configuring storage policies
- [UNNEST](/docs/query/sql/unnest/) - SQL reference for unnesting arrays into rows
- [LATERAL JOIN](/docs/query/sql/lateral-join/) - SQL reference for lateral subqueries
- [Sparkline and bar visualization functions](/docs/query/functions/visualization/) - Text-based chart functions for terminal and console output
- [StructArrayExplode transform](/docs/ingestion/message-brokers/kafka/) - Kafka SMT for exploding struct arrays

### Reference

- Added [Parquet bloom filters](/docs/query/sql/alter-table-alter-column-set-parquet/) syntax and configuration
- Added [`covar_samp()`](/docs/query/functions/window-functions/reference/), [`corr()`](/docs/query/functions/window-functions/reference/), and other statistical window functions
- Added `array_elem_min()`, `array_elem_max()`, `array_elem_sum()`, `array_elem_avg()` to [array functions](/docs/query/functions/array/)
- Fixed alphabetical ordering and added missing functions across reference pages
- Added Azure ReadWrite disk caching warning to deployment docs

### Updated

- [SQL reference pages](/docs/query/sql/select/) - Replaced railroad diagrams with code-based syntax blocks across 65 SQL pages, with updated examples
- [SAMPLE BY](/docs/query/sql/sample-by/) - Updated timezone bucket alignment behavior
- [Parquet export](/docs/query/export-parquet/) - Added partitioning options for exports
- [WINDOW JOIN](/docs/query/sql/window-join/) - Documented dynamic window boundaries
- [HORIZON JOIN](/docs/query/sql/horizon-join/) - Documented multi-RHS table support
- [JOIN](/docs/query/sql/join/) - Improved join documentation and reorganized page
- [Web Console](/docs/getting-started/web-console/overview/) - Added table details, updated screenshots
- [TTL](/docs/concepts/ttl/) - Fixed removal syntax and general improvements
- [REST API `/exp` endpoint](/docs/query/rest-api/) - Documented timeout parameter, removed outdated warning

## March 2026

### Releases

- [9.3.4](https://questdb.com/release-notes/) - Released March 26, 2026

### New

- [Log returns](/docs/cookbook/sql/finance/log-returns/) and [gamma scalping signal](/docs/cookbook/sql/finance/gamma-scalping-signal/) cookbook recipes

### Reference

- Added [`array_sort()`](/docs/query/functions/array/#array_sort) and [`array_reverse()`](/docs/query/functions/array/#array_reverse) functions
- Added TLS certificate expiration metrics to [Prometheus monitoring docs](/docs/operations/monitoring-alerting/)
- Removed obsolete `cairo.sql.backup.*` configuration keys
- Fixed RLE encoding supported type documentation

### Updated

- [SAMPLE BY](/docs/query/sql/sample-by/) - Refreshed page with improved structure and examples
- [HORIZON JOIN](/docs/query/sql/horizon-join/) - Improved examples
- [Cookbook](/docs/cookbook/) - Refreshed recipes with lookback patterns, named windows, and updated schema references
- [Per-column Parquet encoding and compression](/docs/query/sql/alter-table-alter-column-set-parquet/) - Comprehensive documentation for column-level settings
- [Database replication](/docs/configuration/database-replication/) - GCP NFS transport and tuning updates
- [Ingestion benchmarks](/docs/ingestion/overview/) - Updated benchmark image to Q1 2026

## February 2026

### Releases

- [9.3.3](https://questdb.com/release-notes/) - Released February 25, 2026

### New

- [HORIZON JOIN](/docs/query/sql/horizon-join/) - Full reference page for post-trade analysis joins
- Post-trade analysis recipes: markout, slippage, implementation shortfall, ECN scorecard, last-look, and VPIN
- Financial indicator recipes: RSI, MACD, Stochastic, Rate of Change, ATR, Donchian Channels, Keltner Channels, Realized Volatility, OBV, Maximum Drawdown, Bid-Ask Spread
- [TICK Exchange Calendars](/docs/query/operators/tick/) - Enterprise feature for market-hours-aware time intervals
- [AI Coding Agents](/docs/getting-started/ai-coding-agents/) - Renamed from LLM Coding Assistants, added QuestDB agent skill documentation

### Reference

- Added [`twap()`](/docs/query/functions/aggregation/#twap) aggregate function
- Added [`array_build()`](/docs/query/functions/array/#array_build) function
- Documented [`count(distinct)`](/docs/query/functions/aggregation/#count) syntax
- Updated Java ILP client artifact
- Added WAL cleaner documentation for replication

### Updated

- [Named windows](/docs/query/functions/window-functions/overview/) - Support for reusable `WINDOW` clause definitions
- [Parquet export](/docs/query/export-parquet/) - Fixed compression defaults, restructured page, updated `read_parquet` types
- [Backup](/docs/operations/backup/) - Documented `backup.schedule.cron` format, improved scheduler visibility
- [Date/time functions](/docs/query/functions/date-time/) - Page updates and corrections
- [Window functions](/docs/query/functions/window-functions/overview/) - Added limitation documentation
- [Database replication](/docs/configuration/database-replication/) - Added workload identity options, OrderBookToArray SMT documentation
- [Kubernetes secrets](/docs/deployment/docker/) - Documented secrets-from-files for container deployments

## January 2026

### Releases

- [9.3.2](https://questdb.com/release-notes/) - Released January 28, 2026
- [9.3.1](https://questdb.com/release-notes/) - Released January 14, 2026
- [9.3.0](https://questdb.com/release-notes/) - Released January 9, 2026

### New

- [Cookbook](/docs/cookbook/) - Collection of 40+ recipes for common SQL patterns, integrations, and operations
- Capital markets recipes - Financial calculations including VWAP, Bollinger Bands, TICK/TRIN, volume analysis, and more
- [TICK syntax](/docs/query/operators/tick/) - New DSL for expressing time intervals with intuitive syntax like `'$now - 1h..$now'`
- [AI Assistant reference](/docs/getting-started/web-console/questdb-ai/) - Documentation for the QuestDB AI Assistant
- [PIVOT](/docs/query/sql/pivot/) - SQL keyword for rotating rows into columns

### Reference

- Added [`percent_rank()`](/docs/query/functions/window-functions/reference/#percent_rank) window function
- Added [`arg_min()`](/docs/query/functions/aggregation/#arg_min) and [`arg_max()`](/docs/query/functions/aggregation/#arg_max) aggregation functions
- Added [`length_bytes()`](/docs/query/functions/text/#length_bytes) function for byte-length of strings
- Added [`rnd_symbol_zipf()`](/docs/query/functions/random-value-generator/#rnd_symbol_zipf) and weighted random generators
- Added [Euclidean and geographic geo functions](/docs/query/functions/spatial/)
- Extended [date arithmetic](/docs/query/operators/tick/) with sub-day units

### Updated

- [Window functions](/docs/query/functions/window-functions/overview/) - Restructured into dedicated section with improved navigation, added EMA, VWEMA, and ksum() functions
- [Views and materialized views](/docs/concepts/views/) - Comprehensive documentation overhaul with improved examples and clearer explanations
- [Designated timestamp](/docs/concepts/designated-timestamp/) - Consolidated timestamp documentation with TICK syntax examples
- [Enterprise backup](/docs/operations/backup/) - Improved documentation with clearer instructions

## December 2025

### Releases

- [9.2.3](https://questdb.com/release-notes/) - Released December 18, 2025
- [9.2.2](https://questdb.com/release-notes/) - Released December 1, 2025

### New

- [Builtin profiler](/docs/troubleshooting/profiling/) - Documentation for QuestDB's built-in query profiler
- [WINDOW JOIN](/docs/query/sql/window-join/) - SQL reference for window joins with time-based lookups

### Reference

- Added [`weighted_avg()`](/docs/query/functions/aggregation/#weighted_avg), [`weighted_stddev_rel()`](/docs/query/functions/aggregation/#weighted_stddev_rel), [`weighted_stddev_freq()`](/docs/query/functions/aggregation/#weighted_stddev_freq) functions
- Documented compact period syntax in [SAMPLE BY](/docs/query/sql/sample-by/)

### Updated

- [Materialized views](/docs/concepts/materialized-views/) - Added `REFRESH PERIOD (SAMPLE BY INTERVAL)` compact syntax documentation
- [Time-series optimizations](/docs/architecture/time-series-optimizations/) - Improved explanations

## November 2025

### Releases

- [9.2.1](https://questdb.com/release-notes/) - Released November 25, 2025
- [9.2.0](https://questdb.com/release-notes/) - Released November 13, 2025
- [9.1.1](https://questdb.com/release-notes/) - Released November 3, 2025

### New

- [Hetzner deployment](/docs/deployment/hetzner/) - Step-by-step guide for deploying QuestDB on Hetzner Cloud
- [DECIMAL datatype](/docs/query/datatypes/decimal/) - Documentation for precise decimal arithmetic
- [PGWire OIDC integration](/docs/security/oidc/) - Authentication via OpenID Connect

### Reference

- Added `first()` and `last()` support for additional datatypes
- Added `first_not_null()` and `last_not_null()` array support

### Updated

- [Parquet export](/docs/query/export-parquet/) - Complete documentation for exporting data to Parquet format
- [Shared pool configuration](/docs/configuration/shared-workers/) - Updated with network, query, and write shared pool options
- [SQL hints](/docs/query/sql/asof-join/#choose-the-optimal-algorithm-with-an-sql-hint) - Rewritten section on temporal join hints

## October 2025

### Releases

- [9.1.0](https://questdb.com/release-notes/) - Released October 3, 2025

### New

- [PGWire for C/C++](/docs/query/pgwire/c-and-cpp/) - Guide for C/C++ applications using PostgreSQL wire protocol
- [Table and column naming rules](/docs/query/sql/create-table/#table-name) - Guidelines for valid identifiers

### Reference

- Added `w` (week) unit to [SAMPLE BY](/docs/query/sql/sample-by/) reference

### Updated

- [Architecture guide](/docs/architecture/questdb-architecture/) - Refreshed with current implementation details
- [Nanoseconds](/docs/query/datatypes/overview/#timestamp-and-date-considerations) - Added nanosecond timestamp precision documentation
- [`TRUNCATE TABLE`](/docs/query/sql/truncate/) - Added `IF EXISTS` clause

## September 2025

### Updated

- [Partitioning](/docs/concepts/partitions/) - Improved formatting and explanations
- [Go client examples](/docs/ingestion/clients/go/) - Updated to v4 API

## August 2025

### Releases

- [9.0.3](https://questdb.com/release-notes/) - Released August 29, 2025
- [9.0.2](https://questdb.com/release-notes/) - Released August 15, 2025

### New

- [Array functions](/docs/query/functions/array/) - Documentation for array manipulation functions

### Updated

- [`to_timestamp()`](/docs/query/functions/date-time/#to_timestamp) - Improved documentation with more examples
- [Web Console](/docs/getting-started/web-console/overview/) - Updated documentation for latest console features

## July 2025

### Releases

- [9.0.1](https://questdb.com/release-notes/) - Released July 23, 2025
- [9.0.0](https://questdb.com/release-notes/) - Released July 11, 2025

### New

- [N-dimensional arrays](/docs/query/datatypes/array/) - Comprehensive guide to multi-dimensional arrays
- [Order book analytics](/docs/tutorials/order-book/) - Guide for processing order book data
- [Period materialized views](/docs/concepts/materialized-views/#period-refresh) - Time-based refresh for materialized views
- [ASOF JOIN TOLERANCE](/docs/query/sql/asof-join/#tolerance-clause) - Limit lookback window in temporal joins

### Updated

- [ILP clients](/docs/ingestion/overview/) - Array support added to Python, C++, Rust, Java, and .NET clients
- [WAL metrics](/docs/operations/monitoring-alerting/) - Added metrics for detecting WAL apply lag

## Earlier updates

For documentation changes before July 2025, see the [git commit history](https://github.com/questdb/questdb.io/commits/main/documentation).
