Release 0.221

    • Fix a performance regression for some outer joins without equality predicates when is set to AUTOMATIC.

    • Add a variant of strpos() that returns the position of the N-th instance of the substring.

    • Add that returns the position of the N-th instance of a substring from the back of a string.

    • Add classification aggregation functions classification_miss_rate(), , classification_recall(), .

    • Add overload of approx_set() which takes in the maximum standard error.

    • Add max_tasks_per_stage session property and stage.max-tasks-per-stage config property to limit the number of tasks per stage for grouped execution. Setting this session property allows queries running with grouped execution to use a predictable amount of memory independent of the cluster size.

    • Add encryption for spill files (see ).

    • Revert the change introduced in 0.219 to rebalance bucket assignment after restarting the cluster. Automatic rebalancing can cause unexpected downtime when restarting the cluster to resolve emergent issues.
    • Improve performance of writing large ORC files.

    • Add pageSinkContext for createPageSink in PageSinkProvider and ConnectorPageSinkProvider. It contains a boolean partitionCommitRequired, which is false by default. See the note below about for more information.

    • Add commitPartition to Metadata and ConnectorMetadata. This SPI is coupled with pageSinkContext#partitionCommitRequired and is used by the engine to commit a partition of data to the target connector. The connector that implements this SPI should ensure that if pageSinkContext#isPartitionCommitRequired is true in ConnectorPageSinkProvider#createPageSink, the written data is not published until ConnectorMetadata#commitPartition is called. Also, it is expected for the connector to add SUPPORTS_PARTITION_COMMIT in Connector#getCapabilities.

    • Add in RowExpressionService. ExpressionOptimizer simplifies a RowExpression and prunes redundant part of it.