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