Handle empty arrays in the subscript operator
Use newConcurrentHashSet and newIdentityHashSet
Add documentation to Operator interface
Add default implementation of Operator.isBlocked
Make Operator implement AutoCloseable
Do not call finish on operators during driver destruction

Finish during driver destruction is unnecessary and complex
Only call finish on operators in main driver loop
Replace QueryExecution.cancel with fail(USER_CANCELED)
Split stage cancel and abort

Fail query if output stage is ABORTED or FAILED
Abort sub-stages when stage is ABORTED or FAILED
Abort stage if sub-stage is ABORTED or FAILED
Split task cancel and abort

Abort tasks when stage is FAILED
Fail stage if task is ABORTED directly (before stage is complete)
Change Hive file format benchmark to output TSV
Add Hive file format predicate pushdown benchmark
Remove unused MockQueryManager class
Add SET statement
Add SHOW SESSION command
Add RESET session property command
Add documentation for session commands
Handle negative indices in array subscript operator
Improve array subscript operator tests
Add data directory property for default catalog
Add a config to limit the number of rows per shard

This imposes an approximate limit on the number of rows per shard.
This helps ensure that the shards are not too big, we do not care about
each shard having exactly the same number of rows.