gensrc/thrift/PaloInternalService.thrift (461 lines of code) (raw):
// 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 "Status.thrift"
include "Types.thrift"
include "Exprs.thrift"
include "Descriptors.thrift"
include "PlanNodes.thrift"
include "Planner.thrift"
include "DataSinks.thrift"
include "Data.thrift"
include "RuntimeProfile.thrift"
// constants for TQueryOptions.num_nodes
const i32 NUM_NODES_ALL = 0
const i32 NUM_NODES_ALL_RACKS = -1
// constants for TPlanNodeId
const i32 INVALID_PLAN_NODE_ID = -1
// Constant default partition ID, must be < 0 to avoid collisions
const i64 DEFAULT_PARTITION_ID = -1;
enum TQueryType {
SELECT,
LOAD,
EXTERNAL
}
enum TErrorHubType {
MYSQL,
BROKER,
NULL_TYPE
}
enum TPrefetchMode {
NONE,
HT_BUCKET
}
struct TMysqlErrorHubInfo {
1: required string host;
2: required i32 port;
3: required string user;
4: required string passwd;
5: required string db;
6: required string table;
}
struct TBrokerErrorHubInfo {
1: required Types.TNetworkAddress broker_addr;
2: required string path;
3: required map<string, string> prop;
}
struct TLoadErrorHubInfo {
1: required TErrorHubType type = TErrorHubType.NULL_TYPE;
2: optional TMysqlErrorHubInfo mysql_info;
3: optional TBrokerErrorHubInfo broker_info;
}
struct TResourceLimit {
1: optional i32 cpu_limit
}
enum TSerdeDialect {
DORIS = 0,
PRESTO = 1,
HIVE = 2
}
// Query options that correspond to PaloService.PaloQueryOptions,
// with their respective defaults
struct TQueryOptions {
1: optional bool abort_on_error = 0 // Deprecated
2: optional i32 max_errors = 0
3: optional bool disable_codegen = 1 // Deprecated
4: optional i32 batch_size = 0
5: optional i32 num_nodes = NUM_NODES_ALL
6: optional i64 max_scan_range_length = 0 // Deprecated
7: optional i32 num_scanner_threads = 0
8: optional i32 max_io_buffers = 0 // Deprecated
9: optional bool allow_unsupported_formats = 0 // Deprecated
10: optional i64 default_order_by_limit = -1
// 11: optional string debug_action = "" // Never used
12: optional i64 mem_limit = 2147483648
13: optional bool abort_on_default_limit_exceeded = 0 // Deprecated
14: optional i32 query_timeout = 3600
15: optional bool is_report_success = 0
16: optional i32 codegen_level = 0 // Deprecated
// INT64::MAX
17: optional i64 kudu_latest_observed_ts = 9223372036854775807 // Deprecated
18: optional TQueryType query_type = TQueryType.SELECT
19: optional i64 min_reservation = 0 // Deprecated
20: optional i64 max_reservation = 107374182400 // Deprecated
21: optional i64 initial_reservation_total_claims = 2147483647 // TODO chenhao // Deprecated
22: optional i64 buffer_pool_limit = 2147483648 // Deprecated
// The default spillable buffer size in bytes, which may be overridden by the planner.
// Defaults to 2MB.
23: optional i64 default_spillable_buffer_size = 2097152; //Deprecated
// The minimum spillable buffer to use. The planner will not choose a size smaller than
// this. Defaults to 64KB.
24: optional i64 min_spillable_buffer_size = 65536; //Deprecated
// The maximum size of row that the query will reserve memory to process. Processing
// rows larger than this may result in a query failure. Defaults to 512KB, e.g.
// enough for a row with 15 32KB strings or many smaller columns.
//
// Different operators handle this option in different ways. E.g. some simply increase
// the size of all their buffers to fit this row size, whereas others may use more
// sophisticated strategies - e.g. reserving a small number of buffers large enough to
// fit maximum-sized rows.
25: optional i64 max_row_size = 524288; //Deprecated
// stream preaggregation
26: optional bool disable_stream_preaggregations = false;
// multithreaded degree of intra-node parallelism
27: optional i32 mt_dop = 0; // Deprecated
// if this is a query option for LOAD, load_mem_limit should be set to limit the mem comsuption
// of load channel.
28: optional i64 load_mem_limit = 0;
// see BE config `doris_max_scan_key_num` for details
// if set, this will overwrite the BE config.
29: optional i32 max_scan_key_num;
// see BE config `max_pushdown_conditions_per_column` for details
// if set, this will overwrite the BE config.
30: optional i32 max_pushdown_conditions_per_column
// whether enable spilling to disk
31: optional bool enable_spilling = false;
// whether enable parallel merge in exchange node
32: optional bool enable_enable_exchange_node_parallel_merge = false; // deprecated
// Time in ms to wait until runtime filters are delivered.
33: optional i32 runtime_filter_wait_time_ms = 1000
// if the right table is greater than this value in the hash join, we will ignore IN filter
34: optional i32 runtime_filter_max_in_num = 1024;
// the resource limitation of this query
42: optional TResourceLimit resource_limit
// show bitmap data in result, if use this in mysql cli may make the terminal
// output corrupted character
43: optional bool return_object_data_as_binary = false
// trim tailing spaces while querying external table and stream load
44: optional bool trim_tailing_spaces_for_external_table_query = false
45: optional bool enable_function_pushdown;
46: optional string fragment_transmission_compression_codec;
48: optional bool enable_local_exchange;
// For debug purpose, dont' merge unique key and agg key when reading data.
49: optional bool skip_storage_engine_merge = false
// For debug purpose, skip delete predicates when reading data
50: optional bool skip_delete_predicate = false
51: optional bool enable_new_shuffle_hash_method // deprecated
52: optional i32 be_exec_version = 0
53: optional i32 partitioned_hash_join_rows_threshold = 0 // deprecated
54: optional bool enable_share_hash_table_for_broadcast_join
55: optional bool check_overflow_for_decimal = true
// For debug purpose, skip delete bitmap when reading data
56: optional bool skip_delete_bitmap = false
// non-pipelinex engine removed. always true.
57: optional bool enable_pipeline_engine = true
58: optional i32 repeat_max_num = 0 // Deprecated
// deprecated, use spill_sort_mem_limit
59: optional i64 external_sort_bytes_threshold = 0
// deprecated
60: optional i32 partitioned_hash_agg_rows_threshold = 0 // deprecated
61: optional bool enable_file_cache = false
62: optional i32 insert_timeout = 14400
63: optional i32 execution_timeout = 3600
64: optional bool dry_run_query = false
65: optional bool enable_common_expr_pushdown = false;
66: optional i32 parallel_instance = 1
// Indicate where useServerPrepStmts enabled
67: optional bool mysql_row_binary_format = false;
// Not used anymore
68: optional i64 external_agg_bytes_threshold = 0 // deprecated
// Not used anymore, use spill_aggregation_partition_count
69: optional i32 external_agg_partition_bits = 4 // deprecated
// Specify base path for file cache
70: optional string file_cache_base_path
71: optional bool enable_parquet_lazy_mat = true
72: optional bool enable_orc_lazy_mat = true
73: optional i64 scan_queue_mem_limit
74: optional bool enable_scan_node_run_serial = false; // deprecated
75: optional bool enable_insert_strict = false;
76: optional bool enable_inverted_index_query = true;
77: optional bool truncate_char_or_varchar_columns = false
78: optional bool enable_hash_join_early_start_probe = false // deprecated
// non-pipelinex engine removed. always true.
79: optional bool enable_pipeline_x_engine = true;
80: optional bool enable_memtable_on_sink_node = false;
81: optional bool enable_delete_sub_predicate_v2 = false; // deprecated
// A tag used to distinguish fe start epoch.
82: optional i64 fe_process_uuid = 0;
83: optional i32 inverted_index_conjunction_opt_threshold = 1000;
// A seperate flag to indicate whether to enable profile, not
// use is_report_success any more
84: optional bool enable_profile = false;
85: optional bool enable_page_cache = false;
86: optional i32 analyze_timeout = 43200;
87: optional bool faster_float_convert = false; // deprecated
88: optional bool enable_decimal256 = false;
89: optional bool enable_local_shuffle = false;
// For emergency use, skip missing version when reading rowsets
90: optional bool skip_missing_version = false;
91: optional bool runtime_filter_wait_infinitely = false;
92: optional i32 wait_full_block_schedule_times = 1; // deprecated
93: optional i32 inverted_index_max_expansions = 50;
94: optional i32 inverted_index_skip_threshold = 50;
95: optional bool enable_parallel_scan = false;
96: optional i32 parallel_scan_max_scanners_count = 0;
97: optional i64 parallel_scan_min_rows_per_scanner = 0;
98: optional bool skip_bad_tablet = false;
// Increase concurrency of scanners adaptively, the maxinum times to scale up
99: optional double scanner_scale_up_ratio = 0; //deprecated
100: optional bool enable_distinct_streaming_aggregation = true;
// deprecated
101: optional bool enable_join_spill = false
// deprecated
102: optional bool enable_sort_spill = false
// deprecated
103: optional bool enable_agg_spill = false
104: optional i64 min_revocable_mem = 0
105: optional i64 spill_streaming_agg_mem_limit = 0;
// max rows of each sub-queue in DataQueue.
106: optional i64 data_queue_max_blocks = 0;
// expr pushdown for index filter rows
107: optional bool enable_common_expr_pushdown_for_inverted_index = false;
108: optional i64 local_exchange_free_blocks_limit;
109: optional bool enable_force_spill = false;
110: optional bool enable_parquet_filter_by_min_max = true
111: optional bool enable_orc_filter_by_min_max = true
112: optional i32 max_column_reader_num = 0
113: optional bool enable_local_merge_sort = false; // deprecated
114: optional bool enable_parallel_result_sink = false;
115: optional bool enable_short_circuit_query_access_column_store = false;
116: optional bool enable_no_need_read_data_opt = true;
117: optional bool read_csv_empty_line_as_null = false;
118: optional TSerdeDialect serde_dialect = TSerdeDialect.DORIS;
119: optional bool enable_match_without_inverted_index = true;
120: optional bool enable_fallback_on_missing_inverted_index = true;
121: optional bool keep_carriage_return = false; // \n,\r\n split line in CSV.
122: optional i32 runtime_bloom_filter_min_size = 1048576;
//Access Parquet/ORC columns by name by default. Set this property to `false` to access columns
//by their ordinal position in the Hive table definition.
123: optional bool hive_parquet_use_column_names = true;
124: optional bool hive_orc_use_column_names = true;
125: optional bool enable_segment_cache = true;
126: optional i32 runtime_bloom_filter_max_size = 16777216;
127: optional i32 in_list_value_count_threshold = 10;
// We need this two fields to make sure thrift id on master is compatible with other branch.
128: optional bool enable_verbose_profile = false; // deprecated
129: optional i32 rpc_verbose_profile_max_instance_count = 0;
130: optional bool enable_adaptive_pipeline_task_serial_read_on_limit = true;
131: optional i32 adaptive_pipeline_task_serial_read_on_limit = 10000;
132: optional i32 parallel_prepare_threshold = 0;
133: optional i32 partition_topn_max_partitions = 1024;
134: optional i32 partition_topn_pre_partition_rows = 1000;
135: optional bool enable_parallel_outfile = false;
136: optional bool enable_phrase_query_sequential_opt = true;
137: optional bool enable_auto_create_when_overwrite = false;
138: optional i64 orc_tiny_stripe_threshold_bytes = 8388608;
139: optional i64 orc_once_max_read_bytes = 8388608;
140: optional i64 orc_max_merge_distance_bytes = 1048576;
141: optional bool ignore_runtime_filter_error = false;
142: optional bool enable_fixed_len_to_uint32_v2 = false;
143: optional bool enable_shared_exchange_sink_buffer = true;
144: optional bool enable_inverted_index_searcher_cache = true;
145: optional bool enable_inverted_index_query_cache = true;
146: optional bool fuzzy_disable_runtime_filter_in_be = false; // deprecated
147: optional i32 profile_level = 1;
148: optional i32 min_scanner_concurrency = 1;
149: optional i32 min_scan_scheduler_concurrency = 0;
150: optional bool enable_runtime_filter_partition_prune = true;
// The minimum memory that an operator required to run.
151: optional i32 minimum_operator_memory_required_kb = 1024;
152: optional bool enable_mem_overcommit = true; // deprecated
153: optional i32 query_slot_count = 0;
154: optional bool enable_spill = false
155: optional bool enable_reserve_memory = true
156: optional i32 revocable_memory_high_watermark_percent = -1
157: optional i64 spill_sort_mem_limit = 134217728
158: optional i64 spill_sort_batch_bytes = 8388608
159: optional i32 spill_aggregation_partition_count = 32
160: optional i32 spill_hash_join_partition_count = 32
161: optional i64 low_memory_mode_buffer_limit = 33554432
162: optional bool dump_heap_profile_when_mem_limit_exceeded = false
163: optional bool inverted_index_compatible_read = false
164: optional bool check_orc_init_sargs_success = false
165: optional i32 exchange_multi_blocks_byte_size = 262144
// For cloud, to control if the content would be written into file cache
// In write path, to control if the content would be written into file cache.
// In read path, read from file cache or remote storage when execute query.
1000: optional bool disable_file_cache = false
}
// A scan range plus the parameters needed to execute that scan.
struct TScanRangeParams {
1: required PlanNodes.TScanRange scan_range
2: optional i32 volume_id = -1
}
// deprecated
struct TRuntimeFilterTargetParams {
1: required Types.TUniqueId target_fragment_instance_id
// The address of the instance where the fragment is expected to run
2: required Types.TNetworkAddress target_fragment_instance_addr
}
struct TRuntimeFilterTargetParamsV2 {
1: required list<Types.TUniqueId> target_fragment_instance_ids
// The address of the instance where the fragment is expected to run
2: required Types.TNetworkAddress target_fragment_instance_addr
3: optional list<i32> target_fragment_ids
}
struct TRuntimeFilterParams {
// Runtime filter merge instance address. Used if this filter has a remote target
1: optional Types.TNetworkAddress runtime_filter_merge_addr
// deprecated
2: optional map<i32, list<TRuntimeFilterTargetParams>> rid_to_target_param
// Runtime filter ID to the runtime filter desc
// Used if this filter has a remote target
3: optional map<i32, PlanNodes.TRuntimeFilterDesc> rid_to_runtime_filter
// Number of Runtime filter producers
// Used if this filter has a remote target
4: optional map<i32, i32> runtime_filter_builder_num
// Used if this filter has a remote target
5: optional map<i32, list<TRuntimeFilterTargetParamsV2>> rid_to_target_paramv2
}
// Parameters for a single execution instance of a particular TPlanFragment
// TODO: for range partitioning, we also need to specify the range boundaries
struct TPlanFragmentExecParams {
// a globally unique id assigned to the entire query
1: required Types.TUniqueId query_id
// a globally unique id assigned to this particular execution instance of
// a TPlanFragment
2: required Types.TUniqueId fragment_instance_id
// initial scan ranges for each scan node in TPlanFragment.plan_tree
3: required map<Types.TPlanNodeId, list<TScanRangeParams>> per_node_scan_ranges
// number of senders for ExchangeNodes contained in TPlanFragment.plan_tree;
// needed to create a DataStreamRecvr
4: required map<Types.TPlanNodeId, i32> per_exch_num_senders
// Output destinations, one per output partition.
// The partitioning of the output is specified by
// TPlanFragment.output_sink.output_partition.
// The number of output partitions is destinations.size().
5: list<DataSinks.TPlanFragmentDestination> destinations
// Debug options: perform some action in a particular phase of a particular node
// 6: optional Types.TPlanNodeId debug_node_id // Never used
// 7: optional PlanNodes.TExecNodePhase debug_phase // Never used
// 8: optional PlanNodes.TDebugAction debug_action // Never used
// Id of this fragment in its role as a sender.
9: optional i32 sender_id
10: optional i32 num_senders
11: optional bool send_query_statistics_with_every_batch
// Used to merge and send runtime filter
12: optional TRuntimeFilterParams runtime_filter_params //deprecated
13: optional bool group_commit // deprecated
14: optional list<i32> topn_filter_source_node_ids //deprecated
}
// Global query parameters assigned by the coordinator.
struct TQueryGlobals {
// String containing a timestamp set as the current time.
// Format is yyyy-MM-dd HH:mm:ss
1: required string now_string
// To support timezone in Doris. timestamp_ms is the millisecond uinix timestamp for
// this query to calculate time zone relative function
2: optional i64 timestamp_ms
// time_zone is the timezone this query used.
// If this value is set, BE will ignore now_string
3: optional string time_zone
// Set to true if in a load plan, the max_filter_ratio is 0.0
4: optional bool load_zero_tolerance = false
5: optional i32 nano_seconds
}
// Service Protocol Details
enum PaloInternalServiceVersion {
V1
}
struct TTxnParams {
1: optional bool need_txn
2: optional string token
3: optional i64 thrift_rpc_timeout_ms
4: optional string db
5: optional string tbl
6: optional string user_ip
7: optional i64 txn_id
8: optional Types.TUniqueId fragment_instance_id
9: optional i64 db_id
10: optional double max_filter_ratio
// For load task with transaction, use this to indicate we use pipeline or not
// non-pipelinex engine removed. always true.
11: optional bool enable_pipeline_txn_load = true;
}
// Definition of global dict, global dict is used to accelerate query performance of low cardinality data
struct TColumnDict {
1: optional Types.TPrimitiveType type
2: list<string> str_dict // map one string to a integer, using offset as id
}
struct TGlobalDict {
1: optional map<i32, TColumnDict> dicts, // map dict_id to column dict
2: optional map<i32, i32> slot_dicts // map from slot id to column dict id, because 2 or more column may share the dict
}
struct TPipelineWorkloadGroup {
1: optional i64 id
2: optional string name
3: optional map<string, string> properties
4: optional i64 version
}
// ExecPlanFragment
struct TExecPlanFragmentParams {
1: required PaloInternalServiceVersion protocol_version
// required in V1
2: optional Planner.TPlanFragment fragment
// required in V1
// @Common components
3: optional Descriptors.TDescriptorTable desc_tbl
// required in V1
4: optional TPlanFragmentExecParams params
// Initiating coordinator.
// TODO: determine whether we can get this somehow via the Thrift rpc mechanism.
// required in V1
// @Common components
5: optional Types.TNetworkAddress coord
// backend number assigned by coord to identify backend
// required in V1
6: optional i32 backend_num
// Global query parameters assigned by coordinator.
// required in V1
// @Common components
7: optional TQueryGlobals query_globals
// options for the query
// required in V1
8: optional TQueryOptions query_options
// Whether reportd when the backend fails
// required in V1
9: optional bool is_report_success
// required in V1
// @Common components
// Deprecated
10: optional Types.TResourceInfo resource_info
// load job related
11: optional string import_label
12: optional string db_name
13: optional i64 load_job_id
14: optional TLoadErrorHubInfo load_error_hub_info
// The total number of fragments on same BE host
15: optional i32 fragment_num_on_host
// If true, all @Common components is unset and should be got from BE's cache
// If this field is unset or it set to false, all @Common components is set.
16: optional bool is_simplified_param = false;
17: optional TTxnParams txn_conf
18: optional i64 backend_id
19: optional TGlobalDict global_dict // scan node could use the global dict to encode the string value to an integer
// If it is true, after this fragment is prepared on the BE side,
// it will wait for the FE to send the "start execution" command before it is actually executed.
// Otherwise, the fragment will start executing directly on the BE side.
20: optional bool need_wait_execution_trigger = false;
// deprecated
21: optional bool build_hash_table_for_broadcast_join = false;
22: optional list<Types.TUniqueId> instances_sharing_hash_table;
23: optional string table_name;
// scan node id -> scan range params, only for external file scan
24: optional map<Types.TPlanNodeId, PlanNodes.TFileScanRangeParams> file_scan_params
25: optional i64 wal_id
// num load stream for each sink backend
26: optional i32 load_stream_per_node
// total num of load streams the downstream backend will see
27: optional i32 total_load_streams
28: optional i32 num_local_sink
29: optional i64 content_length
30: optional list<TPipelineWorkloadGroup> workload_groups
31: optional bool is_nereids = true;
32: optional Types.TNetworkAddress current_connect_fe
// For cloud
1000: optional bool is_mow_table;
}
struct TExecPlanFragmentParamsList {
1: optional list<TExecPlanFragmentParams> paramsList;
}
struct TExecPlanFragmentResult {
// required in V1
1: optional Status.TStatus status
}
// CancelPlanFragment
struct TCancelPlanFragmentParams {
1: required PaloInternalServiceVersion protocol_version
// required in V1
2: optional Types.TUniqueId fragment_instance_id
}
struct TCancelPlanFragmentResult {
// required in V1
1: optional Status.TStatus status
}
struct TFoldConstantParams {
1: required map<string, map<string, Exprs.TExpr>> expr_map
2: required TQueryGlobals query_globals
3: optional bool vec_exec
4: optional TQueryOptions query_options
5: optional Types.TUniqueId query_id
6: optional bool is_nereids
}
// TransmitData
struct TTransmitDataParams {
1: required PaloInternalServiceVersion protocol_version
// required in V1
2: optional Types.TUniqueId dest_fragment_instance_id
// for debugging purposes; currently ignored
//3: optional Types.TUniqueId src_fragment_instance_id
// required in V1
4: optional Types.TPlanNodeId dest_node_id
// if set to true, indicates that no more row batches will be sent
// for this dest_node_id
6: optional bool eos
7: optional i32 be_number
8: optional i64 packet_seq
// Id of this fragment in its role as a sender.
9: optional i32 sender_id
}
struct TTransmitDataResult {
// required in V1
1: optional Status.TStatus status
2: optional i64 packet_seq
3: optional Types.TUniqueId dest_fragment_instance_id
4: optional Types.TPlanNodeId dest_node_id
}
struct TTabletWithPartition {
1: required i64 partition_id
2: required i64 tablet_id
}
struct TFetchDataResult {
// result batch
1: required Data.TResultBatch result_batch
// end of stream flag
2: required bool eos
// packet num used check lost of packet
3: required i32 packet_num
// Operation result
4: optional Status.TStatus status
}
// For cloud
enum TCompoundType {
UNKNOWN = 0,
AND = 1,
OR = 2,
NOT = 3,
}
struct TCondition {
1: required string column_name
2: required string condition_op
3: required list<string> condition_values
// In delete condition, the different column may have same column name, need
// using unique id to distinguish them
4: optional i32 column_unique_id
5: optional bool marked_by_runtime_filter = false // deprecated
// For cloud
1000: optional TCompoundType compound_type = TCompoundType.UNKNOWN
}
struct TExportStatusResult {
1: required Status.TStatus status
2: required Types.TExportState state
3: optional list<string> files
}
struct TPipelineInstanceParams {
1: required Types.TUniqueId fragment_instance_id
// deprecated
2: optional bool build_hash_table_for_broadcast_join = false;
3: required map<Types.TPlanNodeId, list<TScanRangeParams>> per_node_scan_ranges
4: optional i32 sender_id
5: optional TRuntimeFilterParams runtime_filter_params
6: optional i32 backend_num
7: optional map<Types.TPlanNodeId, bool> per_node_shared_scans // deprecated
8: optional list<i32> topn_filter_source_node_ids // deprecated after we set topn_filter_descs
9: optional list<PlanNodes.TTopnFilterDesc> topn_filter_descs
}
// ExecPlanFragment
struct TPipelineFragmentParams {
1: required PaloInternalServiceVersion protocol_version
2: required Types.TUniqueId query_id
3: optional i32 fragment_id
4: required map<Types.TPlanNodeId, i32> per_exch_num_senders
5: optional Descriptors.TDescriptorTable desc_tbl
// Deprecated
6: optional Types.TResourceInfo resource_info
7: list<DataSinks.TPlanFragmentDestination> destinations
8: optional i32 num_senders
9: optional bool send_query_statistics_with_every_batch
10: optional Types.TNetworkAddress coord
11: optional TQueryGlobals query_globals
12: optional TQueryOptions query_options
// load job related
13: optional string import_label
14: optional string db_name
15: optional i64 load_job_id
16: optional TLoadErrorHubInfo load_error_hub_info
17: optional i32 fragment_num_on_host
18: optional i64 backend_id
19: optional bool need_wait_execution_trigger = false
20: optional list<Types.TUniqueId> instances_sharing_hash_table
21: optional bool is_simplified_param = false;
22: optional TGlobalDict global_dict // scan node could use the global dict to encode the string value to an integer
23: optional Planner.TPlanFragment fragment
24: list<TPipelineInstanceParams> local_params
26: optional list<TPipelineWorkloadGroup> workload_groups
27: optional TTxnParams txn_conf
28: optional string table_name
// scan node id -> scan range params, only for external file scan
29: optional map<Types.TPlanNodeId, PlanNodes.TFileScanRangeParams> file_scan_params
30: optional bool group_commit = false;
31: optional i32 load_stream_per_node // num load stream for each sink backend
32: optional i32 total_load_streams // total num of load streams the downstream backend will see
33: optional i32 num_local_sink
34: optional i32 num_buckets
35: optional map<i32, i32> bucket_seq_to_instance_idx
36: optional map<Types.TPlanNodeId, bool> per_node_shared_scans // deprecated
37: optional i32 parallel_instances
38: optional i32 total_instances
39: optional map<i32, i32> shuffle_idx_to_instance_idx
40: optional bool is_nereids = true;
41: optional i64 wal_id
42: optional i64 content_length
43: optional Types.TNetworkAddress current_connect_fe
// Used by 2.1
44: optional list<i32> topn_filter_source_node_ids
// For cloud
1000: optional bool is_mow_table;
}
// pull up runtime filter info from instance level to BE level
struct TRuntimeFilterInfo {
// for join runtime filter and setop runtime filter
1: optional TRuntimeFilterParams runtime_filter_params
// for topn runtime filter
2: optional list<PlanNodes.TTopnFilterDesc> topn_filter_descs
}
struct TPipelineFragmentParamsList {
1: optional list<TPipelineFragmentParams> params_list;
2: optional Descriptors.TDescriptorTable desc_tbl;
// scan node id -> scan range params, only for external file scan
3: optional map<Types.TPlanNodeId, PlanNodes.TFileScanRangeParams> file_scan_params;
4: optional Types.TNetworkAddress coord;
5: optional TQueryGlobals query_globals;
6: optional Types.TResourceInfo resource_info;
// The total number of fragments on same BE host
7: optional i32 fragment_num_on_host
8: optional TQueryOptions query_options
9: optional bool is_nereids = true;
10: optional list<TPipelineWorkloadGroup> workload_groups
11: optional Types.TUniqueId query_id
12: optional list<i32> topn_filter_source_node_ids
13: optional Types.TNetworkAddress runtime_filter_merge_addr
14: optional TRuntimeFilterInfo runtime_filter_info
}