Release 341 (8 Sep 2020)#

General changes#

  • Add support for variable-precision TIME type. (#4381)

  • Add support for variable precision TIME WITH TIME ZONE type. (#4905)

  • Add Iceberg connector.

  • Add human_readable_seconds() function. (#4344)

  • Add reverse() function for VARBINARY. (#4741)

  • Add support for extract() for timestamp(p) with time zone with values of p other than 3. (#4867)

  • Add support for correlated subqueries in recursive queries. (#4877)

  • Add runtime.optimizer_rule_stats system table. (#4659)

  • Report dynamic filters statistics. (#4440)

  • Improve query scalability when new nodes are added to cluster. (#4294)

  • Improve error message when JSON parsing fails. (#4616)

  • Reduce latency when dynamic filtering is in use. (#4924)

  • Remove support for political time zones in TIME WITH TIME ZONE type. (#191)

  • Remove deprecated reorder_joins session property. (#5027)

  • Remove the deprecated.legacy-timestamp configuration property and the legacy_timestamp session property. (#4799)

  • Change timestamp operations to match the SQL specification. The value of a TIMESTAMP type is not affected by the session time zone. (#37)

  • Preserve precision when applying AT TIME ZONE to values of type TIMESTAMP. (#4866)

  • Fix serialization of NULL values in ROW, MAP and ARRAY types for old Presto clients. (#4778)

  • Fix failure when aggregation query contains duplicate expressions. (#4872)

  • Fix compiler failure when querying timestamps with a precision greater than 6. (#4824)

  • Fix parsing failure of timestamps due to daylight saving changes. (#37)

  • Fix failure when calling extract() with TIMEZONE_HOUR and TIMEZONE_MINUTE for TIMESTAMP WITH TIME ZONE type. (#4867)

  • Fix query deadlock for connectors that wait for dynamic filters. (#4946)

  • Fix failure when TIME or TIMESTAMP subtraction returns a negative value. (#4847)

  • Fix failure when duplicate expressions appear in DISTINCT clause. (#4787)

  • Fix failure for certain join queries during spilling or when available memory is low. (#4994)

  • Fix issue where the query_max_scan_physical_bytes session property was ignored if the query.max-scan-physical-bytes configuration property was not defined. (#5009)

  • Correctly compute sample ratio when TABLESAMPLE is used with a fractional percentage. (#5074)

  • Fail queries with a proper error message when TABLESAMPLE is used with a non-numeric sample ratio. (#5074)

  • Fail with an explicit error rather than OutOfMemoryError for certain operations. (#4890)

Security changes#

Web UI#

  • Fix display of physical input read time in detailed query view. (#4962)

JDBC driver changes#

  • Implement ResultSet.getStatement(). (#4957)

BigQuery connector changes#

  • Add support for hourly partitioned tables. (#4968)

  • Redact the value of bigquery.credentials-key in the server log. (#4968)

Cassandra connector changes#

  • Map Cassandra TIMESTAMP type to Presto TIMESTAMP(3) WITH TIME ZONE type. (#2269)

Hive connector changes#

  • Skip stripes and row groups based on timestamp statistics for ORC files. (#1147)

  • Skip S3 objects with the DeepArchive storage class (in addition to the Glacier storage class) when hive.s3.skip-glacier-objects is enabled. (#5002)

  • Use a temporary staging directory for temporary files when writing to sorted bucketed tables. This allows using a more efficient file system for temporary files. (#3434)

  • Fix metastore cache invalidation for GRANT and REVOKE. (#4768)

  • Add Parquet and RCBinary configuration properties hive.parquet.time-zone and hive.rcfile.time-zone to adjust binary timestamp values to a specific time zone. For Hive 3.1+, this should be set to UTC. The default value is the JVM default time zone, for backwards compatibility with earlier versions of Hive. (#4799)

  • Add ORC configuration property hive.orc.time-zone to set the default time zone for legacy ORC files that did not declare a time zone. (#4799)

  • Replace the hive.time-zone configuration property with format specific properties: hive.orc.time-zone, hive.parquet.time-zone, hive.rcfile.time-zone. (#4799)

  • Allow using the cluster default role with S3 security mapping. (#4931)

  • Remove support for bucketing on timestamp. The definition of the hash function for timestamp incorrectly depends on the storage time zone and can result in incorrect results. (#4759)

  • Decrease the number of requests to the Glue metastore when fetching partitions. This helps avoid hitting rate limits and decreases service costs. (#4938)

  • Match the existing user and group of the table or partition when creating new files on HDFS. (#4414)

  • Fix invalid timestamp values for nested data in Text, Avro, SequenceFile, JSON and CSV formats. (#4799)

  • Fix query failure when reading an ORC ACID table with a filter after the table underwent a minor table compaction. (#4622)

  • Fix incorrect query results when reading an ORC ACID table that has deleted rows and underwent a minor compaction. (#4623)

  • Fix query failure when storage caching is enabled and cached data is evicted during query execution. (#3580)

JMX connector changes#

  • Change timestamp column type in history tables to TIMESTAMP WITH TIME ZONE. (#4753)

Kafka connector changes#

  • Preserve time zone when parsing TIMESTAMP WITH TIME ZONE values. (#4799)

Kinesis connector changes#

  • Preserve time zone when parsing TIMESTAMP WITH TIME ZONE values. (#4799)

Kudu connector changes#

  • Fix delete when applied on table having primary key of decimal type. (#4683)

Local File connector changes#

  • Change timestamp column type to TIMESTAMP WITH TIME ZONE. (#4752)

MySQL connector changes#

  • Improve performance of aggregation queries by pushing the aggregation computation into the MySQL database. Currently, the following aggregate functions are eligible for pushdown: count, min, max, sum and avg. (#4138)

Oracle connector changes#

  • Add oracle.connection-pool.inactive-timeout configuration property to specify how long pooled connection can be inactive before it is closed. It defaults to 20 minutes. (#4779)

  • Add support for database internationalization. (#4775)

  • Add resilience to momentary connection authentication issues. (#4947)

  • Allowing forcing the mapping of certain types to VARCHAR. This can be enabled by setting the jdbc-types-mapped-to-varchar configuration property to a comma-separated list of type names. (#4955)

  • Prevent query failure for pushdown of predicates involving a large number of conjuncts. (#4918)

Phoenix connector changes#

  • Fix overwriting of former value when insert is applied without specifying that column. (#4670)

Pinot connector changes#

  • Add support for REAL and INTEGER types. (#4725)

  • Add support for functions in pass-through queries. (#4801)

  • Enforce a limit on the number of rows fetched from Pinot. This can be configured via the pinot.max-rows-per-split-for-segment-queries configuration property. (#4723)

  • Fix incorrect results for count(*) queries. (#4802)

  • Fix incorrect results for queries involving avg() over columns of type long, int, or float. (#4802)

  • Fix incorrect results when columns in pass-through query do not match selected columns. (#4802)

Prometheus connector changes#

  • Change the type of the timestamp column to TIMESTAMP(3) WITH TIME ZONE type. (#4799)

PostgreSQL connector changes#

  • Improve performance of aggregation queries with predicates by pushing the computation of both the filtering and aggregations into the PostgreSQL server where possible. (#4111)

  • Fix handling of PostgreSQL arrays when unsupported-type-handling is set to CONVERT_TO_VARCHAR. (#4981)

Raptor connector changes#

  • Remove the storage.shard-day-boundary-time-zone configuration property, which was used to work around legacy timestamp semantics in Presto. (#4799)

Redis connector changes#

  • Preserve time zone when parsing TIMESTAMP WITH TIME ZONE values. (#4799)

SPI changes#

  • The TIMESTAMP type is encoded as a number of fractional seconds from 1970-01-01 00:00:00 in the proleptic Gregorian calendar. This value is no longer adjusted to the session time zone. Timestamps with precision less than or equal to 3 are now represented in microseconds. (#4799)

  • Remove isLegacyTimestamp() from ConnectorSession. (#4799)

  • Enable connectors to wait for dynamic filters before producing data on worker nodes. (#3414)