Details
-
New Feature
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
WE need a C++ client for drill that can be used to write an ODBC driver.
The API should include
1) Connect
2) Handshake
3) Execute Query
4) Fetch Results
The API needs to provide interfaces to decode the RPC messages into RecordBatches and ValueVectors and provide accessors to get values from ValueVectors.
Initial implementation of the ValueVectors interface will probably not support mutators for ValueVectors.
Not all datatypes will be supported. In particular MAP and REPEATMAP will not be supported. Nullable and repeat types will be supported. The following is the list of datatypes for which support is planned (defined in Types.proto)
LATE = 0; // late binding type MAP = 1; // an empty map column. Useful for conceptual setup. Children listed within here REPEATMAP = 2; // a repeated map column (means that multiple children sit below this) TINYINT = 3; // single byte signed integer SMALLINT = 4; // two byte signed integer INT = 5; // four byte signed integer BIGINT = 6; // eight byte signed integer DECIMAL9 = 7; // a decimal supporting precision between 1 and 9 DECIMAL18 = 8; // a decimal supporting precision between 10 and 18 DECIMAL28SPARSE = 9; // a decimal supporting precision between 19 and 28 DECIMAL38SPARSE = 10; // a decimal supporting precision between 29 and 38 MONEY = 11; // signed decimal with two digit precision DATE = 12; // days since 4713bc TIME = 13; // time in micros before or after 2000/1/1 TIMETZ = 14; // time in micros before or after 2000/1/1 with timezone TIMESTAMPTZ = 15; // unix epoch time in millis TIMESTAMP = 16; // TBD INTERVAL = 17; // TBD FLOAT4 = 18; // 4 byte ieee 754 FLOAT8 = 19; // 8 byte ieee 754 BIT = 20; // single bit value (boolean) FIXEDCHAR = 21; // utf8 fixed length string, padded with spaces FIXED16CHAR = 22; FIXEDBINARY = 23; // fixed length binary, padded with 0 bytes VARCHAR = 24; // utf8 variable length string VAR16CHAR = 25; // utf16 variable length string VARBINARY = 26; // variable length binary UINT1 = 29; // unsigned 1 byte integer UINT2 = 30; // unsigned 2 byte integer UINT4 = 31; // unsigned 4 byte integer UINT8 = 32; // unsigned 8 byte integer DECIMAL28DENSE = 33; // dense decimal representation, supporting precision between 19 and 28 DECIMAL38DENSE = 34; // dense decimal representation, supporting precision between 28 and 38 NULL = 37; // a value of unknown type (e.g. a missing reference). INTERVALYEAR = 38; // Interval type specifying YEAR to MONTH INTERVALDAY = 39; // Interval type specifying DAY to SECONDS
Attachments
Attachments
Issue Links
- duplicates
-
DRILL-371 Build Drill C++ client driver
- Resolved