12.21. Release 0.205
General Changes
- Fix parsing of row types where the field types contain spaces.
Previously, row expressions that included spaces would fail to parse.
For example:
cast(row(timestamp '2018-06-01') AS row(timestamp with time zone)). - Fix distributed planning failure for complex queries when using bucketed execution.
- Fix
ST_ExteriorRing()to only accept polygons. Previously, it erroneously accepted other geometries. - Add the
task.min-drivers-per-taskandtask.max-drivers-per-taskconfig options. The former specifies the guaranteed minimum number of drivers a task will run concurrently given that it has enough work to do. The latter specifies the maximum number of drivers a task can run concurrently. - Add the
concurrent-lifespans-per-taskconfig property to control the default value of theconcurrent_lifespans_per_tasksession property. - Add the
query_max_total_memorysession property and thequery.max-total-memoryconfig property. Queries will be aborted after their total (user + system) memory reservation exceeds this threshold. - Improve stats calculation for outer joins and correlated subqueries.
- Reduce memory usage when a
Blockcontains all null or all non-null values. - Change the internal hash function used in
approx_distinct. The result ofapprox_distinctmay change in this version compared to the previous version for the same set of values. However, the standard error of the results should still be within the configured bounds. - Improve efficiency and reduce memory usage for scalar correlated subqueries with aggregations.
- Remove the legacy local scheduler and associated configuration properties,
task.legacy-scheduling-behaviorandtask.level-absolute-priority. - Do not allow using the
FILTERclause for theCOALESCE,IF, orNULLIFfunctions. The syntax was previously allowed but was otherwise ignored.
Security Changes
- Remove unnecessary check for
SELECTprivileges forDELETEqueries. Previously,DELETEqueries could fail if the user only hasDELETEprivileges but notSELECTprivileges. This only affected connectors that implementcheckCanSelectFromColumns(). - Add a check that the view owner has permission to create the view when
running
SELECTqueries against a view. This only affected connectors that implementcheckCanCreateViewWithSelectFromColumns(). - Change
DELETE FROM <table> WHERE <condition>to check that the user hasSELECTprivileges on the objects referenced by theWHEREcondition as is required by the SQL standard. - Improve the error message when access is denied when selecting from a view due to the view owner having insufficient permissions to create the view.
JDBC Driver Changes
- Add support for prepared statements.
- Add partial query cancellation via
partialCancel()onPrestoStatement. - Use
VARCHARrather thanLONGNVARCHARfor the Prestovarchartype. - Use
VARBINARYrather thanLONGVARBINARYfor the Prestovarbinarytype.
Hive Connector Changes
- Improve the performance of
INSERTqueries when all partition column values are constants. - Improve stripe size estimation for the optimized ORC writer. This reduces the number of cases where tiny ORC stripes will be written.
- Respect the
skip.footer.line.countHive table property.
CLI Changes
- Prevent the CLI from crashing when running on certain 256 color terminals.
SPI Changes
- Add a context parameter to the
create()method inSessionPropertyConfigurationManagerFactory. - Disallow non-static methods to be annotated with
@ScalarFunction. Non-static SQL function implementations must now be declared in a class annotated with@ScalarFunction. - Disallow having multiple public constructors in
@ScalarFunctionclasses. All non-static implementations of a SQL function will now be associated with a single constructor. This improves support for providing specialized implementations of SQL functions with generic arguments. - Deprecate
checkCanSelectFromTable/checkCanSelectFromViewandcheckCanCreateViewWithSelectFromTable/checkCanCreateViewWithSelectFromViewinConnectorAccessControlandSystemAccessControl.checkCanSelectFromColumnsandcheckCanCreateViewWithSelectFromColumnsshould be used instead.
Note
These are backwards incompatible changes with the previous SPI. If you have written a plugin using these features, you will need to update your code before deploying this release.