<!--

    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.

-->

# Status Codes

A sample solution as IoTDB requires registering the time series first before writing data is:

```
try {
    writeData();
} catch (SQLException e) {
  // the most case is that the time series does not exist
  if (e.getMessage().contains("exist")) {
      //However, using the content of the error message is not so efficient
      registerTimeSeries();
      //write data once again
      writeData();
  }
}

```

With Status Code, instead of writing codes like `if (e.getErrorMessage().contains("exist"))`, we can simply use `e.getErrorCode() == TSStatusCode.TIME_SERIES_NOT_EXIST_ERROR.getStatusCode()`.

Here is a list of Status Code and related message:

|Status Code|Status Type|Meanings|
|:--|:---|:---|
|200|SUCCESS_STATUS||
|201|INCOMPATIBLE_VERSION|Incompatible version|
|202|CONFIGURATION_ERROR|Configuration error|
|203|START_UP_ERROR|Meet error while starting|
|204|SHUT_DOWN_ERROR|Meet error while shutdown|
|300|UNSUPPORTED_OPERATION|Unsupported operation|
|301|EXECUTE_STATEMENT_ERROR|Execute statement error|
|302|MULTIPLE_ERROR|Meet error when executing multiple statements|
|303|ILLEGAL_PARAMETER|Parameter is illegal|
|304|OVERLAP_WITH_EXISTING_TASK|Current task has some conflict with existing tasks|
|305|INTERNAL_SERVER_ERROR|Internal server error|
|400|REDIRECTION_RECOMMEND|Recommend Client redirection|
|500|DATABASE_NOT_EXIST|Database does not exist|
|501|DATABASE_ALREADY_EXISTS|Database already exist|
|502|SERIES_OVERFLOW|Series number exceeds the threshold|
|503|TIMESERIES_ALREADY_EXIST|Timeseries number exceeds the threshold|
|504|TIMESERIES_IN_BLACK_LIST|Timeseries is being deleted|
|505|ALIAS_ALREADY_EXIST|Alias already exists|
|506|PATH_ALREADY_EXIST|Path already exists|
|507|METADATA_ERROR|Meet error when dealing with metadata|
|508|PATH_NOT_EXIST|Path does not exist|
|509|ILLEGAL_PATH|Illegal path|
|510|CREATE_TEMPLATE_ERROR|Create schema template error|
|511|DUPLICATED_TEMPLATE|Schema template is duplicated|
|512|UNDEFINED_TEMPLATE|Schema template is not defined|
|513|TEMPLATE_NOT_SET|Schema template is not set|
|514|DIFFERENT_TEMPLATE|Template is not consistent|
|515|TEMPLATE_IS_IN_USE|Template is in use|
|516|TEMPLATE_INCOMPATIBLE|Template is not compatible|
|517|SEGMENT_NOT_FOUND|Segment not found|
|518|PAGE_OUT_OF_SPACE|No enough space on schema page|
|519|RECORD_DUPLICATED|Record is duplicated|
|520|SEGMENT_OUT_OF_SPACE|No enough space on schema segment|
|521|SCHEMA_FILE_NOT_EXISTS|SchemaFile does not exist|
|522|OVERSIZE_RECORD|Size of record exceeds the threshold of page of SchemaFile|
|523|SCHEMA_FILE_REDO_LOG_BROKEN|SchemaFile redo log has broken|
|524|TEMPLATE_NOT_ACTIVATED|Schema template is not activated|
|600|SYSTEM_READ_ONLY|IoTDB system is read only|
|601|STORAGE_ENGINE_ERROR|Storage engine related error|
|602|STORAGE_ENGINE_NOT_READY|The storage engine is in recovery, not ready fore accepting read/write operation|
|603|DATAREGION_PROCESS_ERROR|DataRegion related error|
|604|TSFILE_PROCESSOR_ERROR|TsFile processor related error|
|605|WRITE_PROCESS_ERROR|Writing data related error|
|606|WRITE_PROCESS_REJECT|Writing data rejected error|
|607|OUT_OF_TTL|Insertion time is less than TTL time bound|
|608|COMPACTION_ERROR|Meet error while merging|
|609|ALIGNED_TIMESERIES_ERROR|Meet error in aligned timeseries|
|610|WAL_ERROR|WAL error|
|611|DISK_SPACE_INSUFFICIENT|Disk space is insufficient|
|700|SQL_PARSE_ERROR|Meet error while parsing SQL|
|701|SEMANTIC_ERROR|SQL semantic error|
|702|GENERATE_TIME_ZONE_ERROR|Meet error while generating time zone|
|703|SET_TIME_ZONE_ERROR|Meet error while setting time zone|
|704|QUERY_NOT_ALLOWED|Query statements are not allowed error|
|705|LOGICAL_OPERATOR_ERROR|Logical operator related error|
|706|LOGICAL_OPTIMIZE_ERROR|Logical optimize related error|
|707|UNSUPPORTED_FILL_TYPE|Unsupported fill type related error|
|708|QUERY_PROCESS_ERROR|Query process related error|
|709|MPP_MEMORY_NOT_ENOUGH|Not enough memory for task execution in MPP|
|710|CLOSE_OPERATION_ERROR|Meet error in close operation|
|711|TSBLOCK_SERIALIZE_ERROR|TsBlock serialization error|
|712|INTERNAL_REQUEST_TIME_OUT|MPP Operation timeout|
|713|INTERNAL_REQUEST_RETRY_ERROR|Internal operation retry failed|
|800|AUTHENTICATION_ERROR|Error in authentication|
|801|WRONG_LOGIN_PASSWORD|Username or password is wrong|
|802|NOT_LOGIN|Has not logged in|
|803|NO_PERMISSION|No permissions for this operation, please add privilege|
|804|UNINITIALIZED_AUTH_ERROR|Uninitialized authorizer|
|805|USER_NOT_EXIST|User does not exist|
|806|ROLE_NOT_EXIST|Role does not exist|
|807|CLEAR_PERMISSION_CACHE_ERROR|Error when clear the permission cache|
|900|MIGRATE_REGION_ERROR|Error when migrate region|
|901|CREATE_REGION_ERROR|Create region error|
|902|DELETE_REGION_ERROR|Delete region error|
|903|PARTITION_CACHE_UPDATE_ERROR|Update partition cache failed|
|904|CONSENSUS_NOT_INITIALIZED|Consensus is not initialized and cannot provide service|
|905|REGION_LEADER_CHANGE_ERROR|Region leader migration failed|
|906|NO_AVAILABLE_REGION_GROUP|Cannot find an available region group|
|1000|DATANODE_ALREADY_REGISTERED|DataNode already registered in cluster|
|1001|NO_ENOUGH_DATANODE|The number of DataNode is not enough, cannot remove DataNode or create enough replication|
|1002|ADD_CONFIGNODE_ERROR|Add ConfigNode error|
|1003|REMOVE_CONFIGNODE_ERROR|Remove ConfigNode error|
|1004|DATANODE_NOT_EXIST|DataNode not exist error|
|1005|DATANODE_STOP_ERROR|DataNode stop error|
|1006|REMOVE_DATANODE_ERROR|Remove datanode failed|
|1007|REGISTER_REMOVED_DATANODE|The DataNode to be registered is removed before|
|1008|CAN_NOT_CONNECT_DATANODE|Can not connect to DataNode|
|1100|LOAD_FILE_ERROR|Meet error while loading file|
|1101|LOAD_PIECE_OF_TSFILE_ERROR|Error when load a piece of TsFile when loading|
|1102|DESERIALIZE_PIECE_OF_TSFILE_ERROR|Error when deserialize a piece of TsFile|
|1103|CREATE_PIPE_SINK_ERROR|Failed to create a PIPE sink|
|1104|PIPE_ERROR|PIPE error|
|1105|PIPESERVER_ERROR|PIPE server error|
|1106|SYNC_CONNECTION_ERROR|Meet error while sync connecting|
|1107|SYNC_FILE_REDIRECTION_ERROR|Sync TsFile redirection error|
|1108|SYNC_FILE_ERROR|Sync TsFile error|
|1109|VERIFY_METADATA_ERROR|Meet error in validate timeseries schema|
|1200|UDF_LOAD_CLASS_ERROR|Error when loading UDF class|
|1201|UDF_DOWNLOAD_ERROR|DataNode cannot download UDF from ConfigNode|
|1202|CREATE_UDF_ON_DATANODE_ERROR|Error when create UDF on DataNode|
|1203|DROP_UDF_ON_DATANODE_ERROR|Error when drop a UDF on DataNode|
|1300|CREATE_TRIGGER_ERROR|ConfigNode create trigger error|
|1301|DROP_TRIGGER_ERROR|ConfigNode delete Trigger error|
|1302|TRIGGER_FIRE_ERROR|Error when firing trigger|
|1303|TRIGGER_LOAD_CLASS_ERROR|Error when load class of trigger|
|1304|TRIGGER_DOWNLOAD_ERROR|Error when download trigger from ConfigNode|
|1305|CREATE_TRIGGER_INSTANCE_ERROR|Error when create trigger instance|
|1306|ACTIVE_TRIGGER_INSTANCE_ERROR|Error when activate trigger instance|
|1307|DROP_TRIGGER_INSTANCE_ERROR|Error when drop trigger instance|
|1308|UPDATE_TRIGGER_LOCATION_ERROR|Error when move stateful trigger to new datanode|
|1400|NO_SUCH_CQ|CQ task does not exist|
|1401|CQ_ALREADY_ACTIVE|CQ is already active|
|1402|CQ_AlREADY_EXIST|CQ is already exist|
|1403|CQ_UPDATE_LAST_EXEC_TIME_ERROR|CQ update last execution time failed|

> All exceptions are refactored in the latest version by extracting uniform message into exception classes. Different error codes are added to all exceptions. When an exception is caught and a higher-level exception is thrown, the error code will keep and pass so that users will know the detailed error reason.
A base exception class "ProcessException" is also added to be extended by all exceptions.

