Release 0.300¶
Breaking Changes¶
Remove support for the ANSI SQL syntax of the
trimfunction, such asTRIM(BOTH ' ' FROM x), which was added in 0.299 and madeTRIM,BOTH,LEADING, andTRAILINGreserved keywords. Use thetrim,ltrim, andrtrimfunctions instead. #28334Upgrade hudi-presto-bundle to version 1.1.0. NOTE: Partitioned Hudi 1.x tables require
hive.parquet.use-column-names=truefor correct column resolution. Without this setting, columns are read positionally and may return incorrect data. #27274
Highlights¶
Add support for the
WINDOWclause, so a window specification can be named once and reused, for exampleSELECT rank() OVER w FROM t WINDOW w AS (PARTITION BY a ORDER BY b). #28471Add support for declaring field names in a row constructor, for example
ROW(1 AS a, 2 AS b).VALUESderives column names from the declared field names, soSELECT a FROM (VALUES ROW(1 AS a))resolves. #28298Add an optional
FIRSTorAFTER <column>clause toALTER TABLE ... ADD COLUMNto control where the new column is placed. Omitting the clause appends the column, which is the previous behavior.FIRSTandAFTERrequire connector support. #28328Add
ALTER TABLE ... ALTER COLUMN <column> FIRST | AFTER <column>to move an existing column within a table’s column order. Reordering columns requires connector support. #28349Add support for reading Iceberg
VARIANTcolumns asJSONcolumns. #28469
Details¶
General Changes¶
Fix
REFRESH MATERIALIZED VIEWanalysis to reject unsupported predicates nested within anOR. #28570Fix
SHOW CREATE MATERIALIZED VIEWfailure for materialized views created with materialized-view-only properties. #28390Fix
SHOW CREATE TABLEdisplaying connector-internal hidden table properties. #28123Fix
ST_Centroidto returnNULLfor empty geometries according to the ISO spec. #26971Fix a query failure that could occur during planning for some queries with a distinct aggregation over an inner join. #28231
Fix failures when using an offset
RANGEframe withORDER BYinherited from a named window. See Named WINDOW Clause. #28517Fix fully qualified storage table names in materialized view queries. #28423
Fix query planning failure with dynamic filtering enabled when using scalar subqueries with
min/max/countaggregation functions. #28392Fix query runtime metrics being dropped for tables and materialized views referenced through a view. #28367
Fix the materialized view rewrite of a query that uses a window function or a
WINDOWclause. #28473Improve accuracy of history-based optimization statistics by recording them only from finished stages, skipping plan nodes which produced no output rows, and removing statistics of plan nodes of failed stages. #28356
Improve aggregation pushdown below an outer join when table constraints, enabled with the
exploit_constraintssession property, show that the outer side of the join is distinct. #28425Improve property derivation to keep the probe side’s local properties across a cross join whose build side produces at most one row, instead of discarding them. Operators above such a join, such as window functions and streaming aggregations, can now use the order of the probe input. #28371
Improve query planning performance by resolving window-value functions lazily during expression optimization. #28265
Improve the
optimize_join_fan_outoptimization to collapse the null-supplying side of an outer join, and to detect the fan-out from the grouping a join input reports rather than from a fixed plan shape. #28301Add
xxhash128()function to compute the 128-bit XXH3 hash. <https://github.com/prestodb/presto/pull/28289>`_Add support for derived columns in
CREATE TABLEandALTER TABLE, including inSHOW CREATE TABLEoutput. Derived columns require connector support. #28123Add
ALTER TABLE ... ALTER COLUMN <column> FIRST | AFTER <column>to move an existing column within a table’s column order. Reordering columns requires connector support. #28349Add spark.max-splits-count-per-partition configuration property and max_splits_count_per_spark_partition session property to bound the number of splits assigned to a single Spark input partition. Unbounded by default. #28326
Add an optional
FIRSTorAFTER <column>clause toALTER TABLE ... ADD COLUMNto control where the new column is placed. Omitting the clause appends the column, which is the previous behavior.FIRSTandAFTERrequire connector support. #28328Add opt-in coordinator query tracing to runtime statistics with the runtime_stats_tracing_enabled session property. #28417
Add session property
rewrite_approx_distinct_if_to_maskand configuration propertyoptimizer.rewrite-approx-distinct-if-to-mask, disabled by default, which rewritesapprox_distinct(IF(p, e))toapprox_distinct(e)masked byp. #28363Add support for declaring field names in a row constructor, for example
ROW(1 AS a, 2 AS b).VALUESderives column names from the declared field names, soSELECT a FROM (VALUES ROW(1 AS a))resolves. #28298Add support for loading expression optimizers on the Presto on Spark driver from configuration supplied at startup, for deployments that have no
etc/expression-manager/directory on local disk. Previously such deployments could register an expression optimizer factory but never instantiate it. #28393Add support for the
WINDOWclause, so a window specification can be named once and reused, for exampleSELECT rank() OVER w FROM t WINDOW w AS (PARTITION BY a ORDER BY b). #28471Remove support for the ANSI SQL syntax of the
trimfunction, such asTRIM(BOTH ' ' FROM x), which was added in 0.299 and madeTRIM,BOTH,LEADING, andTRAILINGreserved keywords. Use thetrim,ltrim, andrtrimfunctions instead. #28334
Prestissimo (Native Execution) Changes¶
Fix Arrow connector column projection when there are duplicate column names. #28462
Fix
NOT NULLcolumn constraints being ignored for table writes, which allowed anINSERTto silently writeNULLinto aNOT NULLcolumn. #28450Fix the propagation of structured execution failure information from the Flight shim server through the Arrow Flight federation connector back to the Presto coordinator, retaining original exception type and error code. #28126
Fix a native worker crash when a table handle has no table layout. The query now fails with an error instead of stopping the worker process. #28341
Add
asyncDataCacheBytesandqueryMemoryBytesto the native worker/v1/statusendpoint to report async data cache memory and query memory separately. #27783Add the
exchange.materialization.use-zero-copy-collectconfiguration property to allow chain-capable shuffle backends to avoid an intermediate coalescing copy. This property is enabled by default and can be set to false to restore the contiguous path. #27981Add
sidecar.retry.max-failure-intervalexponential-backoff retry configuration property for all native sidecar HTTP calls so that transient sidecar failures are retried for up to 5 seconds before propagating as a query failure. See Retry configuration. #28429Add session property native_abandon_partial_topn_row_number_min_pct which sets the percentage of accumulated input rows still retained at or above which the partial
TopNRowNumberoperator is abandoned. Defaults to80, the existing Velox default, so behavior is unchanged unless set. #28314Add session property native_abandon_partial_topn_row_number_min_rows which sets the number of input rows the partial
TopNRowNumberoperator accumulates before checking whether to abandon it. Defaults to100000, the existing Velox default, so behavior is unchanged unless set. #28314Add session property native_rpc_ratelimiter_hard_limit to set a session-level ceiling for native RPC admission, and allow the adaptive RPC rate limiter to admit fewer than one request at a time so that a distributed query does not overload a backend service. Defaults to
-1, which keeps the existingnative_rpc_ratelimiter_max_limitbehavior. #28573
Security Changes¶
Remove the
kotlin-stdlib-jdk8dependency, which reached end-of-life as of Kotlin 1.8.0 and has been merged intokotlin-stdlib. See Kotlin 1.8.0 release notes. #28504Upgrade Netty to 4.2.17.Final to address CVE-2026-59902 and CVE-2026-59903 . #28419
Upgrade
httpclient5to 5.6.4 to address CVE-2026-64607. #28472Upgrade async-http-client to 3.0.13 to address CVE-2026-85716, CVE-2026-85717, CVE-2026-85718, CVE-2026-85719, CVE-2026-85720, and CVE-2026-85721. #28521
Upgrade Bouncy Castle to 1.85 to address multiple CVEs. #28436
Upgrade Jetty to 12.0.38 to address CVE-2026-10050, CVE-2026-10051, CVE-2026-6790, and CVE-2026-8384. #28320
Upgrade libthrift to 0.24.0 to address CVE-2026-41608 , CVE-2026-43871 , CVE-2026-45112 , CVE-2026-48144 , CVE-2026-48145 , CVE-2026-48586 , CVE-2026-49158 , CVE-2026-55968 , CVE-2026-55969 , CVE-2026-55970 , CVE-2026-55971 , CVE-2026-58023 , CVE-2026-58389 , CVE-2026-58662 , CVE-2026-66053. #28242
Upgrade mariadb-java-client to 3.5.9 to address CVE-2026-55856, CVE-2026-55857, and CVE-2026-55858. #28406
Upgrade the PostgreSQL JDBC driver to 42.7.12 to address CVE-2026-54291. #28203
Upgrade the MongoDB Java driver to 5.12.0 to address CVE-2026-88033 and CVE-2026-18710. #28537
Upgrade ZooKeeper to 3.9.6 to address CVE-2026-59969, CVE-2026-59739, CVE-2026-79993, CVE-2026-84439, and CVE-2026-84501. #28558
JDBC Connector Changes¶
Add caching of table and column metadata within a transaction for JDBC-based connectors, which reduces query planning latency. Enabled by default, and controlled by the
metadata-transaction-cache-enabledandmetadata-transaction-cache-maximum-sizeconfiguration properties. #28402
Elasticsearch Connector Changes¶
Fix query failures with
Not in GZIP formatwhen Elasticsearch returns compressed responses. #28472Upgrade
elasticsearch-javato 9.5.3. #28472
Hive Connector Changes¶
Upgrade hudi-presto-bundle to version 1.1.0. NOTE: Partitioned Hudi 1.x tables require
hive.parquet.use-column-names=truefor correct column resolution. Without this setting, columns are read positionally and may return incorrect data. #27274
Hudi Connector Changes¶
Upgrade hudi-presto-bundle to version 1.1.0. #27274
Iceberg Connector Changes¶
Fix reading nested fields of
TIMESTAMP WITH TIME ZONE,TIME, andUUIDtypes from Iceberg Parquet tables when nested dereference pushdown is enabled. #28512Fix
Invalid view JSONerror when listing or querying views in an Iceberg REST catalog that were created by a non-Presto engine such as Netezza, Spark, or Trino. #28321Fix
Class com.facebook.presto.hive.s3.PrestoS3FileSystem not foundfailure when reading a newly registered Iceberg table stored in S3 withiceberg.pushdown-filter-enabledenabled. #28486Fix table statistics ignoring a filter that was pushed into the table scan, which made the estimated row count that of the whole table and could lead to a worse plan. #28549
Fix
Table already existserror when creating materialized views with the same name in different schemas whileiceberg.materialized-view-default-storage-schemais configured. See Storage. #28438Add
presto.derived-columns.spec.jsontable property, to store derived column specs as embedded JSON. #28123Add support for
ALTER TABLE ... ALTER COLUMN <column> FIRST | AFTER <column>, which moves an existing column within the table’s column order. #28349Add support for reading Iceberg
VARIANTcolumns asJSONcolumns. #28469Add support for the
FIRSTandAFTER <column>clauses ofALTER TABLE ... ADD COLUMN, which control where the new column is placed in the table’s column order. #28328Add support for keeping derived column metadata in sync when columns are added, dropped, renamed, or have their type changed. #28123
Lance Connector Changes¶
Fix
SHOW TABLESandSHOW SCHEMASsilently returning only the first page of results for catalogs larger than the namespace server’s page size. #28267
Oracle Connector Changes¶
Fix the Oracle connector ignoring per-session
user-credential-nameandpassword-credential-nameextraCredentials, always using the staticconnection-userandconnection-passwordinstead. #28351
Prometheus Connector Changes¶
Add support for Authentication with basic authentication. #28391
Verifier Changes¶
Fix function call substitution failing when the substitute declares more window fields than the call it matched. This is now treated as a non-match. #28473
Fix function call substitution silently dropping a named window. A substitution is no longer applied to a call whose window refers to a name declared in a
WINDOWclause, because the substitution cannot see the partitioning, ordering or frame that name carries. #28473Improve
SCHEMA_MISMATCHfailure reports to identify the columns that differ. #28440Add validation rejecting a function call substitute whose window refers to a named window, for example
rank() over w. A substitute is parsed on its own, so the name has nothing to resolve against. #28473
SPI Changes¶
Add
setColumnPositiontoConnectorMetadata, which moves an existing column within a table’s column order. The default implementation reports that the connector does not support moving columns. #28349Add an
addColumnoverload toConnectorMetadatathat takes aColumnPosition. The default implementation delegates to the existing three-argumentaddColumnwhen the column is appended, so connectors need no changes; override it to support theFIRSTandAFTERclauses. #28328
Documentation Changes¶
Add ADBC Driver to Clients. #28383
Credits¶
Aditi Pandit, Adrian Carpente (Denodo), Ajay Kharat, Amit Dutta, Anant Aneja, Andrii Rosa, Apurva Kumar, Arjun Gupta, Auden Woolfson, Bryan Cutler, Chandrakant Vankayalapati, Chandrashekhar Kumar Singh, Christian Zentgraf, Deepak Majeti, Deepak Mehra, Deepthi Bose, Denis Krivenko, Dilli Babu Godari, Dong Wang, Ge Gao, Hani Damlaj, Harsh Chokshi, Jacob GLZ, Jalpreet Singh Nanda, Jay Narale, Jeremy G, Jianjian Xie, Joe Abraham, Julian Rossi, KNagaVivek, Kevin Tang, Luis Garcés-Erice, Maria Basmanova, Matt Karrmann, Matthias Braun, Nandakumar Balagopal, Natasha Sehgal, Naveen Mahadevuni, Nishitha K Bhaskaran, Nivin C S, Prashant Sharma, Pratik Joseph Dabre, Pratyaksh Sharma, Reetika Agrawal, RindsSchei225e, Sayari Mukherjee, Shahim Sharafudeen, Shakyan Kushwaha, Shreya, Shrinidhi Joshi, Sreeni Viswanadha, Steve Burnett, Timothy Meehan, Tirumala Saiteja Goruganthu, XiaoDu, Yabin Ma, Yihong Wang, Ying, abhash, abhinavmuk04, adheer-araokar, bibith4, carlnayak, dependabot[bot], jkhaliqi, karthikchundi-commits, mohsaka, zhichenxu-meta