Use Threads instead of ThreadFactoryBuilder
Static import thread and executor factories
Remove unused logback-test.xml
Fix IS NOT NULL example
Fix unused import
Add javax.annotation to PARENT_FIRST_CLASSES
Update to airbase 24
Use getMagicLiteralFunction instead of constructing signature manually
New expression AST and bytecode generator
Exercise old and new bytecode compilers in unit tests
Fix multithreading for Hive tests

The initialization should happen once for the class and not for each method
invocation. Otherwise, the initializations will stomp on each other.
Canonicalize expressions before analyzing join criteria

The expression interpreter only understands a subset of expression types
Minor cleanup for bindConstant
Simplify generation of IN with huge lists

Don't use a custom FunctionBinder. Instead, bind the set as a constant using invokeDynamic
and emit an invokeStatic call to the helper "in" method.
Optimize json_size function

Avoid extra round trip by performing size directly in extract code
Use function binder to cache patterns in call site
Load balance splits across nodes

The maximum number of splits running on a node are bounded.
In order to avoid starvation of queries with fewer splits, beyond the
maxSplitsPerNode, every node allows a certain number of splits to be
queued per query. The drawback of this approach is that when the system
is heavily loaded (wrt number of queries), then the number of tasks on
each node will increase linearly with the number of queries and each
node will have at least some splits queued for each query. The drawback
is limited only when the system is heavily loaded and is not
any worse off than the current approach.
Changes
Changes
Changes