Implement json equality operators
Improved string representation of array values in jmx connector

Arrays were being rendered using the default toString representation.
So, an Array would be rendered as something like [Ljava.lang.String;@4da91ced.
Arrays are now rendered as a string representation of the contents of the array.
The string representation consists of a list of the array's elements,
enclosed in square brackets ("[]").  Adjacent elements are separated by ", ".

Fixes #1632
Improve error message when using DISTINCT with non-comparable types
Validate types for IN subquery expression
Throw proper exception when memory size exceeded in TopN
Verify that types of ORDER BY expressions are orderable
Fix handling of SampleNode in SymbolExtractor
Add array constructor syntax to migration guide
Add developer guide to documentation

Currently, this includes documentation for types, scalar functions, and
aggregation functions
Added support for map construction from key/value arrays
Implement min_by aggregation function
Add JMX counters for query bytes rate distribution
Expire queries only after maxQueryAge

This fixes a regression introduced in c918b549cf0cca6c3329b8f8ea5c9d23beadb128, where
the expiration queue would get trimmed to maxQueryHistory regardless of how long ago
the queries had finished. This can result in clients getting "not found" errors
in highly loaded clusters that retire queries quickly.

This implementation now keeps queries around until for at least maxQueryAge after
they are finished, but it can keep them longer if the history is less than maxQueryHistory
 long.
Run information_schema queries only in coordinator

This fixes an issue where queries over information_schema could run in
any of the workers, resulting in inconsistent metadata due to caching
(e.g., "describe <table>" might show 0 columns for a table that had
recently been deleted)

As part of this change, the split scheduler has been updated to pick
the coordinator for processing coordinator-only splits regardless
of the value of the includeCoordinator flag
Make ParametricOperator.getDescription() final
Temporarily disable string statistics in orc/drwf readers

The writer performs comparisons using java Strings to determine the minimum and maximum
values. This results in weird behaviors in the presence of surrogate pairs and special characters.

For example, unicode codepoint 0x1D403 has the following representations:
- UTF-16: [0xD835, 0xDC03]
- UTF-8:  [0xF0, 0x9D, 0x90, 0x83]

while codepoint 0xFFFD (the replacement character) has the following representations:
- UTF-16: [0xFFFD]
- UTF-8:  [0xEF, 0xBF, 0xBD]

when comparisons between strings containing these characters are done with Java Strings (UTF-16),
0x1D403 < 0xFFFD, but when comparisons are done using raw codepoints or UTF-8, 0x1D403 > 0xFFFD
Fix IndexOutOfBounds error when deserializing max_by/min_by aggregation state

It happens because deserialize mistakenly reads the length from the first
position in the block regardless of which position is being deserialized.

If the length of the first position is longer than the length of the current
position, the code tries to read beyond the end of the buffer.
Improve error message when types don't match in UNION query
Fix broken analyzer test

Forgot to update the tests in df99f33ab82b20f6afc362c7eb1d165b30ef8441
Add documentation for min_by