blob: b7a8c078b224c1840f8c686d91e5e96fdda2428d [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 "Status.thrift"
include "Types.thrift"
include "PaloInternalService.thrift"
include "PlanNodes.thrift"
include "Planner.thrift"
include "Descriptors.thrift"
include "Data.thrift"
include "Exprs.thrift"
include "RuntimeProfile.thrift"
include "MasterService.thrift"
include "AgentService.thrift"
// These are supporting structs for JniFrontend.java, which serves as the glue
// between our C++ execution environment and the Java frontend.
struct TSetSessionParams {
1: required string user
}
struct TAuthenticateParams {
1: required string user
2: required string passwd
}
struct TColumnDesc {
1: required string columnName
2: required Types.TPrimitiveType columnType
3: optional i32 columnLength
4: optional i32 columnPrecision
5: optional i32 columnScale
}
// A column definition; used by CREATE TABLE and DESCRIBE <table> statements. A column
// definition has a different meaning (and additional fields) from a column descriptor,
// so this is a separate struct from TColumnDesc.
struct TColumnDef {
1: required TColumnDesc columnDesc
2: optional string comment
}
// Arguments to DescribeTable, which returns a list of column descriptors for a
// given table
struct TDescribeTableParams {
1: optional string db
2: required string table_name
3: optional string user // deprecated
4: optional string user_ip // deprecated
5: optional Types.TUserIdentity current_user_ident // to replace the user and user ip
}
// Results of a call to describeTable()
struct TDescribeTableResult {
1: required list<TColumnDef> columns
}
struct TShowVariableRequest {
1: required i64 threadId
2: required Types.TVarType varType
}
// Results of a call to describeTable()
struct TShowVariableResult {
1: required map<string, string> variables
}
// Valid table file formats
enum TFileFormat {
PARQUETFILE,
RCFILE,
SEQUENCEFILE,
TEXTFILE,
}
// set type
enum TSetType {
OPT_DEFAULT,
OPT_GLOBAL,
OPT_SESSION,
}
// The row format specifies how to interpret the fields (columns) and lines (rows) in a
// data file when creating a new table.
struct TTableRowFormat {
// Optional terminator string used to delimit fields (columns) in the table
1: optional string field_terminator
// Optional terminator string used to delimit lines (rows) in a table
2: optional string line_terminator
// Optional string used to specify a special escape character sequence
3: optional string escaped_by
}
// Represents a single item in a partition spec (column name + value)
struct TPartitionKeyValue {
// Partition column name
1: required string name,
// Partition value
2: required string value
}
// Per-client session state
struct TSessionState {
// The default database, changed by USE <database> queries.
1: required string database
// The user who this session belongs to.
2: required string user
// The user who this session belongs to.
3: required i64 connection_id
}
struct TClientRequest {
// select stmt to be executed
1: required string stmt
// query options
2: required PaloInternalService.TQueryOptions queryOptions
// session state
3: required TSessionState sessionState;
}
// Parameters for SHOW DATABASES commands
struct TExplainParams {
// Optional pattern to match database names. If not set, all databases are returned.
1: required string explain
}
struct TSetVar{
1: required TSetType type
2: required string variable
3: required Exprs.TExpr value
}
// Parameters for Set commands
struct TSetParams {
// Optional pattern to match database names. If not set, all databases are returned.
1: required list<TSetVar> set_vars
}
struct TKillParams {
// Optional pattern to match database names. If not set, all databases are returned.
1: required bool is_kill_connection
2: required i64 connection_id
}
struct TCommonDdlParams {
//1: required Ddl.TCommonDdlType ddl_type
//2: optional Ddl.TCreateDbParams create_db_params
//3: optional Ddl.TCreateTableParams create_table_params
//4: optional Ddl.TLoadParams load_params
}
// Parameters for the USE db command
struct TUseDbParams {
1: required string db
}
struct TResultSetMetadata {
1: required list<TColumnDesc> columnDescs
}
// Result of call to PaloPlanService/JniFrontend.CreateQueryRequest()
struct TQueryExecRequest {
// global descriptor tbl for all fragments
1: optional Descriptors.TDescriptorTable desc_tbl
// fragments[i] may consume the output of fragments[j > i];
// fragments[0] is the root fragment and also the coordinator fragment, if
// it is unpartitioned.
2: required list<Planner.TPlanFragment> fragments
// Specifies the destination fragment of the output of each fragment.
// parent_fragment_idx.size() == fragments.size() - 1 and
// fragments[i] sends its output to fragments[dest_fragment_idx[i-1]]
3: optional list<i32> dest_fragment_idx
// A map from scan node ids to a list of scan range locations.
// The node ids refer to scan nodes in fragments[].plan_tree
4: optional map<Types.TPlanNodeId, list<Planner.TScanRangeLocations>>
per_node_scan_ranges
// Metadata of the query result set (only for select)
5: optional TResultSetMetadata result_set_metadata
7: required PaloInternalService.TQueryGlobals query_globals
// The statement type governs when the coordinator can judge a query to be finished.
// DML queries are complete after Wait(), SELECTs may not be.
9: required Types.TStmtType stmt_type
// The statement type governs when the coordinator can judge a query to be finished.
// DML queries are complete after Wait(), SELECTs may not be.
10: optional bool is_block_query;
}
enum TDdlType {
USE,
DESCRIBE,
SET,
EXPLAIN,
KILL,
COMMON
}
struct TDdlExecRequest {
1: required TDdlType ddl_type
// Parameters for USE commands
2: optional TUseDbParams use_db_params;
// Parameters for DESCRIBE table commands
3: optional TDescribeTableParams describe_table_params
10: optional TExplainParams explain_params
11: optional TSetParams set_params
12: optional TKillParams kill_params
//13: optional Ddl.TMasterDdlRequest common_params
}
// Results of an EXPLAIN
struct TExplainResult {
// each line in the explain plan occupies an entry in the list
1: required list<Data.TResultRow> results
}
// Result of call to createExecRequest()
struct TExecRequest {
1: required Types.TStmtType stmt_type;
2: optional string sql_stmt;
// Globally unique id for this request. Assigned by the planner.
3: required Types.TUniqueId request_id
// Copied from the corresponding TClientRequest
4: required PaloInternalService.TQueryOptions query_options;
// TQueryExecRequest for the backend
// Set iff stmt_type is QUERY or DML
5: optional TQueryExecRequest query_exec_request
// Set iff stmt_type is DDL
6: optional TDdlExecRequest ddl_exec_request
// Metadata of the query result set (not set for DML)
7: optional TResultSetMetadata result_set_metadata
// Result of EXPLAIN. Set iff stmt_type is EXPLAIN
8: optional TExplainResult explain_result
}
// Arguments to getDbNames, which returns a list of dbs that match an optional
// pattern
struct TGetDbsParams {
// If not set, match every database
1: optional string pattern
2: optional string user // deprecated
3: optional string user_ip // deprecated
4: optional Types.TUserIdentity current_user_ident // to replace the user and user ip
}
// getDbNames returns a list of database names
struct TGetDbsResult {
1: list<string> dbs
}
// Arguments to getTableNames, which returns a list of tables that match an
// optional pattern.
struct TGetTablesParams {
// If not set, match tables in all DBs
1: optional string db
// If not set, match every table
2: optional string pattern
3: optional string user // deprecated
4: optional string user_ip // deprecated
5: optional Types.TUserIdentity current_user_ident // to replace the user and user ip
}
struct TTableStatus {
1: required string name
2: required string type
3: required string comment
4: optional string engine
5: optional i64 last_check_time
6: optional i64 create_time
}
struct TListTableStatusResult {
1: required list<TTableStatus> tables
}
// getTableNames returns a list of unqualified table names
struct TGetTablesResult {
1: list<string> tables
}
struct TReportExecStatusResult {
// required in V1
1: optional Status.TStatus status
}
// Service Protocol Details
enum FrontendServiceVersion {
V1
}
// The results of an INSERT query, sent to the coordinator as part of
// TReportExecStatusParams
struct TReportExecStatusParams {
1: required FrontendServiceVersion protocol_version
// required in V1
2: optional Types.TUniqueId query_id
// passed into ExecPlanFragment() as TExecPlanFragmentParams.backend_num
// required in V1
3: optional i32 backend_num
// required in V1
4: optional Types.TUniqueId fragment_instance_id
// Status of fragment execution; any error status means it's done.
// required in V1
5: optional Status.TStatus status
// If true, fragment finished executing.
// required in V1
6: optional bool done
// cumulative profile
// required in V1
7: optional RuntimeProfile.TRuntimeProfileTree profile
// New errors that have not been reported to the coordinator
// optional in V1
9: optional list<string> error_log
// URL of files need to load
// optional
10: optional list<string> delta_urls
11: optional map<string, string> load_counters
12: optional string tracking_url
// export files
13: optional list<string> export_files
14: optional list<Types.TTabletCommitInfo> commitInfos
15: optional i64 loaded_rows
}
struct TFeResult {
1: required FrontendServiceVersion protocolVersion
2: required Status.TStatus status
}
// Submit one table load job
// if subLabel is set, this job belong to a multi-load transaction
struct TMiniLoadRequest {
1: required FrontendServiceVersion protocolVersion
2: required string db
3: required string tbl
4: required string label
5: optional string user
6: required Types.TNetworkAddress backend
7: required list<string> files
8: required map<string, string> properties
9: optional string subLabel
10: optional string cluster
11: optional i64 timestamp
12: optional string user_ip
13: optional bool is_retry
}
struct TUpdateMiniEtlTaskStatusRequest {
1: required FrontendServiceVersion protocolVersion
2: required Types.TUniqueId etlTaskId
3: required AgentService.TMiniLoadEtlStatusResult etlTaskStatus
}
struct TMasterOpRequest {
1: required string user
2: required string db
3: required string sql
4: optional Types.TResourceInfo resourceInfo
5: optional string cluster
6: optional i64 execMemLimit
7: optional i32 queryTimeout
8: optional string user_ip
9: optional string time_zone
10: optional i64 stmt_id
11: optional i64 sqlMode
12: optional i64 loadMemLimit
13: optional bool enableStrictMode
// this can replace the "user" field
14: optional Types.TUserIdentity current_user_ident
15: optional i32 stmtIdx // the idx of the sql in multi statements
}
struct TColumnDefinition {
1: required string columnName;
2: required Types.TColumnType columnType;
3: optional Types.TAggregationType aggType;
4: optional string defaultValue;
}
struct TShowResultSetMetaData {
1: required list<TColumnDefinition> columns;
}
struct TShowResultSet {
1: required TShowResultSetMetaData metaData;
2: required list<list<string>> resultRows;
}
struct TMasterOpResult {
1: required i64 maxJournalId;
2: required binary packet;
3: optional TShowResultSet resultSet;
}
struct TLoadCheckRequest {
1: required FrontendServiceVersion protocolVersion
2: required string user
3: required string passwd
4: required string db
5: optional string label
6: optional string cluster
7: optional i64 timestamp
8: optional string user_ip
9: optional string tbl
}
struct TMiniLoadBeginRequest {
1: required string user
2: required string passwd
3: optional string cluster
4: optional string user_ip
5: required string db
6: required string tbl
7: required string label
8: optional string sub_label
9: optional i64 timeout_second
10: optional double max_filter_ratio
11: optional i64 auth_code
12: optional i64 create_timestamp
13: optional Types.TUniqueId request_id
}
struct TIsMethodSupportedRequest {
1: optional string function_name
}
struct TMiniLoadBeginResult {
1: required Status.TStatus status
2: optional i64 txn_id
}
struct TUpdateExportTaskStatusRequest {
1: required FrontendServiceVersion protocolVersion
2: required Types.TUniqueId taskId
3: required PaloInternalService.TExportStatusResult taskStatus
}
struct TLoadTxnBeginRequest {
1: optional string cluster
2: required string user
3: required string passwd
4: required string db
5: required string tbl
6: optional string user_ip
7: required string label
8: optional i64 timestamp // deprecated, use request_id instead
9: optional i64 auth_code
// The real value of timeout should be i32. i64 ensures the compatibility of interface.
10: optional i64 timeout
11: optional Types.TUniqueId request_id
}
struct TLoadTxnBeginResult {
1: required Status.TStatus status
2: optional i64 txnId
3: optional string job_status // if label already used, set status of existing job
}
// StreamLoad request, used to load a streaming to engine
struct TStreamLoadPutRequest {
1: optional string cluster
2: required string user
3: required string passwd
4: required string db
5: required string tbl
6: optional string user_ip
// and use this to assgin to OlapTableSink
7: required Types.TUniqueId loadId
8: required i64 txnId
9: required Types.TFileType fileType
10: required PlanNodes.TFileFormatType formatType
// only valid when file_type is FILE_LOCAL
11: optional string path
// describe how table's column map to field in source file
// slot descriptor stands for field of source file
12: optional string columns
// filters that applied on data
13: optional string where
// only valid when file type is CSV
14: optional string columnSeparator
15: optional string partitions
16: optional i64 auth_code
17: optional bool negative
18: optional i32 timeout
19: optional bool strictMode
20: optional string timezone
21: optional i64 execMemLimit
22: optional bool isTempPartition
}
struct TStreamLoadPutResult {
1: required Status.TStatus status
// valid when status is OK
2: optional PaloInternalService.TExecPlanFragmentParams params
}
struct TKafkaRLTaskProgress {
1: required map<i32,i64> partitionCmtOffset
}
struct TRLTaskTxnCommitAttachment {
1: required Types.TLoadSourceType loadSourceType
2: required Types.TUniqueId id
3: required i64 jobId
4: optional i64 loadedRows
5: optional i64 filteredRows
6: optional i64 unselectedRows
7: optional i64 receivedBytes
8: optional i64 loadedBytes
9: optional i64 loadCostMs
10: optional TKafkaRLTaskProgress kafkaRLTaskProgress
11: optional string errorLogUrl
}
struct TMiniLoadTxnCommitAttachment {
1: required i64 loadedRows
2: required i64 filteredRows
3: optional string errorLogUrl
}
struct TTxnCommitAttachment {
1: required Types.TLoadType loadType
2: optional TRLTaskTxnCommitAttachment rlTaskTxnCommitAttachment
3: optional TMiniLoadTxnCommitAttachment mlTxnCommitAttachment
}
struct TLoadTxnCommitRequest {
1: optional string cluster
2: required string user
3: required string passwd
4: required string db
5: required string tbl
6: optional string user_ip
7: required i64 txnId
8: required bool sync
9: optional list<Types.TTabletCommitInfo> commitInfos
10: optional i64 auth_code
11: optional TTxnCommitAttachment txnCommitAttachment
}
struct TLoadTxnCommitResult {
1: required Status.TStatus status
}
struct TLoadTxnRollbackRequest {
1: optional string cluster
2: required string user
3: required string passwd
4: required string db
5: required string tbl
6: optional string user_ip
7: required i64 txnId
8: optional string reason
9: optional i64 auth_code
10: optional TTxnCommitAttachment txnCommitAttachment
}
struct TLoadTxnRollbackResult {
1: required Status.TStatus status
}
struct TSnapshotLoaderReportRequest {
1: required i64 job_id
2: required i64 task_id
3: required Types.TTaskType task_type
4: optional i32 finished_num
5: optional i32 total_num
}
service FrontendService {
TGetDbsResult getDbNames(1:TGetDbsParams params)
TGetTablesResult getTableNames(1:TGetTablesParams params)
TDescribeTableResult describeTable(1:TDescribeTableParams params)
TShowVariableResult showVariables(1:TShowVariableRequest params)
TReportExecStatusResult reportExecStatus(1:TReportExecStatusParams params)
MasterService.TMasterResult finishTask(1:MasterService.TFinishTaskRequest request)
MasterService.TMasterResult report(1:MasterService.TReportRequest request)
MasterService.TFetchResourceResult fetchResource()
// those three method are used for asynchronous mini load which will be abandoned
TFeResult miniLoad(1:TMiniLoadRequest request)
TFeResult updateMiniEtlTaskStatus(1:TUpdateMiniEtlTaskStatusRequest request)
TFeResult loadCheck(1:TLoadCheckRequest request)
// this method is used for streaming mini load
TMiniLoadBeginResult miniLoadBegin(TMiniLoadBeginRequest request)
TFeResult isMethodSupported(TIsMethodSupportedRequest request)
TMasterOpResult forward(TMasterOpRequest params)
TListTableStatusResult listTableStatus(1:TGetTablesParams params)
TFeResult updateExportTaskStatus(1:TUpdateExportTaskStatusRequest request)
TLoadTxnBeginResult loadTxnBegin(1: TLoadTxnBeginRequest request)
TLoadTxnCommitResult loadTxnCommit(1: TLoadTxnCommitRequest request)
TLoadTxnRollbackResult loadTxnRollback(1: TLoadTxnRollbackRequest request)
TStreamLoadPutResult streamLoadPut(1: TStreamLoadPutRequest request)
Status.TStatus snapshotLoaderReport(1: TSnapshotLoaderReportRequest request)
}