# Presto 316 Documentation

## 12.35. Release 0.198

## General Changes

- Perform semantic analysis before enqueuing queries.
- Add support for selective aggregates (`FILTER`) with `DISTINCT` argument qualifiers.
- Support `ESCAPE` for `LIKE` predicate in `SHOW SCHEMAS` and `SHOW TABLES` queries.
- Parse decimal literals (e.g. `42.0`) as `DECIMAL` by default. Previously, they were parsed as `DOUBLE`. This behavior can be turned off via the `parse-decimal-literals-as-double` config option or the `parse_decimal_literals_as_double` session property.
- Fix `current_date` failure when the session time zone has a “gap” at `1970-01-01 00:00:00`. The time zone `America/Bahia_Banderas` is one such example.
- Add variant of `sequence()` function for `DATE` with an implicit one-day step increment.
- Increase the maximum number of arguments for the `zip()` function from 4 to 5.
- Add `ST_IsValid()`, `geometry_invalid_reason()`, `simplify_geometry()`, and `great_circle_distance()` functions.
- Support `min()` and `max()` aggregation functions when the input type is unknown at query analysis time. In particular, this allows using the functions with `NULL` literals.
- Add configuration property `task.max-local-exchange-buffer-size` for setting local exchange buffer size.
- Add trace token support to the scheduler and exchange HTTP clients. Each HTTP request sent by the scheduler and exchange HTTP clients will have a “trace token” (a unique ID) in their headers, which will be logged in the HTTP request logs. This information can be used to correlate the requests and responses during debugging.
- Improve query performance when dynamic writer scaling is enabled.
- Improve performance of `ST_Intersects()`.
- Improve query latency when tables are known to be empty during query planning.
- Optimize `array_agg()` to avoid excessive object overhead and native memory usage with G1 GC.
- Improve performance for high-cardinality aggregations with `DISTINCT` argument qualifiers. This is an experimental optimization that can be activated by disabling the `use_mark_distinct` session property or the `optimizer.use-mark-distinct` config option.
- Improve parallelism of queries that have an empty grouping set.
- Improve performance of join queries involving the `ST_Distance()` function.

## Resource Groups Changes

- Query Queues have been removed. Resource Groups are always enabled. The config property `experimental.resource-groups-enabled` has been removed.
- Change `WEIGHTED_FAIR` scheduling policy to select oldest eligible sub group of groups where utilization and share are identical.

## CLI Changes

- The `--enable-authentication` option has been removed. Kerberos authentication is automatically enabled when `--krb5-remote-service-name` is specified.
- Kerberos authentication now requires HTTPS.

## Hive Changes

- Add support for using AWS Glue as the metastore. Enable it by setting the `hive.metastore` config property to `glue`.
- Fix a bug in the ORC writer that will write incorrect data of type `VARCHAR` or `VARBINARY` into files.

## JMX Changes

- Add wildcard character `*` which allows querying several MBeans with a single query.

## SPI Changes

- Add performance statistics to query plan in `QueryCompletedEvent`.
- Remove `Page.getBlocks()`. This call was rarely used and performed an expensive copy. Instead, use `Page.getBlock(channel)` or the new helper `Page.appendColumn()`.
- Improve validation of `ArrayBlock`, `MapBlock`, and `RowBlock` during construction.