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; } 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; } /* 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; }