// Copyright 2012 Cloudera Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. namespace cpp impala namespace java com.cloudera.impala.thrift include "Types.thrift" include "CatalogObjects.thrift" // Serialized, self-contained version of a RowBatch (in be/src/runtime/row-batch.h). struct TRowBatch { // total number of rows contained in this batch 1: required i32 num_rows // row composition 2: required list row_tuples // There are a total of num_rows * num_tuples_per_row offsets // pointing into tuple_data. // An offset of -1 records a NULL. 3: list tuple_offsets // binary tuple data // TODO: figure out how we can avoid copying the data during TRowBatch construction 4: string tuple_data // Indicates the type of compression used 5: required CatalogObjects.THdfsCompression compression_type // Indicates the uncompressed size 6:i32 uncompressed_size } // this is a union over all possible return types struct TColumnValue { 1: optional bool bool_val 6: optional byte byte_val 7: optional i16 short_val 2: optional i32 int_val 3: optional i64 long_val 4: optional double double_val 5: optional string string_val 8: optional binary binary_val } struct TResultRow { 1: list colVals } // A union over all possible return types for a column of data // Currently only used by ExternalDataSource types struct TColumnData { // One element in the list for every row in the column indicating if there is // a value in the vals list or a null. 1: required list is_null; // Only one is set, only non-null values are set. 2: optional list bool_vals; 3: optional list byte_vals; 4: optional list short_vals; 5: optional list int_vals; 6: optional list long_vals; 7: optional list double_vals; 8: optional list string_vals; 9: optional list binary_vals; } struct TResultSetMetadata { 1: required list columns } // List of rows and metadata describing their columns. struct TResultSet { 1: required list rows 2: required TResultSetMetadata schema }