[ 
https://issues.apache.org/jira/browse/DRILL-423?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Xiao Meng updated DRILL-423:
----------------------------

    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)
{code}
    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
{code}

  was:
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 -

    TINYINT = 3;   //  single byte signed integer
    SMALLINT = 4;   //  two byte signed integer
    INT = 5;   //  four byte signed integer
    BIGINT = 6;   //  eight byte signed integer
    DECIMAL4 = 7;   //  a decimal supporting precision between 1 and 8 (4 bits 
for decimal location, 1 sign)
    DECIMAL8 = 8;   //  a decimal supporting precision between 9 and 18 (5 bits 
for decimal location, 1 sign)
    DECIMAL12 = 9;   //  a decimal supporting precision between 19 and 28 (5 
bits for decimal location, 1 sign)
    DECIMAL16 = 10;   //  a decimal supporting precision between 29 and 37 (6 
bits for decimal location, 1 sign)
    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
    TIMESTAMP = 15;   //  unix epoch time in millis
    DATETIME = 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



> Need a C++ client for Drill
> ---------------------------
>
>                 Key: DRILL-423
>                 URL: https://issues.apache.org/jira/browse/DRILL-423
>             Project: Apache Drill
>          Issue Type: New Feature
>            Reporter: Parth Chandra
>
> 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)
> {code}
>     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
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to