22.42. Release 0.148

General Changes

  • Fix issue where auto-commit transaction can be rolled back for a successfully completed query.
  • Fix detection of colocated joins.
  • Fix planning bug involving partitioning with constants.
  • Fix window functions to correctly handle empty frames between unbounded and bounded in the same direction. For example, a frame such as ROWS BETWEEN UNBOUNDED PRECEDING AND 2 PRECEDING would incorrectly use the first row as the window frame for the first two rows rather than using an empty frame.
  • Fix correctness issue when grouping on columns that are also arguments to aggregation functions.
  • Fix failure when chaining AT TIME ZONE, e.g. SELECT TIMESTAMP '2016-01-02 12:34:56' AT TIME ZONE 'America/Los_Angeles' AT TIME ZONE 'UTC'.
  • Fix data duplication when task.writer-count configuration mismatches between coordinator and worker.
  • Fix bug where node-scheduler.max-pending-splits-per-node-per-task config is not always honored by node scheduler. This bug could stop the cluster from making further progress.
  • Fix incorrect results for grouping sets with partitioned source.
  • Add colocated-joins-enabled to enable colocated joins by default for connectors that expose node-partitioned data.
  • Add support for colocated unions.
  • Reduce initial memory usage of array_agg() function.
  • Improve planning of co-partitioned JOIN and UNION.
  • Improve planning of aggregations over partitioned data.
  • Improve the performance of the array_sort() function.
  • Improve outer join predicate push down.
  • Increase default value for query.initial-hash-partitions to 100.
  • Change default value of query.max-memory-per-node to 10% of the Java heap.
  • Change default task.max-worker-threads to 2 times the number of cores.
  • Use HTTPS in JDBC driver when using port 443.
  • Warn if Presto server is not using G1 garbage collector.
  • Move interval types out of SPI.

Interval Fixes

This release fixes several problems with large and negative intervals.

  • Fix parsing of negative interval literals. Previously, the sign of each field was treated independently instead of applying to the entire interval value. For example, the literal INTERVAL '-2-3' YEAR TO MONTH was interpreted as a negative interval of 21 months rather than 27 months (positive 3 months was added to negative 24 months).
  • Fix handling of INTERVAL DAY TO SECOND type in REST API. Previously, intervals greater than 2,147,483,647 milliseconds (about 24 days) were returned as the wrong value.
  • Fix handling of INTERVAL YEAR TO MONTH type. Previously, intervals greater than 2,147,483,647 months were returned as the wrong value from the REST API and parsed incorrectly when specified as a literal.
  • Fix formatting of negative intervals in REST API. Previously, negative intervals had a negative sign before each component and could not be parsed.
  • Fix formatting of negative intervals in JDBC PrestoInterval classes.

Note

Older versions of the JDBC driver will misinterpret most negative intervals from new servers. Make sure to update the JDBC driver along with the server.

Functions and Language Features

  • Add element_at() function for map type.
  • Add split_to_map() function.
  • Add zip() function.
  • Add map_union() aggregation function.
  • Add ROW syntax for constructing row types.
  • Add support for REVOKE permission syntax.
  • Add support for SMALLINT and TINYINT types.
  • Add support for non-equi outer joins.

Verifier Changes

  • Add skip-cpu-check-regex config property which can be used to skip the CPU time comparison for queries that match the given regex.
  • Add check-cpu config property which can be used to disable CPU time comparison.

Hive Changes

  • Fix NoClassDefFoundError for KMSClientProvider in HDFS client.
  • Fix creating tables on S3 in an empty database.
  • Implement REVOKE permission syntax.
  • Add support for SMALLINT and TINYINT
  • Support DELETE from unpartitioned tables.
  • Add support for Kerberos authentication when talking to Hive/HDFS.
  • Push down filters for columns of type DECIMAL.
  • Improve CPU efficiency when reading ORC files.

Cassandra Changes

  • Allow configuring load balancing policy and no host available retry.
  • Add support for varchar(n).

Kafka Changes

  • Update to Kafka client 0.8.2.2. This enables support for LZ4 data.

JMX Changes

  • Add jmx.history schema with in-memory periodic samples of values from JMX MBeans.

MySQL and PostgreSQL Changes

  • Push down predicates for VARCHAR, DATE, TIME and TIMESTAMP types.

Other Connector Changes

  • Add support for varchar(n) to the Redis, TPCH, MongoDB, Local File and Example HTTP connectors.