blob: 2792a07276517f1a86c2a467e94d13cdb29c6a58 [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 doris
namespace java org.apache.doris.thrift
include "Exprs.thrift"
include "Types.thrift"
include "Descriptors.thrift"
include "Partitions.thrift"
enum TDataSinkType {
DATA_STREAM_SINK,
RESULT_SINK,
DATA_SPLIT_SINK,
MYSQL_TABLE_SINK,
EXPORT_SINK,
OLAP_TABLE_SINK,
MEMORY_SCRATCH_SINK
}
struct TMemoryScratchSink {
}
// Sink which forwards data to a remote plan fragment,
// according to the given output partition specification
// (ie, the m:1 part of an m:n data stream)
struct TDataStreamSink {
// destination node id
1: required Types.TPlanNodeId dest_node_id
// Specification of how the output of a fragment is partitioned.
// If the partitioning type is UNPARTITIONED, the output is broadcast
// to each destination host.
2: required Partitions.TDataPartition output_partition
3: optional bool ignore_not_found
}
// Reserved for
struct TResultSink {
}
struct TMysqlTableSink {
1: required string host
2: required i32 port
3: required string user
4: required string passwd
5: required string db
6: required string table
}
// Following is used to split data read from
// Used to describe rollup schema
struct TRollupSchema {
1: required list<Exprs.TExpr> keys
2: required list<Exprs.TExpr> values
3: required list<Types.TAggregationType> value_ops
4: optional string keys_type
}
struct TDataSplitSink {
1: required list<Exprs.TExpr> partition_exprs
2: required list<Partitions.TRangePartition> partition_infos
4: required map<string, TRollupSchema> rollup_schemas
}
struct TExportSink {
1: required Types.TFileType file_type
2: required string export_path
3: required string column_separator
4: required string line_delimiter
// properties need to access broker.
5: optional list<Types.TNetworkAddress> broker_addresses
6: optional map<string, string> properties;
}
struct TOlapTableSink {
1: required Types.TUniqueId load_id
2: required i64 txn_id
3: required i64 db_id
4: required i64 table_id
5: required i32 tuple_id
6: required i32 num_replicas
7: required bool need_gen_rollup
8: optional string db_name
9: optional string table_name
10: required Descriptors.TOlapTableSchemaParam schema
11: required Descriptors.TOlapTablePartitionParam partition
12: required Descriptors.TOlapTableLocationParam location
13: required Descriptors.TPaloNodesInfo nodes_info
14: optional i64 load_channel_timeout_s // the timeout of load channels in second
}
struct TDataSink {
1: required TDataSinkType type
2: optional TDataStreamSink stream_sink
3: optional TResultSink result_sink
4: optional TDataSplitSink split_sink
5: optional TMysqlTableSink mysql_table_sink
6: optional TExportSink export_sink
7: optional TOlapTableSink olap_table_sink
8: optional TMemoryScratchSink memory_scratch_sink
}