22.38. Release 0.152
General Changes
- Add array_union()function.
- Add reverse()function for arrays.
- Fix issue that could cause queries with varcharliterals to fail.
- Fix categorization of errors from url_decode(), allowing it to be used withTRY.
- Fix error reporting for invalid JSON paths provided to JSON functions.
- Fix view creation for queries containing GROUPING SETS.
- Fix query failure when referencing a field of a NULLrow.
- Improve query performance for multiple consecutive window functions.
- Prevent web UI from breaking when query fails without an error code.
- Display port on the task list in the web UI when multiple workers share the same host.
- Add support for EXCEPT.
- Rename FLOATtype toREALfor better compatibility with the SQL standard.
- Fix potential performance regression when transporting rows between nodes.
JDBC Driver Changes
- Fix sizes returned from DatabaseMetaData.getColumns()forCOLUMN_SIZE,DECIMAL_DIGITS,NUM_PREC_RADIXandCHAR_OCTET_LENGTH.
Hive Changes
- Fix resource leak in Parquet reader.
- Rename JMX stat AllViewstoGetAllViewsinThriftHiveMetastore.
- Add file based security, which can be configured with the hive.securityandsecurity.config-fileconfig properties. See Hive Security Configuration for more details.
- Add support for custom S3 credentials providers using the
presto.s3.credentials-providerHadoop configuration property.
MySQL Changes
- Fix reading MySQL tinyint(1)columns. Previously, these columns were incorrectly returned as a boolean rather than an integer.
- Add support for INSERT.
- Add support for reading data as tinyintandsmallinttypes rather thaninteger.
PostgreSQL Changes
- Add support for INSERT.
- Add support for reading data as tinyintandsmallinttypes rather thaninteger.
SPI Changes
- Remove ownerfromConnectorTableMetadata.
- Replace the  generic getServices()method inPluginwith specific methods such asgetConnectorFactories(),getTypes(), etc. Dependencies likeTypeManagerare now provided directly rather than being injected intoPlugin.
- Add first-class support for functions in the SPI. This replaces the old
FunctionFactoryinterface. Plugins can return a list of classes from thegetFunctions()method:- Scalar functions are methods or classes annotated with @ScalarFunction.
- Aggregation functions are methods or classes annotated with @AggregationFunction.
- Window functions are an implementation of WindowFunction. Most implementations should be a subclass ofRankingWindowFunctionorValueWindowFunction.
 
- Scalar functions are methods or classes annotated with 
Note
This is a backwards incompatible change with the previous SPI. If you have written a plugin, you will need to update your code before deploying this release.
Verifier Changes
- Fix handling of shadow write queries with a LIMIT.
Local File Changes
- Fix file descriptor leak.