blob: f7c1e32daad0d78882a98ca4dcb5f3c6e693cadf [file]
// 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 doris
namespace java org.apache.doris.thrift
include "Types.thrift"
include "Exprs.thrift"
include "Partitions.thrift"
enum TPatternType {
MATCH_NAME = 1,
MATCH_NAME_GLOB = 2
}
struct TColumn {
1: required string column_name
2: required Types.TColumnType column_type
3: optional Types.TAggregationType aggregation_type
4: optional bool is_key
5: optional bool is_allow_null
6: optional string default_value
7: optional bool is_bloom_filter_column
8: optional Exprs.TExpr define_expr
9: optional bool visible = true
10: optional list<TColumn> children_column
11: optional i32 col_unique_id = -1
12: optional bool has_bitmap_index = false
13: optional bool has_ngram_bf_index = false
14: optional i32 gram_size
15: optional i32 gram_bf_size
16: optional string aggregation
17: optional bool result_is_nullable
18: optional bool is_auto_increment = false;
19: optional i32 cluster_key_id = -1
20: optional i32 be_exec_version = -1
21: optional TPatternType pattern_type
22: optional bool variant_enable_typed_paths_to_sparse = false
23: optional bool is_on_update_current_timestamp = false
24: optional i32 variant_max_sparse_column_statistics_size = 10000
}
struct TSlotDescriptor {
1: required Types.TSlotId id
2: required Types.TTupleId parent
3: required Types.TTypeDesc slotType
4: required i32 columnPos // in originating table
5: required i32 byteOffset // deprecated
6: required i32 nullIndicatorByte
7: required i32 nullIndicatorBit
8: required string colName;
9: required i32 slotIdx
10: required bool isMaterialized
11: optional i32 col_unique_id = -1
12: optional bool is_key = false
// If set to false, then such slots will be ignored during
// materialize them.Used to optmize to read less data and less memory usage
13: optional bool need_materialize = true
14: optional bool is_auto_increment = false;
// subcolumn path info list for semi structure column(variant)
15: optional list<string> column_paths
16: optional string col_default_value
17: optional Types.TPrimitiveType primitive_type = Types.TPrimitiveType.INVALID_TYPE
18: optional Exprs.TExpr virtual_column_expr
}
struct TTupleDescriptor {
1: required Types.TTupleId id
2: required i32 byteSize // deprecated
3: required i32 numNullBytes // deprecated
4: optional Types.TTableId tableId
5: optional i32 numNullSlots // deprecated
}
enum THdfsFileFormat {
TEXT = 0,
LZO_TEXT = 1,
RC_FILE = 2,
SEQUENCE_FILE =3,
AVRO = 4,
PARQUET = 5
}
enum TSchemaTableType {
SCH_AUTHORS = 0,
SCH_CHARSETS = 1,
SCH_COLLATIONS = 2,
SCH_COLLATION_CHARACTER_SET_APPLICABILITY = 3,
SCH_COLUMNS = 4,
SCH_COLUMN_PRIVILEGES = 5,
SCH_CREATE_TABLE = 6,
SCH_ENGINES = 7,
SCH_EVENTS = 8,
SCH_FILES = 9,
SCH_GLOBAL_STATUS = 10,
SCH_GLOBAL_VARIABLES = 11,
SCH_KEY_COLUMN_USAGE = 12,
SCH_OPEN_TABLES = 13,
SCH_PARTITIONS = 14,
SCH_PLUGINS = 15,
SCH_PROCESSLIST = 16,
SCH_PROFILES = 17,
SCH_REFERENTIAL_CONSTRAINTS = 18,
SCH_PROCEDURES = 19,
SCH_SCHEMATA = 20,
SCH_SCHEMA_PRIVILEGES = 21,
SCH_SESSION_STATUS = 22,
SCH_SESSION_VARIABLES = 23,
SCH_STATISTICS = 24,
SCH_STATUS = 25,
SCH_TABLES = 26,
SCH_TABLE_CONSTRAINTS = 27,
SCH_TABLE_NAMES = 28,
SCH_TABLE_PRIVILEGES = 29,
SCH_TRIGGERS = 30,
SCH_USER_PRIVILEGES = 31,
SCH_VARIABLES = 32,
SCH_VIEWS = 33,
SCH_INVALID = 34,
SCH_ROWSETS = 35
SCH_BACKENDS = 36,
SCH_COLUMN_STATISTICS = 37,
SCH_PARAMETERS = 38,
SCH_METADATA_NAME_IDS = 39,
SCH_PROFILING = 40,
SCH_BACKEND_ACTIVE_TASKS = 41,
SCH_ACTIVE_QUERIES = 42,
SCH_WORKLOAD_GROUPS = 43,
SCH_USER = 44,
SCH_PROCS_PRIV = 45,
SCH_WORKLOAD_POLICY = 46,
SCH_TABLE_OPTIONS = 47,
SCH_WORKLOAD_GROUP_PRIVILEGES = 48,
SCH_WORKLOAD_GROUP_RESOURCE_USAGE = 49,
SCH_TABLE_PROPERTIES = 50,
SCH_FILE_CACHE_STATISTICS = 51,
SCH_CATALOG_META_CACHE_STATISTICS = 52,
SCH_BACKEND_KERBEROS_TICKET_CACHE = 53,
SCH_ROUTINE_LOAD_JOBS = 54,
SCH_BACKEND_CONFIGURATION=55,
SCH_BACKEND_TABLETS = 56,
SCH_VIEW_DEPENDENCY = 57,
SCH_ENCRYPTION_KEYS = 58,
SCH_SQL_BLOCK_RULE_STATUS = 59;
SCH_CLUSTER_SNAPSHOTS = 60;
SCH_CLUSTER_SNAPSHOT_PROPERTIES = 61;
SCH_BLACKHOLE = 62;
SCH_COLUMN_DATA_SIZES = 63;
}
enum THdfsCompression {
NONE = 0,
DEFAULT = 1,
GZIP = 2,
DEFLATE = 3,
BZIP2 = 4,
SNAPPY = 5,
SNAPPY_BLOCKED = 6 // Used by sequence and rc files but not stored in the metadata.
}
enum TIndexType {
BITMAP = 0,
INVERTED = 1,
BLOOMFILTER = 2,
NGRAM_BF = 3,
ANN = 4
}
enum TPartialUpdateNewRowPolicy {
APPEND = 0,
ERROR = 1
}
// Mapping from names defined by Avro to the enum.
// We permit gzip and bzip2 in addition.
const map<string, THdfsCompression> COMPRESSION_MAP = {
"": THdfsCompression.NONE,
"none": THdfsCompression.NONE,
"deflate": THdfsCompression.DEFAULT,
"gzip": THdfsCompression.GZIP,
"bzip2": THdfsCompression.BZIP2,
"snappy": THdfsCompression.SNAPPY
}
struct TOlapTableIndexTablets {
1: required i64 index_id
2: required list<i64> tablets
}
// its a closed-open range
struct TOlapTablePartition {
1: required i64 id
// deprecated, use 'start_keys' and 'end_keys' instead
2: optional Exprs.TExprNode start_key
3: optional Exprs.TExprNode end_key
// how many tablets in one partition
4: required i32 num_buckets
5: required list<TOlapTableIndexTablets> indexes
6: optional list<Exprs.TExprNode> start_keys
7: optional list<Exprs.TExprNode> end_keys
8: optional list<list<Exprs.TExprNode>> in_keys
9: optional bool is_mutable = true
// only used in List Partition
10: optional bool is_default_partition;
// only used in random distribution scenario to make data distributed even
11: optional i64 load_tablet_idx
12: optional i32 total_replica_num
13: optional i32 load_required_replica_num
}
struct TOlapTablePartitionParam {
1: required i64 db_id
2: required i64 table_id
3: required i64 version
// used to split a logical table to multiple paritions
// deprecated, use 'partition_columns' instead
4: optional string partition_column
// used to split a partition to multiple tablets
5: optional list<string> distributed_columns
// partitions
6: required list<TOlapTablePartition> partitions
7: optional list<string> partition_columns
8: optional list<Exprs.TExpr> partition_function_exprs
9: optional bool enable_automatic_partition
10: optional Partitions.TPartitionType partition_type
// insert overwrite partition(*)
11: optional bool enable_auto_detect_overwrite
12: optional i64 overwrite_group_id
13: optional bool partitions_is_fake = false
}
struct TOlapTableIndex {
1: optional string index_name
2: optional list<string> columns
3: optional TIndexType index_type
4: optional string comment
5: optional i64 index_id
6: optional map<string, string> properties
7: optional list<i32> column_unique_ids
}
struct TOlapTableIndexSchema {
1: required i64 id
2: required list<string> columns
3: required i32 schema_hash
4: optional list<TColumn> columns_desc
5: optional list<TOlapTableIndex> indexes_desc
6: optional Exprs.TExpr where_clause
}
struct TOlapTableSchemaParam {
1: required i64 db_id
2: required i64 table_id
3: required i64 version
// Logical columns, contain all column that in logical table
4: required list<TSlotDescriptor> slot_descs
5: required TTupleDescriptor tuple_desc
6: required list<TOlapTableIndexSchema> indexes
7: optional bool is_dynamic_schema // deprecated
8: optional bool is_partial_update // deprecated, use unique_key_update_mode
9: optional list<string> partial_update_input_columns
10: optional bool is_strict_mode = false
11: optional string auto_increment_column
12: optional i32 auto_increment_column_unique_id = -1
13: optional Types.TInvertedIndexFileStorageFormat inverted_index_file_storage_format = Types.TInvertedIndexFileStorageFormat.V1
14: optional Types.TUniqueKeyUpdateMode unique_key_update_mode
15: optional i32 sequence_map_col_unique_id = -1
16: optional TPartialUpdateNewRowPolicy partial_update_new_key_policy
}
struct TTabletLocation {
1: required i64 tablet_id
2: required list<i64> node_ids
}
struct TOlapTableLocationParam {
1: required i64 db_id
2: required i64 table_id
3: required i64 version
4: required list<TTabletLocation> tablets
}
struct TNodeInfo {
1: required i64 id
2: required i64 option
3: required string host
// used to transfer data between nodes
4: required i32 async_internal_port
}
struct TPaloNodesInfo {
1: required i64 version
2: required list<TNodeInfo> nodes
}
struct TOlapTable {
1: required string tableName
}
struct TMySQLTable {
1: required string host
2: required string port
3: required string user
4: required string passwd
5: required string db
6: required string table
7: required string charset
}
struct TOdbcTable {
1: optional string host
2: optional string port
3: optional string user
4: optional string passwd
5: optional string db
6: optional string table
7: optional string driver
8: optional Types.TOdbcTableType type
}
struct TEsTable {
}
struct TSchemaTable {
1: required TSchemaTableType tableType
}
struct TBrokerTable {
}
struct THiveTable {
1: required string db_name
2: required string table_name
3: required map<string, string> properties
}
struct TIcebergTable {
1: required string db_name
2: required string table_name
3: required map<string, string> properties
}
struct THudiTable {
1: optional string dbName
2: optional string tableName
3: optional map<string, string> properties
}
struct TJdbcTable {
1: optional string jdbc_url
2: optional string jdbc_table_name
3: optional string jdbc_user
4: optional string jdbc_password
5: optional string jdbc_driver_url
6: optional string jdbc_resource_name
7: optional string jdbc_driver_class
8: optional string jdbc_driver_checksum
9: optional i32 connection_pool_min_size
10: optional i32 connection_pool_max_size
11: optional i32 connection_pool_max_wait_time
12: optional i32 connection_pool_max_life_time
13: optional bool connection_pool_keep_alive
14: optional i64 catalog_id
}
struct TMCTable {
1: optional string region // deprecated
2: optional string project
3: optional string table
4: optional string access_key
5: optional string secret_key
6: optional string public_access // deprecated
7: optional string odps_url // deprecated
8: optional string tunnel_url // deprecated
9: optional string endpoint
10: optional string quota
}
struct TTrinoConnectorTable {
1: optional string db_name
2: optional string table_name
3: optional map<string, string> properties
}
struct TLakeSoulTable {
1: optional string db_name
2: optional string table_name
3: optional map<string, string> properties
}
struct TDictionaryTable {
}
// "Union" of all table types.
struct TTableDescriptor {
1: required Types.TTableId id
2: required Types.TTableType tableType
3: required i32 numCols
4: required i32 numClusteringCols
// Unqualified name of table
7: required string tableName;
// Name of the database that the table belongs to
8: required string dbName;
10: optional TMySQLTable mysqlTable
11: optional TOlapTable olapTable
12: optional TSchemaTable schemaTable
14: optional TBrokerTable BrokerTable
15: optional TEsTable esTable
16: optional TOdbcTable odbcTable
17: optional THiveTable hiveTable
18: optional TIcebergTable icebergTable
19: optional THudiTable hudiTable
20: optional TJdbcTable jdbcTable
21: optional TMCTable mcTable
22: optional TTrinoConnectorTable trinoConnectorTable
23: optional TLakeSoulTable lakesoulTable
24: optional TDictionaryTable dictionaryTable
}
struct TDescriptorTable {
1: optional list<TSlotDescriptor> slotDescriptors;
2: required list<TTupleDescriptor> tupleDescriptors;
// all table descriptors referenced by tupleDescriptors
3: optional list<TTableDescriptor> tableDescriptors;
}