v26.1
This article describes the release notes for VeloDB Core v26.1.
Note VeloDB Core v26.1 was developed based on Apache Doris v4.1.
Public Preview The v26.1 series is in Public Preview: it is available for at-scale evaluation but is not yet GA. See Version Mapping for how VeloDB Cloud releases map to Apache Doris versions.
v26.1.3 (September 24, 2026)
This release incorporates Apache Doris v4.1.4 along with VeloDB-specific enhancements.
New Features
- Added passwordless Google Cloud IAM authentication for S3 Load from Google Cloud Storage. Supported modes include Application Default Credentials, Compute Engine credentials, and service account impersonation. Existing access-key authentication remains supported.
- Added read-only access to Lance datasets through filesystem and REST Namespace catalogs. The integration supports predicate pushdown, direct reads through S3 and local table-valued functions, and distributed vector similarity search through
vector_search()with distance values exposed in the_distancecolumn.SHOW INDEXis supported for filesystem catalogs. Writing to Lance andSHOW INDEXfor REST catalogs are not supported in this release. - Extended
EMBEDto generate embeddings from image, video, and audio files supplied as JSON input. Files can use direct HTTP or HTTPS URLs or S3-compatible URIs, for which a presigned URL is generated. A configured AI Resource is required, and the supported media types depend on the selected AI provider. - Added Paimon table writes through
INSERT INTO ... SELECT,INSERT INTO ... VALUES, andINSERT OVERWRITE, together with schema evolution for adding, dropping, renaming, modifying, and reordering columns. - Added row-level
UPDATE,DELETE, andMERGE INTOfor supported Paimon primary-key tables. Unsupported table types and merge engines are rejected during analysis with an explicit error. - Added
ALTER TABLE ... SET (...)for Iceberg and Paimon external tables. Multiple connector properties are applied atomically, and failed remote updates no longer leave partially refreshed frontend metadata. - Added support for Iceberg V3 default values.
- Added native Variant V2 execution and segment storage, including deep object projection and Variant V2 reads and writes through supported Iceberg and Paimon paths.
- Added approximate nearest neighbor indexes for unique-key merge-on-write tables. Merge-on-read tables remain unsupported for ANN indexes.
- Added the
require_partition_filterSQL Block Rule option. It can reject scans of partitioned internal or Hive tables when a query does not contain a usable partition predicate. - Added adaptive random-bucket routing for loads into random-distribution tables, reducing the number of tablet writers and the memory pressure created by a single load while distributing larger loads across available buckets.
Improvements
- Improved concurrent writes to Hive, Iceberg, and Paimon tables by routing rows according to connector partition and bucket semantics. This reduces unnecessary small files and preserves fixed-bucket ownership for Paimon writes.
- Improved large Parquet and ORC scans by allowing eligible source splits to be refined into row-group or stripe tasks on the execution node, increasing scan concurrency without changing query results.
- Improved Parquet scan performance with multi-column Page Index pruning, faster direct predicate filtering, faster fixed-binary decimal decoding, and safer nested-column pruning.
- Added expression-based ZoneMap pruning for supported comparison,
IN, null-check, andstarts_withpredicates on internal and Parquet scans. - Reduced coordinator fanout for large global runtime filters by publishing them through an adaptive tree when appropriate.
- Improved join and aggregation performance through bilateral eager-aggregation pushdown, safer pre-aggregation for multi-argument distinct aggregates, and more efficient hash-join probe output.
- Improved common table expression queries by pushing eligible
LIMIToperations into the CTE producer while preventing unsafe runtime-filter pushdown. - Improved plans for
NOT IN, set operations, andREPEATby refining cardinality, distinctness, and shuffle-key estimates. - Reduced repeated planning work for external scans by reusing scan tasks within the same statement.
- Improved Paimon read and write efficiency with table caching, complex-type projection pruning, bounded JNI write memory, writer spilling, and more reliable writer-cache lifecycle management.
- Improved Variant V2 ingestion, string casts, deep projections, and reads from shredded and unshredded Parquet data.
- Improved S3 file matching by pushing down expandable glob prefixes and preserving literal file names inside alternative patterns.
- Raised the default minimum number of auto-created buckets from one to three.
- Improved Routine Load diagnostics by exposing the first task error and by reporting the error fields from the master frontend consistently through
information_schema.routine_load_jobs. - Added the active compute group to process-list output and added queue time to audit-log records.
- Improved the performance of
md5and percentile aggregate functions and reduced string-conversion overhead for CSV and text loads. - Improved MySQL client compatibility by accepting
SHOW FUNCTION STATUSandSHOW PROCEDURE STATUSand returning an empty result when no matching metadata is available.
Bug Fixes
- Fixed several query-planner rewrites that could generate invalid or incorrect plans, including aggregation pushdown through primary-key and foreign-key joins, join pull-up through
UNION ALL, semi-join transposition over mark joins, and functional-dependency derivation from the outer side of a join. - Fixed eager-aggregation pushdown mishandling nullable expressions or duplicate aggregate functions when the aggregation crossed a projection.
- Fixed
ORDER BY ... LIMITqueries using index-backed lazy materialization losing nested Variant paths or hiding row-fetch RPC failures. - Fixed pushed-down Parquet predicates producing incorrect pruning results for floating-point equality, nested nullability, or nested-column Bloom filters.
- Fixed pushed-down
MINandMAXover nullableCHARdata replacing NULL values with non-NULL payloads. - Fixed
count_substringsmatching past the end of the input string. - Fixed
COALESCEand user variables losing TIMESTAMPTZ type or value information, and fixed TIMESTAMPTZ range-partition bounds that contain a space before the time-zone offset. - Fixed strict-mode string casts joining the bytes of a NULL row to the following row.
- Fixed
explode_bitmapterminating a backend when an expanded bitmap exceeded the 32-bit row-count limit. - Fixed queries over historical FLOAT or DOUBLE ZoneMaps failing with
NaN/Infinity not allowed in olap stringwhen a finite extreme value had been rounded beyond the representable range. New ZoneMaps preserve round-trip precision, and unreadable historical ZoneMaps are ignored for pruning instead of failing the query. - Fixed workload-group memory limits remaining stale after an elastic compute-group resize when the resource limit changed without a new workload-group version. Queries now use the refreshed memory limit instead of failing against the old cap.
- Fixed frontend memory growth and repeated metadata-checkpoint failures after compute groups were deleted. Stale per-replica routes for deleted compute groups are now removed instead of accumulating in the image.
- Fixed schema changes copying stale rowsets into the temporary tablet, which could leave an invalid version history or cause the schema-change job to fail.
- Fixed schema changes failing or leaving version gaps when compaction merged recent rowsets still needed by the schema-change job.
- Fixed merge-on-write
INSERTfailing on the first retryable delete-bitmap calculation error. It now honors the configured retry attempts. - Fixed overwritten rows reappearing in merge-on-write query results after a cloud schema change ran compaction while a tablet was not ready.
- Fixed transactional
INSERTstatements returning success after execution had failed. - Fixed backend restart recovery failing when a write-ahead log ended with an incomplete trailing record.
- Fixed forwarded Group Commit Stream Load requests failing because the forwarding path was not supported correctly.
- Fixed Stream Load being rejected by a global privilege precheck when the user had the required database-level or table-level
LOADprivilege. - Fixed Stream Load planning and routing through a virtual compute group failing to select the healthy backend for Group Commit.
- Fixed Stream Load and Routine Load into random-distribution tables failing with
unknown partition channelwhen the executing backend did not own the initially selected tablet. - Fixed
INSERT OVERWRITEwith automatically created partitions selecting backend locations from another compute group. - Fixed Arrow Stream Load failing to match source columns whose names contain uppercase letters.
- Fixed a load continuing against a backend that restarted during the transaction. The load now fails promptly instead of waiting on stale state.
- Fixed long-running Broker Load jobs failing with
File not found in global indexwhen a packed-file mapping expired before the active writer completed. The mapping now remains valid for the writer lifetime. - Fixed Broker Load jobs failing to recover when the associated transaction had already become visible, and fixed retrying pending Broker Load jobs conflicting with their own labels.
- Fixed failed external-table writes leaving orphaned data files after the connector reported a write error.
- Fixed active Export jobs and their label mappings being removed during frontend cleanup.
- Fixed incremental load streams waiting on the wrong replica quorum, which could cause a load to fail or hang after a partial stream failure.
- Fixed
INSERToperations being falsely rejected for insufficient quorum when distributed replica commit reports were returned to different source backends. - Fixed MySQL CDC streaming jobs potentially losing changes after a keepalive reconnect when GTID mode was not enabled.
- Fixed MySQL CDC full and incremental synchronization converting Chinese and other non-ASCII characters to question marks when the CDC process default character set was not UTF-8. CDC Stream Load records are now encoded explicitly as UTF-8.
- Fixed CDC operations running with the scheduler identity instead of the identity of the user who created the Streaming Job.
- Fixed Kafka Routine Load using adaptive batching even when source lag was low, which could add unnecessary latency for small backlogs.
- Fixed Kafka Routine Load metadata requests leaving the job's assigned compute group.
- Fixed Paimon queries returning an incorrect row count when partition metadata was lost or mixed across splits and external-catalog refreshes.
- Fixed Paimon partitions whose values contain special characters being read or written through an incorrect physical path.
- Fixed Paimon writers leaking JNI lifecycle state, exceeding bounded memory, or observing stale cached write state during spill and retry paths.
- Fixed Iceberg merge-on-read scans terminating a backend when row-ID lazy materialization was used.
- Fixed Iceberg scans terminating a backend while evaluating partition predicates.
- Fixed Iceberg scans using the wrong file format from a split descriptor in mixed-format planning paths.
- Fixed Iceberg queries of Variant subpaths failing during planning, and prevented Variant metadata pruning from bypassing earlier error-producing predicates.
- Fixed Hive partition refreshes leaving stale file metadata when the partition cache did not contain the refreshed partition.
- Fixed JDBC catalog schema lookup failing when the remote table name was missing from the returned metadata.
- Fixed JDBC catalogs misclassifying a Doris-compatible endpoint as MySQL when product branding changed the server version comment. Detection now prefers a stable Doris server identity and falls back for older endpoints.
- Fixed Arrow Flight SQL prepared statements leaking frontend direct memory when temporary Arrow roots were not closed.
- Fixed Arrow Flight SQL
GetTablesreturning an incompatible schema and fixed DATETIME values being exported with time-zone semantics instead of as naive Arrow timestamps. - Fixed
information_schema.columnsreturning columns from an unrelated table when the requested table was missing during a batched metadata lookup. - Fixed
SHOW TABLETSapplyingORDER BYandLIMITin the wrong order. - Fixed materialized views being rebuilt in full when one partition had no snapshot, and fixed refresh state becoming stale after
excluded_trigger_tableschanged. - Fixed materialized-view null-rejection compensation failing with an invalid slot cast.
- Fixed authentication and Stream Load diagnostics writing passwords, tokens, or authentication codes to logs. Sensitive values are now masked while non-sensitive request context remains available.
- Fixed Kafka Routine Load properties, encryption-key metadata, and Arrow Flight bearer tokens being exposed in diagnostic or schema output.
- Fixed HTTP SQL requests using a broad HTTP privilege check instead of the privilege required by the submitted statement.
- Fixed audit-log Stream Load records allowing control characters to forge additional record boundaries.
- Fixed cloud schema views and
SHOW PARTITIONSreporting inconsistent local and remote storage sizes or replica information. - Fixed empty inverted-index files not being persisted and failed index writes leaving orphaned files.
- Fixed inverted-index predicates crashing when the query context was missing and fixed invalid indexed terms containing an embedded NUL byte being accepted.
v26.1.2 (August 17, 2026)
This release updates the Apache Doris base of the v26.1 series from 4.1.2 to 4.1.3 and adds VeloDB-specific enhancements. It is primarily a stabilization release that adds a few connector and SQL capabilities and fixes correctness, crash, and data-loading issues carried over from the Apache Doris 4.1 line.
New Features
- Added Python user-defined functions, including scalar UDFs, aggregate UDAFs, and table UDTFs, so you can implement custom logic in Python in addition to Java.
- Added the
is_valid_utf8function, which returns whether a string is valid UTF-8. - Added support for zstd-compressed Stream Load, so clients can send zstd payloads in addition to the previously supported compression formats.
- Added the Iceberg
rewrite_manifestsprocedure for compacting the manifest files of an Iceberg table. - Added LZ4 compression for the Iceberg and Hive Parquet and ORC writers.
- Added
SHOW ROUTINE LOAD TASK FOR <db>.<job_name>for listing the running tasks of a specific Routine Load job. - Added support for
AES_ENCRYPTwith an internal customENCRYPTKEYin Stream Load and Routine Load column transformations.
Improvements
- Added table-level, event-driven cache warm-up, so newly written data can be warmed into the local cache as it lands and cold-read latency after ingestion is reduced.
- Improved the performance of queries that join external catalog tables with internal tables by preloading external table metadata before taking internal table locks.
- Extended workload policies with a remote scan bytes limit and username-based backend selection, giving finer control over how workloads consume compute resources.
- Added a configurable return mode for INSERT statements whose publish phase times out, so ETL jobs can choose whether a slow publish returns success or an error.
- Routine Load now reports consumption lag more promptly.
Bug Fixes
- Fixed several query planner issues that could return incorrect results, including aggregation with duplicate column aliases, set operations such as UNION, INTERSECT, and EXCEPT, cast pushdown through UNION DISTINCT, an over-eager null-aware anti-join rewrite, data-trait propagation through CTE anchors, an unsafe GROUP BY simplification, incorrect
convert_tzpartition pruning across daylight-saving transitions, and a rewrite that convertedORDER BY ... LIMITintoMAXand could drop rows. - Fixed
WITH RECURSIVEqueries returning incomplete results because recursive blocks were not sent to every scan instance. - Fixed
LIMIT ... OFFSETreturning wrong results when a merged Top-N limit was not clamped by the parent offset. - Fixed window functions returning wrong results, including
nth_valuewith an upper-bounded frame andCOUNT(DISTINCT)used as a window function. - Fixed scalar and array function issues, including
from_base64andto_base64output buffer sizing,MAKE_SETconstant folding,concat_wson nullable arrays,split_by_delimiterdropping backslash escapes,avg_weightedwhen the sum of weights is zero,array_sortlambda argument validation, boolean casts inarray_firstandarray_last, and a heap overflow inretentionwhen given more than 32 arguments. - Fixed date and time handling, including casts of legacy v1 date strings,
monthon nullable DATETIMEV2 literals, and DateTimeV2 scale not being preserved when exporting to CSV withOUTFILE. - Fixed a SIGFPE crash in integer division when dividing the signed minimum value.
- Fixed several Variant column issues, including compaction compatibility and empty-key preservation for nested Variant data, truncated sparse-path statistics when reading Variant,
element_atreturning a parsed value instead of the raw string for scalar-string Variants, JSON objects being lost when casting JSONB to Variant, and control characters not being escaped in JSONB path access. - Fixed group commit losing rows when a reused prepared statement shared a single load id.
- Fixed load transactions being aborted when a newer transaction reused the same label.
- Fixed Stream Load failing to parse IPv6 hosts, and fixed
load_to_single_tabletrouting on auto-partitioned tables. - Fixed partial column updates failing on tables that have generated columns.
- Fixed a backend crash from an unprotected tablet-writer map lookup in the load channel, and a delta-writer state lifetime issue during loading.
- Fixed MaxCompute catalog queries returning wrong results because of IN-predicate pushdown polarity and partition specs being parsed by position instead of by name.
- Fixed Iceberg issues, including a null pointer error in
COUNT(*)pushdown when the snapshot summary omitted row counters, nested decimal precision promotion, and binary columns being written with the wrong Arrow type. - Fixed JDBC catalog queries against SQL Server and Oracle pushing boolean predicates as
TRUE/FALSEinstead of1/0, and hardened JDBC catalog driver URL validation. - Fixed Hive text-format reads dropping empty records, an Avro reader crash on null values, and a backend crash on the external-table scan error path.
- Fixed inverted index reads spanning multiple segments, which could affect full-text search results.
- Fixed the
cdc_streamtable function not honoring the delete sign for CDC sources. - Fixed cloud restore so that restoring a table with
light_schema_change=falseis rejected, and table properties and partition information are rewritten correctly during restore. - Fixed materialized view refresh regressions involving excluded trigger tables and backward-compatible base-view lookups.
- Fixed
CREATE TABLEaccepting invalid IPv4 default values.
v26.1.1 (July 9, 2026)
This is the first release in the v26.1 series. It is based on Apache Doris v4.1 (build base 4.1.2-rc01), includes the fixes delivered through v26.0.4, and adds VeloDB-specific enhancements. The v26.1 series brings the full Apache Doris 4.1 feature set, so this note describes the 4.1 capabilities as they are exposed in VeloDB Core.
New Features
- Added the
search()function, which runs full-text search directly in SQL with an Elasticsearchquery_string-compatible DSL. It supports the TERM, PHRASE, WILDCARD, REGEXP, PREFIX, and NESTED operators, BM25 relevance scoring through thescore()column, multi-field search, and searching inside Variant JSON arrays without flattening them first. - Added the IVF approximate nearest neighbor vector index (
"index_type"="ivf") as a lower-memory alternative to HNSW for large-scale vector search, together with an on-disk variant ("index_type"="ivf_on_disk") for vector sets whose indexes are larger than available memory. - Added vector index quantization, including INT8 scalar, INT4 scalar, and product quantization, which reduces vector index memory by roughly 4 to 8 times at a small cost in recall.
- Added DOC mode for Variant columns, which keeps the whole JSON document as written and postpones splitting it into per-field storage until compaction. This lowers the cost of writing wide JSON documents in small batches.
- Added the V3 storage format (
"storage_format"="V3") for ultra-wide tables. It stores column metadata separately instead of packing it all at the end of each file, so tables that have tens of thousands of columns or many Variant subcolumns open faster and perform better on random reads and point queries. - Added native storage of very large JSON documents, up to roughly 100 MB each, in Variant columns. Long documents such as full conversation histories, agent execution traces, and RAG context can be stored and queried directly, without splitting them across rows or external files.
- Added Condition Cache, which caches the result of a filter condition on a segment of data and reuses it when the same filter runs again over unchanged data, so repeated queries with the same filter run faster.
- Added recursive common table expressions through
WITH RECURSIVEfor hierarchical and graph-style queries. - Added
UNNESTsyntax for expanding arrays and other nested values into rows. - Added the standard SQL
MERGE INTOstatement for performing insert, update, and delete against a table in a single statement. - Added the
json_eachandjson_each_texttable functions for expanding JSON objects into key-value rows. - Added the
array_cross_productfunction for calculating the Cartesian product of multiple arrays. - Added the
murmur_hash3_128scalar function, theexponential_moving_averageaggregate function, and DataSketches HLL aggregate functions. - Added
current_databaseas an alias for the existingdatabase()function. - Added full read and write support for Iceberg V2 and V3 tables, including row-level
UPDATE,DELETE, andMERGE INTO, together with reads of Iceberg V3 deletion vectors and row lineage. - Added Iceberg JDBC catalogs, sorted writes, static partition overwrite, and the
publish_changesprocedure. - Added Paimon JDBC catalogs and SQL operations for creating and dropping Paimon databases and tables.
- Added
CREATE TABLE,DROP TABLE, andINSERT INTOsupport for MaxCompute external catalogs. - Added a Parquet metadata table-valued function for inspecting row groups, column statistics, and other file metadata through SQL.
- Added
INSERT INTOsupport for file table-valued functions, allowing query results to be exported to HDFS or S3. - Added the
cdc_streamtable-valued function for reading MySQL and PostgreSQL change streams and using them as Streaming Job sources. - Added AWS MSK IAM authentication for Kafka Routine Load jobs.
Improvements
- Improved complex join and aggregation queries with aggregation pushdown through joins, which pre-aggregates each join input before the join to reduce the number of rows, the memory used, and the latency.
- Improved queries that compute several groupings at once (such as
GROUPING SETS,ROLLUP, andCUBE) by computing the most detailed grouping first and deriving the coarser ones from it, which reduces the work done. - Improved queries that read a single field inside a nested column (such as a field of a
STRUCT) so that only that field is read from storage, for both internal tables and ORC and Parquet external tables. - Improved queries that contain
CASE WHENthrough branch merging, branch elimination, and common subexpression extraction. - Added Query Cache, which caches the intermediate aggregation result of a query and reuses it when the same aggregation runs again over unchanged data.
- Improved execution across common operators and functions, including smarter join order and data shuffle selection and faster
LIKE,FROM_UNIXTIME, andCOUNT, which lowers overall query memory use and latency. - Enhanced spill to disk for large joins, aggregations, and sorts. The hash join, aggregation, and sort operators can now spill intermediate data to local disk in multiple levels when memory runs low, so memory-intensive queries finish on limited memory instead of failing.
- Improved large table scan throughput and memory efficiency by sizing scan batches adaptively.
- Improved vector search performance by letting an approximate nearest neighbor query read only the vector index, avoiding reads of the original vector column.
- Improved repeated Parquet queries by reusing decompressed data pages, added an Iceberg manifest cache that avoids repeatedly parsing the same manifest files during query planning, and improved Paimon query performance through a native reader.
- Sped up
ORDER BY ... LIMITqueries on indexed columns by reading the full row data only for the rows that end up in the result, and improvedexplodeandposexplodeexecution. - Improved storage of very wide JSON documents in which most keys are queried rarely. Those infrequently used keys are now spread across several internal columns and their reads are cached, which reduces read amplification and latency spikes.
- Added multi-stream updates for the primary key table model, so different data streams can each update different columns of the same table and merge by their own sequence column.
- Extended Routine Load with flexible partial column update, dynamic tuning through
ALTER ROUTINE LOAD, and adaptive batch sizing based on backlog. - Added adaptive MemTable flush scheduling, which matches write concurrency to the current cluster load in high-write scenarios.
- Extended MySQL and PostgreSQL CDC Streaming Jobs with custom table mapping, snapshot-only synchronization, PostgreSQL schema-change handling, excluded columns, and additional PostgreSQL data types.
- Added explicit starting offsets, compute-group selection, structured failure reasons, and per-job lag and progress metrics for Streaming Jobs.
- Improved full-snapshot CDC reliability for large or data-skewed tables by preventing tasks that are still making progress from being timed out and retried.
- Changed
window_funnelto use the more memory-efficient v2 implementation by default, while preserving the previous implementation aswindow_funnel_v1. InFIXEDmode, rows that match no funnel condition no longer break the sequence, so affected queries may return a longer funnel chain after upgrade. - Extended multiple aggregate and array functions to accept TIMESTAMPTZ values, and extended
max_byandmin_byto support complex types. - Added unified runtime statistics and progress reporting for running queries, so you can see how far a query has progressed.
- Added the compute group to MTMV refresh task output so refresh placement can be inspected directly.
- Improved elastic scaling in the storage and compute separation architecture, so adding or removing compute completes faster and balance scheduling no longer depends on the total number of tablets.
- Added the
information_schema.file_cache_infosystem table, which reports file cache usage by tablet, backend, and cache path so you can investigate hot data and uneven cache distribution. - Added Stream Load records to the audit log, so import history can be queried and audited alongside other statements.
- Reduced storage footprint and improved cold-read performance through better column encoding and compression, including moving the default compression toward ZSTD.
- Reduced memory pressure during row-store ingestion and when parsing sparse Variant documents.
- Added a default limit of 768 buckets per partition.
CREATE TABLEandADD PARTITIONnow reject partitions that exceed this limit.
Bug Fixes
- Fixed date and time constant folding disagreeing with runtime execution for
*_difffunctions that use nullable literals or cross year 0000, fordatediffon zero dates, and forconvert_tzacross daylight-saving transitions. - Fixed
coalescereturning NULL when a nullable floating-point argument contained an unused NaN value and a later argument supplied the expected non-NULL result. - Fixed incorrect results when runtime filters were pushed through the nullable side of an outer join.
- Fixed query plans reusing pre-aggregation state across separate join branches, which could produce an incorrect plan when the branches required different aggregation behavior.
- Fixed queries against a
SELECT *view over an external table failing with anIndexOutOfBoundsExceptionafter columns were added to the source table and its metadata was refreshed. - Fixed
tokenizereturning only one row when its first argument was constant and the query scanned multiple input rows. - Fixed
json_containstreating numerically equal JSON values such as1and1.0as different, and fixed duplicate array candidates causing incorrect containment results. - Fixed
enable_insert_strictsilently changing cast behavior for INSERT statements. Insert row filtering andenable_strict_castnow operate independently. - Fixed
COM_RESET_CONNECTIONclearing the selected database and leaving other session state partially reset, which could break pooled MySQL connections after a reset. - Fixed queries failing with an invalid-precision error when reading legacy DecimalV2 data that was written by Doris versions earlier than 2.1.0.
- Fixed
MATCHrejecting aliased Variant dot subcolumns such asmsg.trace_id, and fixed nested Variant searches binding to the wrong inverted index. - Fixed array subscripts and
element_atreturning NULL when applied to a Variant subpath that the optimizer had pruned. - Fixed sparse Variant paths inferring the wrong element type for mixed-type arrays and losing TIMESTAMPTZ values during serialization.
- Fixed background compaction failing on Variant columns that hold arrays of nested JSON objects when a row's nested value was NULL or empty.
- Fixed low or zero recall for IVF and PQ vector indexes when training used only part of a segment, and fixed ANN range-search state leaking between segments. Segments with insufficient training rows now skip index creation instead of failing the write.
- Fixed
window_funnelv2 returning an incorrect longest chain inDEDUPLICATIONandFIXEDmodes when a later starting event produced a longer valid sequence. - Fixed an MTMV skipping required refresh work after
excluded_trigger_tableschanged, and fixed partitioned MTMV checks failing when the caller supplied an immutable excluded-table set. - Fixed PostgreSQL CDC jobs with multiple tables and
offset=initialpermanently losing changes during the snapshot phase, and fixed same-named tables in matching schemas causing aDuplicate keyfailure. - Fixed
cdc_streamoffsets not surviving an FE checkpoint, which could make a resumed job continue from the wrong source position. - Fixed Stream Load failing with a broken pipe during redirected requests whose body had not been consumed, and fixed backend selection failing when backend ID differences exceeded the integer range.
- Fixed JSON ingestion mapping STRUCT subfields by position instead of by name when the input field order differed from the table schema.
- Fixed workload-group queries being resumed while their memory reservation was still unavailable, which could bypass the intended pause behavior.
- Fixed client queries hanging until socket timeout when an FE master switch caused the final result packet to be lost.
- Fixed transactional
INSERT INTO ... VALUESfailing with a null pointer in multi-compute-group deployments when a backend from another compute group was selected. - Fixed a failed
ADD PARTITIONleaving stale partition metadata when rollback started after part of the catalog update had completed. - Fixed vertical compaction exhausting memory on large rowsets because available buffer capacity was calculated incorrectly.
- Fixed migrated Iceberg tables without explicit write-format properties being read with the wrong file format, and fixed Iceberg writes ignoring a configured
object-store.pathdata location. - Fixed incorrect
COUNT DISTINCTresults on Iceberg V3 row-lineage tables and fixed position-delete files being written without required Iceberg field IDs. - Fixed Iceberg writes failing when partition values contained characters that require URL encoding, and fixed large sorted Iceberg writes failing after spilling intermediate data.
- Fixed SQL Server JDBC catalogs omitting built-in schemas from
SHOW DATABASESwhen used with newer Microsoft JDBC drivers. - Fixed Paimon JDBC system-table queries failing with
No suitable driver foundwhen the query ran through the native Paimon scan path.