13.188. Release 0.75

    • The Hive connector now supports renaming tables. By default, this feature is not enabled. To enable it, set hive.allow-rename-table=true in your Hive catalog properties file.

    General Changes

    • Optimize with a constant to execute as the much faster count(*)
    • Add support for binary types to the JDBC driver
    • The legacy byte code compiler has been removed
    • New aggregation framework (~10% faster)
    • Added max_by() aggregation function
    • Fixed parsing of UNION queries that use both DISTINCT and ALL
    • Fixed cross join planning error for certain query shapes
    • Added hex and base64 conversion functions for varbinary
    • Fix the operator to correctly match against values that contain multiple lines. Previously, it would stop matching at the first newline.
    • Add support for renaming tables using the statement.
    • Add basic support for inserting data using the INSERT statement. This is currently only supported for the Raptor connector.

    As part of this change, the set of characters allowed in a non-bracketed path segment has been restricted to alphanumeric, underscores and colons. Additionally, colons cannot be used in a un-quoted bracketed path segment. Use the new bracket syntax with quotes to match elements that contain special characters.

    Scheduler Changes

    The scheduler now assigns splits to a node based on the current load on the node across all queries. Previously, the scheduler load balanced splits across nodes on a per query level. Every node can have node-scheduler.max-splits-per-node splits scheduled on it. To avoid starvation of small queries, when the node already has the maximum allowable splits, every task can schedule at most node-scheduler.max-pending-splits-per-node-per-task splits on the node.

    Queries that use the row_number() function are substantially faster and can run on larger result sets for two types of queries.

    Performing a partitioned top-N that chooses the maximum or minimum N rows from each partition now uses significantly less memory. The following query selects the five oldest rows based on orderdate from orders for each :

    Use the statement to see if any of these optimizations have been applied to your query.

    SPI Changes

    The core Presto engine no longer automatically adds a column for count(*) queries. Instead, the RecordCursorProvider will receive an empty list of column handles.

    To simplify the API, ConnectorOutputHandleResolver has been merged into ConnectorHandleResolver. Additionally, ConnectorHandleResolver, ConnectorRecordSinkProvider and ConnectorMetadata were modified to support inserts.

    Note

    This is a backwards incompatible change with the previous connector and type SPI, so if you have written a connector or type, you will need to update your code before deploying this release. In particular, make sure your connector can handle an empty column handles list (this can be verified by running on a table from your connector).