module Database.PostgreSQL.PQTypes.Internal.Error.Code (
    ErrorCode(..)
  , stringToErrorCode
  ) where

-- | SQL error code. Reference:
-- <http://www.postgresql.org/docs/devel/static/errcodes-appendix.html>.
data ErrorCode
  -- Class 00 — Successful Completion
  = SuccessfulCompletion
  -- Class 01 — Warning
  | Warning
  | DynamicResultSetsReturned
  | ImplicitZeroBitPadding
  | NullValueEliminatedInSetFunction
  | PrivilegeNotGranted
  | PrivilegeNotRevoked
  | StringDataRightTruncation_01
  | DeprecatedFeature
  -- Class 02 — No Data (this is also a warning class per the SQL standard)
  | NoData
  | NoAdditionalDynamicResultSetsReturned
  -- Class 03 — SQL Statement Not Yet Complete
  | SqlStatementNotYetComplete
  -- Class 08 — Connection Exception
  | ConnectionException
  | ConnectionDoesNotExist
  | ConnectionFailure
  | SqlclientUnableToEstablishSqlconnection
  | SqlserverRejectedEstablishmentOfSqlconnection
  | TransactionResolutionUnknown
  | ProtocolViolation
  -- Class 09 — Triggered Action Exception
  | TriggeredActionException
  -- Class 0A — Feature Not Supported
  | FeatureNotSupported
  -- Class 0B — Invalid Transaction Initiation
  | InvalidTransactionInitiation
  -- Class 0F — Locator Exception
  | LocatorException
  | InvalidLocatorSpecification
  -- Class 0L — Invalid Grantor
  | InvalidGrantor
  | InvalidGrantOperation
  -- Class 0P — Invalid Role Specification
  | InvalidRoleSpecification
  -- Class 0Z — Diagnostics Exception
  | DiagnosticsException
  | StackedDiagnosticsAccessedWithoutActiveHandler
  -- Class 20 — Case Not Found
  | CaseNotFound
  -- Class 21 — Cardinality Violation
  | CardinalityViolation
  -- Class 22 — Data Exception
  | DataException
  | ArraySubscriptError
  | CharacterNotInRepertoire
  | DatetimeFieldOverflow
  | DivisionByZero
  | ErrorInAssignment
  | EscapeCharacterConflict
  | IndicatorOverflow
  | IntervalFieldOverflow
  | InvalidArgumentForLogarithm
  | InvalidArgumentForNtileFunction
  | InvalidArgumentForNthValueFunction
  | InvalidArgumentForPowerFunction
  | InvalidArgumentForWidthBucketFunction
  | InvalidCharacterValueForCast
  | InvalidDatetimeFormat
  | InvalidEscapeCharacter
  | InvalidEscapeOctet
  | InvalidEscapeSequence
  | NonstandardUseOfEscapeCharacter
  | InvalidIndicatorParameterValue
  | InvalidParameterValue
  | InvalidRegularExpression
  | InvalidRowCountInLimitClause
  | InvalidRowCountInResultOffsetClause
  | InvalidTimeZoneDisplacementValue
  | InvalidUseOfEscapeCharacter
  | MostSpecificTypeMismatch
  | NullValueNotAllowed_22
  | NullValueNoIndicatorParameter
  | NumericValueOutOfRange
  | StringDataLengthMismatch
  | StringDataRightTruncation_22
  | SubstringError
  | TrimError
  | UnterminatedCString
  | ZeroLengthCharacterString
  | FloatingPointException
  | InvalidTextRepresentation
  | InvalidBinaryRepresentation
  | BadCopyFileFormat
  | UntranslatableCharacter
  | NotAnXmlDocument
  | InvalidXmlDocument
  | InvalidXmlContent
  | InvalidXmlComment
  | InvalidXmlProcessingInstruction
  -- Class 23 — Integrity Constraint Violation
  | IntegrityConstraintViolation
  | RestrictViolation
  | NotNullViolation
  | ForeignKeyViolation
  | UniqueViolation
  | CheckViolation
  | ExclusionViolation
  -- Class 24 — Invalid Cursor State
  | InvalidCursorState
  -- Class 25 — Invalid Transaction State
  | InvalidTransactionState
  | ActiveSqlTransaction
  | BranchTransactionAlreadyActive
  | HeldCursorRequiresSameIsolationLevel
  | InappropriateAccessModeForBranchTransaction
  | InappropriateIsolationLevelForBranchTransaction
  | NoActiveSqlTransactionForBranchTransaction
  | ReadOnlySqlTransaction
  | SchemaAndDataStatementMixingNotSupported
  | NoActiveSqlTransaction
  | InFailedSqlTransaction
  -- Class 26 — Invalid SQL Statement Name
  | InvalidSqlStatementName
  -- Class 27 — Triggered Data Change Violation
  | TriggeredDataChangeViolation
  -- Class 28 — Invalid Authorization Specification
  | InvalidAuthorizationSpecification
  | InvalidPassword
  -- Class 2B — Dependent Privilege Descriptors Still Exist
  | DependentPrivilegeDescriptorsStillExist
  | DependentObjectsStillExist
  -- Class 2D — Invalid Transaction Termination
  | InvalidTransactionTermination
  -- Class 2F — SQL Routine Exception
  | SqlRoutineException
  | FunctionExecutedNoReturnStatement
  | ModifyingSqlDataNotPermitted_2F
  | ProhibitedSqlStatementAttempted_2F
  | ReadingSqlDataNotPermitted_2F
  -- Class 34 — Invalid Cursor Name
  | InvalidCursorName
  -- Class 38 — External Routine Exception
  | ExternalRoutineException
  | ContainingSqlNotPermitted
  | ModifyingSqlDataNotPermitted_38
  | ProhibitedSqlStatementAttempted_38
  | ReadingSqlDataNotPermitted_38
  -- Class 39 — External Routine Invocation Exception
  | ExternalRoutineInvocationException
  | InvalidSqlstateReturned
  | NullValueNotAllowed_39
  | TriggerProtocolViolated
  | SrfProtocolViolated
  -- Class 3B — Savepoint Exception
  | SavepointException
  | InvalidSavepointSpecification
  -- Class 3D — Invalid Catalog Name
  | InvalidCatalogName
  -- Class 3F — Invalid Schema Name
  | InvalidSchemaName
  -- Class 40 — Transaction Rollback
  | TransactionRollback
  | TransactionIntegrityConstraintViolation
  | SerializationFailure
  | StatementCompletionUnknown
  | DeadlockDetected
  -- Class 42 — Syntax Error or Access Rule Violation
  | SyntaxErrorOrAccessRuleViolation
  | SyntaxError
  | InsufficientPrivilege
  | CannotCoerce
  | GroupingError
  | WindowingError
  | InvalidRecursion
  | InvalidForeignKey
  | InvalidName
  | NameTooLong
  | ReservedName
  | DatatypeMismatch
  | IndeterminateDatatype
  | CollationMismatch
  | IndeterminateCollation
  | WrongObjectType
  | UndefinedColumn
  | UndefinedFunction
  | UndefinedTable
  | UndefinedParameter
  | UndefinedObject
  | DuplicateColumn
  | DuplicateCursor
  | DuplicateDatabase
  | DuplicateFunction
  | DuplicatePreparedStatement
  | DuplicateSchema
  | DuplicateTable
  | DuplicateAlias
  | DuplicateObject
  | AmbiguousColumn
  | AmbiguousFunction
  | AmbiguousParameter
  | AmbiguousAlias
  | InvalidColumnReference
  | InvalidColumnDefinition
  | InvalidCursorDefinition
  | InvalidDatabaseDefinition
  | InvalidFunctionDefinition
  | InvalidPreparedStatementDefinition
  | InvalidSchemaDefinition
  | InvalidTableDefinition
  | InvalidObjectDefinition
  -- Class 44 — WITH CHECK OPTION Violation
  | WithCheckOptionViolation
  -- Class 53 — Insufficient Resources
  | InsufficientResources
  | DiskFull
  | OutOfMemory
  | TooManyConnections
  | ConfigurationLimitExceeded
  -- Class 54 — Program Limit Exceeded
  | ProgramLimitExceeded
  | StatementTooComplex
  | TooManyColumns
  | TooManyArguments
  -- Class 55 — Object Not In Prerequisite State
  | ObjectNotInPrerequisiteState
  | ObjectInUse
  | CantChangeRuntimeParam
  | LockNotAvailable
  -- Class 57 — Operator Intervention
  | OperatorIntervention
  | QueryCanceled
  | AdminShutdown
  | CrashShutdown
  | CannotConnectNow
  | DatabaseDropped
  -- Class 58 — System Error (errors external to PostgreSQL itself)
  | SystemError
  | IoError
  | UndefinedFile
  | DuplicateFile
  -- Class F0 — Configuration File Error
  | ConfigFileError
  | LockFileExists
  -- Class HV — Foreign Data Wrapper Error (SQL/MED)
  | FdwError
  | FdwColumnNameNotFound
  | FdwDynamicParameterValueNeeded
  | FdwFunctionSequenceError
  | FdwInconsistentDescriptorInformation
  | FdwInvalidAttributeValue
  | FdwInvalidColumnName
  | FdwInvalidColumnNumber
  | FdwInvalidDataType
  | FdwInvalidDataTypeDescriptors
  | FdwInvalidDescriptorFieldIdentifier
  | FdwInvalidHandle
  | FdwInvalidOptionIndex
  | FdwInvalidOptionName
  | FdwInvalidStringLengthOrBufferLength
  | FdwInvalidStringFormat
  | FdwInvalidUseOfNullPointer
  | FdwTooManyHandles
  | FdwOutOfMemory
  | FdwNoSchemas
  | FdwOptionNameNotFound
  | FdwReplyHandle
  | FdwSchemaNotFound
  | FdwTableNotFound
  | FdwUnableToCreateExecution
  | FdwUnableToCreateReply
  | FdwUnableToEstablishConnection
  -- Class P0 — PL/pgSQL Error
  | PlpgsqlError
  | RaiseException
  | NoDataFound
  | TooManyRows
  -- Class XX — Internal Error
  | InternalError
  | DataCorrupted
  | IndexCorrupted
  -- Unknown error code
  | UnknownErrorCode String
  deriving (ErrorCode -> ErrorCode -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ErrorCode -> ErrorCode -> Bool
$c/= :: ErrorCode -> ErrorCode -> Bool
== :: ErrorCode -> ErrorCode -> Bool
$c== :: ErrorCode -> ErrorCode -> Bool
Eq, Eq ErrorCode
ErrorCode -> ErrorCode -> Bool
ErrorCode -> ErrorCode -> Ordering
ErrorCode -> ErrorCode -> ErrorCode
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ErrorCode -> ErrorCode -> ErrorCode
$cmin :: ErrorCode -> ErrorCode -> ErrorCode
max :: ErrorCode -> ErrorCode -> ErrorCode
$cmax :: ErrorCode -> ErrorCode -> ErrorCode
>= :: ErrorCode -> ErrorCode -> Bool
$c>= :: ErrorCode -> ErrorCode -> Bool
> :: ErrorCode -> ErrorCode -> Bool
$c> :: ErrorCode -> ErrorCode -> Bool
<= :: ErrorCode -> ErrorCode -> Bool
$c<= :: ErrorCode -> ErrorCode -> Bool
< :: ErrorCode -> ErrorCode -> Bool
$c< :: ErrorCode -> ErrorCode -> Bool
compare :: ErrorCode -> ErrorCode -> Ordering
$ccompare :: ErrorCode -> ErrorCode -> Ordering
Ord, Int -> ErrorCode -> ShowS
[ErrorCode] -> ShowS
ErrorCode -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ErrorCode] -> ShowS
$cshowList :: [ErrorCode] -> ShowS
show :: ErrorCode -> String
$cshow :: ErrorCode -> String
showsPrec :: Int -> ErrorCode -> ShowS
$cshowsPrec :: Int -> ErrorCode -> ShowS
Show)

-- | Convert 'String' to corresponding 'ErrorCode'.
stringToErrorCode :: String -> ErrorCode
stringToErrorCode :: String -> ErrorCode
stringToErrorCode String
code = case String
code of
  -- Class 00 — Successful Completion
  String
"00000" -> ErrorCode
SuccessfulCompletion
  -- Class 01 — Warning
  String
"01000" -> ErrorCode
Warning
  String
"0100C" -> ErrorCode
DynamicResultSetsReturned
  String
"01008" -> ErrorCode
ImplicitZeroBitPadding
  String
"01003" -> ErrorCode
NullValueEliminatedInSetFunction
  String
"01007" -> ErrorCode
PrivilegeNotGranted
  String
"01006" -> ErrorCode
PrivilegeNotRevoked
  String
"01004" -> ErrorCode
StringDataRightTruncation_01
  String
"01P01" -> ErrorCode
DeprecatedFeature
  -- Class 02 — No Data (this is also a warning class per the SQL standard)
  String
"02000" -> ErrorCode
NoData
  String
"02001" -> ErrorCode
NoAdditionalDynamicResultSetsReturned
  -- Class 03 — SQL Statement Not Yet Complete
  String
"03000" -> ErrorCode
SqlStatementNotYetComplete
  -- Class 08 — Connection Exception
  String
"08000" -> ErrorCode
ConnectionException
  String
"08003" -> ErrorCode
ConnectionDoesNotExist
  String
"08006" -> ErrorCode
ConnectionFailure
  String
"08001" -> ErrorCode
SqlclientUnableToEstablishSqlconnection
  String
"08004" -> ErrorCode
SqlserverRejectedEstablishmentOfSqlconnection
  String
"08007" -> ErrorCode
TransactionResolutionUnknown
  String
"08P01" -> ErrorCode
ProtocolViolation
  -- Class 09 — Triggered Action Exception
  String
"09000" -> ErrorCode
TriggeredActionException
  -- Class 0A — Feature Not Supported
  String
"0A000" -> ErrorCode
FeatureNotSupported
  -- Class 0B — Invalid Transaction Initiation
  String
"0B000" -> ErrorCode
InvalidTransactionInitiation
  -- Class 0F — Locator Exception
  String
"0F000" -> ErrorCode
LocatorException
  String
"0F001" -> ErrorCode
InvalidLocatorSpecification
  -- Class 0L — Invalid Grantor
  String
"0L000" -> ErrorCode
InvalidGrantor
  String
"0LP01" -> ErrorCode
InvalidGrantOperation
  -- Class 0P — Invalid Role Specification
  String
"0P000" -> ErrorCode
InvalidRoleSpecification
  -- Class 0Z — Diagnostics Exception
  String
"0Z000" -> ErrorCode
DiagnosticsException
  String
"0Z002" -> ErrorCode
StackedDiagnosticsAccessedWithoutActiveHandler
  -- Class 20 — Case Not Found
  String
"20000" -> ErrorCode
CaseNotFound
  -- Class 21 — Cardinality Violation
  String
"21000" -> ErrorCode
CardinalityViolation
  -- Class 22 — Data Exception
  String
"22000" -> ErrorCode
DataException
  String
"2202E" -> ErrorCode
ArraySubscriptError
  String
"22021" -> ErrorCode
CharacterNotInRepertoire
  String
"22008" -> ErrorCode
DatetimeFieldOverflow
  String
"22012" -> ErrorCode
DivisionByZero
  String
"22005" -> ErrorCode
ErrorInAssignment
  String
"2200B" -> ErrorCode
EscapeCharacterConflict
  String
"22022" -> ErrorCode
IndicatorOverflow
  String
"22015" -> ErrorCode
IntervalFieldOverflow
  String
"2201E" -> ErrorCode
InvalidArgumentForLogarithm
  String
"22014" -> ErrorCode
InvalidArgumentForNtileFunction
  String
"22016" -> ErrorCode
InvalidArgumentForNthValueFunction
  String
"2201F" -> ErrorCode
InvalidArgumentForPowerFunction
  String
"2201G" -> ErrorCode
InvalidArgumentForWidthBucketFunction
  String
"22018" -> ErrorCode
InvalidCharacterValueForCast
  String
"22007" -> ErrorCode
InvalidDatetimeFormat
  String
"22019" -> ErrorCode
InvalidEscapeCharacter
  String
"2200D" -> ErrorCode
InvalidEscapeOctet
  String
"22025" -> ErrorCode
InvalidEscapeSequence
  String
"22P06" -> ErrorCode
NonstandardUseOfEscapeCharacter
  String
"22010" -> ErrorCode
InvalidIndicatorParameterValue
  String
"22023" -> ErrorCode
InvalidParameterValue
  String
"2201B" -> ErrorCode
InvalidRegularExpression
  String
"2201W" -> ErrorCode
InvalidRowCountInLimitClause
  String
"2201X" -> ErrorCode
InvalidRowCountInResultOffsetClause
  String
"22009" -> ErrorCode
InvalidTimeZoneDisplacementValue
  String
"2200C" -> ErrorCode
InvalidUseOfEscapeCharacter
  String
"2200G" -> ErrorCode
MostSpecificTypeMismatch
  String
"22004" -> ErrorCode
NullValueNotAllowed_22
  String
"22002" -> ErrorCode
NullValueNoIndicatorParameter
  String
"22003" -> ErrorCode
NumericValueOutOfRange
  String
"22026" -> ErrorCode
StringDataLengthMismatch
  String
"22001" -> ErrorCode
StringDataRightTruncation_22
  String
"22011" -> ErrorCode
SubstringError
  String
"22027" -> ErrorCode
TrimError
  String
"22024" -> ErrorCode
UnterminatedCString
  String
"2200F" -> ErrorCode
ZeroLengthCharacterString
  String
"22P01" -> ErrorCode
FloatingPointException
  String
"22P02" -> ErrorCode
InvalidTextRepresentation
  String
"22P03" -> ErrorCode
InvalidBinaryRepresentation
  String
"22P04" -> ErrorCode
BadCopyFileFormat
  String
"22P05" -> ErrorCode
UntranslatableCharacter
  String
"2200L" -> ErrorCode
NotAnXmlDocument
  String
"2200M" -> ErrorCode
InvalidXmlDocument
  String
"2200N" -> ErrorCode
InvalidXmlContent
  String
"2200S" -> ErrorCode
InvalidXmlComment
  String
"2200T" -> ErrorCode
InvalidXmlProcessingInstruction
  -- Class 23 — Integrity Constraint Violation
  String
"23000" -> ErrorCode
IntegrityConstraintViolation
  String
"23001" -> ErrorCode
RestrictViolation
  String
"23502" -> ErrorCode
NotNullViolation
  String
"23503" -> ErrorCode
ForeignKeyViolation
  String
"23505" -> ErrorCode
UniqueViolation
  String
"23514" -> ErrorCode
CheckViolation
  String
"23P01" -> ErrorCode
ExclusionViolation
  -- Class 24 — Invalid Cursor State
  String
"24000" -> ErrorCode
InvalidCursorState
  -- Class 25 — Invalid Transaction State
  String
"25000" -> ErrorCode
InvalidTransactionState
  String
"25001" -> ErrorCode
ActiveSqlTransaction
  String
"25002" -> ErrorCode
BranchTransactionAlreadyActive
  String
"25008" -> ErrorCode
HeldCursorRequiresSameIsolationLevel
  String
"25003" -> ErrorCode
InappropriateAccessModeForBranchTransaction
  String
"25004" -> ErrorCode
InappropriateIsolationLevelForBranchTransaction
  String
"25005" -> ErrorCode
NoActiveSqlTransactionForBranchTransaction
  String
"25006" -> ErrorCode
ReadOnlySqlTransaction
  String
"25007" -> ErrorCode
SchemaAndDataStatementMixingNotSupported
  String
"25P01" -> ErrorCode
NoActiveSqlTransaction
  String
"25P02" -> ErrorCode
InFailedSqlTransaction
  -- Class 26 — Invalid SQL Statement Name
  String
"26000" -> ErrorCode
InvalidSqlStatementName
  -- Class 27 — Triggered Data Change Violation
  String
"27000" -> ErrorCode
TriggeredDataChangeViolation
  -- Class 28 — Invalid Authorization Specification
  String
"28000" -> ErrorCode
InvalidAuthorizationSpecification
  String
"28P01" -> ErrorCode
InvalidPassword
  -- Class 2B — Dependent Privilege Descriptors Still Exist
  String
"2B000" -> ErrorCode
DependentPrivilegeDescriptorsStillExist
  String
"2BP01" -> ErrorCode
DependentObjectsStillExist
  -- Class 2D — Invalid Transaction Termination
  String
"2D000" -> ErrorCode
InvalidTransactionTermination
  -- Class 2F — SQL Routine Exception
  String
"2F000" -> ErrorCode
SqlRoutineException
  String
"2F005" -> ErrorCode
FunctionExecutedNoReturnStatement
  String
"2F002" -> ErrorCode
ModifyingSqlDataNotPermitted_2F
  String
"2F003" -> ErrorCode
ProhibitedSqlStatementAttempted_2F
  String
"2F004" -> ErrorCode
ReadingSqlDataNotPermitted_2F
  -- Class 34 — Invalid Cursor Name
  String
"34000" -> ErrorCode
InvalidCursorName
  -- Class 38 — External Routine Exception
  String
"38000" -> ErrorCode
ExternalRoutineException
  String
"38001" -> ErrorCode
ContainingSqlNotPermitted
  String
"38002" -> ErrorCode
ModifyingSqlDataNotPermitted_38
  String
"38003" -> ErrorCode
ProhibitedSqlStatementAttempted_38
  String
"38004" -> ErrorCode
ReadingSqlDataNotPermitted_38
  -- Class 39 — External Routine Invocation Exception
  String
"39000" -> ErrorCode
ExternalRoutineInvocationException
  String
"39001" -> ErrorCode
InvalidSqlstateReturned
  String
"39004" -> ErrorCode
NullValueNotAllowed_39
  String
"39P01" -> ErrorCode
TriggerProtocolViolated
  String
"39P02" -> ErrorCode
SrfProtocolViolated
  -- Class 3B — Savepoint Exception
  String
"3B000" -> ErrorCode
SavepointException
  String
"3B001" -> ErrorCode
InvalidSavepointSpecification
  -- Class 3D — Invalid Catalog Name
  String
"3D000" -> ErrorCode
InvalidCatalogName
  -- Class 3F — Invalid Schema Name
  String
"3F000" -> ErrorCode
InvalidSchemaName
  -- Class 40 — Transaction Rollback
  String
"40000" -> ErrorCode
TransactionRollback
  String
"40002" -> ErrorCode
TransactionIntegrityConstraintViolation
  String
"40001" -> ErrorCode
SerializationFailure
  String
"40003" -> ErrorCode
StatementCompletionUnknown
  String
"40P01" -> ErrorCode
DeadlockDetected
  -- Class 42 — Syntax Error or Access Rule Violation
  String
"42000" -> ErrorCode
SyntaxErrorOrAccessRuleViolation
  String
"42601" -> ErrorCode
SyntaxError
  String
"42501" -> ErrorCode
InsufficientPrivilege
  String
"42846" -> ErrorCode
CannotCoerce
  String
"42803" -> ErrorCode
GroupingError
  String
"42P20" -> ErrorCode
WindowingError
  String
"42P19" -> ErrorCode
InvalidRecursion
  String
"42830" -> ErrorCode
InvalidForeignKey
  String
"42602" -> ErrorCode
InvalidName
  String
"42622" -> ErrorCode
NameTooLong
  String
"42939" -> ErrorCode
ReservedName
  String
"42804" -> ErrorCode
DatatypeMismatch
  String
"42P18" -> ErrorCode
IndeterminateDatatype
  String
"42P21" -> ErrorCode
CollationMismatch
  String
"42P22" -> ErrorCode
IndeterminateCollation
  String
"42809" -> ErrorCode
WrongObjectType
  String
"42703" -> ErrorCode
UndefinedColumn
  String
"42883" -> ErrorCode
UndefinedFunction
  String
"42P01" -> ErrorCode
UndefinedTable
  String
"42P02" -> ErrorCode
UndefinedParameter
  String
"42704" -> ErrorCode
UndefinedObject
  String
"42701" -> ErrorCode
DuplicateColumn
  String
"42P03" -> ErrorCode
DuplicateCursor
  String
"42P04" -> ErrorCode
DuplicateDatabase
  String
"42723" -> ErrorCode
DuplicateFunction
  String
"42P05" -> ErrorCode
DuplicatePreparedStatement
  String
"42P06" -> ErrorCode
DuplicateSchema
  String
"42P07" -> ErrorCode
DuplicateTable
  String
"42712" -> ErrorCode
DuplicateAlias
  String
"42710" -> ErrorCode
DuplicateObject
  String
"42702" -> ErrorCode
AmbiguousColumn
  String
"42725" -> ErrorCode
AmbiguousFunction
  String
"42P08" -> ErrorCode
AmbiguousParameter
  String
"42P09" -> ErrorCode
AmbiguousAlias
  String
"42P10" -> ErrorCode
InvalidColumnReference
  String
"42611" -> ErrorCode
InvalidColumnDefinition
  String
"42P11" -> ErrorCode
InvalidCursorDefinition
  String
"42P12" -> ErrorCode
InvalidDatabaseDefinition
  String
"42P13" -> ErrorCode
InvalidFunctionDefinition
  String
"42P14" -> ErrorCode
InvalidPreparedStatementDefinition
  String
"42P15" -> ErrorCode
InvalidSchemaDefinition
  String
"42P16" -> ErrorCode
InvalidTableDefinition
  String
"42P17" -> ErrorCode
InvalidObjectDefinition
  -- Class 44 — WITH CHECK OPTION Violation
  String
"44000" -> ErrorCode
WithCheckOptionViolation
  -- Class 53 — Insufficient Resources
  String
"53000" -> ErrorCode
InsufficientResources
  String
"53100" -> ErrorCode
DiskFull
  String
"53200" -> ErrorCode
OutOfMemory
  String
"53300" -> ErrorCode
TooManyConnections
  String
"53400" -> ErrorCode
ConfigurationLimitExceeded
  -- Class 54 — Program Limit Exceeded
  String
"54000" -> ErrorCode
ProgramLimitExceeded
  String
"54001" -> ErrorCode
StatementTooComplex
  String
"54011" -> ErrorCode
TooManyColumns
  String
"54023" -> ErrorCode
TooManyArguments
  -- Class 55 — Object Not In Prerequisite State
  String
"55000" -> ErrorCode
ObjectNotInPrerequisiteState
  String
"55006" -> ErrorCode
ObjectInUse
  String
"55P02" -> ErrorCode
CantChangeRuntimeParam
  String
"55P03" -> ErrorCode
LockNotAvailable
  -- Class 57 — Operator Intervention
  String
"57000" -> ErrorCode
OperatorIntervention
  String
"57014" -> ErrorCode
QueryCanceled
  String
"57P01" -> ErrorCode
AdminShutdown
  String
"57P02" -> ErrorCode
CrashShutdown
  String
"57P03" -> ErrorCode
CannotConnectNow
  String
"57P04" -> ErrorCode
DatabaseDropped
  -- Class 58 — System Error (errors external to PostgreSQL itself)
  String
"58000" -> ErrorCode
SystemError
  String
"58030" -> ErrorCode
IoError
  String
"58P01" -> ErrorCode
UndefinedFile
  String
"58P02" -> ErrorCode
DuplicateFile
  -- Class F0 — Configuration File Error
  String
"F0000" -> ErrorCode
ConfigFileError
  String
"F0001" -> ErrorCode
LockFileExists
  -- Class HV — Foreign Data Wrapper Error (SQL/MED)
  String
"HV000" -> ErrorCode
FdwError
  String
"HV005" -> ErrorCode
FdwColumnNameNotFound
  String
"HV002" -> ErrorCode
FdwDynamicParameterValueNeeded
  String
"HV010" -> ErrorCode
FdwFunctionSequenceError
  String
"HV021" -> ErrorCode
FdwInconsistentDescriptorInformation
  String
"HV024" -> ErrorCode
FdwInvalidAttributeValue
  String
"HV007" -> ErrorCode
FdwInvalidColumnName
  String
"HV008" -> ErrorCode
FdwInvalidColumnNumber
  String
"HV004" -> ErrorCode
FdwInvalidDataType
  String
"HV006" -> ErrorCode
FdwInvalidDataTypeDescriptors
  String
"HV091" -> ErrorCode
FdwInvalidDescriptorFieldIdentifier
  String
"HV00B" -> ErrorCode
FdwInvalidHandle
  String
"HV00C" -> ErrorCode
FdwInvalidOptionIndex
  String
"HV00D" -> ErrorCode
FdwInvalidOptionName
  String
"HV090" -> ErrorCode
FdwInvalidStringLengthOrBufferLength
  String
"HV00A" -> ErrorCode
FdwInvalidStringFormat
  String
"HV009" -> ErrorCode
FdwInvalidUseOfNullPointer
  String
"HV014" -> ErrorCode
FdwTooManyHandles
  String
"HV001" -> ErrorCode
FdwOutOfMemory
  String
"HV00P" -> ErrorCode
FdwNoSchemas
  String
"HV00J" -> ErrorCode
FdwOptionNameNotFound
  String
"HV00K" -> ErrorCode
FdwReplyHandle
  String
"HV00Q" -> ErrorCode
FdwSchemaNotFound
  String
"HV00R" -> ErrorCode
FdwTableNotFound
  String
"HV00L" -> ErrorCode
FdwUnableToCreateExecution
  String
"HV00M" -> ErrorCode
FdwUnableToCreateReply
  String
"HV00N" -> ErrorCode
FdwUnableToEstablishConnection
  -- Class P0 — PL/pgSQL Error
  String
"P0000" -> ErrorCode
PlpgsqlError
  String
"P0001" -> ErrorCode
RaiseException
  String
"P0002" -> ErrorCode
NoDataFound
  String
"P0003" -> ErrorCode
TooManyRows
  -- Class XX — Internal Error
  String
"XX000" -> ErrorCode
InternalError
  String
"XX001" -> ErrorCode
DataCorrupted
  String
"XX002" -> ErrorCode
IndexCorrupted
  -- Unknown error code
  String
_       -> String -> ErrorCode
UnknownErrorCode String
code