DRILL-6791: Scan projection framework The "schema projection" mechanism:
* Handles none (SELECT COUNT\(*)), some (SELECT a, b, x) and all (SELECT *) projection. * Handles null columns (for projection a column "x" that does not exist in the base table.) * Handles constant columns as used for file metadata (AKA "implicit" columns). * Handle schema persistence: the need to reuse the same vectors across different scanners * Provides a framework for consuming externally-supplied metadata * Since we don't yet have a way to provide "real" metadata, obtains metadata hints from previous batches and from the projection list (a.b implies that "a" is a map, c implies that "c" is an array, etc.) * Handles merging the set of data source columns and null columns to create the final output batch. * Running tests found a failure due to an uninialized "bits" vector. Added code to explicitly fill the bits vectors with zeros in the "result set loader."
DRILL-6676: Add Union, List and Repeated List types to Result Set Loader Adds required functionalty to the list and repeated list vectors. Row set accessor changes Adds a "variant" type to model both unions and (non-repeated) lists (which can act as a repeated union, among other things.) Adds union, list and repeated list support to the result set loader and associated classes. Copied much of the general documentation from my private Wiki into mark-down files.