Release 330 (18 Feb 2020)#


  • Fix incorrect behavior of format() for char values. Previously, the function did not preserve trailing whitespace of the value being formatted. (#2629)

  • Fix query failure in some cases when aggregation uses inputs from both sides of a join. (#2560)

  • Fix query failure when dynamic filtering is enabled and the query contains complex multi-level joins. (#2659)

  • Fix query failure for certain co-located joins when dynamic filtering is enabled. (#2685)

  • Fix failure of SHOW statements or queries that access information_schema schema tables with an empty value used in a predicate. (#2575)

  • Fix query failure when EXECUTE is used with an expression containing a function call. (#2675)

  • Fix failure in SHOW CATALOGS when the user does not have permissions to see any catalogs. (#2593)

  • Improve query performance for some join queries when Cost-based optimizations are enabled. (#2722)

  • Prevent uneven distribution of data that can occur when writing data with redistribution or writer scaling enabled. (#2788)

  • Add support for CREATE VIEW with comment (#2557)

  • Add support for all major geometry types to ST_Points(). (#2535)

  • Add required_workers_count and required_workers_max_wait_time session properties to control the number of workers that must be present in the cluster before query processing starts. (#2484)

  • Add physical_input_bytes column to system.runtime.tasks table. (#2803)

  • Verify that the target schema exists for the USE statement. (#2764)

  • Verify that the session catalog exists when executing SET ROLE. (#2768)


  • Require running on Java 11 or above. This requirement may be temporarily relaxed by adding -Dpresto-temporarily-allow-java8=true to the Presto JVM config. This fallback will be removed in future versions of Presto after March 2020. (#2751)

  • Add experimental support for running on Linux aarch64 (ARM64). (#2809)


  • Principal rules are deprecated and will be removed in a future release. These rules have been replaced with User mapping, which specifies how a complex authentication user name is mapped to a simple user name for Presto, and Impersonation rules which control the ability of a user to impersonate another user. (#2215)

  • A shared secret is now required when using Secure internal communication. (#2202)

  • Kerberos for Secure internal communication has been replaced with the new shared secret mechanism. The internal-communication.kerberos.enabled and internal-communication.kerberos.use-canonical-hostname configuration properties must be removed. (#2202)

  • When authentication is disabled, the Presto user may now be set using standard HTTP basic authentication with an empty password. (#2653)

Web UI#

  • Display physical read time in detailed query view. (#2805)

JDBC driver#

  • Fix a performance issue on JDK 11+ when connecting using HTTP/2. (#2633)

  • Implement PreparedStatement.setTimestamp() variant that takes a Calendar. (#2732)

  • Add roles property for catalog authorization roles. (#2780)

  • Add sessionProperties property for setting system and catalog session properties. (#2780)

  • Add clientTags property to set client tags for selecting resource groups. (#2468)

  • Allow using the : character within an extra credential value specified via the extraCredentials property. (#2780)


  • Fix a performance issue on JDK 11+ when connecting using HTTP/2. (#2633)

Cassandra connector#

  • Fix query failure when identifiers should be quoted. (#2455)

Hive connector#

  • Fix reading symlinks from HDFS when using Kerberos. (#2720)

  • Reduce Hive metastore load when updating partition statistics. (#2734)

  • Allow redistributing writes for un-bucketed partitioned tables on the partition keys, which results in a single writer per partition. This reduces memory usage, results in a single file per partition, and allows writing a large number of partitions (without hitting the open writer limit). However, writing large partitions with a single writer can take substantially longer, so this feature should only be enabled when required. To enable this feature, set the use-preferred-write-partitioning system configuration property or the use_preferred_write_partitioning system session property to true. (#2358)

  • Remove extra file status call after writing text-based, SequenceFile, or Avro file types. (#1748)

  • Allow using writer scaling with all file formats. Previously, it was not supported for text-based, SequenceFile, or Avro formats. (#2657)

  • Add support for symlink-based tables with Avro files. (#2720)

  • Add support for ignoring partitions with a non-existent data directory. This can be configured using the hive.ignore-absent-partitions=true configuration property or the ignore_absent_partitions session property. (#2555)

  • Allow creation of external tables with data via CREATE TABLE AS when both hive.non-managed-table-creates-enabled and hive.non-managed-table-writes-enabled are set to true. Previously this required executing CREATE TABLE and INSERT as separate statement (#2669)

  • Add support for Azure WASB, ADLS Gen1 (ADL) and ADLS Gen2 (ABFS) file systems. (#2494)

  • Add experimental support for executing basic Hive views. To enable this feature, the hive.views-execution.enabled configuration property must be set to true. (#2715)

  • Add register_partition and unregister_partition procedures for adding partitions to and removing partitions from a partitioned table. (#2692)

  • Allow running ANALYZE collecting only basic table statistics. (#2762)

Elasticsearch connector#

  • Improve performance of queries containing a LIMIT clause. (#2781)

  • Add support for nested data type. (#754)

PostgreSQL connector#

  • Add read support for PostgreSQL money data type. The type is mapped to varchar in Presto. (#2601)

Other connectors#

These changes apply to the MySQL, PostgreSQL, Redshift, Phoenix and SQL Server connectors.

  • Respect DEFAULT column clause when writing to a table. (#1185)


  • Allow procedures to have optional arguments with default values. (#2706)

  • SystemAccessControl.checkCanSetUser() is deprecated and has been replaced with User mapping and SystemAccessControl.checkCanImpersonateUser(). (#2215)