20.101. 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.