blob: 3edf42b49aa9119fb01fe884d2521d7ae9c8423d [file] [log] [blame]
// 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
typedef i64 TTimestamp
typedef i32 TFragmentIdx
typedef i32 TPlanNodeId
typedef i32 TTupleId
typedef i32 TSlotId
typedef i32 TTableId
typedef i32 TJoinTableId
// TODO: Consider moving unrelated enums to better locations.
enum TPrimitiveType {
INVALID_TYPE,
NULL_TYPE,
BOOLEAN,
TINYINT,
SMALLINT,
INT,
BIGINT,
FLOAT,
DOUBLE,
DATE,
DATETIME,
TIMESTAMP,
STRING,
BINARY, // Unsupported
DECIMAL,
CHAR,
VARCHAR,
FIXED_UDA_INTERMEDIATE,
}
enum TTypeNodeType {
SCALAR,
ARRAY,
MAP,
STRUCT
}
struct TScalarType {
1: required TPrimitiveType type
// Only set if type == CHAR or type == VARCHAR
2: optional i32 len
// Only set for DECIMAL
3: optional i32 precision
4: optional i32 scale
}
// Represents a field in a STRUCT type.
// TODO: Model column stats for struct fields.
struct TStructField {
1: required string name
2: optional string comment
}
struct TTypeNode {
1: required TTypeNodeType type
// only set for scalar types
2: optional TScalarType scalar_type
// only used for structs; has struct_fields.size() corresponding child types
3: optional list<TStructField> struct_fields
}
// A flattened representation of a tree of column types obtained by depth-first
// traversal. Complex types such as map, array and struct have child types corresponding
// to the map key/value, array item type, and struct fields, respectively.
// For scalar types the list contains only a single node.
// Note: We cannot rename this to TType because it conflicts with Thrift's internal TType
// and the generated Python thrift files will not work.
struct TColumnType {
1: list<TTypeNode> types
}
enum TStmtType {
QUERY,
DDL, // Data definition, e.g. CREATE TABLE (includes read-only functions e.g. SHOW)
DML, // Data modification e.g. INSERT
EXPLAIN,
LOAD, // Statement type for LOAD commands
SET
}
// Level of verboseness for "explain" output.
enum TExplainLevel {
MINIMAL,
STANDARD,
EXTENDED,
VERBOSE
}
enum TRuntimeFilterMode {
// No filters are computed in the FE or the BE.
OFF,
// Only broadcast filters are computed in the BE, and are only published to the local
// fragment.
LOCAL,
// All fiters are computed in the BE, and are published globally.
GLOBAL
}
enum TPrefetchMode {
// No prefetching at all.
NONE,
// Prefetch the hash table buckets.
HT_BUCKET
}
// A TNetworkAddress is the standard host, port representation of a
// network address. The hostname field must be resolvable to an IPv4
// address.
struct TNetworkAddress {
1: required string hostname
2: required i32 port
}
// Wire format for UniqueId
struct TUniqueId {
1: required i64 hi
2: required i64 lo
}
enum TFunctionCategory {
SCALAR,
AGGREGATE,
ANALYTIC
}
enum TFunctionBinaryType {
// Impala builtin. We can either run this interpreted or via codegen
// depending on the query option.
BUILTIN,
// Java UDFs, loaded from *.jar
JAVA,
// Native-interface, precompiled UDFs loaded from *.so
NATIVE,
// Native-interface, precompiled to IR; loaded from *.ll
IR,
}
// Represents a fully qualified function name.
struct TFunctionName {
// Name of the function's parent database. Not set if in global
// namespace (e.g. builtins)
1: optional string db_name
// Name of the function
2: required string function_name
}
struct TScalarFunction {
1: required string symbol;
2: optional string prepare_fn_symbol
3: optional string close_fn_symbol
}
struct TAggregateFunction {
1: required TColumnType intermediate_type
2: required bool is_analytic_only_fn
3: required string update_fn_symbol
4: required string init_fn_symbol
5: optional string serialize_fn_symbol
6: optional string merge_fn_symbol
7: optional string finalize_fn_symbol
8: optional string get_value_fn_symbol
9: optional string remove_fn_symbol
10: optional bool ignores_distinct
}
// Represents a function in the Catalog.
struct TFunction {
// Fully qualified function name.
1: required TFunctionName name
// Type of the udf. e.g. hive, native, ir
2: required TFunctionBinaryType binary_type
// The types of the arguments to the function
3: required list<TColumnType> arg_types
// Return type for the function.
4: required TColumnType ret_type
// If true, this function takes var args.
5: required bool has_var_args
// Optional comment to attach to the function
6: optional string comment
7: optional string signature
// HDFS path for the function binary. This binary must exist at the time the
// function is created.
8: optional string hdfs_location
// One of these should be set.
9: optional TScalarFunction scalar_fn
10: optional TAggregateFunction aggregate_fn
// True for builtins or user-defined functions persisted by the catalog
11: optional bool is_persistent
// Last modified time of the 'hdfs_location'. Set by the coordinator to record
// the mtime its aware of for the lib. Executors expect that the lib they use
// has the same mtime as the coordinator's. An mtime of -1 makes the mtime check
// a no-op.
// Not set when stored in the catalog.
12: optional i64 last_modified_time
}