# InfluxDB: what changed from 2 to 3 - Product: InfluxDB (https://whatsnew.fyi/product/influxdb) - Vendor: InfluxData - Range: changelog entries numbered after v2.9.1 up to and including v3.10.0, stable releases only - Entries below: 5 releases (newest first) - Resolved: 2 is v2.9.1 and 3 is v3.10.0, the newest stable release of each major we track - Carrying security changes: 1 · CVEs mentioned: 0 · Mentioning breaking changes: 1 · Removing or deprecating something: 0 - Page: https://whatsnew.fyi/product/influxdb/compare/2...3 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## What changed (39 changes, grouped by kind) ### Added #### v3.10.0 (2026-06-17) - Catalog v3 automatically migrates to a compact binary format on first startup, reducing catalog size by approximately 5–6x compared to v2 - Processing engine supports cross-database queries via the `database=` keyword argument on `influxdb3_local.query()` - Processing engine has trigger lockdown with new serve flags `--restrict-plugin-triggers-to` and `--plugin-dir-only` to restrict plugin behavior - GET /ready endpoint returns 200 OK when the server can reach object storage and 503 when it cannot - Always-on heap profiling enabled at startup with negligible overhead accessible at the pprof endpoint - influxdb3 debug catalog command allows inspecting catalog state offline directly from object storage without a running server - Row-level deletion via `influxdb3 delete rows` command to delete rows by time range and tag predicates, monitored with the `system.row_deletes` table - Backup and restore management via `influxdb3 create/status/show/delete/cancel backup` and `restore` commands plus matching `/api/v3/enterprise/backup` and `/restore` endpoints - Bulk import of generic Parquet files with `influxdb3 import upload` command mapping columns to InfluxDB types - User authentication and RBAC with username/password to JWT conversion, optional OAuth/OIDC, and three built-in roles (Admin, Auditor, Member) - 36 new `influxdb3_compactor_*` Prometheus metrics including `influxdb3_compactor_snapshot_lag_seconds` as the primary health signal #### v3.9.0 (2026-04-03) - Product identity in HTTP responses, metrics, HTTP response headers, and metadata now distinguish between Core and Enterprise builds #### v3.4.0 (2025-08-27) - Generate authentication tokens offline that can be loaded by the database at runtime if the tokens do not already exist for automated deployments and containerized environments - Specify the Azure endpoint for object-store connections using the --azure-endpoint parameter - Specify the no_sync option via the --no-sync parameter on CLI write commands #### v3.3.0 (2025-07-30) - Add admin token recovery server that allows regenerating lost admin tokens without existing authentication - Add --admin-token-recovery-http-bind option for running recovery server on separate port with automatic shutdown after successful token regeneration - Access trigger arguments for Process Engine triggers using the system.processing_engine_trigger_arguments table - Pass the git hash in build.rs using environment variables ### Changed #### v3.10.0 (2026-06-17) - Object-store licenses are no longer bound to object-store config allowing bucket or store migration with the same license - `--pt-partition-count` flag renamed to `--pt-shard-count` with no alias - `/api/v2/write` endpoint now returns 403 for valid tokens lacking write permission instead of 401 - Line-protocol parse errors on `/api/v2/write` now return 400 instead of 500 #### v3.9.0 (2026-04-03) - Upgrade the embedded DataFusion query engine to DF 51 for more efficient query execution - Update the bundled Python runtime for processing engine plugins with the latest security and bug fixes #### v3.4.0 (2025-08-27) - TableIndexCache log output is now less verbose - WAL replay concurrency limit now defaults to number of CPU cores to prevent possible OOM ### Fixed #### v3.10.0 (2026-06-17) - Compaction stability improvements including ingest-time, deadlock, write-amplification, and gen1 orphaning fixes #### v3.9.0 (2026-04-03) - Background resources such as processing engine triggers are now cleanly decommissioned when a database is removed #### v3.4.0 (2025-08-27) - Tag and field names are validated when creating tables - Using GROUP BY twice on the same column no longer causes incorrect data #### v3.3.0 (2025-07-30) - Fix URL encoded table name handling failures - Allow hard deletion of existing soft-deleted schema - Fix AWS S3 API error handling when tokens are expired - Set nanosecond precision as default for V1 query API CSV output - Mark --object-store CLI argument as explicitly required - Add help text for the new update subcommand #### v3.0.3 (2025-05-16) - Operator tokens can no longer be deleted ### Security #### v3.4.0 (2025-08-27) - Removed unsafe signal_handler code ## Release notes ### v3.10.0 — v3.10.0 | 06-17-26 - Date: 2026-06-17 - Version: v3.10.0 - Original notes: https://github.com/influxdata/influxdb/releases/tag/v3.10.0 - Permalink: https://whatsnew.fyi/product/influxdb/releases/v3.10.0 - **added** — Catalog v3 automatically migrates to a compact binary format on first startup, reducing catalog size by approximately 5–6x compared to v2 - **added** — Processing engine supports cross-database queries via the `database=` keyword argument on `influxdb3_local.query()` - **added** — Processing engine has trigger lockdown with new serve flags `--restrict-plugin-triggers-to` and `--plugin-dir-only` to restrict plugin behavior - **added** — GET /ready endpoint returns 200 OK when the server can reach object storage and 503 when it cannot - **added** — Always-on heap profiling enabled at startup with negligible overhead accessible at the pprof endpoint - **added** — influxdb3 debug catalog command allows inspecting catalog state offline directly from object storage without a running server - **added** — Row-level deletion via `influxdb3 delete rows` command to delete rows by time range and tag predicates, monitored with the `system.row_deletes` table - **added** — Backup and restore management via `influxdb3 create/status/show/delete/cancel backup` and `restore` commands plus matching `/api/v3/enterprise/backup` and `/restore` endpoints - **added** — Bulk import of generic Parquet files with `influxdb3 import upload` command mapping columns to InfluxDB types - **added** — User authentication and RBAC with username/password to JWT conversion, optional OAuth/OIDC, and three built-in roles (Admin, Auditor, Member) - **added** — 36 new `influxdb3_compactor_*` Prometheus metrics including `influxdb3_compactor_snapshot_lag_seconds` as the primary health signal - **changed** — Object-store licenses are no longer bound to object-store config allowing bucket or store migration with the same license - **changed** — `--pt-partition-count` flag renamed to `--pt-shard-count` with no alias - **changed** — `/api/v2/write` endpoint now returns 403 for valid tokens lacking write permission instead of 401 - **changed** — Line-protocol parse errors on `/api/v2/write` now return 400 instead of 500 - **fixed** — Compaction stability improvements including ingest-time, deadlock, write-amplification, and gen1 orphaning fixes The following are some highlighted updates with the newest release for InfluxDB 3 Core and Enterprise. Learn more via our full [Release Notes](https://docs.influxdata.com/influxdb3/core/release-notes/). ##### InfluxDB 3 Core Updates **Catalog v3**: The on-disk catalog automatically migrates to a compact binary format (~5–6x smaller than v2) on first startup. Migration is automatic, idempotent, and crash-safe. **Back up** `{prefix}/catalogs/` and `{prefix}/_catalog_checkpoint` before upgrading; the migration is one-way and 3.9.x binaries _cannot_ read a v3 catalog. **Processing engine supports cross-database queries**: Plugins can now read from any database using the `database=` keyword argument on `influxdb3_local.query()`. **Processing engine now has trigger lockdown**: New serve flags restrict plugin behavior; `--restrict-plugin-triggers-to` limits triggers to `wal`, `schedule`, or `request`, and `--plugin-dir-only` **`GET /ready` endpoint**: Returns `200 OK` when the server can reach object storage, `503` when it cannot; ideal for load balancer and orchestration readiness probes. **Always-on heap profiling**: Enabled at startup with negligible overhead (~<1% CPU), accessible at the existing pprof endpoint. Disable with `MALLOC_CONF=prof:false`. **`influxdb3 debug catalog`**: Inspect catalog state offline directly from object storage; no running server required. ##### InfluxDB 3 Enterprise Updates All Core updates are included in Enterprise. The following are exclusive to Enterprise. Many of these require the new performance update preview (in beta); if using these features, they should not be included in production environments yet. **Row-level deletion**: Delete rows by time range and tag predicates with `influxdb3 delete rows`. Deletion is asynchronous and applied by the compactor. Monitor with the `system.row_deletes` table. Requires `--use-pacha-tree`. **Backup and restore**: Full backup and restore management via new `influxdb3 create/status/show/delete/cancel backup` and `restore` commands, plus matching `/api/v3/enterprise/backup` and `/restore` endpoints. Requires `--use-pacha-tree` and a compactor node with an admin token. **Bulk import**: Import generic (non-IOx) Parquet files with `influxdb3 import upload`, mapping columns to InfluxDB types via `--column` flags. Track jobs with `influxdb3 import list`. **User auth and RBAC (preview)**: Multi-user authentication with username/password → JWTs, optional OAuth/OIDC, and three built-in roles (Admin, Auditor, Member). Off by default (`--without-user-auth true`). **Object-store license portability**: Licenses are no longer bound to object-store config (type, bucket, endpoint, region) — validation enforces only signature, expiry, and licensed core count. You can move buckets or stores with the same license. **Observability**: 36 new `influxdb3_compactor_*` Prometheus metrics, with `influxdb3_compactor_snapshot_lag_seconds` as the primary health signal. ##### Breaking Changes - **Catalog v3 migration is one-way**: Back up your catalog before upgrading (see above). - **`--pt-partition-count` renamed to `--pt-shard-count`**; there's no alias, so update startup scripts. - **`/api/v2/write` returns `403`** (was `401`) for valid tokens lacking write permission; line-protocol parse errors now return `400` (was `500`). ###### Bug Fixes - Compaction stability improvements (ingest-time, deadlock/write-amplification, gen1 orphaning, and upgrade-blocking fixes), plus several other bug fixes and performance improvements. - Many other bug fixes and performance improvements **Full Changelog**: https://github.com/influxdata/influxdb/compare/v3.9.3...v3.10.0 ### v3.9.0 — v3.9.0 | 04-02-26 - Date: 2026-04-03 - Version: v3.9.0 - Original notes: https://github.com/influxdata/influxdb/releases/tag/v3.9.0 - Permalink: https://whatsnew.fyi/product/influxdb/releases/v3.9.0 - **changed** — Upgrade the embedded DataFusion query engine to DF 51 for more efficient query execution - **changed** — Update the bundled Python runtime for processing engine plugins with the latest security and bug fixes - **added** — Product identity in HTTP responses, metrics, HTTP response headers, and metadata now distinguish between Core and Enterprise builds - **fixed** — Background resources such as processing engine triggers are now cleanly decommissioned when a database is removed The following are some highlighted updates with the newest release for InfluxDB 3 Core. Learn more via our full [Release Notes](https://docs.influxdata.com/influxdb3/core/release-notes/). Note: This is the first GitHub "release" in a while (since 3.4.0), however there have been many releases since then; you can find those additional notes in the Release Notes as well to learn about all of what has been updated. These changes reflect the differences between 3.8.4 and 3.9.0. ##### Updates **DataFusion upgrade**: Upgraded the embedded DataFusion query engine to DF 51 for more efficient query execution. **Python runtime upgrade**: Updated the bundled Python runtime for processing engine plugins with the latest security and bug fixes. **Product identity in HTTP responses**: Metrics, HTTP response headers, and metadata now distinguish between Core and Enterprise builds. **Database lifecycle hardening**: Background resources such as processing engine triggers are now cleanly decommissioned when a database is removed. ###### Bug Fixes - Several bug fixes and performance improvements **Full Changelog**: https://github.com/influxdata/influxdb/compare/v3.8.3...v3.9.0 ### v3.4.0 — v3.4.0 | 08-26-25 - Date: 2025-08-27 - Version: v3.4.0 - Original notes: https://github.com/influxdata/influxdb/releases/tag/v3.4.0 - Permalink: https://whatsnew.fyi/product/influxdb/releases/v3.4.0 - **added** — Generate authentication tokens offline that can be loaded by the database at runtime if the tokens do not already exist for automated deployments and containerized environments - **added** — Specify the Azure endpoint for object-store connections using the --azure-endpoint parameter - **added** — Specify the no_sync option via the --no-sync parameter on CLI write commands - **fixed** — Tag and field names are validated when creating tables - **fixed** — Using GROUP BY twice on the same column no longer causes incorrect data - **changed** — TableIndexCache log output is now less verbose - **changed** — WAL replay concurrency limit now defaults to number of CPU cores to prevent possible OOM - **security** — Removed unsafe signal_handler code The following are some highlighted updates with the newest release for InfluxDB 3 Core. Learn more via our full [Release Notes](https://docs.influxdata.com/influxdb3/core/release-notes/). ##### Updates **Token Provisioning**: You can now generate authentication tokens offline that can then be loaded up by the database at runtime if the tokens do not already exist, which works great for automated deployments and containerized environments. ([#26734](https://github.com/influxdata/influxdb/pull/26734)) **Azure Endpoint**: You can now specify the Azure endpoint for object-store connections using the `--azure-endpoint` parameter ([#26687](https://github.com/influxdata/influxdb/pull/26687)) **No_Sync via CLI**: The no_sync option can now be specified with the `--no-sync` parameter via the CLI on write commands ([#26703](https://github.com/influxdata/influxdb/pull/26703)) ###### Bug Fixes - Tag and field names are validated when creating tables ([#26641](https://github.com/influxdata/influxdb/pull/26641)) - Using GROUP BY twice on the same column no longer causes incorrect data ([#26732](https://github.com/influxdata/influxdb/pull/26732)) ###### Security & Misc - Overly verbose TableIndexCache log is now quiet ([#26709](https://github.com/influxdata/influxdb/pull/26709)) - WAL replay concurrency limit now defaults to number of CPU cores, preventing possible OOM ([#26715](https://github.com/influxdata/influxdb/issues/26716)) - Unsafe signal_handler code removed ([#26685](https://github.com/influxdata/influxdb/pull/26685)) - Python version upgraded to 3.13.7-20250818 ([#26686](https://github.com/influxdata/influxdb/pull/26686), [#26700](https://github.com/influxdata/influxdb/pull/26700)) **Full Changelog**: https://github.com/influxdata/influxdb/compare/v3.3.0...v3.4.0 ### v3.3.0 — v3.3.0 | 07-30-25 - Date: 2025-07-30 - Version: v3.3.0 - Original notes: https://github.com/influxdata/influxdb/releases/tag/v3.3.0 - Permalink: https://whatsnew.fyi/product/influxdb/releases/v3.3.0 - **added** — Add admin token recovery server that allows regenerating lost admin tokens without existing authentication - **added** — Add --admin-token-recovery-http-bind option for running recovery server on separate port with automatic shutdown after successful token regeneration - **added** — Access trigger arguments for Process Engine triggers using the system.processing_engine_trigger_arguments table - **added** — Pass the git hash in build.rs using environment variables - **fixed** — Fix URL encoded table name handling failures - **fixed** — Allow hard deletion of existing soft-deleted schema - **fixed** — Fix AWS S3 API error handling when tokens are expired - **fixed** — Set nanosecond precision as default for V1 query API CSV output - **fixed** — Mark --object-store CLI argument as explicitly required - **fixed** — Add help text for the new update subcommand The following are some highlighted updates with the newest release for InfluxDB 3 Core. Learn more via our full [Release Notes](https://docs.influxdata.com/influxdb3/core/release-notes/). ##### Updates **Authentication and security:** Add admin token recovery server that allows regenerating lost admin tokens without existing authentication. Includes new `--admin-token-recovery-http-bind` option for running recovery server on separate port, with automatic shutdown after successful token regeneration ([#26594](https://github.com/influxdata/influxdb/pull/26594)) **Process Engine Trigger Arguments:** You can access the trigger arguments for Process Engine triggers using the `system.processing_engine_trigger_arguments` table [#26604] **Passing git hash via env:** Using environment variables, you can now pass the git hash in build.rs [#25266] ##### Fixes **Database reliability:** - Fix URL encoded table name handling failures ([#26586](https://github.com/influxdata/influxdb/pull/26586)) - Allow hard deletion of existing soft-deleted schema ([#26574](https://github.com/influxdata/influxdb/pull/26574)) **Authentication:** Fix AWS S3 API error handling when tokens are expired ([#1013](https://github.com/influxdata/influxdb/pull/1013)) **Query processing:** Set nanosecond precision as default for V1 query API CSV output ([#26577](https://github.com/influxdata/influxdb/pull/26577)) **CLI reliability:** - Mark --object-store CLI argument as explicitly required ([#26575](https://github.com/influxdata/influxdb/pull/26575)) - Add help text for the new update subcommand ([#26569](https://github.com/influxdata/influxdb/pull/26569)) ##### New Contributors * @pfactum made their first contribution in https://github.com/influxdata/influxdb/pull/26618 **Full Changelog**: https://github.com/influxdata/influxdb/compare/v3.2.1...v3.3.0 ### v3.0.3 — v3.0.3 | 05-16-25 - Date: 2025-05-16 - Version: v3.0.3 - Original notes: https://github.com/influxdata/influxdb/releases/tag/v3.0.3 - Permalink: https://whatsnew.fyi/product/influxdb/releases/v3.0.3 - **fixed** — Operator tokens can no longer be deleted Learn more via our full [Release Notes](https://docs.influxdata.com/influxdb3/core/release-notes/). ###### Fixes Operator tokens can no longer be deleted. [#26418] **Full Changelog**: https://github.com/influxdata/influxdb/compare/v3.0.2...v3.0.3