Release 0.298¶
Breaking Changes¶
Fix query statistics so that planningTime and finishingTime are no longer added to executionTime. executionTime is now the true execution time — how long it took the query to run the compute. It can be used to measure the efficiency of the workers without added planning time or the time spent on final steps such as partition registration. #27691
Remove configuration property
use-new-nan-definition. #27829Remove
warn-on-common-nan-patternsserver config andwarn_on_common_nan_patternssession property. The NaN definition migration is complete and these warnings are no longer needed. #27830Update the default behavior of
field_names_in_json_cast_enabledfrom false to true. Whenfield_names_in_json_cast_enabled = true, JSON fields are assigned to ROW fields by matching field names regardless of their order in the JSON object. Queries that rely on JSON field order when casting to ROW may return different results after upgrading. If your workload depends on the previous positional behavior, restore it by setting:SET SESSION field_names_in_json_cast_enabled = false;. #26833
Highlights¶
Improve materialized view query rewriting to support
HAVINGclauses. #27677Improve coordinator-to-worker communication efficiency with 20-40% smaller payload sizes and 2-3x faster serialization compared to JSON. #27486
Improve query planning performance for wide-column projections by adding fast paths that skip unnecessary processing for variable references, constants, and identity assignments across multiple optimizer rules. #27547
Add incremental refresh for materialized views in the Iceberg connector, enabling efficient partial refreshes instead of full recomputation. #26959
Add support for Azure Blob Storage (
wasb[s]://) and Azure Data Lake Storage Gen2 (abfs[s]://) in the Hive connector, with shared key and OAuth2 authentication. #25107Add
ALTER MATERIALIZED VIEW <name> SET PROPERTIES (...)SQL statement to update materialized view properties after creation. #27806Add TopN late materialization optimization for
ORDER BY ... LIMITover wide tables with a unique$row_idcolumn, sorting only sort keys first and fetching full rows via SemiJoin. #27641Add TLS/SSL configuration, i18n character set, and configurable JDBC fetch size support for the Oracle connector. #27671 #27670 #27669
Add read support for Iceberg V3 row lineage hidden columns _row_id and _last_updated_sequence_number. #27240
Add support for
min/max/countaggregation push down based on file stats. This can be toggled with theaggregate_push_down_enabledsession property or theiceberg.aggregate-push-down-enabledconfiguration property. See Session Properties and Configuration Properties. #27085Add view querying capabilities and upgrade to mongodb-driver-sync in the MongoDB connector. #26995 #27685
Add support for reading Delta Lake tables with column mapping enabled. #27483
Details¶
General Changes¶
Fix query statistics so that planningTime and finishingTime are no longer added to executionTime. executionTime is now the true execution time — how long it took the query to run the compute. It can be used to measure the efficiency of the workers without added planning time or the time spent on final steps such as partition registration. #27691
Fix RPC options argument parsing to use the last argument instead of hardcoding to use the third argument. #27700
Fix UnsupportedOperationException when using remote_function_names_for_fixed_parallelism with queries containing
UNION ALLbelow the remote function projection. #27714Fix a bug in the PushProjectionThroughCrossJoin optimizer rule where cascading projections above a cross join could cause validation errors by dropping pushed variables from intermediate residual projects. #27568
Fix a gap in query commit for
DELETEqueries when running on Spark. #26195Fix data correctness bugs in
MaterializedViewQueryOptimizerwhere queries withoutGROUP BYcould be incorrectly rewritten to use materialized views withGROUP BY, producing fewer rows than expected. Previously, alias mismatches and scalar expression bypasses allowed invalid rewrites that silently collapsed duplicate rows. #27778Fix materialized view query rewriting for
CUBE,ROLLUP, andGROUPING SETSclauses. Column references inside these grouping elements are now correctly rewritten to materialized view columns. #27538Fix a race condition in pruneFinishedQueryInfo causing task memory leak. #27597
Fix runtime type mismatch crashes in Velox native execution caused by non-deterministic HashMap iteration order in
PreAggregateBeforeGroupId,PushPartialAggregationThroughExchange, andMultipleDistinctAggregationToMarkDistinctoptimizer rules. #27493Fix
IllegalStateExceptionduring planning ofORDER BY ... LIMIT(TopN) queries over tables with a unique column. #27664Fix coordinator memory leak caused by orphaned listener objects accumulating during scheduling cycles in
HttpRemoteTaskWithEventLoop.whenSplitQueueHasSpace(). #27673Improve convergence speed of
GROUP BY + LIMITqueries on partitioned tables by excluding partition keys from the PrefilterForLimitingAggregation prefilter. #27678Improve PrefilterForLimitingAggregation optimizer to use scan limiting instead of timeouts for more predictable performance. The optimization now limits the source scan to
1000 * LIMITrows before applyingDISTINCT LIMIT. #27819Improve plan efficiency for
UNION ALLqueries with empty branches (for example, branches pruned by partition or snapshot filtering) by removing those branches from the plan. #27765Improve efficiency of coordinator-to-worker communication with 20-40% smaller payload sizes and 2-3x faster serialization compared to JSON. #27486
Improve
map_from_entries(ARRAY[ROW(...), ...])by rewriting toMAP(ARRAY[keys], ARRAY[values])at plan time, avoiding intermediate ROW construction. #27491Improve logical planner performance for wide-column queries by indexing RelationType.resolveFields() for O(1) field lookup instead of O(N) linear scan. #27553
Improve query planning performance for wide-column projections by adding fast paths that skip unnecessary processing for variable references, constants, and identity assignments across multiple optimizer rules. #27547
Improve materialized view query rewriting to support
HAVINGclauses. #27677Improve disjunction rewrite by adding
ROW INto disjunction rewrite to fire for all columns, not just partition keys, enabling better predicate pushdown and domain extraction. Gated behind session propertyrewrite_row_constructor_in_to_disjunction. #27680Add
ALTER MATERIALIZED VIEW <name> SET PROPERTIES (...)SQL statement to update materialized view properties after creation. #27806Add push_aggregation_through_disjoint_union session property (default off) that pushes a
GROUP BYaggregation completely belowUNION ALLwhen at least one grouping key has constant values that are pairwise distinct across the union branches, eliminating the final aggregation. #27764Add
rpc_dispatch_batch_sizesession property to control batch size for RPC dispatch inBATCHmode. Default:128. A value of0collects all rows before dispatching. #27700Add
rpc_streaming_modesession property to control RPC function execution mode (PER_ROWorBATCH). Default:PER_ROW. #27700Add partition_aware_grouped_execution session property to schedule each (bucket, partition) as a separate lifespan in grouped execution, reducing per-lifespan data volumes for bucketed tables. Disabled by default. #27663
Add incremental refresh for materialized views. #26959
Add session property join_prefilter_build_side_with_complex_probe_side (default false) to extend join prefilter optimization to support complex probe-side patterns including UNION ALL, cross join, unnest, and aggregation. #27598
Add session property rewrite_bucketed_semi_join_to_join (default disabled) that rewrites bucketed semi-joins into joins to avoid a data shuffle. #27510
Add session property
rewrite_row_constructor_in_to_disjunction(default disabled) that rewrites ROW IN ROW predicates into OR of AND equality chains when all ROW fields are partition keys, enabling per-column TupleDomain extraction for partition pruning. #27500Add session property always_analyze_create_table_query_enabled to enable analyzing inner queries on
CREATE TABLE AS SELECT IF NOT EXISTSstatements when the target table already exists. #27504Add support for
ALTER TABLE ... ALTER COLUMN ... SET DEFAULTsyntax to update Iceberg column write-default values. #27810Add support for
GROUP BYandORDER BYordinal references in materialized view query rewriting. Previously, queries likeSELECT a, SUM(b) FROM t GROUP BY 1would silently skip materialized view optimization. #27422Add support for scalar functions in materialized view query rewriting. Queries using functions like
CONCAT,ABS,JSON_EXTRACT,CAST,IF,COALESCE, andCASEexpressions now correctly rewrite to scan the materialized view. #27549Add cluster-overload.bypass-resource-groups configuration property to allow named resource groups to bypass cluster-overload throttling while continuing to honor per-group concurrency, memory, and CPU limits. #27642
Add optimize_row_in_predicate session property (default off) that rewrites multi-column
ROW IN/ROW NOT INpredicates to expose per-columnIN/NOT INpredicates, enabling partition pruning and other domain-based optimizations. #27708Add push_filter_through_selecting_aggregation session property and
optimizer.push-filter-through-selecting-aggregationconfiguration property (defaultfalse) to push HAVING predicates beneath single-value aggregates (MAX/MIN/ARBITRARY) for earlier row reduction. #27712Add TopN late materialization optimization for
ORDER BY ... LIMITover wide tables with a unique$row_idcolumn. Sorts only sort keys plus$row_idfirst, then fetches full rows via SemiJoin. #27641Add
split_part_reverseas a global Presto SQL function, replacing the Velox C++ UDF with a SQL-invoked scalar function available in all queries. #27480Remove configuration property
use-new-nan-definition. #27829Remove
warn-on-common-nan-patternsserver config andwarn_on_common_nan_patternssession property. The NaN definition migration is complete and these warnings are no longer needed. #27830Update the default behavior of
field_names_in_json_cast_enabledfrom false to true. Whenfield_names_in_json_cast_enabled = true, JSON fields are assigned to ROW fields by matching field names regardless of their order in the JSON object. Queries that rely on JSON field order when casting to ROW may return different results after upgrading. If your workload depends on the previous positional behavior, restore it by setting:SET SESSION field_names_in_json_cast_enabled = false;. #26833
Prestissimo (Native Execution) Changes¶
Fix MaterializedOutput operator lifecycle bugs: silent data loss on
noMoreData()exceptions, Velox contract violation crashes during OOM teardown, and missingMemoryReclaimercausing memory arbitration failures. #27833Add support for iceberg V3 initialDefaultValue. #27767
Add support for plugin-registered custom types (such as those from the MongoDB and ML plugins) in native clusters. #27748
Add
native_min_shuffle_compression_page_size_bytessession property to tune the small-page shuffle-compression skip threshold. #27683
Security Changes¶
Add optional authorizedPrincipal to AuthorizedIdentity to support gateway identity propagation, allowing the session principal to reflect the original client instead of the gateway. #27639
Upgrade Netty to 4.2.13.Final in response to CVE-2026-41417, CVE-2026-44248, CVE-2026-42577, CVE-2026-42578, CVE-2026-42579, CVE-2026-42580, CVE-2026-42581, CVE-2026-42582, CVE-2026-42583, CVE-2026-42584, CVE-2026-42585, CVE-2026-42586, and CVE-2026-42587. #27769
Upgrade async-http-client to version 3.0.9 to address CVE-2026-40490. #27613
Upgrade google-oauth-client version to 1.34.1 to address CVE-2020-7692 and CVE-2021-22573. #25424
Upgrade http-proxy-middleware from 2.0.7 to 2.0.9 in /presto-ui/src to resolve CVE-2025-32996. #27715
Upgrade jackson dependency from 2.15.4 to version 2.18.6 to address GHSA-72hv-8253-57qq. #27293
Upgrade jetty dependency from 0.27 to version 2.0.2 to address CVE-2025-11143 and CVE-2026-1605. #27294
Upgrade libthrift 0.23.0 in response to CVE-2026-41604. #27777
Upgrade lodash from 4.17.23 to 4.18.1 to address multiple security vulnerabilities: - CVE-2026-4800. This dependency is used for local development only and does not affect production runtime. #27497
Upgrade lodash-es from 4.17.23 to 4.18.1 to address CVE-2026-4800. This dependency is used for local development only and does not affect production runtime. #27496
Upgrade org.apache.kafka:kafka-clients from 3.9.1 to 3.9.2 in order to address CVE-2026-35554. #27574
Upgrade org.apache.logging.log4j:log4j-core from 2.25.3 to 2.25.4 in order to address CVE-2026-34480. #27583
Upgrade org.bouncycastle:bcprov-jdk18on from 1.81 to 1.84 to resolve CVE-2026-0636. #27606
Upgrade org.postgresql:postgresql from 42.7.9 to 42.7.11 to resolve CVE-2026-42198. #27722
Upgrade parquet-jackson to 1.17.1 in response to GHSA-72hv-8253-57qq. #27803
Upgrade redshift-jdbc42 to 2.2.7 in response to CVE-2026-8178. #27828
Upgrade opentelemetry-api to 1.62.0 in response to CVE-2026-45292. #27865
JDBC Driver Changes¶
Add connection validation feature to enhance connection reliability. This can be enabled with the validateConnection session property to execute a validation query immediately after establishing the connection. #27002
Add support for execute procedure in JDBC connectors. #27282
Delta Lake Connector Changes¶
Fix a bug that made the metastore inconsistent if a Delta Lake table was created to an inaccessible location. #27129
Add support for reading Delta Lake tables with column mapping enabled. #27483
Hive Connector Changes¶
Fix race where concurrent
REFRESH MATERIALIZED VIEWon the same Hive-backed Iceberg materialized view could lose a watermark update. #27835Fix integer overflow when converting exclusive bounds to inclusive bounds in
BigintRange,HugeintRange, andTimestampRangefilters in the Hive connector. #27600Add support for partition-aware grouped execution in the Hive connector, creating per-(bucket, partition) split queues and compound partition handles. #27663
Add support for Azure Blob Storage (
wasb[s]://) and Azure Data Lake Storage Gen2 (abfs[s]://) in the Hive connector, with shared key and OAuth2 authentication. #25107
Iceberg Connector Changes¶
Fix access control for materialized view storage tables when
legacy_materialized_views=false: storage-table access control is bypassed during MV expansion, while direct queries by name still go through access control. #27728Fix failure during
INSERTinto Iceberg tables partitioned by day() when using timestamp with time zone columns. #27645Improve updating of
stale_read_behavior,staleness_window, andrefresh_typeon existing materialized views withALTER MATERIALIZED VIEW ... SET PROPERTIES(requireslegacy_materialized_views=false). #27806Add
iceberg.materialized-view-default-max-snapshots-per-refreshconfiguration property and matching session property to set the default bound. See Catalog Configuration. #27774Add
iceberg.materialized-view-default-storage-schemaconfiguration property to route storage tables into a single schema. Defaults to the materialized view’s own schema; per-MVstorage_schemaoverrides. See Catalog Configuration. #27728Add
max_snapshots_per_refreshmaterialized view property to bound how far each base table advances perREFRESH MATERIALIZED VIEW. Defaults to0(unbounded). Requires Iceberg V3 row lineage; V2 tables fall back to unbounded refresh. See Materialized View Properties. #27774Add
materialized_view_stitching_strategyandmaterialized_view_incremental_refresh_strategysession properties (values: ALWAYS, NEVER, AUTOMATIC; default: ALWAYS). Under AUTOMATIC, the optimizer selects between the rewrite and the full alternative based on cost; when stats are unavailable it falls back to row-count comparison. See Session Properties. #27820Add read support for Iceberg V3 column initial-default values. #27659
Add incremental refresh for materialized views in the Iceberg connector, enabling efficient partial refreshes instead of full recomputation. #26959
Add min/max statistics for
VARCHAR/CHARcolumns in Iceberg tables. #27357Add metastore cache invalidation procedure for Iceberg connector. #27200
Add predicate push down on
_last_updated_sequence_numberfor file-level pruning. #27766Add read support for Iceberg V3 row lineage hidden columns _row_id and _last_updated_sequence_number. #27240
Add support for
min/max/countaggregation push down based on file stats. This can be toggled with theaggregate_push_down_enabledsession property or theiceberg.aggregate-push-down-enabledconfiguration property. See Session Properties and Configuration Properties. #27085Add support for updating column write-default values using
ALTER TABLE ... SET DEFAULT(requires Iceberg format version 3+). #27810Add support for
ALTER COLUMN SET DATA TYPEDDL statements in the Iceberg connector. #25418Add warning when predicate stitching or incremental refresh falls back to full recompute. #27816
Update write-default operations to preserve existing initial-default values as metadata-only changes. #27810
Lance Connector Changes¶
Add SQL filter pushdown to reduce data read from disk for selective queries. Supports equality, comparisons, IN lists, IS NULL, and range predicates on Boolean, Integer, Bigint, Real, Double, Varchar, Date, and Timestamp types. See Predicate Pushdown. #27430
Add configurable index and metadata cache sizes via lance.index-cache-size and lance.metadata-cache-size. #27325
Add version-aware dataset caching with snapshot isolation for consistent query reads. #27325
MongoDB Connector Changes¶
Add view querying capabilities in the Mongo connector. #26995
Upgrade mongo-java-driver to mongodb-driver-sync. #27685
Oracle Connector Changes¶
Add TLS/SSL configuration support for the Oracle connector with
oracle.tls.enabled,oracle.tls.truststore-path, andoracle.tls.truststore-passwordproperties. #27671Add Oracle i18n character set support. #27670
Add
jdbc-fetch-sizeconfiguration property to control the number of rows fetched per database round-trip for the Oracle connector. #27669
Prometheus Connector Changes¶
Add mixed case-sensitive identifier support for Prometheus connector. #26260
Singlestore Connector Changes¶
Fix
TINYINTtype mapping to preserveTINYINTsemantics instead of incorrectly mapping toBOOLEANafter a JDBC driver upgrade. #27790Fix varchar type mapping for
TEXTtypes to use byte-based thresholds matching the JDBC driver’sCOLUMN_SIZEreporting. #27790
Verifier Changes¶
Add
query-rewriter-factoryconfiguration property to allow extending the verifierQueryRewriterwith custom implementations. #27703
Credits¶
Aditi Pandit, Allen Shen, Amit Dutta, Apurva Kumar, Arjun Gupta, Asish Kumar, Auden Woolfson, Ben Hu, Bryan Cutler, Chandrakant Vankayalapati, Christian Zentgraf, Daniel Bauer, Deepak Majeti, Deepak Mehra, Dilli Babu Godari, Dong Wang, Gary Helmling, Glerin Pinhero, Han Yan, Henry Dikeman, Jalpreet Singh Nanda, Jamille Shao-Ni, Jianjian Xie, Joe Abraham, Ke Wang, Kevin Tang, Konjac Huang, Li, Maria Basmanova, Miguel Blanco Godón, Nandakumar Balagopal, Natasha Sehgal, Naveen Mahadevuni, Nivin C S, Pramod Satya, Prashant Sharma, Pratik Joseph Dabre, Pratyaksh Sharma, Rebecca Schlussel, Reetika Agrawal, Rui Mo, Saurabh Mahawar, Sayari Mukherjee, Sergey Pershin, Shahim Sharafudeen, Shakyan Kushwaha, Shrinidhi Joshi, Sreeni Viswanadha, Steve Burnett, Swapnil, Timothy Meehan, Tirumala Saiteja Goruganthu, XiaoDu, Xiaoxuan, Yabin Ma, Yihong Wang, Zac, Zac Blanco, abhinavmuk04, bibith4, dependabot[bot], feilong-liu, jkhaliqi, join-theory-de, mohsaka, nishithakbhaskaran, peterenescu, shelton408, sumi-mathew, vhsu14, zhichenxu-meta