| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you 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 org.apache.impala.thrift |
| |
| include "CatalogObjects.thrift" |
| include "Types.thrift" |
| include "Exprs.thrift" |
| |
| struct TSlotDescriptor { |
| 1: required Types.TSlotId id |
| 2: required Types.TTupleId parent |
| // Only set for collection slots. The tuple ID of the item tuple for the collection. |
| 3: optional Types.TTupleId itemTupleId |
| 4: required Types.TColumnType slotType |
| |
| // Absolute path into the table schema pointing to the column/field materialized into |
| // this slot. Empty for slots that do not materialize a table column/field, e.g., slots |
| // materializing an aggregation result. |
| // |
| // materializedPath[i] is the ordinal position of the column/field of the table schema |
| // at level i. For example, materializedPath[0] is an ordinal into the list of table |
| // columns, materializedPath[1] is an ordinal into the list of fields of the |
| // complex-typed column at position materializedPath[0], etc. |
| // |
| // The materialized path is used to determine when a new tuple (containing a new |
| // instance of this slot) should be created. A tuple is emitted for every data item |
| // pointed to by the materialized path. For scalar slots this trivially means that every |
| // data item goes into a different tuple. For collection slots, the materialized path |
| // determines how many data items go into a single collection value. |
| 5: required list<i32> materializedPath |
| |
| 6: required i32 byteOffset // into tuple |
| 7: required i32 nullIndicatorByte |
| 8: required i32 nullIndicatorBit |
| 9: required i32 slotIdx |
| } |
| |
| struct TColumnDescriptor { |
| 1: required string name |
| 2: required Types.TColumnType type |
| } |
| |
| // "Union" of all table types. |
| struct TTableDescriptor { |
| // Query local id assigned in DescriptorTable:toThrift() |
| 1: required Types.TTableId id |
| 2: required CatalogObjects.TTableType tableType |
| // Clustering/partition columns come first. |
| 3: required list<TColumnDescriptor> columnDescriptors |
| 4: required i32 numClusteringCols |
| |
| 5: optional CatalogObjects.THdfsTable hdfsTable |
| 6: optional CatalogObjects.THBaseTable hbaseTable |
| 9: optional CatalogObjects.TDataSourceTable dataSourceTable |
| 10: optional CatalogObjects.TKuduTable kuduTable |
| |
| // Unqualified name of table |
| 7: required string tableName |
| |
| // Name of the database that the table belongs to |
| 8: required string dbName |
| } |
| |
| struct TTupleDescriptor { |
| 1: required Types.TTupleId id |
| 2: required i32 byteSize |
| 3: required i32 numNullBytes |
| 4: optional Types.TTableId tableId |
| |
| // Absolute path into the table schema pointing to the collection whose fields |
| // are materialized into this tuple. Non-empty if this tuple belongs to a |
| // nested collection, empty otherwise. |
| 5: optional list<i32> tuplePath |
| } |
| |
| struct TDescriptorTable { |
| 1: optional list<TSlotDescriptor> slotDescriptors |
| 2: required list<TTupleDescriptor> tupleDescriptors |
| |
| // TTableDescriptor(s) referenced by tupleDescriptors and scan nodes in |
| // the fragment. |
| 3: optional list<TTableDescriptor> tableDescriptors |
| } |
| |
| // Binary blob containing a serialized TDescriptorTable. See desc_tbl_* fields on |
| // TQueryCtx for more context on when this is used. |
| struct TDescriptorTableSerialized { |
| // TDescriptorTable serialized |
| 1: required binary thrift_desc_tbl |
| } |