Release 0.153#

General Changes#

  • Fix incorrect results for grouping sets when task.concurrency is greater than one.

  • Fix silent numeric overflow when casting INTEGER to large DECIMAL types.

  • Fix issue where GROUP BY () would produce no results if the input had no rows.

  • Fix null handling in array_distinct() when applied to the array(bigint) type.

  • Fix handling of -2^63 as the element index for json_array_get().

  • Fix correctness issue when the input to TRY_CAST evaluates to null. For types such as booleans, numbers, dates, timestamps, etc., rather than returning null, a default value specific to the type such as false, 0 or 1970-01-01 was returned.

  • Fix potential thread deadlock in coordinator.

  • Fix rare correctness issue with an aggregation on a single threaded right join when task.concurrency is 1.

  • Fix query failure when casting a map with null values.

  • Fix failure when view column names contain upper-case letters.

  • Fix potential performance regression due to skew issue when grouping or joining on columns of the following types: TINYINT, SMALLINT, INTEGER, BIGINT, REAL, DOUBLE, COLOR, DATE, INTERVAL, TIME, TIMESTAMP.

  • Fix potential memory leak for delete queries.

  • Fix query stats to not include queued time in planning time.

  • Fix query completion event to log final stats for the query.

  • Fix spurious log messages when queries are torn down.

  • Remove broken %w specifier for date_format() and date_parse().

  • Improve performance of ARRAY when underlying data is dictionary encoded.

  • Improve performance of outer joins with non-equality criteria.

  • Require task concurrency and task writer count to be a power of two.

  • Use nulls-last ordering for array_sort().

  • Validate that TRY is used with exactly one argument.

  • Allow running Presto with early-access Java versions.

  • Add Accumulo Connector.

Functions and Language Features#

Pluggable Resource Groups#

Resource group management is now pluggable. A Plugin can provide management factories via getResourceGroupConfigurationManagerFactories() and the factory can be enabled via the etc/resource-groups.properties configuration file by setting the resource-groups.configuration-manager property. See the presto-resource-group-managers plugin for an example and Resource Groups for more details.

Web UI Changes#

  • Fix rendering failures due to null nested data structures.

  • Do not include coordinator in active worker count on cluster overview page.

  • Replace buffer skew indicators on query details page with scheduled time skew.

  • Add stage total buffer, pending tasks and wall time to stage statistics on query details page.

  • Add option to filter task lists by status on query details page.

  • Add copy button for query text, query ID, and user to query details page.

JDBC Driver Changes#

  • Add support for real data type, which corresponds to the Java float type.

CLI Changes#

  • Add support for configuring the HTTPS Truststore.

Hive Changes#

  • Fix permissions for new tables when using SQL-standard authorization.

  • Improve performance of ORC reader when decoding dictionary encoded MAP.

  • Allow certain combinations of queries to be executed in a transaction-ish manner, for example, when dropping a partition and then recreating it. Atomicity is not guaranteed due to fundamental limitations in the design of Hive.

  • Support per-transaction cache for Hive metastore.

  • Fail queries that attempt to rename partition columns.

  • Add support for ORC bloom filters in predicate push down. This is can be enabled using the hive.orc.bloom-filters.enabled configuration property or the orc_bloom_filters_enabled session property.

  • Add new optimized RCFile reader. This can be enabled using the hive.rcfile-optimized-reader.enabled configuration property or the rcfile_optimized_reader_enabled session property.

  • Add support for the Presto real type, which corresponds to the Hive float type.

  • Add support for char(x) type.

  • Add support for creating, dropping and renaming schemas (databases). The filesystem location can be specified when creating a schema, which allows, for example, easily creating tables on S3.

  • Record Presto query ID for tables or partitions written by Presto using the presto_query_id table or partition property.

  • Include path name in error message when listing a directory fails.

  • Rename allow-all authorization method to legacy. This method is deprecated and will be removed in a future release.

  • Do not retry S3 requests that are aborted intentionally.

  • Set the user agent suffix for S3 requests to presto.

  • Allow configuring the user agent prefix for S3 requests using the hive.s3.user-agent-prefix configuration property.

  • Add support for S3-compatible storage using the hive.s3.endpoint and hive.s3.signer-type configuration properties.

  • Add support for using AWS KMS with S3 as an encryption materials provider using the hive.s3.kms-key-id configuration property.

  • Allow configuring a custom S3 encryption materials provider using the hive.s3.encryption-materials-provider configuration property.

JMX Changes#

  • Make name configuration for history tables case-insensitive.

MySQL Changes#

  • Optimize fetching column names when describing a single table.

  • Add support for char(x) and real data types.

PostgreSQL Changes#

  • Optimize fetching column names when describing a single table.

  • Add support for char(x) and real data types.

  • Add support for querying materialized views.

Blackhole Changes#

  • Add page_processing_delay table property.

SPI Changes#

  • Add schemaExists() method to ConnectorMetadata.

  • Add transaction to grant/revoke in ConnectorAccessControl.

  • Add isCoordinator() and getVersion() methods to Node.

  • Remove setOptionalConfig() method from Plugin.

  • Remove ServerInfo class.

  • Make NodeManager specific to a connector instance.

  • Replace ConnectorFactoryContext with ConnectorContext.

  • Use @SqlNullable for functions instead of @Nullable.

  • Use a whitelist model for plugin class loading. This prevents connectors from seeing any classes that are not part of the JDK (bootstrap classes) or the SPI.

  • Update presto-maven-plugin, which provides a Maven packaging and lifecycle for plugins, to validate that every SPI dependency is marked as provided scope and that only SPI dependencies use provided scope. This helps find potential dependency and class loader issues at build time rather than at runtime.

Note

These are backwards incompatible changes with the previous SPI. If you have written a plugin, you will need to update your code before deploying this release.