# Presto 316 Documentation

## 12.81. Release 0.153

## General Changes

- Fix incorrect results for grouping sets when `task.concurrency` is greater than one.
- Fix silent numeric overflow when casting `INTEGER` to large `DECIMAL` types.
- Fix issue where `GROUP BY ()` would produce no results if the input had no rows.
- Fix null handling in `array_distinct()` when applied to the `array(bigint)` type.
- Fix handling of `-2^63` as the element index for `json_array_get()`.
- Fix correctness issue when the input to `TRY_CAST` evaluates to null. For types such as booleans, numbers, dates, timestamps, etc., rather than returning null, a default value specific to the type such as `false`, `0` or `1970-01-01` was returned.
- Fix potential thread deadlock in coordinator.
- Fix rare correctness issue with an aggregation on a single threaded right join when `task.concurrency` is `1`.
- Fix query failure when casting a map with null values.
- Fix failure when view column names contain upper-case letters.
- Fix potential performance regression due to skew issue when grouping or joining on columns of the following types: `TINYINT`, `SMALLINT`, `INTEGER`, `BIGINT`, `REAL`, `DOUBLE`, `COLOR`, `DATE`, `INTERVAL`, `TIME`, `TIMESTAMP`.
- Fix potential memory leak for delete queries.
- Fix query stats to not include queued time in planning time.
- Fix query completion event to log final stats for the query.
- Fix spurious log messages when queries are torn down.
- Remove broken `%w` specifier for `date_format()` and `date_parse()`.
- Improve performance of ARRAY when underlying data is dictionary encoded.
- Improve performance of outer joins with non-equality criteria.
- Require task concurrency and task writer count to be a power of two.
- Use nulls-last ordering for `array_sort()`.
- Validate that `TRY` is used with exactly one argument.
- Allow running Presto with early-access Java versions.
- Add Accumulo Connector.

## Functions and Language Features

- Allow subqueries in non-equality outer join criteria.
- Add support for CREATE SCHEMA, DROP SCHEMA and ALTER SCHEMA.
- Add initial support for correlated subqueries.
- Add execution support for prepared statements.
- Add `DOUBLE PRECISION` as an alias for the `DOUBLE` type.
- Add `typeof()` for discovering expression types.
- Add decimal support to `avg()`, `ceil()`, `floor()`, `round()`, `truncate()`, `abs()`, `mod()` and `sign()`.
- Add `shuffle()` function for arrays.

## Pluggable Resource Groups

Resource group management is now pluggable. A `Plugin` can provide management factories via `getResourceGroupConfigurationManagerFactories()` and the factory can be enabled via the `etc/resource-groups.properties` configuration file by setting the `resource-groups.configuration-manager` property. See the `presto-resource-group-managers` plugin for an example and Resource Groups for more details.

## Web UI Changes

- Fix rendering failures due to null nested data structures.
- Do not include coordinator in active worker count on cluster overview page.
- Replace buffer skew indicators on query details page with scheduled time skew.
- Add stage total buffer, pending tasks and wall time to stage statistics on query details page.
- Add option to filter task lists by status on query details page.
- Add copy button for query text, query ID, and user to query details page.

## JDBC Driver Changes

- Add support for `real` data type, which corresponds to the Java `float` type.

## CLI Changes

- Add support for configuring the HTTPS Truststore.

## Hive Changes

- Fix permissions for new tables when using SQL-standard authorization.
- Improve performance of ORC reader when decoding dictionary encoded MAP.
- Allow certain combinations of queries to be executed in a transaction-ish manner, for example, when dropping a partition and then recreating it. Atomicity is not guaranteed due to fundamental limitations in the design of Hive.
- Support per-transaction cache for Hive metastore.
- Fail queries that attempt to rename partition columns.
- Add support for ORC bloom filters in predicate push down. This is can be enabled using the `hive.orc.bloom-filters.enabled` configuration property or the `orc_bloom_filters_enabled` session property.
- Add new optimized RCFile reader. This can be enabled using the `hive.rcfile-optimized-reader.enabled` configuration property or the `rcfile_optimized_reader_enabled` session property.
- Add support for the Presto `real` type, which corresponds to the Hive `float` type.
- Add support for `char(x)` type.
- Add support for creating, dropping and renaming schemas (databases). The filesystem location can be specified when creating a schema, which allows, for example, easily creating tables on S3.
- Record Presto query ID for tables or partitions written by Presto using the `presto_query_id` table or partition property.
- Include path name in error message when listing a directory fails.
- Rename `allow-all` authorization method to `legacy`. This method is deprecated and will be removed in a future release.
- Do not retry S3 requests that are aborted intentionally.
- Set the user agent suffix for S3 requests to `presto`.
- Allow configuring the user agent prefix for S3 requests using the `hive.s3.user-agent-prefix` configuration property.
- Add support for S3-compatible storage using the `hive.s3.endpoint` and `hive.s3.signer-type` configuration properties.
- Add support for using AWS KMS with S3 as an encryption materials provider using the `hive.s3.kms-key-id` configuration property.
- Allow configuring a custom S3 encryption materials provider using the `hive.s3.encryption-materials-provider` configuration property.

## JMX Changes

- Make name configuration for history tables case-insensitive.

## MySQL Changes

- Optimize fetching column names when describing a single table.
- Add support for `char(x)` and `real` data types.

## PostgreSQL Changes

- Optimize fetching column names when describing a single table.
- Add support for `char(x)` and `real` data types.
- Add support for querying materialized views.

## Blackhole Changes

- Add `page_processing_delay` table property.

## SPI Changes

- Add `schemaExists()` method to `ConnectorMetadata`.
- Add transaction to grant/revoke in `ConnectorAccessControl`.
- Add `isCoordinator()` and `getVersion()` methods to `Node`.
- Remove `setOptionalConfig()` method from `Plugin`.
- Remove `ServerInfo` class.
- Make `NodeManager` specific to a connector instance.
- Replace `ConnectorFactoryContext` with `ConnectorContext`.
- Use `@SqlNullable` for functions instead of `@Nullable`.
- Use a whitelist model for plugin class loading. This prevents connectors from seeing any classes that are not part of the JDK (bootstrap classes) or the SPI.
- Update `presto-maven-plugin`, which provides a Maven packaging and lifecycle for plugins, to validate that every SPI dependency is marked as `provided` scope and that only SPI dependencies use `provided` scope. This helps find potential dependency and class loader issues at build time rather than at runtime.

Note

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