'use strict'; var _ = require('underscore'); // reference http://www.postgresql.org/docs/9.3/static/errcodes-appendix.html // Used `^([A-Z0-9]*)\s(.*)` -> `"$1": "$2"` to create the JS object var codeToCondition = { // Class 00 — Successful Completion '00000': 'successful_completion', // Class 01 — Warning '01000': 'warning', '0100C': 'dynamic_result_sets_returned', '01008': 'implicit_zero_bit_padding', '01003': 'null_value_eliminated_in_set_function', '01007': 'privilege_not_granted', '01006': 'privilege_not_revoked', '01004': 'string_data_right_truncation', '01P01': 'deprecated_feature', // Class 02 — No Data (this is also a warning class per the SQL standard) '02000': 'no_data', '02001': 'no_additional_dynamic_result_sets_returned', // Class 03 — SQL Statement Not Yet Complete '03000': 'sql_statement_not_yet_complete', // Class 08 — Connection Exception '08000': 'connection_exception', '08003': 'connection_does_not_exist', '08006': 'connection_failure', '08001': 'sqlclient_unable_to_establish_sqlconnection', '08004': 'sqlserver_rejected_establishment_of_sqlconnection', '08007': 'transaction_resolution_unknown', '08P01': 'protocol_violation', // Class 09 — Triggered Action Exception '09000': 'triggered_action_exception', // Class 0A — Feature Not Supported '0A000': 'feature_not_supported', // Class 0B — Invalid Transaction Initiation '0B000': 'invalid_transaction_initiation', // Class 0F — Locator Exception '0F000': 'locator_exception', '0F001': 'invalid_locator_specification', // Class 0L — Invalid Grantor '0L000': 'invalid_grantor', '0LP01': 'invalid_grant_operation', // Class 0P — Invalid Role Specification '0P000': 'invalid_role_specification', // Class 0Z — Diagnostics Exception '0Z000': 'diagnostics_exception', '0Z002': 'stacked_diagnostics_accessed_without_active_handler', // Class 20 — Case Not Found 20000: 'case_not_found', // Class 21 — Cardinality Violation 21000: 'cardinality_violation', // Class 22 — Data Exception 22000: 'data_exception', '2202E': 'array_subscript_error', 22021: 'character_not_in_repertoire', 22008: 'datetime_field_overflow', 22012: 'division_by_zero', 22005: 'error_in_assignment', '2200B': 'escape_character_conflict', 22022: 'indicator_overflow', 22015: 'interval_field_overflow', '2201E': 'invalid_argument_for_logarithm', 22014: 'invalid_argument_for_ntile_function', 22016: 'invalid_argument_for_nth_value_function', '2201F': 'invalid_argument_for_power_function', '2201G': 'invalid_argument_for_width_bucket_function', 22018: 'invalid_character_value_for_cast', 22007: 'invalid_datetime_format', 22019: 'invalid_escape_character', '2200D': 'invalid_escape_octet', 22025: 'invalid_escape_sequence', '22P06': 'nonstandard_use_of_escape_character', 22010: 'invalid_indicator_parameter_value', 22023: 'invalid_parameter_value', '2201B': 'invalid_regular_expression', '2201W': 'invalid_row_count_in_limit_clause', '2201X': 'invalid_row_count_in_result_offset_clause', 22009: 'invalid_time_zone_displacement_value', '2200C': 'invalid_use_of_escape_character', '2200G': 'most_specific_type_mismatch', 22004: 'null_value_not_allowed', 22002: 'null_value_no_indicator_parameter', 22003: 'numeric_value_out_of_range', 22026: 'string_data_length_mismatch', 22001: 'string_data_right_truncation', 22011: 'substring_error', 22027: 'trim_error', 22024: 'unterminated_c_string', '2200F': 'zero_length_character_string', '22P01': 'floating_point_exception', '22P02': 'invalid_text_representation', '22P03': 'invalid_binary_representation', '22P04': 'bad_copy_file_format', '22P05': 'untranslatable_character', '2200L': 'not_an_xml_document', '2200M': 'invalid_xml_document', '2200N': 'invalid_xml_content', '2200S': 'invalid_xml_comment', '2200T': 'invalid_xml_processing_instruction', // Class 23 — Integrity Constraint Violation 23000: 'integrity_constraint_violation', 23001: 'restrict_violation', 23502: 'not_null_violation', 23503: 'foreign_key_violation', 23505: 'unique_violation', 23514: 'check_violation', '23P01': 'exclusion_violation', // Class 24 — Invalid Cursor State 24000: 'invalid_cursor_state', // Class 25 — Invalid Transaction State 25000: 'invalid_transaction_state', 25001: 'active_sql_transaction', 25002: 'branch_transaction_already_active', 25008: 'held_cursor_requires_same_isolation_level', 25003: 'inappropriate_access_mode_for_branch_transaction', 25004: 'inappropriate_isolation_level_for_branch_transaction', 25005: 'no_active_sql_transaction_for_branch_transaction', 25006: 'read_only_sql_transaction', 25007: 'schema_and_data_statement_mixing_not_supported', '25P01': 'no_active_sql_transaction', '25P02': 'in_failed_sql_transaction', '25P03': 'idle_in_transaction_session_timeout', // Class 26 — Invalid SQL Statement Name 26000: 'invalid_sql_statement_name', // Class 27 — Triggered Data Change Violation 27000: 'triggered_data_change_violation', // Class 28 — Invalid Authorization Specification 28000: 'invalid_authorization_specification', '28P01': 'invalid_password', // Class 2B — Dependent Privilege Descriptors Still Exist '2B000': 'dependent_privilege_descriptors_still_exist', '2BP01': 'dependent_objects_still_exist', // Class 2D — Invalid Transaction Termination '2D000': 'invalid_transaction_termination', // Class 2F — SQL Routine Exception '2F000': 'sql_routine_exception', '2F005': 'function_executed_no_return_statement', '2F002': 'modifying_sql_data_not_permitted', '2F003': 'prohibited_sql_statement_attempted', '2F004': 'reading_sql_data_not_permitted', // Class 34 — Invalid Cursor Name 34000: 'invalid_cursor_name', // Class 38 — External Routine Exception 38000: 'external_routine_exception', 38001: 'containing_sql_not_permitted', 38002: 'modifying_sql_data_not_permitted', 38003: 'prohibited_sql_statement_attempted', 38004: 'reading_sql_data_not_permitted', // Class 39 — External Routine Invocation Exception 39000: 'external_routine_invocation_exception', 39001: 'invalid_sqlstate_returned', 39004: 'null_value_not_allowed', '39P01': 'trigger_protocol_violated', '39P02': 'srf_protocol_violated', '39P03': 'event_trigger_protocol_violated', // Class 3B — Savepoint Exception '3B000': 'savepoint_exception', '3B001': 'invalid_savepoint_specification', // Class 3D — Invalid Catalog Name '3D000': 'invalid_catalog_name', // Class 3F — Invalid Schema Name '3F000': 'invalid_schema_name', // Class 40 — Transaction Rollback 40000: 'transaction_rollback', 40002: 'transaction_integrity_constraint_violation', 40001: 'serialization_failure', 40003: 'statement_completion_unknown', '40P01': 'deadlock_detected', // Class 42 — Syntax Error or Access Rule Violation 42000: 'syntax_error_or_access_rule_violation', 42601: 'syntax_error', 42501: 'insufficient_privilege', 42846: 'cannot_coerce', 42803: 'grouping_error', '42P20': 'windowing_error', '42P19': 'invalid_recursion', 42830: 'invalid_foreign_key', 42602: 'invalid_name', 42622: 'name_too_long', 42939: 'reserved_name', 42804: 'datatype_mismatch', '42P18': 'indeterminate_datatype', '42P21': 'collation_mismatch', '42P22': 'indeterminate_collation', 42809: 'wrong_object_type', '428C9': 'generated_always', 42703: 'undefined_column', 42883: 'undefined_function', '42P01': 'undefined_table', '42P02': 'undefined_parameter', 42704: 'undefined_object', 42701: 'duplicate_column', '42P03': 'duplicate_cursor', '42P04': 'duplicate_database', 42723: 'duplicate_function', '42P05': 'duplicate_prepared_statement', '42P06': 'duplicate_schema', '42P07': 'duplicate_table', 42712: 'duplicate_alias', 42710: 'duplicate_object', 42702: 'ambiguous_column', 42725: 'ambiguous_function', '42P08': 'ambiguous_parameter', '42P09': 'ambiguous_alias', '42P10': 'invalid_column_reference', 42611: 'invalid_column_definition', '42P11': 'invalid_cursor_definition', '42P12': 'invalid_database_definition', '42P13': 'invalid_function_definition', '42P14': 'invalid_prepared_statement_definition', '42P15': 'invalid_schema_definition', '42P16': 'invalid_table_definition', '42P17': 'invalid_object_definition', // Class 44 — WITH CHECK OPTION Violation 44000: 'with_check_option_violation', // Class 53 — Insufficient Resources 53000: 'insufficient_resources', 53100: 'disk_full', 53200: 'out_of_memory', 53300: 'too_many_connections', 53400: 'configuration_limit_exceeded', // Class 54 — Program Limit Exceeded 54000: 'program_limit_exceeded', 54001: 'statement_too_complex', 54011: 'too_many_columns', 54023: 'too_many_arguments', // Class 55 — Object Not In Prerequisite State 55000: 'object_not_in_prerequisite_state', 55006: 'object_in_use', '55P02': 'cant_change_runtime_param', '55P03': 'lock_not_available', // Class 57 — Operator Intervention 57000: 'operator_intervention', 57014: 'query_canceled', '57P01': 'admin_shutdown', '57P02': 'crash_shutdown', '57P03': 'cannot_connect_now', '57P04': 'database_dropped', // Class 58 — System Error (errors external to PostgreSQL itself) 58000: 'system_error', 58030: 'io_error', '58P01': 'undefined_file', '58P02': 'duplicate_file', // Class F0 — Configuration File Error F0000: 'config_file_error', F0001: 'lock_file_exists', // Class HV — Foreign Data Wrapper Error (SQL/MED) HV000: 'fdw_error', HV005: 'fdw_column_name_not_found', HV002: 'fdw_dynamic_parameter_value_needed', HV010: 'fdw_function_sequence_error', HV021: 'fdw_inconsistent_descriptor_information', HV024: 'fdw_invalid_attribute_value', HV007: 'fdw_invalid_column_name', HV008: 'fdw_invalid_column_number', HV004: 'fdw_invalid_data_type', HV006: 'fdw_invalid_data_type_descriptors', HV091: 'fdw_invalid_descriptor_field_identifier', HV00B: 'fdw_invalid_handle', HV00C: 'fdw_invalid_option_index', HV00D: 'fdw_invalid_option_name', HV090: 'fdw_invalid_string_length_or_buffer_length', HV00A: 'fdw_invalid_string_format', HV009: 'fdw_invalid_use_of_null_pointer', HV014: 'fdw_too_many_handles', HV001: 'fdw_out_of_memory', HV00P: 'fdw_no_schemas', HV00J: 'fdw_option_name_not_found', HV00K: 'fdw_reply_handle', HV00Q: 'fdw_schema_not_found', HV00R: 'fdw_table_not_found', HV00L: 'fdw_unable_to_create_execution', HV00M: 'fdw_unable_to_create_reply', HV00N: 'fdw_unable_to_establish_connection', // Class P0 — PL/pgSQL Error P0000: 'plpgsql_error', P0001: 'raise_exception', P0002: 'no_data_found', P0003: 'too_many_rows', P0004: 'assert_failure', // Class XX — Internal Error XX000: 'internal_error', XX001: 'data_corrupted', XX002: 'index_corrupted' }; module.exports.codeToCondition = codeToCondition; module.exports.conditionToCode = _.invert(codeToCondition);