============
Release 0.90
============

.. warning:: This release has a memory leak and should not be used.

General Changes
---------------

* Initial support for partition and placement awareness in the query planner. This can
  result in better plans for queries involving ``JOIN`` and ``GROUP BY`` over the same
  key columns.
* Improve planning of UNION queries.
* Add presto version to query creation and completion events.
* Add property ``task.writer-count`` to configure the number of writers per task.
* Fix a bug when optimizing constant expressions involving binary types.
* Fix bug where a table writer commits partial results while cleaning up a failed query.
* Fix a bug when unnesting an array of doubles containing NaN or Infinity.
* Fix failure when accessing elements in an empty array.
* Fix *"Remote page is too large"* errors.
* Improve error message when attempting to cast a value to ``UNKNOWN``.
* Update the :func:`!approx_distinct` documentation with correct standard error bounds.
* Disable falling back to the interpreter when expressions fail to be compiled
  to bytecode. To enable this option, add ``compiler.interpreter-enabled=true``
  to the coordinator and worker config properties. Enabling this option will
  allow certain queries to run slowly rather than failing.
* Improve :doc:`/installation/jdbc` conformance. In particular, all unimplemented
  methods now throw ``SQLException`` rather than ``UnsupportedOperationException``.

Functions and Language Features
-------------------------------

* Add :func:`!bool_and` and :func:`!bool_or` aggregation functions.
* Add standard SQL function :func:`!every` as an alias for :func:`!bool_and`.
* Add :func:`!year_of_week` function.
* Add :func:`!regexp_extract_all` function.
* Add :func:`!map_agg` aggregation function.
* Add support for casting ``JSON`` to ``ARRAY`` or ``MAP`` types.
* Add support for unparenthesized expressions in ``VALUES`` clause.
* Added :doc:`/sql/set-session`, :doc:`/sql/reset-session` and :doc:`/sql/show-session`.
* Improve formatting of ``EXPLAIN (TYPE DISTRIBUTED)`` output and include additional
  information such as output layout, task placement policy and partitioning functions.

Hive Changes
------------
* Disable optimized metastore partition fetching for non-string partition keys.
  This fixes an issue were Presto might silently ignore data with non-canonical
  partition values. To enable this option, add ``hive.assume-canonical-partition-keys=true``
  to the coordinator and worker config properties.
* Don't retry operations against S3 that fail due to lack of permissions.

SPI Changes
-----------
* Add ``getColumnTypes`` to ``RecordSink``.
* Use ``Slice`` for table writer fragments.
* Add ``ConnectorPageSink`` which is a more efficient interface for column-oriented sources.

.. note::
    This is a backwards incompatible change with the previous connector SPI.
    If you have written a connector, you will need to update your code
    before deploying this release.
