Release 484 (15 Oct 2026)#

General#

  • Add support for the JSON value constructor. (#30341)

  • Add support for the JSON_SERIALIZE function. (#30341)

  • Add the json_scalar() function. (#30341)

  • Add support for json input to JSON_EXISTS, JSON_VALUE, JSON_QUERY, and JSON_TABLE. (#30341)

  • Add support for datetime values in the JSON type and casts from json to date and time. (#30341)

  • Add support for numeric values in JSON_VALUE with RETURNING, JSON path arithmetic, and JSON path array subscripts. (#30341)

  • Allow FORMAT JSON arguments in JSON_OBJECT with WITH UNIQUE KEYS, enforcing key uniqueness in nested objects. (#30341)

  • Add support for interval types with explicit leading-field precision and up to 12 fractional-second digits. (#6754)

  • Add support for specifying the interval field range and precision when subtracting datetime values. (#6754)

  • Add support for the EXCLUDE clause in window frame specifications. (#30226)

  • Add support for a single file system cache shared by all catalogs on a node. Cache managers are configured with the cache-manager.config-files configuration property. (#29184)

  • Add support for IF NOT EXISTS in CREATE VIEW. (#28076)

  • Add support for adding comments to materialized views with COMMENT. (#31279)

  • Add support for limiting the size of the output data produced by a query with the query.max-output-data-size configuration property. (#30615)

  • Add support for returning metrics from procedures invoked with CALL. (#30749)

  • Allow resource groups and selectors with a NULL environment in the database resource group manager to match every environment. (#30873)

  • Include the user who killed, preempted, or canceled a query in the failure message when another user stops the query. (#31603)

  • Allow restoring the legacy implicit coercion from varchar to char for a session with the legacy_varchar_to_char_coercion session property. (#30708)

  • Allow restoring the legacy repair of topologically invalid input geometries in ST_Intersection(), ST_Difference(), ST_SymDifference(), ST_Union(), geometry_union(), and geometry_union_agg() with the trino.geospatial.legacy-lenient-overlay JVM system property. (#30584)

  • ⚠️ Breaking change: Preserve the case of user names in GRANT, REVOKE, SET AUTHORIZATION, and CREATE SCHEMA statements instead of converting them to lowercase. User names are compared case-sensitively with the authenticated user, so privileges granted to Alice only apply to the user Alice. Role names are still converted to lowercase. (#30567)

  • Fail queries after a single task retry instead of retrying until the task retry limit is reached when spooled exchange data is lost with retry-policy set to TASK. (#31336)

  • ⚠️ Breaking change: Retain numeric arguments as JSON numbers in JSON_ARRAY, JSON_OBJECT, and PASSING clauses instead of converting them to JSON strings. (#30341)

  • ⚠️ Breaking change: Retain numeric types and decimal scale when casting array, map, and row values to json. (#30341)

  • ⚠️ Breaking change: Retain decimal notation when casting decimal-form JSON numbers to varchar. (#30341)

  • ⚠️ Breaking change: Retain object member order and duplicate keys in json_parse() and JSON literals. (#30341)

  • ⚠️ Breaking change: Disallow construction of JSON values with more than 1,024 nested arrays and objects. (#30341)

  • ⚠️ Breaking change: Disallow JSON input containing overflowing exponent-form numbers or unpaired Unicode surrogate escapes. (#30341)

  • ⚠️ Breaking change: Remove conversion of json arguments to JSON strings in JSON_ARRAY, JSON_OBJECT, and PASSING clauses. The JSON values are used directly without requiring FORMAT JSON. (#30341)

  • ⚠️ Breaking change: Require quoting identifiers named JSON_SERIALIZE, which is a reserved keyword. (#30341)

  • ⚠️ Breaking change: Require qualifying calls written as json(x) to invoke a function instead of the JSON constructor. (#30341)

  • ⚠️ Breaking change: Limit the number of elements returned by ngrams() to 1,000,000. (#30806)

  • ⚠️ Breaking change: Reduce the maximum duration of day-time intervals to approximately 292,000 years. Subtracting timestamps that are further apart fails with an overflow error. (#6754)

  • ⚠️ Breaking change: Disallow extracting fields that are absent from an interval’s qualifier. (#6754)

  • ⚠️ Breaking change: Return the full leading field when extracting a value from an interval, such as 36 for hour(INTERVAL '36' HOUR). (#6754)

  • ⚠️ Breaking change: Truncate interval multiplication and division results to the interval’s field range. (#6754)

  • Set the process name to trino-server when running the trino-server-core distribution. (#30403)

  • Improve performance of queries involving boolean values, especially when reading or writing ORC and Parquet files. (#30299)

  • Improve performance of queries that compare the result of at_timezone() with a constant time zone against a timestamp with time zone value. (#30597)

  • Reduce memory usage for queries that compute both avg() and sum() over the same decimal column. (#30595)

  • Improve performance of queries with predicates on date_trunc() with the week or quarter unit. (#30192)

  • Improve performance of window functions that compute sum() over decimal values with a moving window frame. (#30630)

  • Improve scheduling of tasks that require no memory, such as tasks reading only metadata, when cluster memory is exhausted with fault-tolerant execution. (#30678)

  • Improve performance of queries with uncorrelated EXISTS subqueries. (#30224)

  • Improve performance of queries that filter or project dictionary-encoded data. (#30877)

  • Reduce the amount of data read for queries with filters that combine multiple conditions with AND. (#30909)

  • Improve performance of queries with joins and filters that can fail when optimizer.allow-unsafe-pushdown is enabled. (#30917)

  • Reduce memory usage of queries that redistribute dictionary-encoded data across workers. (#31056)

  • Improve performance of cross joins where one side is a subquery with LIMIT or ORDER BY ... LIMIT. (#31128)

  • Improve performance of queries with range comparisons between char columns and varchar values. (#31089)

  • Improve performance of queries with an IN predicate that compares a cast expression against a list of literals, such as CAST(ts AS date) IN (DATE '2020-01-01', DATE '2020-01-02'). (#31182)

  • Improve performance of filters on dictionary-encoded columns when each page uses only a few entries of a large dictionary. (#31200)

  • Improve performance of queries with ORDER BY when retry-policy is set to QUERY. (#30966)

  • Improve performance of queries that differ only in literal values from previously run queries. (#30465)

  • Reduce worker memory usage for queries with many operators. (#31301)

  • Reduce memory usage of dynamic filtering on varchar columns. (#31303)

  • Improve performance of queries with filters on at_timezone() over timestamp with time zone columns, including filters on views that convert such columns to a per-row time zone. (#30551)

  • Improve query planning performance for queries with many joins. The optimizer.max-reordered-joins configuration property and the max_reordered_joins session property are limited to a maximum of 62. (#31261)

  • Improve performance of BETWEEN and comparison predicates on numeric values that are implicitly cast to a wider type. (#31400)

  • Improve performance of casting between decimal values and double or real values. (#31475, #31481, #31502)

  • Improve performance of queries with conditional expressions, such as CASE or IF, that reference columns only needed when the condition is met. (#31473)

  • Improve performance of nested string concatenations. (#31465)

  • Fix failure when a JSON simplified accessor applies an item method, such as integer(), after two or more nested member accesses, for example j.a.b.integer(). (#30379)

  • Fix query failure when using try() with an argument containing nullif() or BETWEEN. (#30399)

  • Fix potential worker memory accounting leak when tasks finish, which can cause queries to block or fail with out-of-memory errors. (#30472)

  • Fix incorrect results for IF and CASE expressions that repeat a non-deterministic condition within a branch. (#30509)

  • Fix incorrect results when sum() over bigint values overflows in a window function. The query fails instead. (#30600)

  • Fix incorrect results when using AT TIME ZONE with an interval offset outside the range of -14:00 to +14:00 on time values. The query fails instead. (#9288)

  • Fix potential worker unavailability under highly concurrent workloads. (#30627)

  • Fix incorrect results for joins on char columns cast to varchar when dynamic filtering is enabled. (#30686)

  • Fix worker out-of-memory errors due to untracked memory usage for queries with large right or full outer joins. (#30790)

  • Fix incorrect results when casting some decimal values with precision of 18 or less to real. (#30130)

  • Fix failure when executing a USE statement as a prepared statement. (#30859)

  • Fix query failure when planning queries with a very large number of OR predicates. (#30709)

  • Fix missing query completion events and a potential coordinator memory leak when a worker restarts while running a query. (#30755)

  • Fix query failure for queries with a BETWEEN predicate on an expression and multiple aggregations with DISTINCT. (#30608)

  • Fix intermittent query failure with a No committed attempts found under sink output path error when using fault-tolerant execution. (#30411)

  • Fix failure of convex_hull_agg() when an input geometry is topologically invalid. (#30584)

  • Fix incorrect results or query failure for avg() over decimal values when the sum of the values exceeds the range of the type. (#30991)

  • Fix potential worker out-of-memory errors for queries with ORDER BY ... LIMIT or filters on row_number() or rank() that process wide rows. (#31014)

  • Fix incorrect results when date_add() or adding an interval to a timestamp value produces a value outside the supported range. The query fails instead. (#31002)

  • Fix incorrect results when subtracting timestamp values with a very large difference. (#31002)

  • Fix incorrect results for aggregations over outer joins without equality conditions, such as LEFT JOIN ... ON true, when the joined side produces no rows. (#30989)

  • Fix query failure instead of returning NULL when calling mod() with a zero divisor inside try(). (#31054)

  • Fix failure when using WITH SESSION to set a catalog session property for a catalog that already has session properties set. (#31045)

  • Fix failure when a SQL user-defined function ends with an IF or CASE statement that returns a value from every branch. (#30582)

  • Fix incorrect results when filtering with IF, CASE, or NULLIF expressions that contain non-deterministic conditions. (#30993)

  • Fix incorrect results for IN predicates with real NaN values, or with time with time zone and timestamp with time zone values in different time zones. (#31069, #31080)

  • Fix incorrect memory accounting for aggregations with both DISTINCT and ORDER BY clauses, which could cause workers to run out of memory. (#31039)

  • Fix workers becoming unresponsive and dropping out of the cluster when running queries with a large number of stages and tasks. (#21512)

  • Fix MERGE failing with MERGE_TARGET_ROW_MULTIPLE_MATCHES when the target table is bucketed and the query uses a partitioned join distribution. (#30639)

  • Fix incorrect results for aggregations over CASE expressions that contain non-deterministic functions. (#31121)

  • Fix incorrect results for comparisons involving year() or date_trunc() with a non-deterministic argument. (#31086)

  • Fix incorrect results for IS NOT DISTINCT FROM comparisons between a cast expression and a constant. (#31084)

  • Fix incorrect results for simple CASE expressions when the operand is NULL or NaN, or when comparing values with time zones. (#31065, #31081)

  • Fix incorrect data_type for number columns in system.jdbc.columns and in JDBC DatabaseMetaData.getColumns. (#31184)

  • Fix incorrect results for OR and IN predicates over non-deterministic expressions. (#31149)

  • Fix failure of recursive WITH queries that use a table function. (#31053)

  • Fix incorrect results for queries with multiple aggregations containing a DISTINCT clause over non-deterministic expressions. (#31151)

  • Fix try() not suppressing errors when accessing a field of a row produced by a failing expression, such as TRY(array[index].field) with an out-of-bounds index. (#31008)

  • Fix incorrect results for char values ending with a space produced by reverse() or by casting to a shorter char type. (#31190)

  • Fix query failure when comparing a varchar value cast to char with a char value. (#31187)

  • Fix incorrect results for IN and NOT IN predicates with a list of consecutive values that contains NULL. (#31068)

  • Fix incorrect results for full outer joins with a join condition when an input produces a single row. (#30988)

  • Fix incorrect results for trim(), ltrim(), and rtrim() on char values when trimming a set of characters that does not include a space. (#31004)

  • Fix potential worker memory leak when a task fails while writing its output, such as when a fault-tolerant task is aborted. (#31334, #31353)

  • Fix incorrect results and failures when casting a timestamp value before 1970 with fractional seconds to time. (#31344)

  • Fix query hang or failure when calling hamming_distance() on strings containing a NUL character. (#31247)

  • Fix incorrect results and query failures when max_by() or min_by() with a count argument returns row values with null fields. (#31193)

  • Fix incorrect results for queries with a GROUP BY clause and multiple aggregations containing a DISTINCT clause when a grouping key is NULL. (#29095)

  • Fix incorrect NULL results from max_by() and min_by() with a count argument when the input contains NULL values. (#31383)

  • Fix incorrect results when filtering on a simple CASE expression with a NULL operand and a predicate in a WHEN clause. (#30992)

  • Fix incorrect results for window functions with a ROWS frame whose offsets vary between rows. (#31420)

  • ⚠️ Breaking change: Fix missing padding in SQL/JSON output for char values. (#30341)

  • ⚠️ Breaking change: Prevent precision loss when casting decimal-form JSON numbers to numeric types. (#30341)

  • ⚠️ Breaking change: Fix invalid JSON returned by json_array_get() when extracting string elements. (#28861)

  • Fix excessive CPU usage in clients that poll for query results right after a query finishes. (#31431)

  • Fix query failure when using BETWEEN SYMMETRIC with nested fields of row columns. (#31487)

  • Fix incorrect formatting of interval values when the JVM default locale uses non-ASCII digits. (#31433)

  • Fix duplicate rows in information_schema.tables when the table_name filter includes a table that does not exist. (#31488)

  • Fix query failure when variant values from arrays or UNNEST are used in GROUP BY, DISTINCT, IN subqueries, array_histogram(), or aggregation functions such as array_agg(), histogram(), and map_agg(). (#31387)

  • Prevent catalog properties, such as credentials, from appearing in error messages when a catalog is not available. (#31538)

  • Fix incorrect results for comparisons involving a cast from timestamp to timestamp with time zone with a lower precision. (#30496)

  • Fix incorrect results from date_diff() for timestamp(p) with time zone values with precision greater than 3 when the difference spans a daylight saving time transition or uses the month, quarter, or year unit. (#31543)

  • Fix incorrect rounding in to_unixtime() for timestamps with sub-millisecond precision, and in from_unixtime() for values halfway between milliseconds. (#31386)

  • Fix failures and incorrect results for timestamps near the maximum and minimum supported values. (#31564)

  • Fix potential memory leak when a connector fails while cleaning up after a query. (#31532)

  • Fix incorrect query results when using the spooling protocol with inline segments. (#31527)

  • Fix worker out-of-memory errors when many tasks buffer data in local exchanges. (#31533)

  • Fix server startup failure when memory properties specified as percentages of the heap add up to 100%. (#31552)

Security#

  • Add support for clients using the OAuth 2.0 client credentials flow by including the token endpoint and scope in the WWW-Authenticate authentication challenge. (#15836)

  • Add support for the {user} placeholder in the catalog, schema, and table patterns of file-based access control rules. (#31205)

  • Add support for forwarding selected extra credentials to Open Policy Agent with the opa.identity.extra-credentials-keys configuration property. (#29302)

  • Fix authorization failures with Ranger access control when the Kerberos principal differs from the mapped user name. (#29342)

  • Fix query failure when a session property manager sets a default for a session property that the user is not allowed to set. (#31281)

  • Fix failure when a Ranger column mask applies to a column whose name requires quoting, such as a name containing a space. (#31119)

Web UI#

  • Add support for capturing worker thread snapshots on the worker status page. (#30388)

  • Add line numbers to the query text on the query details page. (#31424)

  • Use the full width of the browser window for the query list. (#30352)

  • Fix sorting of finished and failed queries when sorting the query list by progress. (#30528)

  • Fix overlapping text in the navigation menu when it is collapsed. (#31232)

  • Fix failure to load the query details page when worker addresses are IPv6 addresses with a zone ID. (#30905)

  • Fix missing query progress in the query list for queries with retry-policy set to TASK until all stages are scheduled. (#31336)

JDBC driver#

  • Add support for the OAuth 2.0 client credentials flow with the oauth2ClientId, oauth2ClientSecret, oauth2TokenEndpoint, and oauth2Scope connection parameters. (#15836)

  • Add support for reading interval values with up to 12 fractional-second digits and reporting their field ranges and precision. (#6754)

  • Throw SQLException instead of IllegalArgumentException when calling getTime or getTimestamp on a column of an incompatible type. (#5315)

  • Improve performance of reading query results that use the JSON encoding. (#30375)

  • Fix failure when reading interval values when the JVM default locale uses non-ASCII digits, such as Arabic or Persian. (#31433)

Docker image#

  • ⚠️ Breaking change: Remove the ppc64le Docker image. (#30422)

  • ⚠️ Breaking change: Use the Red Hat Hardened core runtime image as the base of the Docker image. The image does not include utilities such as grep, dnf, or useradd. (#30397)

  • ⚠️ Breaking change: Remove the run-trino script from the Docker image. Custom node.properties files must set node.id=${ENV:HOSTNAME} to keep using the container hostname as the node identifier. (#30397)

CLI#

  • Add support for OAuth 2.0 client credentials authentication with the --oauth2-client-id, --oauth2-client-secret, --oauth2-token-endpoint, and --oauth2-scope options. (#15836)

  • Improve performance of reading query results that use the JSON encoding. (#30375)

  • Fix the pager requiring q to be pressed twice to exit after a query shows progress updates. (#30965)

BigQuery connector#

  • Add support for setting the location of a dataset with the location schema property in CREATE SCHEMA. (#30366)

  • Add support for retrying writes that fail due to exceeded BigQuery quotas, configurable with the bigquery.write-retry-max-attempts, bigquery.write-retry-initial-delay, and bigquery.write-retry-max-delay configuration properties. (#30927)

  • Fix query failures due to read timeouts when BigQuery takes longer than 20 seconds to respond. (#30840)

  • Fix potential connection leak when reading from BigQuery fails. (#30834)

  • Fix failure due to ambiguous names when querying a table or dataset after another table or dataset with the same name in different case is dropped or renamed, when bigquery.case-insensitive-name-matching is enabled. (#31332)

Cassandra connector#

ClickHouse connector#

  • Add support for creating, altering, and dropping tables and schemas on all nodes of a ClickHouse cluster with the clickhouse.cluster-name configuration property. (#17307)

  • Fix duplicate rows when inserting into Distributed tables, and failure when inserting into replicated tables. (#7600, #7601)

  • Fix leak of temporary tables in the remote database when a query writing to a table fails or is canceled. (#31333)

Delta Lake connector#

  • Add support for Databricks 18 LTS. (#30935)

  • Add support for the vacuum procedure on tables with deletion vectors. (#22809)

  • Add support for writing data files under hash-based directory prefixes with the delta.object-store-layout.enabled configuration property and the object_store_layout_enabled table property. (#24199)

  • Add support for reporting execution metrics in the output of the optimize table procedure. (#28999)

  • Add support for using CRC32, CRC32C, SHA1, or SHA256 checksums when writing to S3 with the s3.checksum-algorithm configuration property. (#31523)

  • Add support for writing to S3-compatible storage that rejects the HTTP expect-continue handshake by setting the s3.expect-continue-enabled configuration property to false. (#30534)

  • Add support for writing to S3-compatible storage that does not support chunked encoding by setting the s3.chunked-encoding-enabled configuration property to false. (#31524)

  • ⚠️ Breaking change: Require setting the fs.cache.directories, fs.cache.max-sizes, fs.cache.max-disk-usage-percentages, fs.cache.ttl, and fs.cache.page-size properties in the alluxio cache manager of the cluster-wide file system cache instead of in catalog properties files. Catalogs only set fs.cache.enabled. (#29184)

  • Disallow dropping tables with UniForm enabled. (#31083)

  • Improve performance of writing data files. (#30502)

  • Improve performance of MERGE, UPDATE, and DELETE statements and of reading tables with deletion vectors. (#30976)

  • Improve performance of queries with selective filters on Parquet files. This can be deactivated by setting the parquet.selected-positions-pushdown-enabled configuration property to false. (#30303)

  • Reduce memory usage when reading row columns from Parquet files. (#31381)

  • Reduce coordinator memory usage when writing checkpoints for tables with many files. (#31354)

  • Improve performance of writes when task retries are enabled. (#31408)

  • Fix incorrect memory accounting for MERGE, UPDATE, and DELETE statements. (#29956)

  • Fix incorrect results for queries using FOR TIMESTAMP AS OF that could read an older version of the table. (#31057)

  • Fix deleted rows remaining visible after DELETE of whole files or CREATE OR REPLACE TABLE on tables with deletion vectors. (#30343)

  • Fix writing Parquet files smaller than the target file size when writing low-cardinality data. (#31291)

  • Fix data loss when Trino writes a checkpoint for tables with deletion vectors written by other engines. (#31252)

  • Fix failure when writing checkpoints, including during OPTIMIZE, for tables whose statistics contain NaN or infinite double or real values, decimal values stored as JSON numbers, or timestamps without a zone offset. (#24029, #28532)

  • Fix potential data loss when Trino writes a checkpoint for a table with deletion vectors that another engine restored to an earlier version. (#30985)

  • Fix duplicate rows returned by other Delta Lake readers after running OPTIMIZE on tables with deletion vectors. (#31253)

  • Fix incorrect results when filtering on timestamp with time zone columns after Trino writes a checkpoint for a table with sub-millisecond statistics from other writers. (#31231)

  • Fix OPTIMIZE skipping a file with deletion vectors when it is the only file smaller than file_size_threshold in its partition. (#29041)

  • Fix incorrect results when reading or modifying tables with deletion vectors when the delta.enableDeletionVectors table property is set to false. (#30685, #31396)

  • Fix failure when reading change data with the table_changes function for partitions with values that require URI encoding, such as values containing a space. (#30952)

  • Fix failure when reading nested arrays from Parquet files that use the legacy list encoding. (#27766)

  • Fix query failure or incorrect results when reading variant columns from Parquet files that store the metadata field before the value field. (#31388)

  • Fix incorrect file counts, sizes, and statistics in the $partitions metadata table for partitions with deletion vectors. (#31397)

  • Fix failure when writing checkpoints for tables with statistics for row columns written by other engines. (#31194)

  • Fix incorrect results when reading decimal values with precision of 18 or less stored as BINARY with DELTA_LENGTH_BYTE_ARRAY encoding in Parquet files. (#31554)

Druid connector#

  • Improve performance of queries with ORDER BY on the __time column and LIMIT. (#31277)

DuckDB connector#

  • Fix leak of temporary tables in the remote database when a query writing to a table fails or is canceled. (#31333)

Elasticsearch connector#

  • Improve performance of queries with ORDER BY ... LIMIT or with count(), sum(), avg(), min(), or max() aggregations by pushing them down to Elasticsearch. (#27251)

  • Fix failure when listing columns if an index contains fields with unsupported metadata. (#30852)

  • Fix incorrect results when reading an alias that has a filter or routing. (#27251)

  • Fix failure when reading an alias without access to its backing indices. (#27251)

  • Fix incorrect results when an Elasticsearch search times out or a shard fails. (#27251)

  • Fix incorrect results for predicates on fields whose indexed values differ from their source values, such as fields with null_value, ignore_above, or ignore_malformed mappings. (#27251)

  • Fix incorrect results for real and double predicates with a zero bound when values contain negative zero. (#27251)

Faker connector#

  • Fix incorrect values generated for timestamp(12) and timestamp(12) with time zone columns when the min and max column properties are set. (#31037)

Hive connector#

  • Add support for reading the remainder of a line into the last column of TEXTFILE, RCTEXT, and SEQUENCEFILE tables with the last_column_takes_rest table property. (#30938)

  • Add support for using CRC32, CRC32C, SHA1, or SHA256 checksums when writing to S3 with the s3.checksum-algorithm configuration property. (#31523)

  • Add support for writing to S3-compatible storage that rejects the HTTP expect-continue handshake by setting the s3.expect-continue-enabled configuration property to false. (#30534)

  • Add support for writing to S3-compatible storage that does not support chunked encoding by setting the s3.chunked-encoding-enabled configuration property to false. (#31524)

  • ⚠️ Breaking change: Require setting the fs.cache.directories, fs.cache.max-sizes, fs.cache.max-disk-usage-percentages, fs.cache.ttl, and fs.cache.page-size properties in the alluxio cache manager of the cluster-wide file system cache instead of in catalog properties files. Catalogs only set fs.cache.enabled. (#29184)

  • ⚠️ Breaking change: Set the default value of the hive.storage-format configuration property to PARQUET. The previous behavior can be restored by setting hive.storage-format to ORC. (#30818)

  • ⚠️ Breaking change: Return values of the $file_modified_time hidden column in UTC instead of the JVM default time zone. (#31239)

  • Improve performance of writing Parquet files. (#30502)

  • Improve performance of queries with selective filters on Parquet files. This can be deactivated by setting the parquet.selected-positions-pushdown-enabled configuration property to false. (#30303)

  • Improve performance of writes into many existing partitions when using a Thrift metastore. (#31020)

  • Reduce memory usage when reading row columns from Parquet files. (#31381)

  • Improve performance of the flush_metadata_cache procedure for partitioned tables. (#31486)

  • Reduce native memory usage when writing ORC files with ZLIB compression. (#31582)

  • Fix worker out-of-memory errors due to under-accounted memory usage when writing ORC files. (#30771)

  • Fix potential worker out-of-memory errors when writes to sorted tables fail. (#31018)

  • Fix failure when reading Avro tables in the AWS Glue catalog whose columns differ from the schema defined by the avro.schema.url or avro.schema.literal table property. (#30599)

  • Fix loss of column statistics and slow rollback when a write into existing partitions fails. (#31020)

  • Fix failure when reading ORC files where a large varchar or varbinary value is followed only by null or empty values until the end of a stripe. (#10113)

  • Fix writing Parquet files smaller than the target file size when writing low-cardinality data. (#31291)

  • Fix incorrect results when filtering on timestamp columns in Parquet files with UTC-adjusted timestamps when hive.parquet.time-zone is set to a time zone other than UTC. (#31050)

  • Fix incorrect translation of Hive views containing an IN predicate in a JOIN condition. (#31298)

  • Fix failure when reading nested arrays from Parquet files that use the legacy list encoding. (#27766)

  • Fix failure when reading JSON tables with duplicate top-level keys in a JSON object. (#29983)

  • Fix incorrect results when reading decimal values with precision of 18 or less stored as BINARY with DELTA_LENGTH_BYTE_ARRAY encoding in Parquet files. (#31554)

Hudi connector#

  • Improve performance of queries with selective filters on Parquet files. This can be deactivated by setting the parquet.selected-positions-pushdown-enabled configuration property to false. (#30303)

  • Reduce memory usage when reading row columns from Parquet files. (#31381)

  • Fix query failure when reading copy-on-write tables with pending clustering operations. (#30855)

  • Fix incorrect results when filtering on timestamp columns in Parquet files with UTC-adjusted timestamps when the JVM time zone is not UTC. (#31050)

  • Fix failure when reading nested arrays from Parquet files that use the legacy list encoding. (#27766)

  • Fix incorrect results when reading decimal values with precision of 18 or less stored as BINARY with DELTA_LENGTH_BYTE_ARRAY encoding in Parquet files. (#31554)

Iceberg connector#

  • Add support for running table procedures such as optimize and expire_snapshots on materialized views with ALTER MATERIALIZED VIEW EXECUTE. (#21797)

  • Add support for refreshing view definitions with ALTER VIEW REFRESH. (#30954)

  • Add support for adding comments to materialized views with COMMENT. (#31279)

  • Add support for reading columns of the unknown type. (#31525)

  • Add support for sorting data files with a custom sort order using the sorted_by parameter of the optimize table procedure. (#31274)

  • Add support for sorting by nested fields with the sorted_by table property. (#19620)

  • Add support for preventing snapshot expiration, orphan file removal, and DROP TABLE from deleting table files with the gc_enabled table property. (#31218)

  • Add support for registering tables whose metadata file is outside the default metadata directory with the metadata_location parameter of the register_table procedure. (#31164)

  • Add support for creating tables with the BigLake metastore through the Iceberg REST catalog with the iceberg.rest-catalog.server-assigned-table-location-enabled configuration property. (#30438)

  • Add support for configuring the AWS KMS connection used to read tables with encrypted Parquet files with the aws.kms.region, aws.kms.endpoint, aws.kms.iam-role, aws.kms.access-key, aws.kms.secret-key, and related configuration properties. (#30371)

  • Add support for using CRC32, CRC32C, SHA1, or SHA256 checksums when writing to S3 with the s3.checksum-algorithm configuration property. (#31523)

  • Add support for writing to S3-compatible storage that rejects the HTTP expect-continue handshake by setting the s3.expect-continue-enabled configuration property to false. (#30534)

  • Add support for writing to S3-compatible storage that does not support chunked encoding by setting the s3.chunked-encoding-enabled configuration property to false. (#31524)

  • Add support for using the AWS default credentials provider chain for SigV4 request signing with the Iceberg REST catalog when no IAM role or access keys are configured. (#25257)

  • Add support for configuring the maximum number of retries for Iceberg REST catalog requests with the iceberg.rest-catalog.max-retries configuration property. (#31073)

  • Add support for turning off reporting of metrics to the Iceberg REST catalog by setting the iceberg.rest-catalog.metrics-reporting-enabled configuration property to false. (#31075)

  • Add support for limiting the size of the case-insensitive name mapping cache of the Iceberg REST catalog with the iceberg.rest-catalog.case-insensitive-name-matching.cache-max-size configuration property. (#30856)

  • Add support for skipping more data when filtering on predicates with more than 1,000 discrete values, such as dynamic filters from selective joins, with the iceberg.domain-compaction-threshold configuration property. (#31175)

  • Add support for reporting the number of added data files in the output of the migrate procedure. (#30749)

  • Add support for reporting the number of removed statistics files in the output of drop_extended_stats. (#30768)

  • Include the commit summary in the output metadata reported to event listeners for MERGE, UPDATE, and DELETE statements. (#30934)

  • ⚠️ Breaking change: Require setting the fs.cache.directories, fs.cache.max-sizes, fs.cache.max-disk-usage-percentages, fs.cache.ttl, and fs.cache.page-size properties in the alluxio cache manager of the cluster-wide file system cache instead of in catalog properties files. Catalogs only set fs.cache.enabled. (#29184)

  • ⚠️ Breaking change: Require the native file system for the warehouse location, such as fs.s3.enabled, to be enabled when iceberg.rest-catalog.vended-credentials-enabled is set to true. (#30634)

  • ⚠️ Breaking change: Require the iceberg.rest-catalog.google-json-key-file-path or iceberg.rest-catalog.google-json-key configuration property instead of gcs.json-key-file-path to authenticate with an Iceberg REST catalog using GOOGLE security. (#31240)

  • ⚠️ Breaking change: Remove the iceberg.equality-deletes-blocks-hash-enabled configuration property. (#31286)

  • ⚠️ Breaking change: Return timestamp with time zone values in UTC instead of the session time zone in the $snapshots, $history, and $metadata_log_entries metadata tables. (#31356)

  • Reduce coordinator memory usage when committing writes that produce a large number of files. (#30433)

  • Improve performance of writing Parquet files. (#30502)

  • Improve performance of listing views, such as querying information_schema.views, when using an Iceberg JDBC catalog. (#29751)

  • Reduce coordinator memory usage when planning queries on tables with many columns and data files. (#30675)

  • Reduce query failures when running concurrent DELETE statements on the same table. (#30850)

  • Reduce the number of OAuth 2.0 token requests made to the Iceberg REST catalog when iceberg.rest-catalog.session is set to NONE. (#30816)

  • Improve performance of queries with filters on Parquet files that contain column indexes. This can be deactivated by setting the parquet.use-column-index configuration property or the parquet_use_column_index session property to false. (#11000)

  • Improve performance of queries with selective filters on Parquet files. This can be deactivated by setting the parquet.selected-positions-pushdown-enabled configuration property to false. (#30303)

  • Improve performance of case-insensitive name matching with the Iceberg REST catalog. (#29382)

  • Improve performance of queries with range predicates when reading ORC files with Bloom filters. (#31175)

  • Improve performance of reading Iceberg v3 tables after DELETE, UPDATE, or MERGE removes all rows of a data file, by removing the file instead of writing a deletion vector. (#31165)

  • Reduce memory usage when reading row columns from Parquet files. (#31381)

  • Improve performance of reading metadata for tables with many snapshots from REST catalogs that support loading only referenced snapshots, by setting the iceberg.rest-catalog.snapshot-loading-mode configuration property to REFS. (#30612)

  • Reduce native memory usage when writing ORC files with ZLIB compression. (#31582)

  • Fix query failure when reading the $partitions metadata table of tables with many columns. (#30311)

  • Fix failure when reading the $partitions metadata table of tables with columns named after SQL reserved words, such as group or order. (#30488)

  • Fix query failure when reading the $files, $partitions, $entries, or $all_entries metadata tables of tables with a dropped partition field. (#30247)

  • Fix query failure when reading the $files or $partitions metadata tables of tables without snapshots. (#30501)

  • Fix failure of SHOW CREATE SCHEMA when using an Iceberg JDBC catalog and the schema has namespace properties not supported by Trino. (#29769)

  • Fix worker out-of-memory errors due to under-accounted memory usage when writing ORC files. (#30771)

  • Fix failure when reading null row or map values that contain variant fields from Parquet files. (#30613)

  • Fix incorrect resolution of tables and views in an Iceberg REST catalog when case-insensitive name matching is enabled. (#30747)

  • Fix incorrect memory accounting for queries reading tables with equality delete files. (#29955)

  • Fix incorrect memory accounting when reading tables with deletion vectors. (#30876)

  • Fix potential worker out-of-memory errors when writes to sorted tables fail. (#31018)

  • Fix incorrect results in $history metadata tables, which listed snapshots that never became current and reported the commit time instead of the time the snapshot became current. (#31102)

  • Fix failure when dropping a table or otherwise accessing the table location with vended credentials from an Iceberg REST catalog, such as BigLake. (#31217)

  • Fix query failure when the optimize_metadata_queries session property is enabled and the query filters on the $path, $partition, or $file_modified_time hidden columns. (#31103)

  • Fix duplicate rows in materialized views after a refresh when source tables are modified during the refresh, or when the view reads a source table with FOR VERSION AS OF. (#30990)

  • Fix excessive memory usage and out-of-memory errors during UPDATE, DELETE, and MERGE on tables with many data files. (#31258)

  • Fix duplicate or lost rows in materialized views when refreshes run concurrently. (#31257)

  • Fix failure when reading ORC files where a large varchar or varbinary value is followed only by null or empty values until the end of a stripe. (#10113)

  • Fix failure when running OPTIMIZE or writing to sorted tables that contain large varchar or varbinary values. (#20164, #28636)

  • Fix failure when selecting a field of a row column that is used as an equality delete key. (#25720)

  • Fix writing Parquet files smaller than the target file size when writing low-cardinality data. (#31291)

  • Fix missing columns and comments in information_schema and system.metadata listings of a schema when a table in the schema fails to load in the AWS Glue catalog. (#30926)

  • Fix duplicate rows when the commit of a write is retried with retry-policy set to TASK. (#31246)

  • Fix incorrect results when reading tables with equality delete files whose key includes a field nested in a row column. (#31376)

  • Fix potential loss of table metadata when a CREATE TABLE commit to the Hive metastore or AWS Glue fails after the table was created. (#31211)

  • Fix failure when querying the $files or $partitions metadata tables of a table with bucket or truncate partition evolution on the same column. (#31435)

  • Fix failure when accessing tables using Azure vended credentials from REST catalogs that key SAS tokens by storage host. (#29526)

  • Fix failure when reading nested arrays from Parquet files that use the legacy list encoding. (#27766)

  • Fix incorrect results for joins on tables partitioned with the bucket transform on a decimal column. (#31457)

  • Fix failure of concurrent writes to tables in a Hive metastore when iceberg.hive-catalog.locking-enabled is set to false. (#27942)

  • Fix failure of writes to tables in AWS Glue when Glue returns an error for an update it already applied. (#31213)

  • Fix variant columns in Parquet files written by Trino being read as row values by other engines, such as DuckDB. (#31388)

  • Fix incorrect results when reading decimal values with precision of 18 or less stored as BINARY with DELTA_LENGTH_BYTE_ARRAY encoding in Parquet files. (#31554)

Ignite connector#

  • Fix query failure for joins with an IS NOT DISTINCT FROM condition when complex join pushdown is deactivated. (#31097)

  • Fix leak of temporary tables in the remote database when a query writing to a table fails or is canceled. (#31333)

Lakehouse connector#

  • Add support for procedures such as system.sync_partition_metadata and system.vacuum, and table procedures such as optimize and expire_snapshots. (#26753, #26754)

  • Add support for sorting data files of Iceberg tables with a custom sort order using the sorted_by parameter of the optimize table procedure. (#31274)

  • Add support for writing Delta Lake data files under hash-based directory prefixes with the object_store_layout_enabled table property. (#24199)

  • Add support for configuring the AWS KMS connection used to read tables with encrypted Parquet files with the aws.kms.region, aws.kms.endpoint, aws.kms.iam-role, aws.kms.access-key, aws.kms.secret-key, and related configuration properties. (#30371)

  • Add support for using CRC32, CRC32C, SHA1, or SHA256 checksums when writing to S3 with the s3.checksum-algorithm configuration property. (#31523)

  • Add support for writing to S3-compatible storage that rejects the HTTP expect-continue handshake by setting the s3.expect-continue-enabled configuration property to false. (#30534)

  • Add support for writing to S3-compatible storage that does not support chunked encoding by setting the s3.chunked-encoding-enabled configuration property to false. (#31524)

  • ⚠️ Breaking change: Require setting the fs.cache.directories, fs.cache.max-sizes, fs.cache.max-disk-usage-percentages, fs.cache.ttl, and fs.cache.page-size properties in the alluxio cache manager of the cluster-wide file system cache instead of in catalog properties files. Catalogs only set fs.cache.enabled. (#29184)

  • ⚠️ Breaking change: Set the default value of the hive.storage-format configuration property to PARQUET. The previous behavior can be restored by setting hive.storage-format to ORC. (#30818)

  • ⚠️ Breaking change: Require the iceberg.rest-catalog.google-json-key-file-path or iceberg.rest-catalog.google-json-key configuration property instead of gcs.json-key-file-path to authenticate with an Iceberg REST catalog using GOOGLE security. (#31240)

  • ⚠️ Breaking change: Remove the iceberg.equality-deletes-blocks-hash-enabled configuration property. (#31286)

  • Improve performance of writing Parquet files. (#30502)

  • Improve performance of MERGE, UPDATE, and DELETE statements and of reading Delta Lake tables with deletion vectors. (#30976)

  • Improve performance of queries with filters on Iceberg tables with Parquet files that contain column indexes. This can be deactivated by setting the parquet.use-column-index configuration property or the parquet_use_column_index session property to false. (#11000)

  • Improve performance of queries with selective filters on Parquet files. This can be deactivated by setting the parquet.selected-positions-pushdown-enabled configuration property to false. (#30303)

  • Reduce memory usage when reading row columns from Parquet files. (#31381)

  • Reduce native memory usage when writing ORC files with ZLIB compression. (#31582)

  • Fix worker out-of-memory errors due to under-accounted memory usage when writing ORC files. (#30771)

  • Fix failure when reading null row or map values that contain variant fields from Parquet files. (#30613)

  • Fix incorrect memory accounting for queries reading Iceberg tables with equality delete files. (#29955)

  • Fix incorrect memory accounting for MERGE, UPDATE, and DELETE statements on Delta Lake tables. (#29956)

  • Fix incorrect memory accounting when reading Iceberg tables with deletion vectors. (#30876)

  • Fix potential worker out-of-memory errors when writes to sorted tables fail. (#31018)

  • Fix failure when reading ORC files where a large varchar or varbinary value is followed only by null or empty values until the end of a stripe. (#10113)

  • Fix failure when running OPTIMIZE or writing to sorted Iceberg tables that contain large varchar or varbinary values. (#20164, #28636)

  • Fix failure when creating a view with the extra_properties view property. (#31265)

  • Fix writing Parquet files smaller than the target file size when writing low-cardinality data. (#31291)

  • Fix incorrect results when filtering on timestamp columns in Parquet files with UTC-adjusted timestamps when hive.parquet.time-zone is set to a time zone other than UTC. (#31050)

  • Fix failure when accessing tables using Azure vended credentials from REST catalogs that key SAS tokens by storage host. (#29526)

  • Fix failure when reading nested arrays from Parquet files that use the legacy list encoding. (#27766)

  • Fix query failure or incorrect results when reading variant columns in Delta Lake tables from Parquet files that store the metadata field before the value field. (#31388)

  • Fix variant columns in Parquet files written by Trino for Iceberg tables being read as row values by other engines, such as DuckDB. (#31388)

  • Fix incorrect results when reading decimal values with precision of 18 or less stored as BINARY with DELTA_LENGTH_BYTE_ARRAY encoding in Parquet files. (#31554)

MariaDB connector#

  • Improve performance of queries with IS NOT NULL predicates on char and varchar columns. (#31060)

  • Fix leak of temporary tables in the remote database when a query writing to a table fails or is canceled. (#31333)

Memory connector#

  • Fix incorrect results for queries with multiple aggregations containing a DISTINCT clause over a table sampled with TABLESAMPLE. (#31203)

MySQL connector#

  • Improve performance of queries with IS NOT NULL predicates on char and varchar columns. (#31060)

  • Improve performance of retrieving column metadata for tables with many rows. (#31283)

  • Fix leak of temporary tables in the remote database when a query writing to a table fails or is canceled. (#31333)

OpenSearch connector#

  • Fix failure when listing columns if an index contains fields with unsupported metadata. (#30852)

Oracle connector#

  • Fix failure when reading NUMBER columns without a declared precision, such as results of COUNT(*) or SUM, with the query table function. (#30467)

  • Fix incorrect results when a cast from char to varchar is pushed down to Oracle and the deprecated.legacy-varchar-to-char-coercion configuration property or the legacy_varchar_to_char_coercion session property is enabled. (#30683)

  • Fix leak of temporary tables in the remote database when a query writing to a table fails or is canceled. (#31333)

PostgreSQL connector#

  • Fix query failure for joins with an IS NOT DISTINCT FROM condition when complex join pushdown is deactivated. (#31097)

  • Fix leak of temporary tables in the remote database when a query writing to a table fails or is canceled. (#31333)

Redshift connector#

  • Fix query failure for joins with dynamic filtering when the redshift.unload-location configuration property is set. (#30209)

  • Fix leak of temporary tables in the remote database when a query writing to a table fails or is canceled. (#31333)

SingleStore connector#

  • Improve performance of queries with IS NOT NULL predicates on char and varchar columns. (#31060)

  • Fix leak of temporary tables in the remote database when a query writing to a table fails or is canceled. (#31333)

Snowflake connector#

  • Improve performance of queries with IS NOT NULL predicates on char and varchar columns. (#31060)

  • Fix leak of temporary tables in the remote database when a query writing to a table fails or is canceled. (#31333)

SQL Server connector#

  • Improve performance of queries with IS NOT NULL predicates on char and varchar columns. (#31060)

  • Fix worker threads hanging indefinitely when connecting to an unresponsive SQL Server. (#30786)

  • Fix leak of temporary tables in the remote database when a query writing to a table fails or is canceled. (#31333)

  • Fix incorrect results when comparing char or varchar values that differ only in case or trailing spaces. (#30480)

TPC-DS connector#

  • ⚠️ Breaking change: Use integer instead of bigint for identifier columns, such as surrogate keys and ticket numbers, at scale factors up to 3000. (#31589)

SPI#

  • Add the blob cache manager SPI for plugins that provide file caching to connectors. (#29184)

  • Add support for procedures that return metrics as Map<String, Long>. (#30749)

  • Add ConnectorMetadata.getMaterializedViewTableHandleForExecute() to support ALTER MATERIALIZED VIEW ... EXECUTE in connectors. (#30868)

  • Add a ConnectorMetadata.createView method that takes a SaveMode, and deprecate the method that takes a replace flag. (#28076)

  • ⚠️ Breaking change: Change BooleanType to use the bit-packed BitArrayBlock instead of ByteArrayBlock. Plugins that construct or read boolean blocks directly must be updated. (#30299)

  • Disallow time zone offsets outside the range of -14:00 to +14:00 in DateTimeEncoding.packTimeWithTimeZone and the LongTimeWithTimeZone constructor. (#9288)

  • ⚠️ Breaking change: Change the return type of DictionaryBlock.compact() and DictionaryBlock.compactRelatedBlocks() to Block, as compaction can return a simpler block representation. (#30536)

  • Deprecate TrinoPrincipal.getName(). Use TrinoPrincipal.getPrincipalName() instead, which preserves the case of user names. (#30567)

  • ⚠️ Breaking change: Remove ConnectorPageSourceProvider.getMemoryUsage() and add a MemoryContext parameter to ConnectorPageSourceProviderFactory.createPageSourceProvider() for reporting memory shared across page sources. (#29955)

  • ⚠️ Breaking change: Add a MemoryContext parameter to ConnectorPageSinkProvider.createMergeSink() and remove the overload without it. (#29956)

  • ⚠️ Breaking change: Remove JSON serialization support from TrinoPrincipal and RoleGrant. (#30610)

  • ⚠️ Breaking change: Change the return type of ConnectorMetadata.finishMerge() to Optional<ConnectorOutputMetadata>. (#30934)

  • ⚠️ Breaking change: Add frame exclusion parameters to WindowFunction.processRow. Plugins that implement window functions must be updated. (#30226)

  • ⚠️ Breaking change: Require plugins to use io.trino.json.Json instead of Slice for native json values. (#30341)

  • ⚠️ Breaking change: Change the values of the StandardTypes.INTERVAL_DAY_TO_SECOND and StandardTypes.INTERVAL_YEAR_TO_MONTH constants and store day-time interval values in microseconds. Plugins must be recompiled. (#6754)