[ https://issues.apache.org/jira/browse/HIVE-3746?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13504103#comment-13504103 ]
Carl Steinbach commented on HIVE-3746: -------------------------------------- Currently HS2 uses the following Thrift structures to represent a resultset: {noformat} // Represents a rowset struct TRowSet { // The starting row offset of this rowset. 1: required i64 startRowOffset 2: required list<TRow> rows } // Represents a row in a rowset. struct TRow { 1: required list<TColumnValue> colVals } union TColumnValue { 1: TBoolValue boolVal // BOOLEAN 2: TByteValue byteVal // TINYINT 3: TI16Value i16Val // SMALLINT 4: TI32Value i32Val // INT 5: TI64Value i64Val // BIGINT, TIMESTAMP 6: TDoubleValue doubleVal // FLOAT, DOUBLE 7: TStringValue stringVal // STRING, LIST, MAP, STRUCT, UNIONTYPE, BINARY } // A Boolean column value. struct TBoolValue { // NULL if value is unset. 1: optional bool value } ... struct TStringValue { 1: optional string value } {noformat} This problem with this approach is that Thrift unions are not very efficient, and we pay this cost on a per-field basis. Instead, we should make the result set structure column-oriented as follows: {noformat} // Represents a rowset struct TRowSet { // The starting row offset of this rowset. 1: required i64 startRowOffset 2: required list<TColumn> columns } union TColumn { 1: list<TBoolValue> boolColumn 2: list<TByteValue> byteColumn 3: list<TI16Value> i16Column 4: list<TI32Value> i32Column 5: list<TI64Value> i64Column 6: list<TDoubleValue> doubleColumn 7: list<TStringValue> stringColumn } {noformat} > TRowSet resultset structure should be column-oriented > ----------------------------------------------------- > > Key: HIVE-3746 > URL: https://issues.apache.org/jira/browse/HIVE-3746 > Project: Hive > Issue Type: Sub-task > Components: Server Infrastructure > Reporter: Carl Steinbach > Assignee: Carl Steinbach > -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira