22.38. Release 0.152

General Changes

  • Add array_union() function.
  • Add reverse() function for arrays.
  • Fix issue that could cause queries with varchar literals to fail.
  • Fix categorization of errors from url_decode(), allowing it to be used with TRY.
  • Fix error reporting for invalid JSON paths provided to JSON functions.
  • Fix view creation for queries containing GROUPING SETS.
  • Fix query failure when referencing a field of a NULL row.
  • Improve query performance for multiple consecutive window functions.
  • Prevent web UI from breaking when query fails without an error code.
  • Display port on the task list in the web UI when multiple workers share the same host.
  • Add support for EXCEPT.
  • Rename FLOAT type to REAL for better compatibility with the SQL standard.
  • Fix potential performance regression when transporting rows between nodes.

JDBC Driver Changes

  • Fix sizes returned from DatabaseMetaData.getColumns() for COLUMN_SIZE, DECIMAL_DIGITS, NUM_PREC_RADIX and CHAR_OCTET_LENGTH.

Hive Changes

  • Fix resource leak in Parquet reader.
  • Rename JMX stat AllViews to GetAllViews in ThriftHiveMetastore.
  • Add file based security, which can be configured with the hive.security and security.config-file config properties. See Hive Security Configuration for more details.
  • Add support for custom S3 credentials providers using the presto.s3.credentials-provider Hadoop configuration property.

MySQL Changes

  • Fix reading MySQL tinyint(1) columns. Previously, these columns were incorrectly returned as a boolean rather than an integer.
  • Add support for INSERT.
  • Add support for reading data as tinyint and smallint types rather than integer.

PostgreSQL Changes

  • Add support for INSERT.
  • Add support for reading data as tinyint and smallint types rather than integer.

SPI Changes

  • Remove owner from ConnectorTableMetadata.
  • Replace the generic getServices() method in Plugin with specific methods such as getConnectorFactories(), getTypes(), etc. Dependencies like TypeManager are now provided directly rather than being injected into Plugin.
  • Add first-class support for functions in the SPI. This replaces the old FunctionFactory interface. Plugins can return a list of classes from the getFunctions() method:
    • Scalar functions are methods or classes annotated with @ScalarFunction.
    • Aggregation functions are methods or classes annotated with @AggregationFunction.
    • Window functions are an implementation of WindowFunction. Most implementations should be a subclass of RankingWindowFunction or ValueWindowFunction.

Note

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

Verifier Changes

  • Fix handling of shadow write queries with a LIMIT.

Local File Changes

  • Fix file descriptor leak.