Uploaded image for project: 'Apache Drill'
  1. Apache Drill
  2. DRILL-423

Need a C++ client for Drill

    XMLWordPrintableJSON

    Details

    • Type: New Feature
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.4.0
    • Component/s: None
    • Labels:
      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

          Issue Links

            Activity

              People

              • Assignee:
                parthc Parth Chandra
                Reporter:
                parthc Parth Chandra
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: