Release 0.299¶
Breaking Changes¶
Fix partition filter cache metrics association. BREAKING: Metric names changed from partitionnamescache* to partitionfiltercache*. Users monitoring these JMX metrics must update their dashboards, alerts, and scripts to use the new metric names. The old metrics tracked the partition filter cache (filtered partition queries), not the partition names cache, as the name suggested. #27960
Add explicit strategy parameter to
rewrite_data_filesprocedure with binpack and sort strategies. Breaking change: Default behavior changed from sort to binpack for faster rewrites. Existing queries that rely on data ordering must add strategy => ‘sort’ to maintain previous behavior. Queries using sorted_by must now explicitly specify strategy => ‘sort’. #28092Replace the
lance.root-urlconfiguration property withlance.root. This is a breaking change: catalogs that setlance.root-urlmust be updated tolance.rootbefore upgrading. See Configuration Properties. #27481Upgrade minimum Elasticsearch version from 6 to 9 (breaking) in response to CVE-2024-52980. #25320
Highlights¶
Add multi-arch (amd64 + arm64) support for presto-native and presto-native-dependency release Docker images, with the arm64 build using a portable -march=armv8-a+crc+crypto baseline for broad ARM CPU compatibility. #28046
Add an Arrow federation connector to run federated queries. #26404
Fix timestamp operations to match the SQL specification. The value of a
TIMESTAMPtype is not affected by the session time zone. #24571Add comprehensive cache metrics for all metastore caches. See Metastore Cache Metrics. #27960
Add support for AWS Glue Table and Column Statistics. #27112
Upgrade to Hive 4.0.1. #24571
Details¶
General Changes¶
Fix BATCH-mode RPC dispatch dropping and under-batching rows by gathering RPC input to a single driver in the local plan. #28230
Fix incorrect epoch-second and nanosecond decomposition for pre-1970 (negative) timestamps in TimestampType; getEpochSecond and getNanos now use floor division instead of truncation toward zero. #27935
Fix the
optimize_row_in_predicateoptimization so it applies to constant-foldedROW(...) IN (...)predicates, enabling per-column predicate derivation and partition pruning that previously did not occur. #27942Fix timestamp operations to match the SQL specification. The value of a
TIMESTAMPtype is not affected by the session time zone. #24571Fix incorrect results when reading from a partially materialized view, where partitions recomputed from the base tables could also be read from the view and counted twice. #27944
Fix a query failure (Field not found) when multiple remote function calls wrapped in
TRY()appear in the sameSELECT. #28232Improve outer joins on skewed
NULLjoin keys by spreading the null keys across partitions in their native type. This is controlled by the existingrandomize_outer_join_null_keysession property. #28153Improve the
optimize_cascading_filters_and_projectionsoptimization to avoid duplicating multiply-referenced non-trivial expressions when coalescing cascading projections. #28216Add
JOINsupport to the materialized view query optimizer. Queries that join a base table covered by a materialized view with another table can now be rewritten to scan the materialized view in place of the base table, subject to safety guards (matchingGROUP BY, no aggregates over non-swapped tables, supported join types). #27733Add
scanRawInputDataSizeInBytesto task statistics, reporting the raw input data size read by table scan operators. #28222Add
scanRawInputDataSizeto basic query statistics. #28222Add
native_exchange_materialization_enabledsession property (Presto on Spark native codepath only) to control whether Velox native workers use MaterializedOutput/MaterializedExchange operators. When set totrue, enables materialized exchange; whenfalse(default), falls back to PartitionAndSerialize + ShuffleWrite. #27881Add a driver-side metadata sidecar that registers native-only Velox functions into the Java planner at driver bootstrap. See built-in-sidecar-functions-enabled and related properties. #27698
Add column-level lineage for derived expression and aggregation columns in materialized view definitions, and emit a warning when a materialized view column has no base-table lineage. #28176
Add configuration and session properties for legacy
ST_Equalsbehavior. #27015Add configuration property server.startup-complete-required-for-active to report a node as not ready (
/v1/infostartingand/v1/info/state) until server startup has fully completed. Defaults tofalse. #28193Add createTimestampType(int precision) factory supporting
TIMESTAMPprecisions p=0–12, with instance interning and semantic helpers toEpochMillis, toEpochMicros, and fromEpochComponents. Part of parameterizedTIMESTAMP(p)support in #27934. #27935Add indirect column lineage (
JOIN,WHERE/HAVING,GROUP BY,ORDER BY, window, and conditional expressions from #27695) to the OpenLineage event listener’scolumnLineagedataset facet, exposing it throughInputField.transformations. Direct-lineage emission is unchanged. See OpenLineage Event Listener. #27994Add indirect column lineage tracking (
JOIN,FILTER,GROUP BY,ORDER BY,CONDITIONAL) to query analysis, building on the direct column lineage added in #25913. Indirect relationships are exposed to event listeners with a new relationship-metadata field onOutputColumnMetadata; existing direct-lineage consumers are unaffected. See OpenLineage Event Listener. #27695Add multi-arch (amd64 + arm64) support for presto-native and presto-native-dependency release Docker images, with the arm64 build using a portable -march=armv8-a+crc+crypto baseline for broad ARM CPU compatibility. #28046
Add session property
grouped_execution_when_capable(default disabled) that, together withgrouped_execution, runs grouped execution for any bucketed grouped-execution-capable fragment even when no downstream operator makes grouping individually beneficial (for example a bucketed scan feeding a shuffle, or a bucketed-to-bucketed table write). This avoids re-partitioning already-bucketed data and bounds per-lifespan memory to a single bucket. #28097Add session property pull_constant_projection_above_exchange (disabled by default) that pulls constant projection assignments above remote exchanges, avoiding serialization and shuffling of constant values across the network. #27499
Add session property pull_row_local_chain_above_exchange_strategy (default
DISABLED) that pulls a chain of row-local operators (UNNESTand deterministic projections) above a repartitioning remote exchange so the exchange shuffles the smaller pre-expansion input, reducing network shuffle. #28079Add support for ANSI SQL syntax in trim function. #28190
Add support for additional predicates on
WHENclauses inMERGE(WHEN MATCHED AND <condition>,WHEN NOT MATCHED AND <condition>). #27855Add support for an any-typed variadic tail in JSON-file-based function definitions. #28207
Add support for hyphenated struct field names in nested ROW type columns. #27470
Add support for publishing release Docker images to GitHub Container Registry (GHCR) via the REGISTRY repository variable. #28010
Add the optimize_cascading_filters_and_projections session property (config property optimizer.optimize-cascading-filters-and-projections, default disabled). When enabled, the optimizer coalesces cascading projections by fully inlining deterministic child expressions and merges adjacent filter/projection nodes, co-locating shared subexpressions within a single operator so the native (Velox) backend’s common-subexpression elimination can deduplicate them. #28016
Add the optimize_join_fan_out session property (config property
optimizer.optimize-join-fan-out, default disabled). When enabled, the optimizer collapses a fan-out equi-join whose preserved side is an aggregation grouped by a strict superset of the join keys: it packs the non-key columns witharray_agg(row(...))so the join becomes unique on the join key, then re-expands them with a localUNNESTabove the join, reducing the rows shuffled through the distributed join. #27970Add the materialized view query optimizer to the inner query of
CREATE TABLE ASandINSERTstatements, not just bareSELECT. #27917Add validation to reject non-deterministic and session-time functions in
CREATE MATERIALIZED VIEWdefinitions. #28220Add optimizer rule parallelize_chained_aggregation (default: false) that inserts a local round-robin exchange to parallelize the outer PARTIAL in chained aggregations. #27884
Add the
AUTOMATICvalue for therpc_streaming_modesession property, therpc_batch_min_rowssession property, and a pluggableRpcExecutionPolicyso deployments can resolve per-row versus batch RPC dispatch from the estimated input stats. #27984Update
ST_Equalsfunction for empty geometries to return true regardless of geometry types. #27015Update default value of
deprecated.legacy-timestampto false. #24571Update the driver-side metadata sidecar registration of worker functions into the Airlift bootstrap. #27699
Prestissimo (Native Execution) Changes¶
Fix runtime type-mismatch crashes at exchange operators in Prestissimo when aggregation variable names sort differently from their Java allocation order. #27903
Fix
LIKE, regexp, and json_extract queries applied to the result of a remote function (for examplemeta.ai.*outputs), which previously failed native query plan conversion. #28118Add an Arrow federation connector to run federated queries. #26404
Add registration for Presto-specific cuDF functions when cuDF is enabled in Presto native. #28093
Add support for setting gflags through
config.propertiesusing thegflag.prefix. Property names use hyphens in place of underscores, such asgflag.velox-memory-num-shared-leaf-pools=64. Command-line flags take precedence over config values. See Presto C++ Configuration Properties for the full list of supported gflag properties. #28127Add session properties to tune the adaptive RPC rate limiter and congestion window (native_rpc_ratelimiter_adaptive_enabled, native_rpc_ratelimiter_min_limit, native_rpc_ratelimiter_decrease_factor, native_rpc_ratelimiter_max_limit, native_rpc_congestion_max_window). #28115
Add a two-phase memory reclaim for MaterializedOutputBuffer, integrated with the Velox memory arbitrator. #27875
Update
native_exchange_materialization_enabledsession property default totrueto enable MaterializedOutput and MaterializedExchange operators in Velox by default. #27980
Security Changes¶
Update Elasticsearch client dependencies to version 9 in response to CVE-2024-52980. #25320
Upgrade Netty to 4.2.16.Final to address CVE-2026-44891. #28169
Upgrade async-http-client to 3.0.11 in response to CVE-2026-55688. #28168
Upgrade calcite version to 1.42.0 to address CVE-2026-46718. #28039
Upgrade fast-uri version to 3.1.4 to address CVE-2026-13676. #28202
Upgrade highlight version to 10.4.1 to address WS-2020-0208. #27956
Upgrade jersey-bom version to 2.41 in response to the use of an outdated version. #25807
Upgrade lz4-java to 1.11.1 to address CVE-2026-59949. #28244
Upgrade minimum Elasticsearch version from 6 to 9 (breaking) in response to CVE-2024-52980. #25320
Upgrade org.apache.logging.log4j to 2.25.5 to address CVE-2026-49844. #28186
Upgrade async-http-client to 3.0.10 in response to CVE-2026-45300. #27863
Upgrade commons-configuration2 in response to CVE-2026-45205. #27862
Cassandra Connector Changes¶
Upgrade to Cassandra Java Driver 4.x. #27029
Delta Lake Connector Changes¶
Add support for reading Variant data as JSON. #27552
Hive Connector Changes¶
Fix Parquet RLE and PLAIN dictionary decoding for decimals backed by byte arrays. #28086
Fix partition filter cache metrics association. BREAKING: Metric names changed from partitionnamescache* to partitionfiltercache*. Users monitoring these JMX metrics must update their dashboards, alerts, and scripts to use the new metric names. The old metrics tracked the partition filter cache (filtered partition queries), not the partition names cache, as the name suggested. #27960
Fix to allow creating partitioned tables using AVRO format and
avro_schema_urlproperty. #27490Add Azure filesystem impl registration for ABFSS and WASB/S schemes. #28054
Add comprehensive cache metrics for all metastore caches. See Metastore Cache Metrics. #27960
Add support for AWS Glue Table and Column Statistics. #27112
Add support for reading and writing per-column type attributes in DWRF files. #27940
Upgrade to Hive 4.0.1. #24571
Iceberg Connector Changes¶
Fix
DROP TABLEfor Hive-backed Iceberg tables to properly delete all data and metadata files on S3 using Iceberg’s CatalogUtil instead of relying on Hive metastore directory deletion. #27938Fix timestamp-to-micros conversion and legacy-timezone adjustment in IcebergPageSink for pre-epoch timestamps, using the corrected TimestampType epoch helpers. #27935
Improve Iceberg table statistics computation by using snapshot-level total record counts instead of re-scanning manifests. #28248
Add Iceberg version validation to prevent silent data loss. #27655
Add configuration property
iceberg.commit-number-retriesto specify the default number of commit retries for newly created tables. #28055Add explicit strategy parameter to
rewrite_data_filesprocedure with binpack and sort strategies. Breaking change: Default behavior changed from sort to binpack for faster rewrites. Existing queries that rely on data ordering must add strategy => ‘sort’ to maintain previous behavior. Queries using sorted_by must now explicitly specify strategy => ‘sort’. #28092Add optional
delete_data_on_dropparameter to theregister_tableprocedure to control whether underlying Iceberg data is deleted when the registered table is dropped. #27938Add proxy support for Iceberg REST catalogs. See REST catalog. #28217
Add support for Basic Auth against the REST catalog server. See REST catalog. #28103
Add support for iceberg write-default. #27912
Add support to enable TLS for REST catalog communication. See REST catalog. #28103
Add read support for row lineage columns as per Iceberg V3 spec. #27743
Add support for Iceberg V3 field-id protocol in Presto Native. #28116
Add support for Iceberg V3 deletion vectors and
UPDATE/MERGEstatements in Presto Native. #28058
Lance Connector Changes¶
Fix catalog-wide table listing returning no tables for multi-level Lance catalogs (
lance.single-level-ns=false). This affectedinformation_schema.tablesscans. #28268Add
LIMITpushdown for Lance table scans to reduce rows read by Lance for simple limit queries. #28049Add pluggable namespace support to the Lance connector using the lance-namespace API, enabling directory, REST, and custom namespace implementations. #27481
Add the
lance.parentconfiguration property to select a parent namespace prefix for namespaces with three or more levels. See Configuration Properties. #27481Replace the
lance.root-urlconfiguration property withlance.root. This is a breaking change: catalogs that setlance.root-urlmust be updated tolance.rootbefore upgrading. See Configuration Properties. #27481
Oracle Connector Changes¶
Add support for
REALdatatype insert. #28059
SPI Changes¶
Add
OutputColumnMetadata.getColumnLineage()returning a unifiedSet<ColumnLineageEntry>that covers both DIRECT and INDIRECT lineage from #27695, with direct entries carryingIDENTITY,TRANSFORMATION, orAGGREGATIONsubtypes derived from the SELECT-list expression.getSourceColumns()andgetIndirectSourceColumns()are retained as derived views and marked@Deprecated; existing event listeners and JSON consumers are unaffected. #27995Add
getScanRawInputBytestoQueryStatistics. Note: this adds a required constructor argument; plugins that constructQueryStatisticsdirectly must be updated. #28222Add a
ConnectorMetadata.beginRefreshMaterializedView`overload that carries the materialized view refresh predicate (refresh scope) to connectors. #27949Add
getMaterializedViewRewrittenQuerytoQueryCompletedEvent, exposing the query produced when a materialized view rewrite is applied. #27919
Credits¶
Aditi Pandit, Ajay Kharat, Allen Shen, Amit Dutta, Andrii Rosa, Apurva Kumar, Auden Woolfson, Ayasaz, Bryan Cutler, Chandrakant Vankayalapati, ChenXing Yang, Christian Zentgraf, Deepak Majeti, Deepak Mehra, Denis Krivenko, Denodo Research Labs, Dilli Babu Godari, Dong Wang, Henry Dikeman, Hongtao Yang, Jack Luo, Jalpreet Singh Nanda, Jianjian Xie, Joe Abraham, Kevin Tang, Madhavan, Maria Basmanova, Matt Gara, Miguel Blanco Godón, Natasha Sehgal, Neerad Somanchi, Nidhin Varghese, Nishitha K Bhaskaran, Nivin C S, Patrick Sullivan, Pramod Satya, Pratik Joseph Dabre, Reetika Agrawal, Sayari Mukherjee, Shahim Sharafudeen, Shakyan Kushwaha, Shreya, Shrinidhi Joshi, Sreeni Viswanadha, Steve Burnett, Timothy Meehan, Tirumala Saiteja Goruganthu, Vyacheslav Andreykiv, Yihong Wang, Ying, Zac, Zac Blanco, bcam-meta, bibith4, deepthibose01, dependabot[bot], feilong-liu, jkhaliqi, mohsaka, sumi-mathew, zhichenxu-meta