# Presto 316 Documentation

## 12.85. 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.