Enterprise Analytics Release Notes
- reference
Release 2.2 (June 2026)
Enterprise Analytics 2.2, released in June 2026, introduces the following new features:
-
Google Cloud Storage Support
Google Cloud Storage (GCS) is now supported as both an underlying storage layer for deployments and as an external data source. You can query files stored in GCS directly using external collections, and export processed results back to GCS using the COPY TO statement.
For more information, see Google Cloud Storage, Query Data in Google Cloud Storage, and COPY TO External Data Store Statements.
-
Apache Iceberg Support
Enterprise Analytics now supports read-only access to Apache Iceberg. You can register supported catalogs — such as AWS Glue and BigLake Metastore — and directly query Iceberg table data stored in external object storage using external collections.
For more information, see Apache Iceberg Support.
-
Data Streaming from Oracle and SQL Server
Enterprise Analytics now streams continuous, row-level data changes from Oracle and SQL Server databases directly into your collections. Powered by Kafka links and Debezium connectors, this integration captures operational updates in real time with full CDC fidelity.
For more information, see Stream CDC Data from Oracle and Stream CDC Data from SQL Server.
-
SQL++ UPDATE Statement
Enterprise Analytics introduces the
UPDATEstatement, which enables you to modify documents in standalone and remote collections. The statement supports updating scalar values, nested fields, and array elements, and accepts aWHEREclause to filter the documents to update.For more information, see UPDATE Statement.
-
Index Advisor
The Index Advisor analyzes SQL++ queries and recommends secondary indexes that can improve query execution performance.
For more information, see Index Advisor.
-
Index-Only Query Plans
Enterprise Analytics now supports index-only query plans, allowing the query engine to serve requests entirely from index data when a covered index is available, accelerating response times by eliminating the need to fetch the underlying records.
For more information, see Using Indexes.
-
JWT Authentication
Enterprise Analytics adds support for JSON Web Token (JWT) authentication. JWT tokens can be used to authenticate REST API calls and query requests, including tokens issued by external identity providers. External users can also be granted Enterprise Analytics RBAC roles without requiring a local Couchbase account.
For more information, see Configure JWT Authentication.
-
Asynchronous REST API
Enterprise Analytics now supports asynchronous query execution, allowing you to submit long-running queries without blocking application workflows. Applications can send requests asynchronously, poll for execution status, and retrieve the final results in a subsequent REST API call.
For more information, see Analytics Service REST API.
Issues and Improvements
The following table lists resolved issues and improvements included in this release.
| Category | Topic | Description | Issue |
|---|---|---|---|
Storage & Connectivity |
GCS and S3 HTTP connection settings not honored |
Cloud HTTP connection idle timeout and maximum lifetime settings were not applied to GCS and S3 clients. Connection behavior now correctly reflects the configured values. |
|
Static credential rotation after driver restart |
Updated static credentials were not applied until the driver was restarted. Credential rotation now takes effect without requiring a restart. |
||
Azure hierarchical namespace validation |
Azure Blob Storage connection validation now correctly checks whether the hierarchical namespace is compatibly configured before allowing link creation. |
||
Parquet COPY INTO failure for Azure Blob Storage |
COPY INTO for Parquet files stored in Azure Blob Storage failed with an internal error. The statement now executes correctly against Azure Blob Storage. |
||
Cloud storage settings visible without restart |
Updates to cloud storage settings were not reflected in node diagnostics output until the driver was restarted. Diagnostic output now reflects configuration changes without requiring a restart. |
||
S3-compatible storage change detection mode configurable |
External links to S3-compatible storage that do not support ETags could fail because the default change detection mode ( |
||
Parquet |
The |
||
Query Engine & Indexes |
LEFT JOIN alias in correlated NOT EXISTS |
A NullPointerException could occur when a LEFT JOIN alias was referenced inside a correlated NOT EXISTS clause. The query now executes correctly. |
|
Plan instability on predicate switch |
Switching between equivalent predicates could produce different query plans for the same query. Plans are now stable for equivalent predicate forms. |
||
Cost-based optimizer secondary index costing |
The cost-based optimizer could fall back to a full data scan instead of using available secondary indexes. Index costing has been corrected to prevent unnecessary scan fallback. |
||
B-tree and Array index intersection |
B-tree and Array indexes were not intersected during query planning, preventing optimal use of multiple indexes. Index intersection is now applied correctly. |
||
Cluster Management |
Link stuck in inconsistent state after drop |
A link could become permanently stuck in an inconsistent state (error CBAS0096) after DROP LINK was issued on a running link. Link lifecycle handling has been corrected. |
|
Recovery loop on KV collection recreate |
Recreating a KV collection could trigger a recovery loop due to inconsistent partition state. The restart logic now handles this case correctly. |
||
DCP ingestion state lost on resume |
Resuming DCP ingestion after a restart could fail because the DCP state was not found. Ingestion state is now correctly preserved and restored across restarts. |
||
Kafka collection metadata cleanup on drop |
Dropping a Kafka-linked collection did not fully remove the associated metadata, leaving stale entries. Metadata is now fully cleaned up when a collection is dropped. |
||
Partition reassignment timing during node recovery |
Partitions could be reassigned before the required access token expiry interval elapsed during node recovery, causing access errors. Partition reassignment now waits for the interval to elapse before proceeding. |
||
Data Processing |
Multi-byte characters corrupted in CSV output |
Multi-byte and emoji characters were corrupted in CSV query output. Character encoding is now handled correctly in CSV output. |
|
COPY TO fails with INTERVAL type columns |
A COPY TO statement that included a column of INTERVAL type caused an internal error. The type is now handled correctly. |
Known Issues
The following issues are known to affect Enterprise Analytics 2.2.
Query Engine
Scan Consistency Client Hangs (MB-72484)
request_plus scan consistency queries hang or time out in Enterprise Analytics.
Root Cause: DcpStateTracker uses the IO device count instead of the storage partition count to determine when the dataset state is complete.
On Enterprise Analytics, a node with 2 IO devices may host 8 storage partitions.
The partition count never matches the IO device count, so the seqno is never reported as complete, causing request_plus queries to hang indefinitely.
Symptoms:
-
request_plusqueries time out or hang without returning results. -
Enterprise Analytics returns a scan wait timeout error.
Workaround: No workaround available.
Apache Iceberg Support
Iceberg Discovery Functions Return Internal Error Instead of Specific Error Messages (MB-72418)
Certain errors encountered during Iceberg catalog discovery return a generic internal error instead of a specific error message.
Root Cause: Iceberg data source functions do not handle all error types correctly.
Symptoms:
-
list_iceberg_catalogs(),list_iceberg_namespaces(),list_iceberg_tables(), orlist_iceberg_snapshots()returnsInternal Errorwhen an error occurs.
Workaround:
No workaround available.
To identify the underlying error, check analytics_info.log for the statement targeting the relevant data source function — the error is logged there.
Alternatively, collect logs and share with Couchbase Support.
list_iceberg_catalogs() Returns namespace Instead of catalog as the Field Name (MB-72486)
list_iceberg_catalogs() returns the catalog name under the field namespace instead of catalog.
Root Cause: The data source function uses an incorrect field name for the catalog identifier. Only the data source function is affected; the list catalogs REST API returns the correct field name.
Symptoms:
-
list_iceberg_catalogs()returns{"namespace": "myCatalogName"}instead of{"catalog": "myCatalogName"}.
Workaround: Use the list catalogs REST API, which returns the correct field name.
Storage & Connectivity
GCS Link applicationDefaultCredentials Accepts a String Instead of a Boolean (MB-72371)
The applicationDefaultCredentials parameter for GCS links accepts only the string "true", not a JSON boolean.
Root Cause: applicationDefaultCredentials is modeled and validated as a string, rather than a boolean.
This is inconsistent with other boolean link parameters, such as disableSslVerify.
Symptoms:
-
Setting
applicationDefaultCredentialstofalsereturnsINVALID_PARAM_VALUE_ALLOWED_VALUE. -
Application Default Credentials cannot be explicitly disabled by setting the parameter to
false.
Workaround:
Omit applicationDefaultCredentials from the request body to disable Application Default Credentials.
Unique Identifiers Used as Field Names Cause Schema Growth and Memory Errors (MB-72487)
Schemas grow without bound when unique identifiers, such as UUID or transaction ID values, are used as JSON field names.
Root Cause: Each unique field name creates a new column in the column storage layer. Thousands of unique field names cause the schema to grow to thousands of columns, leading to OutOfMemory errors and slow merge operations.
Symptoms:
-
OutOfMemory errors occur during ingestion.
-
Ingestion pipeline performance degrades.
-
Memory usage increases, approaching the memory quota.
Workaround: Avoid using unique identifiers as JSON field names. Store unique identifiers as field values instead.
Data Formats
Avro Format Treats NULL Values as MISSING (MB-72320)
When Enterprise Analytics reads Avro files, fields with null values are omitted from results instead of returning null.
Root Cause:
The Avro parser handles NULL values as MISSING, causing null fields to be absent from query results.
Symptoms:
-
Fields expected to return
nullare absent from query results.
Workaround:
Use IFMISSING() to convert missing fields back to null:
SELECT IFMISSING(nullableField, null) AS nullableField FROM myCollection;
Release 2.1 (November 2025)
Enterprise Analytics 2.1, a self-managed version, was released in November 2025. This release contains the following features:
-
Microsoft Azure Support for Enterprise Analytics
-
Enterprise Analytics expands deployment flexibility by introducing native support for Microsoft Azure. Customers can now use Azure Blob Storage as the storage layer for their deployments.
For more information, see Azure Blob Storage.
-
External collections now support Azure Blob Storage. This feature allows external query access, enabling direct querying of data files residing in external object storage, without requiring data movement.
For more information, see Set Up an External Data Source.
-
The COPY TO statement can now write processed data back to Azure Blob Storage.
For more information, see COPY TO External Data Store Statements.
-
-
Unlimited column support
Enterprise Analytics removes previous constraints on schema width by introducing unlimited column support.
For more information, see View Metadata for a Collection.
-
Data transformation during ingestion
Enterprise Analytics introduces the ability to perform lightweight data transformations directly during ingestion using SQL++ User-Defined Functions (UDFs).
For more information, see User-Defined Functions.
Release 2.0 (August 2025)
Couchbase is pleased to announce the launch of Enterprise Analytics, our robust data management solution that enables developers and data platform teams to create responsive analytic applications that adapt to rapidly changing data needs. Enterprise Analytics delivers the powerful capabilities seen in our cloud offering, Capella Analytics (formerly Capella Columnar), but in a new form that’s optimized for on-premise and self-managed deployments.
Enterprise Analytics 2.0 includes the following features:
-
A column-oriented, Log-Structured Merge (LSM) tree based storage engine built to deliver scalable analytic performance and capacity in customers’ on-premise and/or self-managed environments. Enterprise Analytics has a shared-nothing compute and shared-object storage architecture that allows customers to scale compute resources independently of storage.
-
An enhanced MPP-based query engine, enabling scalable, real-time analytical query computation.
-
A cost-based query optimizer for improved query planning without user intervention.
-
A SQL++ based path for writing the results of a query back to the Couchbase Operational data service to support adaptive applications.
-
Zero ETL for incoming data, with real-time ingestion capabilities powered by Confluent Kafka, that provide the ability to connect, capture, and extract data from nearly any database or application.
-
Data Lakehouse capabilities that enable direct querying from Amazon S3 and S3-compatible storage, with support for formats including JSON, Parquet, Avro, CSV, TSV, and Delta tables, providing the ability for queries to combine external data with other data in Enterprise Analytics.
-
Native SQL-based support for Tableau, PowerBI, and Apache Superset for building business reports, visualizations, and dashboards.