/**
 * 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.
 */

package tajo.error;
option java_package = "org.apache.tajo.error";

import "stacktrace.proto";

// Unstable - this is still evolving.


// SQLState Class values that begin with 0, 1, 2, 3, 4, A, B, C, D, E, F, G or H
// are called "standard-defined classes". This is borrowed from PostgreSQL and IBM DB2.

// 00 - Successful Completion
// 01 - Warning
// 02 - No Data
// 07 - Dynamic SQL Error
// 08 - Connection Exception
// 09 - Triggered Action Exception
// 0A - Feature Not Supported
// 0D - Invalid Target Type Specification
// 0F - Invalid Token
// 0K - Invalid RESIGNAL Statement
// 0N - SQL/XML mapping error
// 20 - Case Not Found for CASE Statement
// 21 - Cardinality Violation
// 22 - Data Exception
// 23 - Constraint Violation
// 24 - Invalid Cursor State
// 25 - Invalid Transaction State
// 26 - Invalid SQL Statement Identifier
// 28 - Invalid Authorization Specification
// 2D - Invalid Transaction Termination
// 2E - Invalid Connection Name
// 34 - Invalid Cursor Name
// 36 - Cursor Sensitivity Exception
// 38 - External Function Exception
// 39 - External Function Call Exception
// 3B - Invalid SAVEPOINT
// 40 - Transaction Rollback
// 42 - Syntax Error or Access Rule Violation
// 44 - WITH CHECK OPTION Violation
// 46 - Java DDL
// 51 - Invalid Application State
// 53 - Invalid Operand or Inconsistent Specification
// 54 - SQL or Product Limit Exceeded
// 55 - Object Not in Prerequisite State
// 56 - Miscellaneous SQL or Product Error
// 57 - Resource Not Available or Operator Intervention
// 58 - System Error

enum ResultCode {
  // Class
  // 00 - Successful Completion
  OK                                    = 0;

  WARNING                               = 100; // Warning

  // General Errors
  INTERNAL_ERROR                        = 201; // SQLState: XX000 - Error caused by internal bugs (See TajoInternalException)
  NOT_IMPLEMENTED                       = 202; // SQLState: 0A000 - Not implemented yet, but planned.
  FEATURE_NOT_SUPPORTED                 = 203; // SQLState: 0A000 - Unsupported feature (usually for unreasonable feature)
  INVALID_RPC_CALL                      = 204; // SQLState: 08P01 - When invalid RPC call is invoked (e.g., wrong message and absent fields)

  // Query Management and Scheduler
  QUERY_FAILED                          = 301; // SQLState: 61T01 - Query failed
  QUERY_KILLED                          = 302; // SQLState: 61T02 - Query killed
  QUERY_TIMEOUT                         = 303; // SQLState: 61T03 - Timeout for the query
  QUERY_NOT_FOUND                       = 304; // SQLState: 61T04 - No such query in TajoMaster
  NO_DATA                               = 305; // SQLState: 61T05 - No data due to query fail or error
  INCOMPLETE_QUERY                      = 306; // SQLState: 61T06 - It occurs when a client requests something of a completed query.

  // Session
  INVALID_SESSION                       = 401; // SQLState: 62T01 - Session already was invalid
  NO_SUCH_SESSION_VARIABLE              = 402; // SQLState: 62T01 - Session variable not found
  INVALID_SESSION_VARIABLE              = 403; // SQLState: 62T01 - Session variable is invalid (type mismatch or out of range)

  // Data Exception (SQLState Class - 22)
  DIVISION_BY_ZERO                      = 451; // SQLState: 22012 - Division by zero
  INVALID_VALUE_FOR_CAST                = 452; // SQLState: 22T01 - Invalid data value for cast
  INVALID_URL                           = 453; // SQLState: 22T02 - Invalid URL

  // Section: Class 42 - Syntax Error or Access Rule Violation
  SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION = 501; // SQLState: 42000
  SYNTAX_ERROR                          = 502; // SQLState: 42601
  INSUFFICIENT_PRIVILEGE                = 503; // SQLState: 42501
  CANNOT_DROP_CURRENT_DATABASE          = 504; // SQLState: 42T01

  UNDEFINED_TABLESPACE                  = 511; // ?
  UNDEFINED_DATABASE                    = 512; // SQLState: 42T02
  UNDEFINED_SCHEMA                      = 513; // SQLState:
  UNDEFINED_TABLE                       = 514; // SQLState: 42P01
  UNDEFINED_COLUMN                      = 515; // SQLState: 42703
  UNDEFINED_FUNCTION                    = 516; // SQLState: 42883
  UNDEFINED_INDEX_FOR_TABLE             = 517; // ?
  UNDEFINED_INDEX_FOR_COLUMNS           = 518; // ?
  UNDEFINED_INDEX_NAME                  = 519; // ?
  UNDEFINED_PARTITION                   = 520; // ?
  UNDEFINED_PARTITION_METHOD            = 521; // ?
  UNDEFINED_OPERATOR                    = 522; // SQLState: 42883 (=UNDEFINED_FUNCTION)
  UNDEFINED_PARTITION_KEY               = 523; // ?
  UNDEFINED_TABLESPACE_HANDLER          = 524; // SQLState: 42T11 - No Tablespace Handler for the URI scheme

  DUPLICATE_TABLESPACE                  = 531;
  DUPLICATE_DATABASE                    = 532; // SQLState: 42P04
  DUPLICATE_SCHEMA                      = 533; // SQLState: 42P06
  DUPLICATE_TABLE                       = 534; // SQLState: 42P07
  DUPLICATE_COLUMN                      = 535; // SQLState: 42701
  DUPLICATE_ALIAS                       = 536; // SQLState: 42712
  DUPLICATE_FUNCTION                    = 537; // SQLState: 42723
  DUPLICATE_INDEX                       = 538; // SQLState: 42T07
  DUPLICATE_PARTITION                   = 539; // SQLState: 42T08

  AMBIGUOUS_TABLE                       = 541; // SQLState: 42P09
  AMBIGUOUS_COLUMN                      = 542; // SQLState: 42702;
  AMBIGUOUS_FUNCTION                    = 543; // SQLState: 42725;
  AMBIGUOUS_PARTITION_DIRECTORY         = 544; // ?

  CANNOT_CAST                           = 601; // SQLState: 42846 - Cast from source type to target type is not supported.
  GROUPING_ERROR                        = 602; // SQLState: 42803
  WINDOWING_ERROR                       = 603; // SQLState: 42P20 - PgSQL implementation-defined
  INVALID_RECURSION                     = 604; // SQLState: 42P19 - PgSQL implementation-defined
  SET_OPERATION_SCHEMA_MISMATCH         = 605; // SQLState: 42601 (=SYNTAX_ERROR)
  SET_OPERATION_DATATYPE_MISMATCH       = 606; // SQLState: 42601 (=SYNTAX_ERROR)
  INVALID_FOREIGN_KEY                   = 621; // SQLState: 42830
  INVALID_NAME                          = 622; // SQLState: 42602
  INVALID_COLUMN_DEFINITION             = 623; // SQLState: 42611
  NAME_TOO_LONG                         = 624; // SQLState: 42622
  RESERVED_NAME                         = 625; // SQLState: 42939
  DATATYPE_MISMATCH                     = 626; // SQLState: 42804
  INDETERMINATE_DATATYPE                = 627; // SQLState: 42P18 - PgSQL implementation -defined



  // Expressions
  INVALID_EXPRESSION                    = 701;
  INVALID_DATATYPE                      = 703;

  NUMERIC_OVERFLOW                      = 803;  // Numeric value overflow
  VALUE_LARGER_THAN_PRECISION           = 804;  // Value larger than column precision

  // Meta Catalog
  CAT_UPGRADE_REQUIRED                  = 901;  // Migration
  CAT_CANNOT_CONNECT                    = 902;  // Cannot connect metadata server

  // Catalog store
  CAT_UNSUPPORTED_CATALOG_STORE         = 905; // Unsupported type of catalog store

  // Linked Metadata (LMD)
  LMD_NO_MATCHED_DATATYPE               = 910;  // No matched data type between Tajo and connector

  // Storage and Data Format
  UNAVAILABLE_TABLE_LOCATION            = 1001; // SQLState: ? - Unavailable table location
  UNKNOWN_DATAFORMAT                    = 1002; // SQLState: ? - Unknown Data Format
  UNSUPPORTED_DATATYPE                  = 1003; // SQLState: ? - Unsupported data type
  INVALID_TABLE_PROPERTY                = 1004; // SQLState: ? - Invalid Table Property
  MISSING_TABLE_PROPERTY                = 1005; // SQLState: ? - Missing table property

  // Client Connection
  CLIENT_CONNECTION_EXCEPTION           = 1101; // SQLState: 08000 - Client connection error
  CLIENT_CONNECTION_DOES_NOT_EXIST      = 1103; // SQLState: 08003 - Client connection has been closed.
  CLIENT_UNABLE_TO_ESTABLISH_CONNECTION = 1102; // SQLState: 08006 - Client connection failure
  CLIENT_PROTOCOL_PROTOCOL_VIOLATION    = 1104; // SQLState: 08P01 - Protocol violation

  // 53 - Invalid Operand or Inconsistent Specification
  INSUFFICIENT_RESOURCE           = 53000;
  DISK_FULL                       = 53100;
  OUT_OF_MEMORY                   = 53200;

  // 54 - SQL or Product Limit Exceeded
  PROGRAM_LIMIT_EXCEEDED          = 54000;
  STATEMENT_TOO_COMPLEX           = 54001;
  STRING_CONSTANT_TOOL_LONG       = 54002;
  TOO_LARGE_INPUT_FOR_CROSS_JOIN  = 54003;
  INVALID_INPUTS_FOR_CROSS_JOIN   = 54004;

  TOO_MANY_TABLES                 = 54006;
  TOO_MANY_COLUMNS                = 54011;
  TOO_MANY_ARGUMENTS              = 54023;

  // 55 - Object Not in Prerequisite State
  // 56 - Miscellaneous SQL or Product Error
  // 57 - Resource Not Available or Operator Intervention

  // 58 - System Error
  IO_ERROR                        = 58030;


  // underlying system errors based on errno.h.
  SYS_EPERM                         = 10001;  // Operation not permitted
  SYS_ENOENT                        = 10002;  // No such file or directory
  SYS_ESRCH                         = 10003;  // No such process
  SYS_EINTR                         = 10004;  // Interrupted system call
  SYS_EIO                           = 10005;  // I/O error
  SYS_ENXIO                         = 10006;  // No such device or address
  SYS_E2BIG                         = 10007;  // Argument list too long
  SYS_ENOEXEC                       = 10008;  // Exec format error
  SYS_EBADF                         = 10009;  // Bad file number
  SYS_ECHILD                        = 10010;  // No child processes
  SYS_EAGAIN                        = 10011;  // Try again
  SYS_ENOMEM                        = 10012;  // Out of memory
  SYS_EACCES                        = 10013;  // Permission denied
  SYS_EFAULT                        = 10014;  // Bad address
  SYS_ENOTBLK                       = 10015;  // Block device required
  SYS_EBUSY                         = 10016;  // Device or resource busy
  SYS_EEXIST                        = 10017;  // File exists
  SYS_EXDEV                         = 10018;  // Cross-device link
  SYS_ENODEV                        = 10019;  // No such device
  SYS_ENOTDIR                       = 10020;  // Not a directory
  SYS_EISDIR                        = 10021;  // Is a directory
  SYS_EINVAL                        = 10022;  // Invalid argument
  SYS_ENFILE                        = 10023;  // File table overflow
  SYS_EMFILE                        = 10024;  // Too many open files
  SYS_ENOTTY                        = 10025;  // Not a typewriter
  SYS_ETXTBSY                       = 10026;  // Text file busy
  SYS_EFBIG                         = 10027;  // File too large
  SYS_ENOSPC                        = 10028;  // No space left on device
  SYS_ESPIPE                        = 10029;  // Illegal seek
  SYS_EROFS                         = 10030;  // Read-only file system
  SYS_EMLINK                        = 10031;  // Too many links
  SYS_EPIPE                         = 10032;  // Broken pipe
  SYS_EDOM                          = 10033;  // Math argument out of domain of func
  SYS_ERANGE                        = 10034;  // Math result not representable
  SYS_EDEADLK                       = 10035;  // Resource deadlock would occur
  SYS_ENAMETOOLONG                  = 10036;  // File name too long
  SYS_ENOLCK                        = 10037;  // No record locks available
  SYS_ENOSYS                        = 10038;  // Function not implemented
  SYS_ENOTEMPTY                     = 10039;  // Directory not empty
  SYS_ELOOP                         = 10040;  // Too many symbolic links encountered
  // EWOULDBLOCK                = EAGAIN  // Operation would block
  SYS_ENOMSG                        = 10042;  // No message of desired type
  SYS_EIDRM                         = 10043;  // Identifier removed
  SYS_ECHRNG                        = 10044;  // Channel number out of range
  SYS_EL2NSYNC                      = 10045;  // Level 2 not synchronized
  SYS_EL3HLT                        = 10046;  // Level 3 halted
  SYS_EL3RST                        = 10047;  // Level 3 reset
  SYS_ELNRNG                        = 10048;  // Link number out of range
  SYS_EUNATCH                       = 10049;  // Protocol driver not attached
  SYS_ENOCSI                        = 10050;  // No CSI structure available
  SYS_EL2HLT                        = 10051;  // Level 2 halted
  SYS_EBADE                         = 10052;  // Invalid exchange
  SYS_EBADR                         = 10053;  // Invalid request descriptor
  SYS_EXFULL                        = 10054;  // Exchange full
  SYS_ENOANO                        = 10055;  // No anode
  SYS_EBADRQC                       = 10056;  // Invalid request code
  SYS_EBADSLT                       = 10057;  // Invalid slot
  // EDEADLOCK                  = EDEADLK
  SYS_EBFONT                        = 10059;  // Bad font file format
  SYS_ENOSTR                        = 10060;  // Device not a stream
  SYS_ENODATA                       = 10061;  // No data available
  SYS_ETIME                         = 10062;  // Timer expired
  SYS_ENOSR                         = 10063;  // Out of streams resources
  SYS_ENONET                        = 10064;  // Machine is not on the network
  SYS_ENOPKG                        = 10065;  // Package not installed
  SYS_EREMOTE                       = 10066;  // Object is remote
  SYS_ENOLINK                       = 10067;  // Link has been severed
  SYS_EADV                          = 10068;  // Advertise error
  SYS_ESRMNT                        = 10069;  // Srmount error
  SYS_ECOMM                         = 10070;  // Communication error on send
  SYS_EPROTO                        = 10071;  // Protocol error
  SYS_EMULTIHOP                     = 10072;  // Multihop attempted
  SYS_EDOTDOT                       = 10073;  // RFS specific error
  SYS_EBADMSG                       = 10074;  // Not a data message
  SYS_EOVERFLOW                     = 10075;  // Value too large for defined data type
  SYS_ENOTUNIQ                      = 10076;  // Name not unique on network
  SYS_EBADFD                        = 10077;  // File descriptor in bad state
  SYS_EREMCHG                       = 10078;  // Remote address changed
  SYS_ELIBACC                       = 10079;  // Can not access a needed shared library
  SYS_ELIBBAD                       = 10080;  // Accessing a corrupted shared library
  SYS_ELIBSCN                       = 10081;  // .lib section in a.out corrupted
  SYS_ELIBMAX                       = 10082;  // Attempting to link in too many shared libraries
  SYS_ELIBEXEC                      = 10083;  // Cannot exec a shared library directly
  SYS_EILSEQ                        = 10084;  // Illegal byte sequence
  SYS_ERESTART                      = 10085;  // Interrupted system call should be restarted
  SYS_ESTRPIPE                      = 10086;  // Streams pipe error
  SYS_EUSERS                        = 10087;  // Too many users
  SYS_ENOTSOCK                      = 10088;  // Socket operation on non-socket
  SYS_EDESTADDRREQ                  = 10089;  // Destination address required
  SYS_EMSGSIZE                      = 10090;  // Message too long
  SYS_EPROTOTYPE                    = 10091;  // Protocol wrong type for socket
  SYS_ENOPROTOOPT                   = 10092;  // Protocol not available
  SYS_EPROTONOSUPPORT               = 10093;  // Protocol not supported
  SYS_ESOCKTNOSUPPORT               = 10094;  // Socket type not supported
  SYS_EOPNOTSUPP                    = 10095;  // Operation not supported on transport endpoint
  SYS_EPFNOSUPPORT                  = 10096;  // Protocol family not supported
  SYS_EAFNOSUPPORT                  = 10097;  // Address family not supported by protocol
  SYS_EADDRINUSE                    = 10098;  // Address already in use
  SYS_EADDRNOTAVAIL                 = 10099;  // Cannot assign requested address
  SYS_ENETDOWN                      = 10100; // Network is down
  SYS_ENETUNREACH                   = 10101; // Network is unreachable
  SYS_ENETRESET                     = 10102; // Network dropped connection because of reset
  SYS_ECONNABORTED                  = 10103; // Software caused connection abort
  SYS_ECONNRESET                    = 10104; // Connection reset by peer
  SYS_ENOBUFS                       = 10105; // No buffer space available
  SYS_EISCONN                       = 10106; // Transport endpoint is already connected
  SYS_ENOTCONN                      = 10107; // Transport endpoint is not connected
  SYS_ESHUTDOWN                     = 10108; // Cannot send after transport endpoint shutdown
  SYS_ETOOMANYREFS                  = 10109; // Too many references: cannot splice
  SYS_ETIMEDOUT                     = 10110; // Connection timed out
  SYS_ECONNREFUSED                  = 10111; // Connection refused
  SYS_EHOSTDOWN                     = 10112; // Host is down
  SYS_EHOSTUNREACH                  = 10113; // No route to host
  SYS_EALREADY                      = 10114; // Operation already in progress
  SYS_EINPROGRESS                   = 10115; // Operation now in progress
  SYS_ESTALE                        = 10116; // Stale NFS file handle
  SYS_EUCLEAN                       = 10117; // Structure needs cleaning
  SYS_ENOTNAM                       = 10118; // Not a XENIX named type file
  SYS_ENAVAIL                       = 10119; // No XENIX semaphores available
  SYS_EISNAM                        = 10120; // Is a named type file
  SYS_EREMOTEIO                     = 10121; // Remote I/O error
  SYS_EDQUOT                        = 10122; // Quota exceeded
  SYS_ENOMEDIUM                     = 10123; // No medium found
  SYS_EMEDIUMTYPE                   = 10124; // Wrong medium type
  SYS_ECANCELED                     = 10125; // Operation Canceled
  SYS_ENOKEY                        = 10126; // Required key not available
  SYS_EKEYEXPIRED                   = 10127; // Key has expired
  SYS_EKEYREVOKED                   = 10128; // Key has been revoked
  SYS_EKEYREJECTED                  = 10129; // Key was rejected by service

  // for robust mutexes
  SYS_EOWNERDEAD                    = 10130; // Owner died
  SYS_ENOTRECOVERABLE               = 10131; // State not recoverable
}

message SerializedException {
  required int64 timestamp         = 1;  // Microseconds since Epoch.
  required ResultCode return_code  = 2;
  required string message          = 3;

  optional StackTrace stack_trace  = 4;
}