前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Postgresql随手记(9)错误码是如何构造的

Postgresql随手记(9)错误码是如何构造的

作者头像
mingjie
发布2022-07-14 13:52:09
1.2K0
发布2022-07-14 13:52:09
举报

用例

代码语言:javascript
复制
-- 执行匿名块
do $$
DECLARE
user_id int := 10;
BEGIN 
raise notice 'Duplicate user ID: %', user_id using errcode = 'unique_violation', hint = 'Please check your user ID';
raise notice 'Duplicate user ID: %', user_id using errcode = '23505';
raise notice sqlstate '22012';
raise notice division_by_zero;
raise notice unique_violation using message = 'Duplicate user ID: ' ||  user_id, hint = 'Please check your user ID';
END$$;

-- 执行结果
NOTICE:  Duplicate user ID: 10
HINT:  Please check your user ID
NOTICE:  Duplicate user ID: 10
NOTICE:  22012
NOTICE:  division_by_zero
NOTICE:  Duplicate user ID: 10
HINT:  Please check your user ID
  • PG原生支持两种提供errcode的方式,指定字符串('unique_violation')或指定错误号('22012')两种方式提供的字符串都需要plpgsql_recognize_err_condition函数转换为int类型的SQLSTATE。
  • 上述PL执行时会在exec_stmt_raise函数中调用plpgsql_recognize_err_condition获取SQLSTATE,函数可以接收错误码或错误类型。

例如上述PL在执行时调用plpgsql_recognize_err_condition的传参:

代码语言:javascript
复制
// raise notice 'Duplicate user ID: %', user_id using errcode = 'unique_violation', hint = 'Please check your user ID';
plpgsql_recognize_err_condition (condname=0x2a5c3a8 "unique_violation", allow_sqlstate=true)

// raise notice 'Duplicate user ID: %', user_id using errcode = '23505';
plpgsql_recognize_err_condition (condname=0x2a5c398 "23505", allow_sqlstate=true)
  
// raise notice sqlstate '22012';
plpgsql_recognize_err_condition (condname=0x2a21ed0 "22012", allow_sqlstate=true)

// raise notice division_by_zero;
plpgsql_recognize_err_condition (condname=0x2a21fc0 "division_by_zero", allow_sqlstate=true)

// raise notice unique_violation using message = 'Duplicate user ID: ' ||  user_id, hint = 'Please check your user ID';
plpgsql_recognize_err_condition (condname=0x2a21ef0 "unique_violation", allow_sqlstate=true)

plpgsql_recognize_err_condition使用MAKE_ORA_SQLSTATE拼接错误码

代码语言:javascript
复制
int
plpgsql_recognize_err_condition(const char *condname, bool allow_sqlstate)
{
// 如果直接给错误码:调用MAKE_SQLSTATE拼SQLSTATE
...
			return MAKE_SQLSTATE(condname[0],
								 condname[1],
								 condname[2],
								 condname[3],
								 condname[4]);
	

// 如果给的是字符串:在exception_label_map中查询后返回SQLSTATE
	for (i = 0; exception_label_map[i].label != NULL; i++)
	{
		if (strcmp(condname, exception_label_map[i].label) == 0)
			return exception_label_map[i].sqlerrstate;
	}
  ...
}


/* macros for representing SQLSTATE strings compactly */
#define PGSIXBIT(ch)	(((ch) - '0') & 0x3F)
#define PGUNSIXBIT(val) (((val) & 0x3F) + '0')

#define MAKE_SQLSTATE(ch1,ch2,ch3,ch4,ch5)	\
	(PGSIXBIT(ch1) + (PGSIXBIT(ch2) << 6) + (PGSIXBIT(ch3) << 12) + \
	 (PGSIXBIT(ch4) << 18) + (PGSIXBIT(ch5) << 24))

MAKE_SQLSTATE宏:例如当前错误码23505,返回的sqlstate:83906754

代码语言:javascript
复制
// 0x3F = 0011 1111 转换为数字后,保留到6位二进制能保存的最大值63
#define PGSIXBIT(ch)	(((ch) - '0') & 0x3F)

#define MAKE_SQLSTATE(ch1,ch2,ch3,ch4,ch5)	\
	(PGSIXBIT(ch1) + (PGSIXBIT(ch2) << 6) + (PGSIXBIT(ch3) << 12) + \
	 (PGSIXBIT(ch4) << 18) + (PGSIXBIT(ch5) << 24))

// 计算过程:数字共5位,每一位用6个二进制位保存,最后sum
// ch5    ch4    ch3    ch2    ch1
// 5      0      5      3      2
// 000101 000000 000101 000011 000010
// 000101 000000 000101 000011 000010 = 83906754

exception_label_map在plerrcodes.h中构造,后面的宏就是具体的SQLSTATE码(在errcodes.h中用MAKE_SQLSTATE宏构造)

代码语言:javascript
复制
/* autogenerated from src/backend/utils/errcodes.txt, do not edit */
/* there is deliberately not an #ifndef PLERRCODES_H here */

{
	"sql_statement_not_yet_complete", ERRCODE_SQL_STATEMENT_NOT_YET_COMPLETE
},

{
	"connection_exception", ERRCODE_CONNECTION_EXCEPTION
},

{
	"connection_does_not_exist", ERRCODE_CONNECTION_DOES_NOT_EXIST
},

{
	"connection_failure", ERRCODE_CONNECTION_FAILURE
},

{
	"sqlclient_unable_to_establish_sqlconnection", ERRCODE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION
},

{
	"sqlserver_rejected_establishment_of_sqlconnection", ERRCODE_SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION
},

{
	"transaction_resolution_unknown", ERRCODE_TRANSACTION_RESOLUTION_UNKNOWN
},

{
	"protocol_violation", ERRCODE_PROTOCOL_VIOLATION
},

{
	"triggered_action_exception", ERRCODE_TRIGGERED_ACTION_EXCEPTION
},

{
	"feature_not_supported", ERRCODE_FEATURE_NOT_SUPPORTED
},

{
	"invalid_transaction_initiation", ERRCODE_INVALID_TRANSACTION_INITIATION
},

{
	"locator_exception", ERRCODE_LOCATOR_EXCEPTION
},

{
	"invalid_locator_specification", ERRCODE_L_E_INVALID_SPECIFICATION
},

{
	"invalid_grantor", ERRCODE_INVALID_GRANTOR
},

{
	"invalid_grant_operation", ERRCODE_INVALID_GRANT_OPERATION
},

{
	"invalid_role_specification", ERRCODE_INVALID_ROLE_SPECIFICATION
},

{
	"diagnostics_exception", ERRCODE_DIAGNOSTICS_EXCEPTION
},

{
	"stacked_diagnostics_accessed_without_active_handler", ERRCODE_STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER
},

{
	"case_not_found", ERRCODE_CASE_NOT_FOUND
},

{
	"cardinality_violation", ERRCODE_CARDINALITY_VIOLATION
},

{
	"data_exception", ERRCODE_DATA_EXCEPTION
},

{
	"array_subscript_error", ERRCODE_ARRAY_SUBSCRIPT_ERROR
},

{
	"character_not_in_repertoire", ERRCODE_CHARACTER_NOT_IN_REPERTOIRE
},

{
	"datetime_field_overflow", ERRCODE_DATETIME_FIELD_OVERFLOW
},

{
	"division_by_zero", ERRCODE_DIVISION_BY_ZERO
},

{
	"error_in_assignment", ERRCODE_ERROR_IN_ASSIGNMENT
},

{
	"escape_character_conflict", ERRCODE_ESCAPE_CHARACTER_CONFLICT
},

{
	"indicator_overflow", ERRCODE_INDICATOR_OVERFLOW
},

{
	"interval_field_overflow", ERRCODE_INTERVAL_FIELD_OVERFLOW
},

{
	"invalid_argument_for_logarithm", ERRCODE_INVALID_ARGUMENT_FOR_LOG
},

{
	"invalid_argument_for_ntile_function", ERRCODE_INVALID_ARGUMENT_FOR_NTILE
},

{
	"invalid_argument_for_nth_value_function", ERRCODE_INVALID_ARGUMENT_FOR_NTH_VALUE
},

{
	"invalid_argument_for_power_function", ERRCODE_INVALID_ARGUMENT_FOR_POWER_FUNCTION
},

{
	"invalid_argument_for_width_bucket_function", ERRCODE_INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION
},

{
	"invalid_character_value_for_cast", ERRCODE_INVALID_CHARACTER_VALUE_FOR_CAST
},

{
	"invalid_datetime_format", ERRCODE_INVALID_DATETIME_FORMAT
},

{
	"invalid_escape_character", ERRCODE_INVALID_ESCAPE_CHARACTER
},

{
	"invalid_escape_octet", ERRCODE_INVALID_ESCAPE_OCTET
},

{
	"invalid_escape_sequence", ERRCODE_INVALID_ESCAPE_SEQUENCE
},

{
	"nonstandard_use_of_escape_character", ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER
},

{
	"invalid_indicator_parameter_value", ERRCODE_INVALID_INDICATOR_PARAMETER_VALUE
},

{
	"invalid_parameter_value", ERRCODE_INVALID_PARAMETER_VALUE
},

{
	"invalid_preceding_or_following_size", ERRCODE_INVALID_PRECEDING_OR_FOLLOWING_SIZE
},

{
	"invalid_regular_expression", ERRCODE_INVALID_REGULAR_EXPRESSION
},

{
	"invalid_row_count_in_limit_clause", ERRCODE_INVALID_ROW_COUNT_IN_LIMIT_CLAUSE
},

{
	"invalid_row_count_in_result_offset_clause", ERRCODE_INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE
},

{
	"invalid_tablesample_argument", ERRCODE_INVALID_TABLESAMPLE_ARGUMENT
},

{
	"invalid_tablesample_repeat", ERRCODE_INVALID_TABLESAMPLE_REPEAT
},

{
	"invalid_time_zone_displacement_value", ERRCODE_INVALID_TIME_ZONE_DISPLACEMENT_VALUE
},

{
	"invalid_use_of_escape_character", ERRCODE_INVALID_USE_OF_ESCAPE_CHARACTER
},

{
	"most_specific_type_mismatch", ERRCODE_MOST_SPECIFIC_TYPE_MISMATCH
},

{
	"null_value_not_allowed", ERRCODE_NULL_VALUE_NOT_ALLOWED
},

{
	"null_value_no_indicator_parameter", ERRCODE_NULL_VALUE_NO_INDICATOR_PARAMETER
},

{
	"numeric_value_out_of_range", ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE
},

{
	"sequence_generator_limit_exceeded", ERRCODE_SEQUENCE_GENERATOR_LIMIT_EXCEEDED
},

{
	"string_data_length_mismatch", ERRCODE_STRING_DATA_LENGTH_MISMATCH
},

{
	"string_data_right_truncation", ERRCODE_STRING_DATA_RIGHT_TRUNCATION
},

{
	"substring_error", ERRCODE_SUBSTRING_ERROR
},

{
	"trim_error", ERRCODE_TRIM_ERROR
},

{
	"unterminated_c_string", ERRCODE_UNTERMINATED_C_STRING
},

{
	"zero_length_character_string", ERRCODE_ZERO_LENGTH_CHARACTER_STRING
},

{
	"floating_point_exception", ERRCODE_FLOATING_POINT_EXCEPTION
},

{
	"invalid_text_representation", ERRCODE_INVALID_TEXT_REPRESENTATION
},

{
	"invalid_binary_representation", ERRCODE_INVALID_BINARY_REPRESENTATION
},

{
	"bad_copy_file_format", ERRCODE_BAD_COPY_FILE_FORMAT
},

{
	"untranslatable_character", ERRCODE_UNTRANSLATABLE_CHARACTER
},

{
	"not_an_xml_document", ERRCODE_NOT_AN_XML_DOCUMENT
},

{
	"invalid_xml_document", ERRCODE_INVALID_XML_DOCUMENT
},

{
	"invalid_xml_content", ERRCODE_INVALID_XML_CONTENT
},

{
	"invalid_xml_comment", ERRCODE_INVALID_XML_COMMENT
},

{
	"invalid_xml_processing_instruction", ERRCODE_INVALID_XML_PROCESSING_INSTRUCTION
},

{
	"duplicate_json_object_key_value", ERRCODE_DUPLICATE_JSON_OBJECT_KEY_VALUE
},

{
	"invalid_argument_for_sql_json_datetime_function", ERRCODE_INVALID_ARGUMENT_FOR_SQL_JSON_DATETIME_FUNCTION
},

{
	"invalid_json_text", ERRCODE_INVALID_JSON_TEXT
},

{
	"invalid_sql_json_subscript", ERRCODE_INVALID_SQL_JSON_SUBSCRIPT
},

{
	"more_than_one_sql_json_item", ERRCODE_MORE_THAN_ONE_SQL_JSON_ITEM
},

{
	"no_sql_json_item", ERRCODE_NO_SQL_JSON_ITEM
},

{
	"non_numeric_sql_json_item", ERRCODE_NON_NUMERIC_SQL_JSON_ITEM
},

{
	"non_unique_keys_in_a_json_object", ERRCODE_NON_UNIQUE_KEYS_IN_A_JSON_OBJECT
},

{
	"singleton_sql_json_item_required", ERRCODE_SINGLETON_SQL_JSON_ITEM_REQUIRED
},

{
	"sql_json_array_not_found", ERRCODE_SQL_JSON_ARRAY_NOT_FOUND
},

{
	"sql_json_member_not_found", ERRCODE_SQL_JSON_MEMBER_NOT_FOUND
},

{
	"sql_json_number_not_found", ERRCODE_SQL_JSON_NUMBER_NOT_FOUND
},

{
	"sql_json_object_not_found", ERRCODE_SQL_JSON_OBJECT_NOT_FOUND
},

{
	"too_many_json_array_elements", ERRCODE_TOO_MANY_JSON_ARRAY_ELEMENTS
},

{
	"too_many_json_object_members", ERRCODE_TOO_MANY_JSON_OBJECT_MEMBERS
},

{
	"sql_json_scalar_required", ERRCODE_SQL_JSON_SCALAR_REQUIRED
},

{
	"integrity_constraint_violation", ERRCODE_INTEGRITY_CONSTRAINT_VIOLATION
},

{
	"restrict_violation", ERRCODE_RESTRICT_VIOLATION
},

{
	"not_null_violation", ERRCODE_NOT_NULL_VIOLATION
},

{
	"foreign_key_violation", ERRCODE_FOREIGN_KEY_VIOLATION
},

{
	"unique_violation", ERRCODE_UNIQUE_VIOLATION
},

{
	"check_violation", ERRCODE_CHECK_VIOLATION
},

{
	"exclusion_violation", ERRCODE_EXCLUSION_VIOLATION
},

{
	"invalid_cursor_state", ERRCODE_INVALID_CURSOR_STATE
},

{
	"invalid_transaction_state", ERRCODE_INVALID_TRANSACTION_STATE
},

{
	"active_sql_transaction", ERRCODE_ACTIVE_SQL_TRANSACTION
},

{
	"branch_transaction_already_active", ERRCODE_BRANCH_TRANSACTION_ALREADY_ACTIVE
},

{
	"held_cursor_requires_same_isolation_level", ERRCODE_HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL
},

{
	"inappropriate_access_mode_for_branch_transaction", ERRCODE_INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION
},

{
	"inappropriate_isolation_level_for_branch_transaction", ERRCODE_INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION
},

{
	"no_active_sql_transaction_for_branch_transaction", ERRCODE_NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION
},

{
	"read_only_sql_transaction", ERRCODE_READ_ONLY_SQL_TRANSACTION
},

{
	"schema_and_data_statement_mixing_not_supported", ERRCODE_SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED
},

{
	"no_active_sql_transaction", ERRCODE_NO_ACTIVE_SQL_TRANSACTION
},

{
	"in_failed_sql_transaction", ERRCODE_IN_FAILED_SQL_TRANSACTION
},

{
	"idle_in_transaction_session_timeout", ERRCODE_IDLE_IN_TRANSACTION_SESSION_TIMEOUT
},

{
	"invalid_sql_statement_name", ERRCODE_INVALID_SQL_STATEMENT_NAME
},

{
	"triggered_data_change_violation", ERRCODE_TRIGGERED_DATA_CHANGE_VIOLATION
},

{
	"invalid_authorization_specification", ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION
},

{
	"invalid_password", ERRCODE_INVALID_PASSWORD
},

{
	"dependent_privilege_descriptors_still_exist", ERRCODE_DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST
},

{
	"dependent_objects_still_exist", ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST
},

{
	"invalid_transaction_termination", ERRCODE_INVALID_TRANSACTION_TERMINATION
},

{
	"sql_routine_exception", ERRCODE_SQL_ROUTINE_EXCEPTION
},

{
	"function_executed_no_return_statement", ERRCODE_S_R_E_FUNCTION_EXECUTED_NO_RETURN_STATEMENT
},

{
	"modifying_sql_data_not_permitted", ERRCODE_S_R_E_MODIFYING_SQL_DATA_NOT_PERMITTED
},

{
	"prohibited_sql_statement_attempted", ERRCODE_S_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED
},

{
	"reading_sql_data_not_permitted", ERRCODE_S_R_E_READING_SQL_DATA_NOT_PERMITTED
},

{
	"invalid_cursor_name", ERRCODE_INVALID_CURSOR_NAME
},

{
	"external_routine_exception", ERRCODE_EXTERNAL_ROUTINE_EXCEPTION
},

{
	"containing_sql_not_permitted", ERRCODE_E_R_E_CONTAINING_SQL_NOT_PERMITTED
},

{
	"modifying_sql_data_not_permitted", ERRCODE_E_R_E_MODIFYING_SQL_DATA_NOT_PERMITTED
},

{
	"prohibited_sql_statement_attempted", ERRCODE_E_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED
},

{
	"reading_sql_data_not_permitted", ERRCODE_E_R_E_READING_SQL_DATA_NOT_PERMITTED
},

{
	"external_routine_invocation_exception", ERRCODE_EXTERNAL_ROUTINE_INVOCATION_EXCEPTION
},

{
	"invalid_sqlstate_returned", ERRCODE_E_R_I_E_INVALID_SQLSTATE_RETURNED
},

{
	"null_value_not_allowed", ERRCODE_E_R_I_E_NULL_VALUE_NOT_ALLOWED
},

{
	"trigger_protocol_violated", ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED
},

{
	"srf_protocol_violated", ERRCODE_E_R_I_E_SRF_PROTOCOL_VIOLATED
},

{
	"event_trigger_protocol_violated", ERRCODE_E_R_I_E_EVENT_TRIGGER_PROTOCOL_VIOLATED
},

{
	"savepoint_exception", ERRCODE_SAVEPOINT_EXCEPTION
},

{
	"invalid_savepoint_specification", ERRCODE_S_E_INVALID_SPECIFICATION
},

{
	"invalid_catalog_name", ERRCODE_INVALID_CATALOG_NAME
},

{
	"invalid_schema_name", ERRCODE_INVALID_SCHEMA_NAME
},

{
	"transaction_rollback", ERRCODE_TRANSACTION_ROLLBACK
},

{
	"transaction_integrity_constraint_violation", ERRCODE_T_R_INTEGRITY_CONSTRAINT_VIOLATION
},

{
	"serialization_failure", ERRCODE_T_R_SERIALIZATION_FAILURE
},

{
	"statement_completion_unknown", ERRCODE_T_R_STATEMENT_COMPLETION_UNKNOWN
},

{
	"deadlock_detected", ERRCODE_T_R_DEADLOCK_DETECTED
},

{
	"syntax_error_or_access_rule_violation", ERRCODE_SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION
},

{
	"syntax_error", ERRCODE_SYNTAX_ERROR
},

{
	"insufficient_privilege", ERRCODE_INSUFFICIENT_PRIVILEGE
},

{
	"cannot_coerce", ERRCODE_CANNOT_COERCE
},

{
	"grouping_error", ERRCODE_GROUPING_ERROR
},

{
	"windowing_error", ERRCODE_WINDOWING_ERROR
},

{
	"invalid_recursion", ERRCODE_INVALID_RECURSION
},

{
	"invalid_foreign_key", ERRCODE_INVALID_FOREIGN_KEY
},

{
	"invalid_name", ERRCODE_INVALID_NAME
},

{
	"name_too_long", ERRCODE_NAME_TOO_LONG
},

{
	"reserved_name", ERRCODE_RESERVED_NAME
},

{
	"datatype_mismatch", ERRCODE_DATATYPE_MISMATCH
},

{
	"indeterminate_datatype", ERRCODE_INDETERMINATE_DATATYPE
},

{
	"collation_mismatch", ERRCODE_COLLATION_MISMATCH
},

{
	"indeterminate_collation", ERRCODE_INDETERMINATE_COLLATION
},

{
	"wrong_object_type", ERRCODE_WRONG_OBJECT_TYPE
},

{
	"generated_always", ERRCODE_GENERATED_ALWAYS
},

{
	"undefined_column", ERRCODE_UNDEFINED_COLUMN
},

{
	"undefined_function", ERRCODE_UNDEFINED_FUNCTION
},

{
	"undefined_table", ERRCODE_UNDEFINED_TABLE
},

{
	"undefined_parameter", ERRCODE_UNDEFINED_PARAMETER
},

{
	"undefined_object", ERRCODE_UNDEFINED_OBJECT
},

{
	"duplicate_column", ERRCODE_DUPLICATE_COLUMN
},

{
	"duplicate_cursor", ERRCODE_DUPLICATE_CURSOR
},

{
	"duplicate_database", ERRCODE_DUPLICATE_DATABASE
},

{
	"duplicate_function", ERRCODE_DUPLICATE_FUNCTION
},

{
	"duplicate_prepared_statement", ERRCODE_DUPLICATE_PSTATEMENT
},

{
	"duplicate_schema", ERRCODE_DUPLICATE_SCHEMA
},

{
	"duplicate_table", ERRCODE_DUPLICATE_TABLE
},

{
	"duplicate_alias", ERRCODE_DUPLICATE_ALIAS
},

{
	"duplicate_object", ERRCODE_DUPLICATE_OBJECT
},

{
	"ambiguous_column", ERRCODE_AMBIGUOUS_COLUMN
},

{
	"ambiguous_function", ERRCODE_AMBIGUOUS_FUNCTION
},

{
	"ambiguous_parameter", ERRCODE_AMBIGUOUS_PARAMETER
},

{
	"ambiguous_alias", ERRCODE_AMBIGUOUS_ALIAS
},

{
	"invalid_column_reference", ERRCODE_INVALID_COLUMN_REFERENCE
},

{
	"invalid_column_definition", ERRCODE_INVALID_COLUMN_DEFINITION
},

{
	"invalid_cursor_definition", ERRCODE_INVALID_CURSOR_DEFINITION
},

{
	"invalid_database_definition", ERRCODE_INVALID_DATABASE_DEFINITION
},

{
	"invalid_function_definition", ERRCODE_INVALID_FUNCTION_DEFINITION
},

{
	"invalid_prepared_statement_definition", ERRCODE_INVALID_PSTATEMENT_DEFINITION
},

{
	"invalid_schema_definition", ERRCODE_INVALID_SCHEMA_DEFINITION
},

{
	"invalid_table_definition", ERRCODE_INVALID_TABLE_DEFINITION
},

{
	"invalid_object_definition", ERRCODE_INVALID_OBJECT_DEFINITION
},

{
	"with_check_option_violation", ERRCODE_WITH_CHECK_OPTION_VIOLATION
},

{
	"insufficient_resources", ERRCODE_INSUFFICIENT_RESOURCES
},

{
	"disk_full", ERRCODE_DISK_FULL
},

{
	"out_of_memory", ERRCODE_OUT_OF_MEMORY
},

{
	"too_many_connections", ERRCODE_TOO_MANY_CONNECTIONS
},

{
	"configuration_limit_exceeded", ERRCODE_CONFIGURATION_LIMIT_EXCEEDED
},

{
	"program_limit_exceeded", ERRCODE_PROGRAM_LIMIT_EXCEEDED
},

{
	"statement_too_complex", ERRCODE_STATEMENT_TOO_COMPLEX
},

{
	"too_many_columns", ERRCODE_TOO_MANY_COLUMNS
},

{
	"too_many_arguments", ERRCODE_TOO_MANY_ARGUMENTS
},

{
	"object_not_in_prerequisite_state", ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE
},

{
	"object_in_use", ERRCODE_OBJECT_IN_USE
},

{
	"cant_change_runtime_param", ERRCODE_CANT_CHANGE_RUNTIME_PARAM
},

{
	"lock_not_available", ERRCODE_LOCK_NOT_AVAILABLE
},

{
	"unsafe_new_enum_value_usage", ERRCODE_UNSAFE_NEW_ENUM_VALUE_USAGE
},

{
	"operator_intervention", ERRCODE_OPERATOR_INTERVENTION
},

{
	"query_canceled", ERRCODE_QUERY_CANCELED
},

{
	"admin_shutdown", ERRCODE_ADMIN_SHUTDOWN
},

{
	"crash_shutdown", ERRCODE_CRASH_SHUTDOWN
},

{
	"cannot_connect_now", ERRCODE_CANNOT_CONNECT_NOW
},

{
	"database_dropped", ERRCODE_DATABASE_DROPPED
},

{
	"idle_session_timeout", ERRCODE_IDLE_SESSION_TIMEOUT
},

{
	"system_error", ERRCODE_SYSTEM_ERROR
},

{
	"io_error", ERRCODE_IO_ERROR
},

{
	"undefined_file", ERRCODE_UNDEFINED_FILE
},

{
	"duplicate_file", ERRCODE_DUPLICATE_FILE
},

{
	"snapshot_too_old", ERRCODE_SNAPSHOT_TOO_OLD
},

{
	"config_file_error", ERRCODE_CONFIG_FILE_ERROR
},

{
	"lock_file_exists", ERRCODE_LOCK_FILE_EXISTS
},

{
	"fdw_error", ERRCODE_FDW_ERROR
},

{
	"fdw_column_name_not_found", ERRCODE_FDW_COLUMN_NAME_NOT_FOUND
},

{
	"fdw_dynamic_parameter_value_needed", ERRCODE_FDW_DYNAMIC_PARAMETER_VALUE_NEEDED
},

{
	"fdw_function_sequence_error", ERRCODE_FDW_FUNCTION_SEQUENCE_ERROR
},

{
	"fdw_inconsistent_descriptor_information", ERRCODE_FDW_INCONSISTENT_DESCRIPTOR_INFORMATION
},

{
	"fdw_invalid_attribute_value", ERRCODE_FDW_INVALID_ATTRIBUTE_VALUE
},

{
	"fdw_invalid_column_name", ERRCODE_FDW_INVALID_COLUMN_NAME
},

{
	"fdw_invalid_column_number", ERRCODE_FDW_INVALID_COLUMN_NUMBER
},

{
	"fdw_invalid_data_type", ERRCODE_FDW_INVALID_DATA_TYPE
},

{
	"fdw_invalid_data_type_descriptors", ERRCODE_FDW_INVALID_DATA_TYPE_DESCRIPTORS
},

{
	"fdw_invalid_descriptor_field_identifier", ERRCODE_FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER
},

{
	"fdw_invalid_handle", ERRCODE_FDW_INVALID_HANDLE
},

{
	"fdw_invalid_option_index", ERRCODE_FDW_INVALID_OPTION_INDEX
},

{
	"fdw_invalid_option_name", ERRCODE_FDW_INVALID_OPTION_NAME
},

{
	"fdw_invalid_string_length_or_buffer_length", ERRCODE_FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH
},

{
	"fdw_invalid_string_format", ERRCODE_FDW_INVALID_STRING_FORMAT
},

{
	"fdw_invalid_use_of_null_pointer", ERRCODE_FDW_INVALID_USE_OF_NULL_POINTER
},

{
	"fdw_too_many_handles", ERRCODE_FDW_TOO_MANY_HANDLES
},

{
	"fdw_out_of_memory", ERRCODE_FDW_OUT_OF_MEMORY
},

{
	"fdw_no_schemas", ERRCODE_FDW_NO_SCHEMAS
},

{
	"fdw_option_name_not_found", ERRCODE_FDW_OPTION_NAME_NOT_FOUND
},

{
	"fdw_reply_handle", ERRCODE_FDW_REPLY_HANDLE
},

{
	"fdw_schema_not_found", ERRCODE_FDW_SCHEMA_NOT_FOUND
},

{
	"fdw_table_not_found", ERRCODE_FDW_TABLE_NOT_FOUND
},

{
	"fdw_unable_to_create_execution", ERRCODE_FDW_UNABLE_TO_CREATE_EXECUTION
},

{
	"fdw_unable_to_create_reply", ERRCODE_FDW_UNABLE_TO_CREATE_REPLY
},

{
	"fdw_unable_to_establish_connection", ERRCODE_FDW_UNABLE_TO_ESTABLISH_CONNECTION
},

{
	"plpgsql_error", ERRCODE_PLPGSQL_ERROR
},

{
	"raise_exception", ERRCODE_RAISE_EXCEPTION
},

{
	"no_data_found", ERRCODE_NO_DATA_FOUND
},

{
	"too_many_rows", ERRCODE_TOO_MANY_ROWS
},

{
	"assert_failure", ERRCODE_ASSERT_FAILURE
},

{
	"internal_error", ERRCODE_INTERNAL_ERROR
},

{
	"data_corrupted", ERRCODE_DATA_CORRUPTED
},

{
	"index_corrupted", ERRCODE_INDEX_CORRUPTED
},

注意宏在errcodes.h中构造

代码语言:javascript
复制
/* autogenerated from src/backend/utils/errcodes.txt, do not edit */
/* there is deliberately not an #ifndef ERRCODES_H here */

/* Class 00 - Successful Completion */
#define ERRCODE_SUCCESSFUL_COMPLETION MAKE_SQLSTATE('0','0','0','0','0')

/* Class 01 - Warning */
#define ERRCODE_WARNING MAKE_SQLSTATE('0','1','0','0','0')
#define ERRCODE_WARNING_DYNAMIC_RESULT_SETS_RETURNED MAKE_SQLSTATE('0','1','0','0','C')
#define ERRCODE_WARNING_IMPLICIT_ZERO_BIT_PADDING MAKE_SQLSTATE('0','1','0','0','8')
#define ERRCODE_WARNING_NULL_VALUE_ELIMINATED_IN_SET_FUNCTION MAKE_SQLSTATE('0','1','0','0','3')
#define ERRCODE_WARNING_PRIVILEGE_NOT_GRANTED MAKE_SQLSTATE('0','1','0','0','7')
#define ERRCODE_WARNING_PRIVILEGE_NOT_REVOKED MAKE_SQLSTATE('0','1','0','0','6')
#define ERRCODE_WARNING_STRING_DATA_RIGHT_TRUNCATION MAKE_SQLSTATE('0','1','0','0','4')
#define ERRCODE_WARNING_DEPRECATED_FEATURE MAKE_SQLSTATE('0','1','P','0','1')

/* Class 02 - No Data (this is also a warning class per the SQL standard) */
#define ERRCODE_NO_DATA MAKE_SQLSTATE('0','2','0','0','0')
#define ERRCODE_NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED MAKE_SQLSTATE('0','2','0','0','1')

/* Class 03 - SQL Statement Not Yet Complete */
#define ERRCODE_SQL_STATEMENT_NOT_YET_COMPLETE MAKE_SQLSTATE('0','3','0','0','0')

/* Class 08 - Connection Exception */
#define ERRCODE_CONNECTION_EXCEPTION MAKE_SQLSTATE('0','8','0','0','0')
#define ERRCODE_CONNECTION_DOES_NOT_EXIST MAKE_SQLSTATE('0','8','0','0','3')
#define ERRCODE_CONNECTION_FAILURE MAKE_SQLSTATE('0','8','0','0','6')
#define ERRCODE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION MAKE_SQLSTATE('0','8','0','0','1')
#define ERRCODE_SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION MAKE_SQLSTATE('0','8','0','0','4')
#define ERRCODE_TRANSACTION_RESOLUTION_UNKNOWN MAKE_SQLSTATE('0','8','0','0','7')
#define ERRCODE_PROTOCOL_VIOLATION MAKE_SQLSTATE('0','8','P','0','1')

/* Class 09 - Triggered Action Exception */
#define ERRCODE_TRIGGERED_ACTION_EXCEPTION MAKE_SQLSTATE('0','9','0','0','0')

/* Class 0A - Feature Not Supported */
#define ERRCODE_FEATURE_NOT_SUPPORTED MAKE_SQLSTATE('0','A','0','0','0')

/* Class 0B - Invalid Transaction Initiation */
#define ERRCODE_INVALID_TRANSACTION_INITIATION MAKE_SQLSTATE('0','B','0','0','0')

/* Class 0F - Locator Exception */
#define ERRCODE_LOCATOR_EXCEPTION MAKE_SQLSTATE('0','F','0','0','0')
#define ERRCODE_L_E_INVALID_SPECIFICATION MAKE_SQLSTATE('0','F','0','0','1')

/* Class 0L - Invalid Grantor */
#define ERRCODE_INVALID_GRANTOR MAKE_SQLSTATE('0','L','0','0','0')
#define ERRCODE_INVALID_GRANT_OPERATION MAKE_SQLSTATE('0','L','P','0','1')

/* Class 0P - Invalid Role Specification */
#define ERRCODE_INVALID_ROLE_SPECIFICATION MAKE_SQLSTATE('0','P','0','0','0')

/* Class 0Z - Diagnostics Exception */
#define ERRCODE_DIAGNOSTICS_EXCEPTION MAKE_SQLSTATE('0','Z','0','0','0')
#define ERRCODE_STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER MAKE_SQLSTATE('0','Z','0','0','2')

/* Class 20 - Case Not Found */
#define ERRCODE_CASE_NOT_FOUND MAKE_SQLSTATE('2','0','0','0','0')

/* Class 21 - Cardinality Violation */
#define ERRCODE_CARDINALITY_VIOLATION MAKE_SQLSTATE('2','1','0','0','0')

/* Class 22 - Data Exception */
#define ERRCODE_DATA_EXCEPTION MAKE_SQLSTATE('2','2','0','0','0')
#define ERRCODE_ARRAY_ELEMENT_ERROR MAKE_SQLSTATE('2','2','0','2','E')
#define ERRCODE_ARRAY_SUBSCRIPT_ERROR MAKE_SQLSTATE('2','2','0','2','E')
#define ERRCODE_CHARACTER_NOT_IN_REPERTOIRE MAKE_SQLSTATE('2','2','0','2','1')
#define ERRCODE_DATETIME_FIELD_OVERFLOW MAKE_SQLSTATE('2','2','0','0','8')
#define ERRCODE_DATETIME_VALUE_OUT_OF_RANGE MAKE_SQLSTATE('2','2','0','0','8')
#define ERRCODE_DIVISION_BY_ZERO MAKE_SQLSTATE('2','2','0','1','2')
#define ERRCODE_ERROR_IN_ASSIGNMENT MAKE_SQLSTATE('2','2','0','0','5')
#define ERRCODE_ESCAPE_CHARACTER_CONFLICT MAKE_SQLSTATE('2','2','0','0','B')
#define ERRCODE_INDICATOR_OVERFLOW MAKE_SQLSTATE('2','2','0','2','2')
#define ERRCODE_INTERVAL_FIELD_OVERFLOW MAKE_SQLSTATE('2','2','0','1','5')
#define ERRCODE_INVALID_ARGUMENT_FOR_LOG MAKE_SQLSTATE('2','2','0','1','E')
#define ERRCODE_INVALID_ARGUMENT_FOR_NTILE MAKE_SQLSTATE('2','2','0','1','4')
#define ERRCODE_INVALID_ARGUMENT_FOR_NTH_VALUE MAKE_SQLSTATE('2','2','0','1','6')
#define ERRCODE_INVALID_ARGUMENT_FOR_POWER_FUNCTION MAKE_SQLSTATE('2','2','0','1','F')
#define ERRCODE_INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION MAKE_SQLSTATE('2','2','0','1','G')
#define ERRCODE_INVALID_CHARACTER_VALUE_FOR_CAST MAKE_SQLSTATE('2','2','0','1','8')
#define ERRCODE_INVALID_DATETIME_FORMAT MAKE_SQLSTATE('2','2','0','0','7')
#define ERRCODE_INVALID_ESCAPE_CHARACTER MAKE_SQLSTATE('2','2','0','1','9')
#define ERRCODE_INVALID_ESCAPE_OCTET MAKE_SQLSTATE('2','2','0','0','D')
#define ERRCODE_INVALID_ESCAPE_SEQUENCE MAKE_SQLSTATE('2','2','0','2','5')
#define ERRCODE_NONSTANDARD_USE_OF_ESCAPE_CHARACTER MAKE_SQLSTATE('2','2','P','0','6')
#define ERRCODE_INVALID_INDICATOR_PARAMETER_VALUE MAKE_SQLSTATE('2','2','0','1','0')
#define ERRCODE_INVALID_PARAMETER_VALUE MAKE_SQLSTATE('2','2','0','2','3')
#define ERRCODE_INVALID_PRECEDING_OR_FOLLOWING_SIZE MAKE_SQLSTATE('2','2','0','1','3')
#define ERRCODE_INVALID_REGULAR_EXPRESSION MAKE_SQLSTATE('2','2','0','1','B')
#define ERRCODE_INVALID_ROW_COUNT_IN_LIMIT_CLAUSE MAKE_SQLSTATE('2','2','0','1','W')
#define ERRCODE_INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE MAKE_SQLSTATE('2','2','0','1','X')
#define ERRCODE_INVALID_TABLESAMPLE_ARGUMENT MAKE_SQLSTATE('2','2','0','2','H')
#define ERRCODE_INVALID_TABLESAMPLE_REPEAT MAKE_SQLSTATE('2','2','0','2','G')
#define ERRCODE_INVALID_TIME_ZONE_DISPLACEMENT_VALUE MAKE_SQLSTATE('2','2','0','0','9')
#define ERRCODE_INVALID_USE_OF_ESCAPE_CHARACTER MAKE_SQLSTATE('2','2','0','0','C')
#define ERRCODE_MOST_SPECIFIC_TYPE_MISMATCH MAKE_SQLSTATE('2','2','0','0','G')
#define ERRCODE_NULL_VALUE_NOT_ALLOWED MAKE_SQLSTATE('2','2','0','0','4')
#define ERRCODE_NULL_VALUE_NO_INDICATOR_PARAMETER MAKE_SQLSTATE('2','2','0','0','2')
#define ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE MAKE_SQLSTATE('2','2','0','0','3')
#define ERRCODE_SEQUENCE_GENERATOR_LIMIT_EXCEEDED MAKE_SQLSTATE('2','2','0','0','H')
#define ERRCODE_STRING_DATA_LENGTH_MISMATCH MAKE_SQLSTATE('2','2','0','2','6')
#define ERRCODE_STRING_DATA_RIGHT_TRUNCATION MAKE_SQLSTATE('2','2','0','0','1')
#define ERRCODE_SUBSTRING_ERROR MAKE_SQLSTATE('2','2','0','1','1')
#define ERRCODE_TRIM_ERROR MAKE_SQLSTATE('2','2','0','2','7')
#define ERRCODE_UNTERMINATED_C_STRING MAKE_SQLSTATE('2','2','0','2','4')
#define ERRCODE_ZERO_LENGTH_CHARACTER_STRING MAKE_SQLSTATE('2','2','0','0','F')
#define ERRCODE_FLOATING_POINT_EXCEPTION MAKE_SQLSTATE('2','2','P','0','1')
#define ERRCODE_INVALID_TEXT_REPRESENTATION MAKE_SQLSTATE('2','2','P','0','2')
#define ERRCODE_INVALID_BINARY_REPRESENTATION MAKE_SQLSTATE('2','2','P','0','3')
#define ERRCODE_BAD_COPY_FILE_FORMAT MAKE_SQLSTATE('2','2','P','0','4')
#define ERRCODE_UNTRANSLATABLE_CHARACTER MAKE_SQLSTATE('2','2','P','0','5')
#define ERRCODE_NOT_AN_XML_DOCUMENT MAKE_SQLSTATE('2','2','0','0','L')
#define ERRCODE_INVALID_XML_DOCUMENT MAKE_SQLSTATE('2','2','0','0','M')
#define ERRCODE_INVALID_XML_CONTENT MAKE_SQLSTATE('2','2','0','0','N')
#define ERRCODE_INVALID_XML_COMMENT MAKE_SQLSTATE('2','2','0','0','S')
#define ERRCODE_INVALID_XML_PROCESSING_INSTRUCTION MAKE_SQLSTATE('2','2','0','0','T')
#define ERRCODE_DUPLICATE_JSON_OBJECT_KEY_VALUE MAKE_SQLSTATE('2','2','0','3','0')
#define ERRCODE_INVALID_ARGUMENT_FOR_SQL_JSON_DATETIME_FUNCTION MAKE_SQLSTATE('2','2','0','3','1')
#define ERRCODE_INVALID_JSON_TEXT MAKE_SQLSTATE('2','2','0','3','2')
#define ERRCODE_INVALID_SQL_JSON_SUBSCRIPT MAKE_SQLSTATE('2','2','0','3','3')
#define ERRCODE_MORE_THAN_ONE_SQL_JSON_ITEM MAKE_SQLSTATE('2','2','0','3','4')
#define ERRCODE_NO_SQL_JSON_ITEM MAKE_SQLSTATE('2','2','0','3','5')
#define ERRCODE_NON_NUMERIC_SQL_JSON_ITEM MAKE_SQLSTATE('2','2','0','3','6')
#define ERRCODE_NON_UNIQUE_KEYS_IN_A_JSON_OBJECT MAKE_SQLSTATE('2','2','0','3','7')
#define ERRCODE_SINGLETON_SQL_JSON_ITEM_REQUIRED MAKE_SQLSTATE('2','2','0','3','8')
#define ERRCODE_SQL_JSON_ARRAY_NOT_FOUND MAKE_SQLSTATE('2','2','0','3','9')
#define ERRCODE_SQL_JSON_MEMBER_NOT_FOUND MAKE_SQLSTATE('2','2','0','3','A')
#define ERRCODE_SQL_JSON_NUMBER_NOT_FOUND MAKE_SQLSTATE('2','2','0','3','B')
#define ERRCODE_SQL_JSON_OBJECT_NOT_FOUND MAKE_SQLSTATE('2','2','0','3','C')
#define ERRCODE_TOO_MANY_JSON_ARRAY_ELEMENTS MAKE_SQLSTATE('2','2','0','3','D')
#define ERRCODE_TOO_MANY_JSON_OBJECT_MEMBERS MAKE_SQLSTATE('2','2','0','3','E')
#define ERRCODE_SQL_JSON_SCALAR_REQUIRED MAKE_SQLSTATE('2','2','0','3','F')

/* Class 23 - Integrity Constraint Violation */
#define ERRCODE_INTEGRITY_CONSTRAINT_VIOLATION MAKE_SQLSTATE('2','3','0','0','0')
#define ERRCODE_RESTRICT_VIOLATION MAKE_SQLSTATE('2','3','0','0','1')
#define ERRCODE_NOT_NULL_VIOLATION MAKE_SQLSTATE('2','3','5','0','2')
#define ERRCODE_FOREIGN_KEY_VIOLATION MAKE_SQLSTATE('2','3','5','0','3')
#define ERRCODE_UNIQUE_VIOLATION MAKE_SQLSTATE('2','3','5','0','5')
#define ERRCODE_CHECK_VIOLATION MAKE_SQLSTATE('2','3','5','1','4')
#define ERRCODE_EXCLUSION_VIOLATION MAKE_SQLSTATE('2','3','P','0','1')

/* Class 24 - Invalid Cursor State */
#define ERRCODE_INVALID_CURSOR_STATE MAKE_SQLSTATE('2','4','0','0','0')

/* Class 25 - Invalid Transaction State */
#define ERRCODE_INVALID_TRANSACTION_STATE MAKE_SQLSTATE('2','5','0','0','0')
#define ERRCODE_ACTIVE_SQL_TRANSACTION MAKE_SQLSTATE('2','5','0','0','1')
#define ERRCODE_BRANCH_TRANSACTION_ALREADY_ACTIVE MAKE_SQLSTATE('2','5','0','0','2')
#define ERRCODE_HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL MAKE_SQLSTATE('2','5','0','0','8')
#define ERRCODE_INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION MAKE_SQLSTATE('2','5','0','0','3')
#define ERRCODE_INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION MAKE_SQLSTATE('2','5','0','0','4')
#define ERRCODE_NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION MAKE_SQLSTATE('2','5','0','0','5')
#define ERRCODE_READ_ONLY_SQL_TRANSACTION MAKE_SQLSTATE('2','5','0','0','6')
#define ERRCODE_SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED MAKE_SQLSTATE('2','5','0','0','7')
#define ERRCODE_NO_ACTIVE_SQL_TRANSACTION MAKE_SQLSTATE('2','5','P','0','1')
#define ERRCODE_IN_FAILED_SQL_TRANSACTION MAKE_SQLSTATE('2','5','P','0','2')
#define ERRCODE_IDLE_IN_TRANSACTION_SESSION_TIMEOUT MAKE_SQLSTATE('2','5','P','0','3')

/* Class 26 - Invalid SQL Statement Name */
#define ERRCODE_INVALID_SQL_STATEMENT_NAME MAKE_SQLSTATE('2','6','0','0','0')

/* Class 27 - Triggered Data Change Violation */
#define ERRCODE_TRIGGERED_DATA_CHANGE_VIOLATION MAKE_SQLSTATE('2','7','0','0','0')

/* Class 28 - Invalid Authorization Specification */
#define ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION MAKE_SQLSTATE('2','8','0','0','0')
#define ERRCODE_INVALID_PASSWORD MAKE_SQLSTATE('2','8','P','0','1')

/* Class 2B - Dependent Privilege Descriptors Still Exist */
#define ERRCODE_DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST MAKE_SQLSTATE('2','B','0','0','0')
#define ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST MAKE_SQLSTATE('2','B','P','0','1')

/* Class 2D - Invalid Transaction Termination */
#define ERRCODE_INVALID_TRANSACTION_TERMINATION MAKE_SQLSTATE('2','D','0','0','0')

/* Class 2F - SQL Routine Exception */
#define ERRCODE_SQL_ROUTINE_EXCEPTION MAKE_SQLSTATE('2','F','0','0','0')
#define ERRCODE_S_R_E_FUNCTION_EXECUTED_NO_RETURN_STATEMENT MAKE_SQLSTATE('2','F','0','0','5')
#define ERRCODE_S_R_E_MODIFYING_SQL_DATA_NOT_PERMITTED MAKE_SQLSTATE('2','F','0','0','2')
#define ERRCODE_S_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED MAKE_SQLSTATE('2','F','0','0','3')
#define ERRCODE_S_R_E_READING_SQL_DATA_NOT_PERMITTED MAKE_SQLSTATE('2','F','0','0','4')

/* Class 34 - Invalid Cursor Name */
#define ERRCODE_INVALID_CURSOR_NAME MAKE_SQLSTATE('3','4','0','0','0')

/* Class 38 - External Routine Exception */
#define ERRCODE_EXTERNAL_ROUTINE_EXCEPTION MAKE_SQLSTATE('3','8','0','0','0')
#define ERRCODE_E_R_E_CONTAINING_SQL_NOT_PERMITTED MAKE_SQLSTATE('3','8','0','0','1')
#define ERRCODE_E_R_E_MODIFYING_SQL_DATA_NOT_PERMITTED MAKE_SQLSTATE('3','8','0','0','2')
#define ERRCODE_E_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED MAKE_SQLSTATE('3','8','0','0','3')
#define ERRCODE_E_R_E_READING_SQL_DATA_NOT_PERMITTED MAKE_SQLSTATE('3','8','0','0','4')

/* Class 39 - External Routine Invocation Exception */
#define ERRCODE_EXTERNAL_ROUTINE_INVOCATION_EXCEPTION MAKE_SQLSTATE('3','9','0','0','0')
#define ERRCODE_E_R_I_E_INVALID_SQLSTATE_RETURNED MAKE_SQLSTATE('3','9','0','0','1')
#define ERRCODE_E_R_I_E_NULL_VALUE_NOT_ALLOWED MAKE_SQLSTATE('3','9','0','0','4')
#define ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED MAKE_SQLSTATE('3','9','P','0','1')
#define ERRCODE_E_R_I_E_SRF_PROTOCOL_VIOLATED MAKE_SQLSTATE('3','9','P','0','2')
#define ERRCODE_E_R_I_E_EVENT_TRIGGER_PROTOCOL_VIOLATED MAKE_SQLSTATE('3','9','P','0','3')

/* Class 3B - Savepoint Exception */
#define ERRCODE_SAVEPOINT_EXCEPTION MAKE_SQLSTATE('3','B','0','0','0')
#define ERRCODE_S_E_INVALID_SPECIFICATION MAKE_SQLSTATE('3','B','0','0','1')

/* Class 3D - Invalid Catalog Name */
#define ERRCODE_INVALID_CATALOG_NAME MAKE_SQLSTATE('3','D','0','0','0')

/* Class 3F - Invalid Schema Name */
#define ERRCODE_INVALID_SCHEMA_NAME MAKE_SQLSTATE('3','F','0','0','0')

/* Class 40 - Transaction Rollback */
#define ERRCODE_TRANSACTION_ROLLBACK MAKE_SQLSTATE('4','0','0','0','0')
#define ERRCODE_T_R_INTEGRITY_CONSTRAINT_VIOLATION MAKE_SQLSTATE('4','0','0','0','2')
#define ERRCODE_T_R_SERIALIZATION_FAILURE MAKE_SQLSTATE('4','0','0','0','1')
#define ERRCODE_T_R_STATEMENT_COMPLETION_UNKNOWN MAKE_SQLSTATE('4','0','0','0','3')
#define ERRCODE_T_R_DEADLOCK_DETECTED MAKE_SQLSTATE('4','0','P','0','1')

/* Class 42 - Syntax Error or Access Rule Violation */
#define ERRCODE_SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION MAKE_SQLSTATE('4','2','0','0','0')
#define ERRCODE_SYNTAX_ERROR MAKE_SQLSTATE('4','2','6','0','1')
#define ERRCODE_INSUFFICIENT_PRIVILEGE MAKE_SQLSTATE('4','2','5','0','1')
#define ERRCODE_CANNOT_COERCE MAKE_SQLSTATE('4','2','8','4','6')
#define ERRCODE_GROUPING_ERROR MAKE_SQLSTATE('4','2','8','0','3')
#define ERRCODE_WINDOWING_ERROR MAKE_SQLSTATE('4','2','P','2','0')
#define ERRCODE_INVALID_RECURSION MAKE_SQLSTATE('4','2','P','1','9')
#define ERRCODE_INVALID_FOREIGN_KEY MAKE_SQLSTATE('4','2','8','3','0')
#define ERRCODE_INVALID_NAME MAKE_SQLSTATE('4','2','6','0','2')
#define ERRCODE_NAME_TOO_LONG MAKE_SQLSTATE('4','2','6','2','2')
#define ERRCODE_RESERVED_NAME MAKE_SQLSTATE('4','2','9','3','9')
#define ERRCODE_DATATYPE_MISMATCH MAKE_SQLSTATE('4','2','8','0','4')
#define ERRCODE_INDETERMINATE_DATATYPE MAKE_SQLSTATE('4','2','P','1','8')
#define ERRCODE_COLLATION_MISMATCH MAKE_SQLSTATE('4','2','P','2','1')
#define ERRCODE_INDETERMINATE_COLLATION MAKE_SQLSTATE('4','2','P','2','2')
#define ERRCODE_WRONG_OBJECT_TYPE MAKE_SQLSTATE('4','2','8','0','9')
#define ERRCODE_GENERATED_ALWAYS MAKE_SQLSTATE('4','2','8','C','9')
#define ERRCODE_UNDEFINED_COLUMN MAKE_SQLSTATE('4','2','7','0','3')
#define ERRCODE_UNDEFINED_CURSOR MAKE_SQLSTATE('3','4','0','0','0')
#define ERRCODE_UNDEFINED_DATABASE MAKE_SQLSTATE('3','D','0','0','0')
#define ERRCODE_UNDEFINED_FUNCTION MAKE_SQLSTATE('4','2','8','8','3')
#define ERRCODE_UNDEFINED_PSTATEMENT MAKE_SQLSTATE('2','6','0','0','0')
#define ERRCODE_UNDEFINED_SCHEMA MAKE_SQLSTATE('3','F','0','0','0')
#define ERRCODE_UNDEFINED_TABLE MAKE_SQLSTATE('4','2','P','0','1')
#define ERRCODE_UNDEFINED_PARAMETER MAKE_SQLSTATE('4','2','P','0','2')
#define ERRCODE_UNDEFINED_OBJECT MAKE_SQLSTATE('4','2','7','0','4')
#define ERRCODE_DUPLICATE_COLUMN MAKE_SQLSTATE('4','2','7','0','1')
#define ERRCODE_DUPLICATE_CURSOR MAKE_SQLSTATE('4','2','P','0','3')
#define ERRCODE_DUPLICATE_DATABASE MAKE_SQLSTATE('4','2','P','0','4')
#define ERRCODE_DUPLICATE_FUNCTION MAKE_SQLSTATE('4','2','7','2','3')
#define ERRCODE_DUPLICATE_PSTATEMENT MAKE_SQLSTATE('4','2','P','0','5')
#define ERRCODE_DUPLICATE_SCHEMA MAKE_SQLSTATE('4','2','P','0','6')
#define ERRCODE_DUPLICATE_TABLE MAKE_SQLSTATE('4','2','P','0','7')
#define ERRCODE_DUPLICATE_ALIAS MAKE_SQLSTATE('4','2','7','1','2')
#define ERRCODE_DUPLICATE_OBJECT MAKE_SQLSTATE('4','2','7','1','0')
#define ERRCODE_AMBIGUOUS_COLUMN MAKE_SQLSTATE('4','2','7','0','2')
#define ERRCODE_AMBIGUOUS_FUNCTION MAKE_SQLSTATE('4','2','7','2','5')
#define ERRCODE_AMBIGUOUS_PARAMETER MAKE_SQLSTATE('4','2','P','0','8')
#define ERRCODE_AMBIGUOUS_ALIAS MAKE_SQLSTATE('4','2','P','0','9')
#define ERRCODE_INVALID_COLUMN_REFERENCE MAKE_SQLSTATE('4','2','P','1','0')
#define ERRCODE_INVALID_COLUMN_DEFINITION MAKE_SQLSTATE('4','2','6','1','1')
#define ERRCODE_INVALID_CURSOR_DEFINITION MAKE_SQLSTATE('4','2','P','1','1')
#define ERRCODE_INVALID_DATABASE_DEFINITION MAKE_SQLSTATE('4','2','P','1','2')
#define ERRCODE_INVALID_FUNCTION_DEFINITION MAKE_SQLSTATE('4','2','P','1','3')
#define ERRCODE_INVALID_PSTATEMENT_DEFINITION MAKE_SQLSTATE('4','2','P','1','4')
#define ERRCODE_INVALID_SCHEMA_DEFINITION MAKE_SQLSTATE('4','2','P','1','5')
#define ERRCODE_INVALID_TABLE_DEFINITION MAKE_SQLSTATE('4','2','P','1','6')
#define ERRCODE_INVALID_OBJECT_DEFINITION MAKE_SQLSTATE('4','2','P','1','7')

/* Class 44 - WITH CHECK OPTION Violation */
#define ERRCODE_WITH_CHECK_OPTION_VIOLATION MAKE_SQLSTATE('4','4','0','0','0')

/* Class 53 - Insufficient Resources */
#define ERRCODE_INSUFFICIENT_RESOURCES MAKE_SQLSTATE('5','3','0','0','0')
#define ERRCODE_DISK_FULL MAKE_SQLSTATE('5','3','1','0','0')
#define ERRCODE_OUT_OF_MEMORY MAKE_SQLSTATE('5','3','2','0','0')
#define ERRCODE_TOO_MANY_CONNECTIONS MAKE_SQLSTATE('5','3','3','0','0')
#define ERRCODE_CONFIGURATION_LIMIT_EXCEEDED MAKE_SQLSTATE('5','3','4','0','0')

/* Class 54 - Program Limit Exceeded */
#define ERRCODE_PROGRAM_LIMIT_EXCEEDED MAKE_SQLSTATE('5','4','0','0','0')
#define ERRCODE_STATEMENT_TOO_COMPLEX MAKE_SQLSTATE('5','4','0','0','1')
#define ERRCODE_TOO_MANY_COLUMNS MAKE_SQLSTATE('5','4','0','1','1')
#define ERRCODE_TOO_MANY_ARGUMENTS MAKE_SQLSTATE('5','4','0','2','3')

/* Class 55 - Object Not In Prerequisite State */
#define ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE MAKE_SQLSTATE('5','5','0','0','0')
#define ERRCODE_OBJECT_IN_USE MAKE_SQLSTATE('5','5','0','0','6')
#define ERRCODE_CANT_CHANGE_RUNTIME_PARAM MAKE_SQLSTATE('5','5','P','0','2')
#define ERRCODE_LOCK_NOT_AVAILABLE MAKE_SQLSTATE('5','5','P','0','3')
#define ERRCODE_UNSAFE_NEW_ENUM_VALUE_USAGE MAKE_SQLSTATE('5','5','P','0','4')

/* Class 57 - Operator Intervention */
#define ERRCODE_OPERATOR_INTERVENTION MAKE_SQLSTATE('5','7','0','0','0')
#define ERRCODE_QUERY_CANCELED MAKE_SQLSTATE('5','7','0','1','4')
#define ERRCODE_ADMIN_SHUTDOWN MAKE_SQLSTATE('5','7','P','0','1')
#define ERRCODE_CRASH_SHUTDOWN MAKE_SQLSTATE('5','7','P','0','2')
#define ERRCODE_CANNOT_CONNECT_NOW MAKE_SQLSTATE('5','7','P','0','3')
#define ERRCODE_DATABASE_DROPPED MAKE_SQLSTATE('5','7','P','0','4')
#define ERRCODE_IDLE_SESSION_TIMEOUT MAKE_SQLSTATE('5','7','P','0','5')

/* Class 58 - System Error (errors external to PostgreSQL itself) */
#define ERRCODE_SYSTEM_ERROR MAKE_SQLSTATE('5','8','0','0','0')
#define ERRCODE_IO_ERROR MAKE_SQLSTATE('5','8','0','3','0')
#define ERRCODE_UNDEFINED_FILE MAKE_SQLSTATE('5','8','P','0','1')
#define ERRCODE_DUPLICATE_FILE MAKE_SQLSTATE('5','8','P','0','2')

/* Class 72 - Snapshot Failure */
#define ERRCODE_SNAPSHOT_TOO_OLD MAKE_SQLSTATE('7','2','0','0','0')

/* Class F0 - Configuration File Error */
#define ERRCODE_CONFIG_FILE_ERROR MAKE_SQLSTATE('F','0','0','0','0')
#define ERRCODE_LOCK_FILE_EXISTS MAKE_SQLSTATE('F','0','0','0','1')

/* Class HV - Foreign Data Wrapper Error (SQL/MED) */
#define ERRCODE_FDW_ERROR MAKE_SQLSTATE('H','V','0','0','0')
#define ERRCODE_FDW_COLUMN_NAME_NOT_FOUND MAKE_SQLSTATE('H','V','0','0','5')
#define ERRCODE_FDW_DYNAMIC_PARAMETER_VALUE_NEEDED MAKE_SQLSTATE('H','V','0','0','2')
#define ERRCODE_FDW_FUNCTION_SEQUENCE_ERROR MAKE_SQLSTATE('H','V','0','1','0')
#define ERRCODE_FDW_INCONSISTENT_DESCRIPTOR_INFORMATION MAKE_SQLSTATE('H','V','0','2','1')
#define ERRCODE_FDW_INVALID_ATTRIBUTE_VALUE MAKE_SQLSTATE('H','V','0','2','4')
#define ERRCODE_FDW_INVALID_COLUMN_NAME MAKE_SQLSTATE('H','V','0','0','7')
#define ERRCODE_FDW_INVALID_COLUMN_NUMBER MAKE_SQLSTATE('H','V','0','0','8')
#define ERRCODE_FDW_INVALID_DATA_TYPE MAKE_SQLSTATE('H','V','0','0','4')
#define ERRCODE_FDW_INVALID_DATA_TYPE_DESCRIPTORS MAKE_SQLSTATE('H','V','0','0','6')
#define ERRCODE_FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER MAKE_SQLSTATE('H','V','0','9','1')
#define ERRCODE_FDW_INVALID_HANDLE MAKE_SQLSTATE('H','V','0','0','B')
#define ERRCODE_FDW_INVALID_OPTION_INDEX MAKE_SQLSTATE('H','V','0','0','C')
#define ERRCODE_FDW_INVALID_OPTION_NAME MAKE_SQLSTATE('H','V','0','0','D')
#define ERRCODE_FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH MAKE_SQLSTATE('H','V','0','9','0')
#define ERRCODE_FDW_INVALID_STRING_FORMAT MAKE_SQLSTATE('H','V','0','0','A')
#define ERRCODE_FDW_INVALID_USE_OF_NULL_POINTER MAKE_SQLSTATE('H','V','0','0','9')
#define ERRCODE_FDW_TOO_MANY_HANDLES MAKE_SQLSTATE('H','V','0','1','4')
#define ERRCODE_FDW_OUT_OF_MEMORY MAKE_SQLSTATE('H','V','0','0','1')
#define ERRCODE_FDW_NO_SCHEMAS MAKE_SQLSTATE('H','V','0','0','P')
#define ERRCODE_FDW_OPTION_NAME_NOT_FOUND MAKE_SQLSTATE('H','V','0','0','J')
#define ERRCODE_FDW_REPLY_HANDLE MAKE_SQLSTATE('H','V','0','0','K')
#define ERRCODE_FDW_SCHEMA_NOT_FOUND MAKE_SQLSTATE('H','V','0','0','Q')
#define ERRCODE_FDW_TABLE_NOT_FOUND MAKE_SQLSTATE('H','V','0','0','R')
#define ERRCODE_FDW_UNABLE_TO_CREATE_EXECUTION MAKE_SQLSTATE('H','V','0','0','L')
#define ERRCODE_FDW_UNABLE_TO_CREATE_REPLY MAKE_SQLSTATE('H','V','0','0','M')
#define ERRCODE_FDW_UNABLE_TO_ESTABLISH_CONNECTION MAKE_SQLSTATE('H','V','0','0','N')

/* Class P0 - PL/pgSQL Error */
#define ERRCODE_PLPGSQL_ERROR MAKE_SQLSTATE('P','0','0','0','0')
#define ERRCODE_RAISE_EXCEPTION MAKE_SQLSTATE('P','0','0','0','1')
#define ERRCODE_NO_DATA_FOUND MAKE_SQLSTATE('P','0','0','0','2')
#define ERRCODE_TOO_MANY_ROWS MAKE_SQLSTATE('P','0','0','0','3')
#define ERRCODE_ASSERT_FAILURE MAKE_SQLSTATE('P','0','0','0','4')

/* Class XX - Internal Error */
#define ERRCODE_INTERNAL_ERROR MAKE_SQLSTATE('X','X','0','0','0')
#define ERRCODE_DATA_CORRUPTED MAKE_SQLSTATE('X','X','0','0','1')
#define ERRCODE_INDEX_CORRUPTED MAKE_SQLSTATE('X','X','0','0','2')
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档