blob: b31837e5989494b64d37b9f7a41e01005b4dbd1f [file] [log] [blame]
package exec.shared;
option java_package = "org.apache.drill.exec.proto";
option java_outer_classname = "UserBitShared";
option optimize_for = SPEED;
import "Types.proto";
import "Coordination.proto";
import "SchemaDef.proto";
enum RpcChannel {
BIT_CONTROL = 0;
BIT_DATA = 1;
USER = 2;
}
enum QueryType {
SQL = 1;
LOGICAL = 2;
PHYSICAL = 3;
EXECUTION = 4;
/* Input is a prepared statement */
PREPARED_STATEMENT = 5;
}
message UserCredentials {
optional string user_name = 1;
}
message QueryId {
optional sfixed64 part1 = 1;
optional sfixed64 part2 = 2;
}
message DrillPBError{
enum ErrorType {
/* equivalent to SQLClientInfoException
* - handshake version error
* - invalid schema
*/
CONNECTION = 0;
/* equivalent to SQLRecoverableException
* - corrupt files: can't be read. FS read error
* - parsing error due to incomplete or incorrectly written records
*/
DATA_READ = 1;
/* equivalent to SQLDataException
* - data type unsupported by format
*/
DATA_WRITE = 2;
/* equivalent to SQLDataException
* - Casting errors
* - function not found for incoming types after implicit casting
* - Flatten misuse
*/
FUNCTION = 3;
/* equivalent to SQLSyntaxErrorException
* - typos
* - missing table
* - SQL keyword misuse
* - function names/resolution
*/
PARSE = 4;
/* equivalent to SQLInvalidAuthorizationSpecException
*/
PERMISSION = 5;
/* equivalent to SQLNonTransientException
*/
PLAN = 6;
/* equivalent to SQLRecoverableException or SQLTransientException
* - Recoverable: memory, disk
* - Transient: network
*/
RESOURCE = 7;
/* equivalent to SQLNonTransientException.
* - unexpected internal state
* - uncategorized operation
* general user action is to contact the Drill team for
* assistance
*/
SYSTEM = 8;
/* equivalent to SQLFeatureNotSupportedException
* - unimplemented feature, option, or execution path
* - schema change in operator that does not support it
*/
UNSUPPORTED_OPERATION = 9;
/* SQL validation exception
* - invalid schema path
* - invalid entries in SQL tree
*/
VALIDATION = 10;
/* Execution exception
* - Internal errors not related to bad code
*/
EXECUTION_ERROR = 11;
/* Internal exception
* - Failed assertions
* - Other "this should not happen" cases
*/
INTERNAL_ERROR = 12;
/* Unspecified exception
* - Exception caught but cause is unknown
* Indicates code that needs revisiting to move error reporting
* closer to the cause.
*/
UNSPECIFIED_ERROR = 13;
}
optional string error_id = 1; // for debug tracing purposes
optional DrillbitEndpoint endpoint = 2;
optional ErrorType error_type = 3;
optional string message = 4;
optional ExceptionWrapper exception = 5;
repeated ParsingError parsing_error = 6; //optional, used when providing location of error within a piece of text.
}
message ExceptionWrapper {
optional string exception_class = 1;
optional string message = 2;
repeated StackTraceElementWrapper stack_trace = 3;
optional ExceptionWrapper cause = 4;
}
message StackTraceElementWrapper {
optional string class_name = 1;
optional string file_name = 2;
optional int32 line_number = 3;
optional string method_name = 4;
optional bool is_native_method = 5;
}
message ParsingError{
optional int32 start_column = 2;
optional int32 start_row = 3;
optional int32 end_column = 4;
optional int32 end_row = 5;
}
message RecordBatchDef {
optional int32 record_count = 1;
repeated SerializedField field = 2;
optional bool carries_two_byte_selection_vector = 3;
// The value is set when result set is disabled and its value corresponds to number
// of rows affected by query (see JDBC java.sql.ResultSet#getUpdateCount())
optional int32 affected_rows_count = 4;
}
message NamePart{
enum Type{
NAME = 0;
ARRAY = 1;
}
optional Type type = 1;
optional string name = 2;
optional NamePart child = 3;
}
message SerializedField {
optional common.MajorType major_type = 1; // the type associated with this field.
optional NamePart name_part = 2;
repeated SerializedField child = 3; // only in the cases of type == MAP or REPEAT_MAP or REPEATED_LIST
optional int32 value_count = 4;
optional int32 var_byte_length = 5;
optional int32 buffer_length = 7;
}
message NodeStatus {
optional int32 node_id = 1;
optional int64 memory_footprint = 2;
}
/*
* Used by the server to report informations about the query state to the client
*/
message QueryResult {
enum QueryState {
STARTING = 0; // query has been scheduled for execution. This is post-enqueued.
RUNNING = 1;
COMPLETED = 2; // query has completed successfully
CANCELED = 3; // query has been cancelled, and all cleanup is complete
FAILED = 4;
CANCELLATION_REQUESTED = 5; // cancellation has been requested, and is being processed
ENQUEUED = 6; // query has been enqueued. this is pre-starting.
PREPARING = 7; // query is at preparation stage, foreman is initializing
PLANNING = 8; // query is at planning stage (includes logical or / and physical planning)
}
optional QueryState query_state = 1;
optional QueryId query_id = 2;
repeated DrillPBError error = 3;
}
/*
* Used by the server when sending query result data batches to the client
*/
message QueryData {
optional QueryId query_id = 1;
optional int32 row_count = 2;
optional RecordBatchDef def = 3;
optional int32 affected_rows_count = 4;
}
message QueryInfo {
optional string query = 1;
optional int64 start = 2;
optional QueryResult.QueryState state = 3;
optional string user = 4 [default = "-"];
optional DrillbitEndpoint foreman = 5;
optional string options_json = 6;
optional double total_cost = 7;
optional string queue_name = 8 [default = "-"];
}
message QueryProfile {
optional QueryId id = 1;
optional QueryType type = 2;
optional int64 start = 3;
optional int64 end = 4;
optional string query = 5;
optional string plan = 6;
optional DrillbitEndpoint foreman = 7;
optional QueryResult.QueryState state = 8;
optional int32 total_fragments = 9;
optional int32 finished_fragments = 10;
repeated MajorFragmentProfile fragment_profile = 11;
optional string user = 12 [default = "-"];
optional string error = 13;
optional string verboseError = 14;
optional string error_id = 15;
optional string error_node = 16;
optional string options_json = 17;
optional int64 planEnd = 18;
optional int64 queueWaitEnd = 19;
optional double total_cost = 20;
optional string queue_name = 21 [default = "-"];
optional string queryId = 22;
optional int32 autoLimit = 23;
}
message MajorFragmentProfile {
optional int32 major_fragment_id = 1;
repeated MinorFragmentProfile minor_fragment_profile = 2;
}
message MinorFragmentProfile {
optional FragmentState state = 1;
optional DrillPBError error = 2;
optional int32 minor_fragment_id = 3;
repeated OperatorProfile operator_profile = 4;
optional int64 start_time = 5;
optional int64 end_time = 6;
optional int64 memory_used = 7;
optional int64 max_memory_used = 8;
optional DrillbitEndpoint endpoint = 9;
optional int64 last_update = 10;
optional int64 last_progress = 11;
}
message OperatorProfile {
repeated StreamProfile input_profile = 1;
optional int32 operator_id = 3;
optional int32 operator_type = 4;
optional int64 setup_nanos = 5;
optional int64 process_nanos = 6;
optional int64 peak_local_memory_allocated = 7;
repeated MetricValue metric = 8;
optional int64 wait_nanos = 9;
}
message StreamProfile {
optional int64 records = 1;
optional int64 batches = 2;
optional int64 schemas = 3;
}
message MetricValue {
optional int32 metric_id = 1;
optional int64 long_value = 2;
optional double double_value = 3;
}
enum FragmentState {
SENDING = 0;
AWAITING_ALLOCATION = 1;
RUNNING = 2;
FINISHED = 3;
CANCELLED = 4;
FAILED = 5;
CANCELLATION_REQUESTED = 6;
}
enum CoreOperatorType {
SINGLE_SENDER = 0;
BROADCAST_SENDER = 1;
FILTER = 2;
HASH_AGGREGATE = 3;
HASH_JOIN = 4;
MERGE_JOIN = 5;
HASH_PARTITION_SENDER = 6;
LIMIT = 7;
MERGING_RECEIVER = 8;
ORDERED_PARTITION_SENDER = 9;
PROJECT = 10;
UNORDERED_RECEIVER = 11;
RANGE_PARTITION_SENDER = 12;
SCREEN = 13;
SELECTION_VECTOR_REMOVER = 14;
STREAMING_AGGREGATE = 15;
TOP_N_SORT = 16;
EXTERNAL_SORT = 17;
TRACE = 18;
UNION = 19;
OLD_SORT = 20;
PARQUET_ROW_GROUP_SCAN = 21;
HIVE_SUB_SCAN = 22;
SYSTEM_TABLE_SCAN = 23;
MOCK_SUB_SCAN = 24;
PARQUET_WRITER = 25;
DIRECT_SUB_SCAN = 26;
TEXT_WRITER = 27;
TEXT_SUB_SCAN = 28;
JSON_SUB_SCAN = 29;
INFO_SCHEMA_SUB_SCAN = 30;
COMPLEX_TO_JSON = 31;
PRODUCER_CONSUMER = 32;
HBASE_SUB_SCAN = 33;
WINDOW = 34;
NESTED_LOOP_JOIN = 35;
AVRO_SUB_SCAN = 36;
PCAP_SUB_SCAN = 37;
KAFKA_SUB_SCAN = 38;
KUDU_SUB_SCAN = 39;
FLATTEN = 40;
LATERAL_JOIN = 41;
UNNEST = 42;
HIVE_DRILL_NATIVE_PARQUET_ROW_GROUP_SCAN = 43;
JDBC_SCAN = 44;
REGEX_SUB_SCAN = 45;
MAPRDB_SUB_SCAN = 46;
MONGO_SUB_SCAN = 47;
KUDU_WRITER = 48;
OPEN_TSDB_SUB_SCAN = 49;
JSON_WRITER = 50;
HTPPD_LOG_SUB_SCAN = 51;
IMAGE_SUB_SCAN = 52;
SEQUENCE_SUB_SCAN = 53;
PARTITION_LIMIT = 54;
PCAPNG_SUB_SCAN = 55;
RUNTIME_FILTER = 56;
ROWKEY_JOIN = 57;
SYSLOG_SUB_SCAN = 58;
STATISTICS_AGGREGATE = 59;
UNPIVOT_MAPS = 60;
STATISTICS_MERGE = 61;
LTSV_SUB_SCAN = 62;
HDF5_SUB_SCAN = 63;
EXCEL_SUB_SCAN = 64;
SHP_SUB_SCAN = 65;
METADATA_HANDLER = 66;
METADATA_CONTROLLER = 67;
}
/* Registry that contains list of jars, each jar contains its name and list of function signatures.
Structure example:
REGISTRY -> Jar1.jar -> upper(VARCHAR-REQUIRED)
-> upper(VARCHAR-OPTIONAL)
-> Jar2.jar -> lower(VARCHAR-REQUIRED)
-> lower(VARCHAR-OPTIONAL)
*/
message Registry {
repeated Jar jar = 1;
}
/* Jar contains jar name and list of function signatures.
Function signature is concatenation of function name and its input parameters. */
message Jar {
optional string name = 1;
repeated string function_signature = 2;
}
enum SaslStatus {
SASL_UNKNOWN = 0;
SASL_START = 1;
SASL_IN_PROGRESS = 2;
SASL_SUCCESS = 3;
SASL_FAILED = 4;
}
message SaslMessage {
optional string mechanism = 1;
optional bytes data = 2;
optional SaslStatus status = 3;
}