11.8. Release 0.222

Warning

This release contains a regression which may cause Presto to incorrectlyremove certain CAST operations.

General Changes

  • Fix incorrect results when dividing certain decimal numbers (#12930).
  • Fix planning failure for certain join queries caused by invalid distributiontype (#12354).
  • Add support for automatically retrying failed buckets when using groupedexecution. Currently this is supported for certain INSERT queries usingthe Hive connector. This can be enabled with therecoverable_grouped_execution session property or therecoverable-grouped-execution-enabled configuration property (#12124).
  • Add support for grouped execution for queries with no joins or aggregations.This can be enabled with the grouped_execution_for_eligible_table_scanssession property or theexperimental.grouped-execution-for-eligible-table-scans-enabledconfiguration property (#12934).
  • Add configuration property max-concurrent-materializations and sessionproperty max_concurrent_materializations to limit the number of plansections that will run concurrently when using materialized exchanges.
  • Add support for computing approx_distinct() over BingTile values.
  • Add merge_hll() to merge an array of HyperLogLogs.
  • Add bitwise shift operations, bitwise_arithmetic_shift_right(),bitwise_logical_shift_right() and bitwise_shift_left().

Web UI Changes

  • Add completed and total lifespans to the Presto Coordinator UI.

Hive Connector Changes

  • Fix failures for information_schema queries when a table has an invalid storage format.
  • Improve query execution time over bucketed table with large buckets.
  • Add config property hive.metastore.glue.catalogid to configure the Glue catalog ID.

SPI Changes

  • Add experimental interface ConnectorPlanOptimizer to allow connectors toparticipate in query plan optimization (e.g., filter pushdown) (#13102).
  • Rename LogicalRowExpressions::TRUE and LogicalRowExpressions::FALSE toLogicalRowExpressions::TRUE_CONSTANT and LogicalRowExpressions::FALSE_CONSTANTrespectively to avoid collision with java.lang.Boolean.