presto-docs/src/main/sphinx/release/release-0.298.rst
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 <https://github.com/prestodb/presto/pull/27691>_use-new-nan-definition. #27829 <https://github.com/prestodb/presto/pull/27829>_warn-on-common-nan-patterns server config and warn_on_common_nan_patterns session property. The NaN definition migration is complete and these warnings are no longer needed. #27830 <https://github.com/prestodb/presto/pull/27830>_field_names_in_json_cast_enabled from false to true. When field_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 <https://github.com/prestodb/presto/pull/26833>_HAVING clauses. #27677 <https://github.com/prestodb/presto/pull/27677>_#27486 <https://github.com/prestodb/presto/pull/27486>_#27547 <https://github.com/prestodb/presto/pull/27547>_#26959 <https://github.com/prestodb/presto/pull/26959>_wasb[s]://) and Azure Data Lake Storage Gen2 (abfs[s]://) in the Hive connector, with shared key and OAuth2 authentication. #25107 <https://github.com/prestodb/presto/pull/25107>_ALTER MATERIALIZED VIEW <name> SET PROPERTIES (...) SQL statement to update materialized view properties after creation. #27806 <https://github.com/prestodb/presto/pull/27806>_ORDER BY ... LIMIT over wide tables with a unique $row_id column, sorting only sort keys first and fetching full rows via SemiJoin. #27641 <https://github.com/prestodb/presto/pull/27641>_#27671 <https://github.com/prestodb/presto/pull/27671>_ #27670 <https://github.com/prestodb/presto/pull/27670>_ #27669 <https://github.com/prestodb/presto/pull/27669>__row_id and _last_updated_sequence_number. #27240 <https://github.com/prestodb/presto/pull/27240>_min/max/count aggregation push down based on file stats. This can be toggled with the aggregate_push_down_enabled session property or the iceberg.aggregate-push-down-enabled configuration property. See :ref:connector/iceberg:session properties and :ref:connector/iceberg:configuration properties. #27085 <https://github.com/prestodb/presto/pull/27085>_#26995 <https://github.com/prestodb/presto/pull/26995>_ #27685 <https://github.com/prestodb/presto/pull/27685>_#27483 <https://github.com/prestodb/presto/pull/27483>_General Changes
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 <https://github.com/prestodb/presto/pull/27691>_#27700 <https://github.com/prestodb/presto/pull/27700>_UnsupportedOperationException when using remote_function_names_for_fixed_parallelism with queries containing UNION ALL below the remote function projection. #27714 <https://github.com/prestodb/presto/pull/27714>_PushProjectionThroughCrossJoin optimizer rule where cascading projections above a cross join could cause validation errors by dropping pushed variables from intermediate residual projects. #27568 <https://github.com/prestodb/presto/pull/27568>_DELETE queries when running on Spark. #26195 <https://github.com/prestodb/presto/pull/26195>_MaterializedViewQueryOptimizer where queries without GROUP BY could be incorrectly rewritten to use materialized views with GROUP BY, producing fewer rows than expected. Previously, alias mismatches and scalar expression bypasses allowed invalid rewrites that silently collapsed duplicate rows. #27778 <https://github.com/prestodb/presto/pull/27778>_CUBE, ROLLUP, and GROUPING SETS clauses. Column references inside these grouping elements are now correctly rewritten to materialized view columns. #27538 <https://github.com/prestodb/presto/pull/27538>_pruneFinishedQueryInfo causing task memory leak. #27597 <https://github.com/prestodb/presto/pull/27597>_PreAggregateBeforeGroupId, PushPartialAggregationThroughExchange, and MultipleDistinctAggregationToMarkDistinct optimizer rules. #27493 <https://github.com/prestodb/presto/pull/27493>_IllegalStateException during planning of ORDER BY ... LIMIT (TopN) queries over tables with a unique column. #27664 <https://github.com/prestodb/presto/pull/27664>_HttpRemoteTaskWithEventLoop.whenSplitQueueHasSpace(). #27673 <https://github.com/prestodb/presto/pull/27673>_GROUP BY + LIMIT queries on partitioned tables by excluding partition keys from the PrefilterForLimitingAggregation prefilter. #27678 <https://github.com/prestodb/presto/pull/27678>_PrefilterForLimitingAggregation optimizer to use scan limiting instead of timeouts for more predictable performance. The optimization now limits the source scan to 1000 * LIMIT rows before applying DISTINCT LIMIT. #27819 <https://github.com/prestodb/presto/pull/27819>_UNION ALL queries with empty branches (for example, branches pruned by partition or snapshot filtering) by removing those branches from the plan. #27765 <https://github.com/prestodb/presto/pull/27765>_#27486 <https://github.com/prestodb/presto/pull/27486>_map_from_entries(ARRAY[ROW(...), ...]) by rewriting to MAP(ARRAY[keys], ARRAY[values]) at plan time, avoiding intermediate ROW construction. #27491 <https://github.com/prestodb/presto/pull/27491>_RelationType.resolveFields() for O(1) field lookup instead of O(N) linear scan. #27553 <https://github.com/prestodb/presto/pull/27553>_#27547 <https://github.com/prestodb/presto/pull/27547>_HAVING clauses. #27677 <https://github.com/prestodb/presto/pull/27677>_ROW IN to disjunction rewrite to fire for all columns, not just partition keys, enabling better predicate pushdown and domain extraction. Gated behind session property rewrite_row_constructor_in_to_disjunction. #27680 <https://github.com/prestodb/presto/pull/27680>_ALTER MATERIALIZED VIEW <name> SET PROPERTIES (...) SQL statement to update materialized view properties after creation. #27806 <https://github.com/prestodb/presto/pull/27806>_admin/properties-session:\`push_aggregation_through_disjoint_union``session property (default off) that pushes a ``GROUP BY`` aggregation completely below ``UNION ALL`` when at least one grouping key has constant values that are pairwise distinct across the union branches, eliminating the final aggregation.#27764 https://github.com/prestodb/presto/pull/27764`_rpc_dispatch_batch_size session property to control batch size for RPC dispatch in BATCH mode. Default: 128. A value of 0 collects all rows before dispatching. #27700 <https://github.com/prestodb/presto/pull/27700>_rpc_streaming_mode session property to control RPC function execution mode (PER_ROW or BATCH). Default: PER_ROW. #27700 <https://github.com/prestodb/presto/pull/27700>_admin/properties-session:\`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 https://github.com/prestodb/presto/pull/27663`_#26959 <https://github.com/prestodb/presto/pull/26959>_admin/properties-session:\`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 https://github.com/prestodb/presto/pull/27598`_admin/properties-session:\`rewrite_bucketed_semi_join_to_join`` (default disabled) that rewrites bucketed semi-joins into joins to avoid a data shuffle.#27510 https://github.com/prestodb/presto/pull/27510`_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. #27500 <https://github.com/prestodb/presto/pull/27500>_admin/properties-session:\`always_analyze_create_table_query_enabled``to enable analyzing inner queries on ``CREATE TABLE AS SELECT IF NOT EXISTS`` statements when the target table already exists.#27504 https://github.com/prestodb/presto/pull/27504`_ALTER TABLE ... ALTER COLUMN ... SET DEFAULT syntax to update Iceberg column write-default values. #27810 <https://github.com/prestodb/presto/pull/27810>_GROUP BY and ORDER BY ordinal references in materialized view query rewriting. Previously, queries like SELECT a, SUM(b) FROM t GROUP BY 1 would silently skip materialized view optimization. #27422 <https://github.com/prestodb/presto/pull/27422>_CONCAT, ABS, JSON_EXTRACT, CAST, IF, COALESCE, and CASE expressions now correctly rewrite to scan the materialized view. #27549 <https://github.com/prestodb/presto/pull/27549>_admin/properties:\`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 https://github.com/prestodb/presto/pull/27642`_admin/properties-session:\`optimize_row_in_predicate``session property (default off) that rewrites multi-column ``ROW IN`` / ``ROW NOT IN`` predicates to expose per-column ``IN`` / ``NOT IN`` predicates, enabling partition pruning and other domain-based optimizations.#27708 https://github.com/prestodb/presto/pull/27708`_admin/properties-session:\`push_filter_through_selecting_aggregation``session property and ``optimizer.push-filter-through-selecting-aggregation`` configuration property (default ``false``) to push HAVING predicates beneath single-value aggregates (MAX/MIN/ARBITRARY) for earlier row reduction.#27712 https://github.com/prestodb/presto/pull/27712`_ORDER BY ... LIMIT over wide tables with a unique $row_id column. Sorts only sort keys plus $row_id first, then fetches full rows via SemiJoin. #27641 <https://github.com/prestodb/presto/pull/27641>_split_part_reverse as a global Presto SQL function, replacing the Velox C++ UDF with a SQL-invoked scalar function available in all queries. #27480 <https://github.com/prestodb/presto/pull/27480>_use-new-nan-definition. #27829 <https://github.com/prestodb/presto/pull/27829>_warn-on-common-nan-patterns server config and warn_on_common_nan_patterns session property. The NaN definition migration is complete and these warnings are no longer needed. #27830 <https://github.com/prestodb/presto/pull/27830>_field_names_in_json_cast_enabled from false to true. When field_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 <https://github.com/prestodb/presto/pull/26833>_Prestissimo (Native Execution) Changes
noMoreData() exceptions, Velox contract violation crashes during OOM teardown, and missing MemoryReclaimer causing memory arbitration failures. #27833 <https://github.com/prestodb/presto/pull/27833>_#27767 <https://github.com/prestodb/presto/pull/27767>_#27748 <https://github.com/prestodb/presto/pull/27748>_native_min_shuffle_compression_page_size_bytes session property to tune the small-page shuffle-compression skip threshold. #27683 <https://github.com/prestodb/presto/pull/27683>_Security Changes
#27639 <https://github.com/prestodb/presto/pull/27639>_CVE-2026-41417 <https://github.com/advisories/GHSA-fghv-69vj-qj49>, CVE-2026-44248 <https://github.com/advisories/GHSA-jfg9-48mv-9qgx>, CVE-2026-42577 <https://github.com/advisories/GHSA-rwm7-x88c-3g2p>, CVE-2026-42578 <https://github.com/advisories/GHSA-45q3-82m4-75jr>, CVE-2026-42579 <https://github.com/advisories/GHSA-cm33-6792-r9fm>, CVE-2026-42580 <https://github.com/advisories/GHSA-m4cv-j2px-7723>, CVE-2026-42581 <https://github.com/advisories/GHSA-xxqh-mfjm-7mv9>, CVE-2026-42582 <https://github.com/advisories/GHSA-2c5c-chwr-9hqw>, CVE-2026-42583 <https://github.com/advisories/GHSA-mj4r-2hfc-f8p6>, CVE-2026-42584 <https://github.com/advisories/GHSA-57rv-r2g8-2cj3>, CVE-2026-42585 <https://github.com/advisories/GHSA-38f8-5428-x5cv>, CVE-2026-42586 <https://github.com/advisories/GHSA-rgrr-p7gp-5xj7>, and CVE-2026-42587 <https://github.com/advisories/GHSA-f6hv-jmp6-3vwv>. #27769 <https://github.com/prestodb/presto/pull/27769>CVE-2026-40490 <https://github.com/advisories/GHSA-cmxv-58fp-fm3g>. #27613 <https://github.com/prestodb/presto/pull/27613>CVE-2020-7692 <https://github.com/advisories/GHSA-f263-c949-w85g>_ and CVE-2021-22573 <https://github.com/advisories/GHSA-hw42-3568-wj87>. #25424 <https://github.com/prestodb/presto/pull/25424>CVE-2025-32996 <https://nvd.nist.gov/vuln/detail/CVE-2025-32996>. #27715 <https://github.com/prestodb/presto/pull/27715>CVE-2025-11143 <https://github.com/advisories/GHSA-wjpw-4j6x-6rwh>_ and CVE-2026-1605 <https://github.com/advisories/GHSA-xxh7-fcf3-rj7f>. #27294 <https://github.com/prestodb/presto/pull/27294>CVE-2026-41604 <https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-41604>. #27777 <https://github.com/prestodb/presto/pull/27777>CVE-2026-4800 <https://nvd.nist.gov/vuln/detail/CVE-2026-4800>. This dependency is used for local development only and does not affect production runtime. #27497 <https://github.com/prestodb/presto/pull/27497>CVE-2026-4800 <https://nvd.nist.gov/vuln/detail/CVE-2026-4800>. This dependency is used for local development only and does not affect production runtime. #27496 <https://github.com/prestodb/presto/pull/27496>CVE-2026-35554 <https://github.com/advisories/GHSA-5qcv-4rpc-jp93>. #27574 <https://github.com/prestodb/presto/pull/27574>CVE-2026-34480 <https://nvd.nist.gov/vuln/detail/CVE-2026-34480>. #27583 <https://github.com/prestodb/presto/pull/27583>CVE-2026-0636 <https://nvd.nist.gov/vuln/detail/CVE-2026-0636>. #27606 <https://github.com/prestodb/presto/pull/27606>CVE-2026-42198 <https://nvd.nist.gov/vuln/detail/CVE-2026-42198>. #27722 <https://github.com/prestodb/presto/pull/27722>GHSA-72hv-8253-57qq <https://github.com/advisories/GHSA-72hv-8253-57qq>. #27803 <https://github.com/prestodb/presto/pull/27803>CVE-2026-8178 <https://github.com/advisories/GHSA-wmmv-vvg5-993q>. #27828 <https://github.com/prestodb/presto/pull/27828>CVE-2026-45292 <https://github.com/advisories/GHSA-rcgg-9c38-7xpx>. #27865 <https://github.com/prestodb/presto/pull/27865>JDBC Driver Changes
admin/properties-session:\`validateConnection``session property to execute a validation query immediately after establishing the connection.#27002 https://github.com/prestodb/presto/pull/27002`_execute procedure in JDBC connectors. #27282 <https://github.com/prestodb/presto/pull/27282>_Delta Lake Connector Changes
#27129 <https://github.com/prestodb/presto/pull/27129>_#27483 <https://github.com/prestodb/presto/pull/27483>_Hive Connector Changes
REFRESH MATERIALIZED VIEW on the same Hive-backed Iceberg materialized view could lose a watermark update. #27835 <https://github.com/prestodb/presto/pull/27835>_BigintRange, HugeintRange, and TimestampRange filters in the Hive connector. #27600 <https://github.com/prestodb/presto/pull/27600>_#27663 <https://github.com/prestodb/presto/pull/27663>_wasb[s]://) and Azure Data Lake Storage Gen2 (abfs[s]://) in the Hive connector, with shared key and OAuth2 authentication. #25107 <https://github.com/prestodb/presto/pull/25107>_Iceberg Connector Changes
legacy_materialized_views=false: storage-table access control is bypassed during MV expansion, while direct queries by name still go through access control. #27728 <https://github.com/prestodb/presto/pull/27728>_INSERT into Iceberg tables partitioned by day() when using timestamp with time zone columns. #27645 <https://github.com/prestodb/presto/pull/27645>_stale_read_behavior, staleness_window, and refresh_type on existing materialized views with ALTER MATERIALIZED VIEW ... SET PROPERTIES (requires legacy_materialized_views=false). #27806 <https://github.com/prestodb/presto/pull/27806>_iceberg.materialized-view-default-max-snapshots-per-refresh configuration property and matching session property to set the default bound. See :ref:connector/iceberg:catalog configuration. #27774 <https://github.com/prestodb/presto/pull/27774>_iceberg.materialized-view-default-storage-schema configuration property to route storage tables into a single schema. Defaults to the materialized view's own schema; per-MV storage_schema overrides. See :ref:connector/iceberg:catalog configuration. #27728 <https://github.com/prestodb/presto/pull/27728>_max_snapshots_per_refresh materialized view property to bound how far each base table advances per REFRESH MATERIALIZED VIEW. Defaults to 0 (unbounded). Requires Iceberg V3 row lineage; V2 tables fall back to unbounded refresh. See :ref:connector/iceberg:materialized view properties. #27774 <https://github.com/prestodb/presto/pull/27774>_materialized_view_stitching_strategy and materialized_view_incremental_refresh_strategy session 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 :ref:connector/iceberg:session properties. #27820 <https://github.com/prestodb/presto/pull/27820>_#27659 <https://github.com/prestodb/presto/pull/27659>_#26959 <https://github.com/prestodb/presto/pull/26959>_VARCHAR / CHAR columns in Iceberg tables. #27357 <https://github.com/prestodb/presto/pull/27357>_#27200 <https://github.com/prestodb/presto/pull/27200>__last_updated_sequence_number for file-level pruning. #27766 <https://github.com/prestodb/presto/pull/27766>__row_id and _last_updated_sequence_number. #27240 <https://github.com/prestodb/presto/pull/27240>_min/max/count aggregation push down based on file stats. This can be toggled with the aggregate_push_down_enabled session property or the iceberg.aggregate-push-down-enabled configuration property. See :ref:connector/iceberg:session properties and :ref:connector/iceberg:configuration properties. #27085 <https://github.com/prestodb/presto/pull/27085>_ALTER TABLE ... SET DEFAULT (requires Iceberg format version 3+). #27810 <https://github.com/prestodb/presto/pull/27810>_ALTER COLUMN SET DATA TYPE DDL statements in the Iceberg connector. #25418 <https://github.com/prestodb/presto/pull/25418>_#27816 <https://github.com/prestodb/presto/pull/27816>_#27810 <https://github.com/prestodb/presto/pull/27810>_Lance Connector Changes
connector/lance:predicate pushdown. #27430 <https://github.com/prestodb/presto/pull/27430>_#27325 <https://github.com/prestodb/presto/pull/27325>_#27325 <https://github.com/prestodb/presto/pull/27325>_MongoDB Connector Changes
#26995 <https://github.com/prestodb/presto/pull/26995>_#27685 <https://github.com/prestodb/presto/pull/27685>_Oracle Connector Changes
oracle.tls.enabled, oracle.tls.truststore-path, and oracle.tls.truststore-password properties. #27671 <https://github.com/prestodb/presto/pull/27671>_#27670 <https://github.com/prestodb/presto/pull/27670>_jdbc-fetch-size configuration property to control the number of rows fetched per database round-trip for the Oracle connector. #27669 <https://github.com/prestodb/presto/pull/27669>_Prometheus Connector Changes
#26260 <https://github.com/prestodb/presto/pull/26260>_Singlestore Connector Changes
TINYINT type mapping to preserve TINYINT semantics instead of incorrectly mapping to BOOLEAN after a JDBC driver upgrade. #27790 <https://github.com/prestodb/presto/pull/27790>_TEXT types to use byte-based thresholds matching the JDBC driver's COLUMN_SIZE reporting. #27790 <https://github.com/prestodb/presto/pull/27790>_Verifier Changes
query-rewriter-factory configuration property to allow extending the verifier QueryRewriter with custom implementations. #27703 <https://github.com/prestodb/presto/pull/27703>_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