Release 0.296

Breaking Changes

  • Replace default Iceberg compression codec from GZIP to ZSTD. Existing tables are unaffected, but new tables will use ZSTD compression by default if iceberg.compression-codec is not set. #26399

  • Replace the String serializedCommitOutput argument with Optional<Object> commitOutput in the com.facebook.presto.spi.eventlistener.QueryInputMetadata and com.facebook.presto.spi.eventlistener.QueryOutputMetadata constructors. #26331

Highlights

  • Add support for Materialized Views. #26492

  • Add support for the MERGE command in the Presto engine. #26278

  • Add support for distributed execution of procedures. #26373

  • Add HTTP/2 support for internal cluster communication with data compression. #26439 #26381

  • Add support for basic insertion to Iceberg tables on C++ worker clusters. #26338

Details

General Changes

  • Improve sort-merge join performance when one side of the join input is already sorted. #26361

  • Improve query performance for semi joins (used in IN and EXISTS subqueries) when join keys contain many null values. #26251

  • Improve connector optimizer to support queries involving multiple connectors. #26246

  • Add array_transpose() to return a transpose of an array. #26470

  • Add cluster-tag configuration property to assign a custom identifier to the cluster, which is displayed in the Web UI. #26485

  • Add a session property query_types_enabled_for_history_based_optimization to specify query types which will use HBO. See History based optimizations (HBO). #26183

  • Add data compression support for HTTP/2 protocol. #26381 #26382

  • Add max-prefixes-count configuration property to limit the number of catalog/schema/table scope prefixes generated when querying information_schema, which can improve metadata query performance. #25550

  • Add detailed latency and failure count metrics for the system access control plugin. #26116

  • Add experimental support for sorted exchanges to improve sort-merge join performance. When enabled with the sorted_exchange_enabled session property or the optimizer.experimental.sorted-exchange-enabled configuration property, this optimization eliminates redundant sorting steps and reduces memory usage for distributed queries with sort-merge joins. This feature is disabled by default. #26403

  • Add HTTP/2 support for internal cluster communication. #26439

  • Add native_use_velox_geospatial_join session property to enable an optimized implementation for geospatial joins in native execution. This feature is enabled by default. #26057

  • Add support for the MERGE command in the Presto engine. #26278

  • Add enable-java-cluster-query-retry configuration property in router-scheduler.properties to retry queries on router-java-url when they fail on router-native-url. #25720

  • Add array_to_map_int_keys() function. #26681

  • Add map_int_keys_to_array() function. #26681

  • Add t_cdf() and inverse_t_cdf() functions for Student’s t-distribution calculations. #26363

  • Add support for distributed execution of procedures. #26373

  • Add support for Materialized Views. #26492

  • Update encoding of refresh token secret key from HMAC to AES. #26487

Prestissimo (Native Execution) Changes

  • Fix query errors when using mixed case column names with the Iceberg connector. #26163

  • Add native_max_partial_aggregation_memory session property to control memory limits for partial aggregation. #26389

  • Add native_max_split_preload_per_driver session property to configure the maximum number of splits to preload per driver. #26591

  • Add support for basic insertion to Iceberg tables. #26338

  • Add support for custom schemas in native sidecar function registry. #26236

  • Add support for the TPC-DS connector. #24751

  • Add support for REST API for remote functions. #23568

Security Changes

Arrow Flight Connector Changes

  • Add support for case-sensitive identifiers in Arrow. To enable, set case-sensitive-name-matching=true. #26176

Cassandra Connector Changes

  • Add support for case-sensitive identifiers in Cassandra. To enable, set case-sensitive-name-matching=true configuration in the catalog configuration. #25690

Delta Connector Changes

  • Fix problem reading Delta Lake tables with spaces in location or partition values. #26397

Druid Connector Changes

  • Fix Druid connector to use strict application/json content type. #26200

  • Add TLS support. #26027

  • Add support for case-sensitive identifiers in Druid. To enable, set case-sensitive-name-matching=true configuration in the catalog configuration. #26038

Elasticsearch Connector Changes

  • Add support for case-sensitive identifiers in Elasticsearch. To enable, set case-sensitive-name-matching=true in the catalog configuration. #26352

Hive Connector Changes

  • Add support for LZ4 compression codec in ORC format. #26346

  • Add support for ZSTD compression codec in Parquet format. #26346

Iceberg Connector Changes

  • Fix Bearer authentication with Nessie catalog. #26512

  • Fix SHOW STATS for Timestamp with Timezone columns. #26305

  • Fix reading decimal partition values when using native execution. #26240

  • Fix handling of TIME columns in Iceberg tables. #26523

  • Add support for LZ4 compression codec in ORC format. #26346

  • Add support for ZSTD compression codec in Parquet format. #26346

  • Add support for engine.hive.lock-enabled property when creating or altering Iceberg tables. #26234

  • Add support to access Nessie with S3 using Iceberg REST catalog. #26610

  • Add support for Materialized Views. #26603

  • Replace default Iceberg compression codec from GZIP to ZSTD. Existing tables are unaffected, but new tables will use ZSTD compression by default if iceberg.compression-codec is not set. #26399

Kafka Connector Changes

  • Add support for case-sensitive identifiers in Kafka. To enable, set case-sensitive-name-matching=true in the catalog configuration. #26023

Memory Connector Changes

MongoDB Connector Changes

  • Add TLS/SSL support with automatic JKS and PEM certificate format detection. Configure using mongodb.tls.enabled, mongodb.tls.keystore-path, mongodb.tls.keystore-password, mongodb.tls.truststore-path, and mongodb.tls.truststore-password properties. #25374

  • Upgrade MongoDB Java Driver to 3.12.14. #25374

MySQL Connector Changes

  • Fix timestamp handling when legacy_timestamp is disabled. Timestamp values are now correctly stored and retrieved as wall-clock times without timezone conversion. Previously, values were incorrectly converted using the JVM timezone, causing data corruption. #26449

Oracle Connector Changes

  • Add support for fetching table statistics from Oracle source tables. #26120

  • Add support for reading Oracle BLOB columns as VARBINARY. #25354

Pinot Connector Changes

  • Add support for case-sensitive identifiers in Pinot. To enable, set case-sensitive-name-matching=true configuration in the catalog configuration. #26239

  • Upgrade Pinot version to 1.3.0. #25785

PostgreSQL Connector Changes

  • Fix timestamp handling when legacy_timestamp is disabled. Timestamp values are now correctly stored and retrieved as wall-clock times without timezone conversion. Previously, values were incorrectly converted using the JVM timezone, causing data corruption. #26449

Redis Connector Changes

  • Add support for case-sensitive identifiers in Redis. To enable, set case-sensitive-name-matching=true configuration in the catalog configuration. #26078

SingleStore Connector Changes

  • Fix string type mapping to support VARCHAR(len) where len <= 21844. #25476

SPI Changes

  • Add getCommitOutputForRead() and getCommitOutputForWrite() methods to ConnectorCommitHandle, and deprecates the existing getSerializedCommitOutputForRead() and getSerializedCommitOutputForWrite() methods. #26331

  • Add new metric getTotalScheduledTime() to QueryStatistics SPI. This value is the sum of wall time across all threads of all tasks/stages of a query that were actually scheduled for execution. #26279

  • Replace the String serializedCommitOutput argument with Optional<Object> commitOutput in the com.facebook.presto.spi.eventlistener.QueryInputMetadata and com.facebook.presto.spi.eventlistener.QueryOutputMetadata constructors. #26331

Credits

Aditi Pandit, Adrian Carpente (Denodo), Alex Austin Chettiar, Amit Dutta, Anant Aneja, Andrew X, Andrii Rosa, Artem Selishchev, Auden Woolfson, Bryan Cutler, Chris Matzenbach, Christian Zentgraf, Deepak Majeti, Denodo Research Labs, Dilli-Babu-Godari, Dong Wang, Elbin Pallimalil, Gary Helmling, Ge Gao, Han Yan, HeidiHan0000, Jalpreet Singh Nanda, James Gill, Jay Feldblum, Jiaqi Zhang, Joe Abraham, Joe O’Hallaron, Karthikeyan, Ke, Kevin Tang, Li Zhou, LingBin, Maria Basmanova, Mariam AlMesfer, Namya Sehgal, Natasha Sehgal, Nidhin Varghese, Nikhil Collooru, Nivin C S, PRASHANT GOLASH, Pedro Pedreira, Ping Liu, Pramod Satya, Prashant Sharma, Pratyaksh Sharma, Rebecca Schlussel, Reetika Agrawal, RindsSchei225e, Sayari Mukherjee, Sergey Pershin, Shahad Shamsan, Shahim Sharafudeen, Shang Ma, Shrinidhi Joshi, Sreeni Viswanadha, Steve Burnett, Tal Galili, Timothy Meehan, Weitao Wan, XiaoDu, Xiaoxuan, Xin Zhang, Yihong Wang, Yolande Yan, Zac, Zoltán Arnold Nagy, abhinavmuk04, adheer-araokar, bibith4, dependabot[bot], ericyuliu, feilong-liu, inf, jkhaliqi, maniloya, mohsaka, nishithakbhaskaran, rkurniawati, shanhao-203, singcha, sumi-mathew, tanjialiang, vhsu14