22.34. 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 largeDECIMAL
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 thearray(bigint)
type. - Fix handling of
-2^63
as the element index forjson_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 asfalse
,0
or1970-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
is1
. - 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 fordate_format()
anddate_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 theDOUBLE
type. - Add
typeof()
for discovering expression types. - Add decimal support to
avg()
,ceil()
,floor()
,round()
,truncate()
,abs()
,mod()
andsign()
. - 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 Group Configuration 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 Javafloat
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 theorc_bloom_filters_enabled
session property. - Add new optimized RCFile reader.
This can be enabled using the
hive.rcfile-optimized-reader.enabled
configuration property or thercfile_optimized_reader_enabled
session property. - Add support for the Presto
real
type, which corresponds to the Hivefloat
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 tolegacy
. 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
andhive.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)
andreal
data types.
PostgreSQL Changes
- Optimize fetching column names when describing a single table.
- Add support for
char(x)
andreal
data types. - Add support for querying materialized views.
Blackhole Changes
- Add
page_processing_delay
table property.
SPI Changes
- Add
schemaExists()
method toConnectorMetadata
. - Add transaction to grant/revoke in
ConnectorAccessControl
. - Add
isCoordinator()
andgetVersion()
methods toNode
. - Remove
setOptionalConfig()
method fromPlugin
. - Remove
ServerInfo
class. - Make
NodeManager
specific to a connector instance. - Replace
ConnectorFactoryContext
withConnectorContext
. - 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 asprovided
scope and that only SPI dependencies useprovided
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.