From: Daniele Varrazzo Date: Fri, 11 Feb 2022 22:16:51 +0000 (+0100) Subject: Set up the sqlstate-exception mapping using init_subclass X-Git-Tag: pool-3.1.1~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c7559843babc1af8aeca29dff6869715575b15ec;p=thirdparty%2Fpsycopg.git Set up the sqlstate-exception mapping using init_subclass --- diff --git a/psycopg/psycopg/errors.py b/psycopg/psycopg/errors.py index 66ded14ee..af164b1bc 100644 --- a/psycopg/psycopg/errors.py +++ b/psycopg/psycopg/errors.py @@ -18,12 +18,16 @@ DBAPI-defined Exceptions are defined in the following hierarchy:: # Copyright (C) 2020 The Psycopg Team -from typing import Any, Callable, Dict, Optional, Sequence, Tuple, Type, Union +from typing import Any, Dict, Optional, Sequence, Tuple, Type, Union from typing import cast from psycopg.pq.abc import PGresult from psycopg.pq._enums import DiagnosticField +ErrorInfo = Union[None, PGresult, Dict[int, Optional[bytes]]] + +_sqlcodes: Dict[str, "Type[Error]"] = {} + class Warning(Exception): """ @@ -35,9 +39,6 @@ class Warning(Exception): __module__ = "psycopg" -ErrorInfo = Union[None, PGresult, Dict[int, Optional[bytes]]] - - class Error(Exception): """ Base exception for all the errors psycopg will raise. @@ -105,6 +106,13 @@ class DatabaseError(Error): __module__ = "psycopg" + def __init_subclass__(cls, code: Optional[str] = None, name: Optional[str] = None): + if code: + _sqlcodes[code] = cls + cls.sqlstate = code + if name: + _sqlcodes[name] = cls + class DataError(DatabaseError): """ @@ -348,1395 +356,1387 @@ _base_exc_map = { } -def sqlcode(const_name: str, code: str) -> Callable[[Type[Error]], Type[Error]]: - """ - Decorator to associate an exception class to a sqlstate. - """ - - def sqlcode_(cls: Type[Error]) -> Type[Error]: - _sqlcodes[code] = _sqlcodes[const_name] = cls - cls.sqlstate = code - return cls - - return sqlcode_ - - -_sqlcodes: Dict[str, Type[Error]] = {} - - # Classes generated by tools/update_errors.py # autogenerated: start # Class 02 - No Data (this is also a warning class per the SQL standard) -@sqlcode("NO_DATA", "02000") -class NoData(DatabaseError): +class NoData(DatabaseError, code="02000", name="NO_DATA"): pass -@sqlcode("NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED", "02001") -class NoAdditionalDynamicResultSetsReturned(DatabaseError): +class NoAdditionalDynamicResultSetsReturned( + DatabaseError, code="02001", name="NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED" +): pass # Class 03 - SQL Statement Not Yet Complete -@sqlcode("SQL_STATEMENT_NOT_YET_COMPLETE", "03000") -class SqlStatementNotYetComplete(DatabaseError): +class SqlStatementNotYetComplete( + DatabaseError, code="03000", name="SQL_STATEMENT_NOT_YET_COMPLETE" +): pass # Class 08 - Connection Exception -@sqlcode("CONNECTION_EXCEPTION", "08000") -class ConnectionException(OperationalError): +class ConnectionException(OperationalError, code="08000", name="CONNECTION_EXCEPTION"): pass -@sqlcode("SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION", "08001") -class SqlclientUnableToEstablishSqlconnection(OperationalError): +class SqlclientUnableToEstablishSqlconnection( + OperationalError, code="08001", name="SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION" +): pass -@sqlcode("CONNECTION_DOES_NOT_EXIST", "08003") -class ConnectionDoesNotExist(OperationalError): +class ConnectionDoesNotExist( + OperationalError, code="08003", name="CONNECTION_DOES_NOT_EXIST" +): pass -@sqlcode("SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION", "08004") -class SqlserverRejectedEstablishmentOfSqlconnection(OperationalError): +class SqlserverRejectedEstablishmentOfSqlconnection( + OperationalError, + code="08004", + name="SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION", +): pass -@sqlcode("CONNECTION_FAILURE", "08006") -class ConnectionFailure(OperationalError): +class ConnectionFailure(OperationalError, code="08006", name="CONNECTION_FAILURE"): pass -@sqlcode("TRANSACTION_RESOLUTION_UNKNOWN", "08007") -class TransactionResolutionUnknown(OperationalError): +class TransactionResolutionUnknown( + OperationalError, code="08007", name="TRANSACTION_RESOLUTION_UNKNOWN" +): pass -@sqlcode("PROTOCOL_VIOLATION", "08P01") -class ProtocolViolation(OperationalError): +class ProtocolViolation(OperationalError, code="08P01", name="PROTOCOL_VIOLATION"): pass # Class 09 - Triggered Action Exception -@sqlcode("TRIGGERED_ACTION_EXCEPTION", "09000") -class TriggeredActionException(DatabaseError): +class TriggeredActionException( + DatabaseError, code="09000", name="TRIGGERED_ACTION_EXCEPTION" +): pass # Class 0A - Feature Not Supported -@sqlcode("FEATURE_NOT_SUPPORTED", "0A000") -class FeatureNotSupported(NotSupportedError): +class FeatureNotSupported( + NotSupportedError, code="0A000", name="FEATURE_NOT_SUPPORTED" +): pass # Class 0B - Invalid Transaction Initiation -@sqlcode("INVALID_TRANSACTION_INITIATION", "0B000") -class InvalidTransactionInitiation(DatabaseError): +class InvalidTransactionInitiation( + DatabaseError, code="0B000", name="INVALID_TRANSACTION_INITIATION" +): pass # Class 0F - Locator Exception -@sqlcode("LOCATOR_EXCEPTION", "0F000") -class LocatorException(DatabaseError): +class LocatorException(DatabaseError, code="0F000", name="LOCATOR_EXCEPTION"): pass -@sqlcode("INVALID_LOCATOR_SPECIFICATION", "0F001") -class InvalidLocatorSpecification(DatabaseError): +class InvalidLocatorSpecification( + DatabaseError, code="0F001", name="INVALID_LOCATOR_SPECIFICATION" +): pass # Class 0L - Invalid Grantor -@sqlcode("INVALID_GRANTOR", "0L000") -class InvalidGrantor(DatabaseError): +class InvalidGrantor(DatabaseError, code="0L000", name="INVALID_GRANTOR"): pass -@sqlcode("INVALID_GRANT_OPERATION", "0LP01") -class InvalidGrantOperation(DatabaseError): +class InvalidGrantOperation( + DatabaseError, code="0LP01", name="INVALID_GRANT_OPERATION" +): pass # Class 0P - Invalid Role Specification -@sqlcode("INVALID_ROLE_SPECIFICATION", "0P000") -class InvalidRoleSpecification(DatabaseError): +class InvalidRoleSpecification( + DatabaseError, code="0P000", name="INVALID_ROLE_SPECIFICATION" +): pass # Class 0Z - Diagnostics Exception -@sqlcode("DIAGNOSTICS_EXCEPTION", "0Z000") -class DiagnosticsException(DatabaseError): +class DiagnosticsException(DatabaseError, code="0Z000", name="DIAGNOSTICS_EXCEPTION"): pass -@sqlcode("STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER", "0Z002") -class StackedDiagnosticsAccessedWithoutActiveHandler(DatabaseError): +class StackedDiagnosticsAccessedWithoutActiveHandler( + DatabaseError, + code="0Z002", + name="STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER", +): pass # Class 20 - Case Not Found -@sqlcode("CASE_NOT_FOUND", "20000") -class CaseNotFound(ProgrammingError): +class CaseNotFound(ProgrammingError, code="20000", name="CASE_NOT_FOUND"): pass # Class 21 - Cardinality Violation -@sqlcode("CARDINALITY_VIOLATION", "21000") -class CardinalityViolation(ProgrammingError): +class CardinalityViolation( + ProgrammingError, code="21000", name="CARDINALITY_VIOLATION" +): pass # Class 22 - Data Exception -@sqlcode("DATA_EXCEPTION", "22000") -class DataException(DataError): +class DataException(DataError, code="22000", name="DATA_EXCEPTION"): pass -@sqlcode("STRING_DATA_RIGHT_TRUNCATION", "22001") -class StringDataRightTruncation(DataError): +class StringDataRightTruncation( + DataError, code="22001", name="STRING_DATA_RIGHT_TRUNCATION" +): pass -@sqlcode("NULL_VALUE_NO_INDICATOR_PARAMETER", "22002") -class NullValueNoIndicatorParameter(DataError): +class NullValueNoIndicatorParameter( + DataError, code="22002", name="NULL_VALUE_NO_INDICATOR_PARAMETER" +): pass -@sqlcode("NUMERIC_VALUE_OUT_OF_RANGE", "22003") -class NumericValueOutOfRange(DataError): +class NumericValueOutOfRange( + DataError, code="22003", name="NUMERIC_VALUE_OUT_OF_RANGE" +): pass -@sqlcode("NULL_VALUE_NOT_ALLOWED", "22004") -class NullValueNotAllowed(DataError): +class NullValueNotAllowed(DataError, code="22004", name="NULL_VALUE_NOT_ALLOWED"): pass -@sqlcode("ERROR_IN_ASSIGNMENT", "22005") -class ErrorInAssignment(DataError): +class ErrorInAssignment(DataError, code="22005", name="ERROR_IN_ASSIGNMENT"): pass -@sqlcode("INVALID_DATETIME_FORMAT", "22007") -class InvalidDatetimeFormat(DataError): +class InvalidDatetimeFormat(DataError, code="22007", name="INVALID_DATETIME_FORMAT"): pass -@sqlcode("DATETIME_FIELD_OVERFLOW", "22008") -class DatetimeFieldOverflow(DataError): +class DatetimeFieldOverflow(DataError, code="22008", name="DATETIME_FIELD_OVERFLOW"): pass -@sqlcode("INVALID_TIME_ZONE_DISPLACEMENT_VALUE", "22009") -class InvalidTimeZoneDisplacementValue(DataError): +class InvalidTimeZoneDisplacementValue( + DataError, code="22009", name="INVALID_TIME_ZONE_DISPLACEMENT_VALUE" +): pass -@sqlcode("ESCAPE_CHARACTER_CONFLICT", "2200B") -class EscapeCharacterConflict(DataError): +class EscapeCharacterConflict( + DataError, code="2200B", name="ESCAPE_CHARACTER_CONFLICT" +): pass -@sqlcode("INVALID_USE_OF_ESCAPE_CHARACTER", "2200C") -class InvalidUseOfEscapeCharacter(DataError): +class InvalidUseOfEscapeCharacter( + DataError, code="2200C", name="INVALID_USE_OF_ESCAPE_CHARACTER" +): pass -@sqlcode("INVALID_ESCAPE_OCTET", "2200D") -class InvalidEscapeOctet(DataError): +class InvalidEscapeOctet(DataError, code="2200D", name="INVALID_ESCAPE_OCTET"): pass -@sqlcode("ZERO_LENGTH_CHARACTER_STRING", "2200F") -class ZeroLengthCharacterString(DataError): +class ZeroLengthCharacterString( + DataError, code="2200F", name="ZERO_LENGTH_CHARACTER_STRING" +): pass -@sqlcode("MOST_SPECIFIC_TYPE_MISMATCH", "2200G") -class MostSpecificTypeMismatch(DataError): +class MostSpecificTypeMismatch( + DataError, code="2200G", name="MOST_SPECIFIC_TYPE_MISMATCH" +): pass -@sqlcode("SEQUENCE_GENERATOR_LIMIT_EXCEEDED", "2200H") -class SequenceGeneratorLimitExceeded(DataError): +class SequenceGeneratorLimitExceeded( + DataError, code="2200H", name="SEQUENCE_GENERATOR_LIMIT_EXCEEDED" +): pass -@sqlcode("NOT_AN_XML_DOCUMENT", "2200L") -class NotAnXmlDocument(DataError): +class NotAnXmlDocument(DataError, code="2200L", name="NOT_AN_XML_DOCUMENT"): pass -@sqlcode("INVALID_XML_DOCUMENT", "2200M") -class InvalidXmlDocument(DataError): +class InvalidXmlDocument(DataError, code="2200M", name="INVALID_XML_DOCUMENT"): pass -@sqlcode("INVALID_XML_CONTENT", "2200N") -class InvalidXmlContent(DataError): +class InvalidXmlContent(DataError, code="2200N", name="INVALID_XML_CONTENT"): pass -@sqlcode("INVALID_XML_COMMENT", "2200S") -class InvalidXmlComment(DataError): +class InvalidXmlComment(DataError, code="2200S", name="INVALID_XML_COMMENT"): pass -@sqlcode("INVALID_XML_PROCESSING_INSTRUCTION", "2200T") -class InvalidXmlProcessingInstruction(DataError): +class InvalidXmlProcessingInstruction( + DataError, code="2200T", name="INVALID_XML_PROCESSING_INSTRUCTION" +): pass -@sqlcode("INVALID_INDICATOR_PARAMETER_VALUE", "22010") -class InvalidIndicatorParameterValue(DataError): +class InvalidIndicatorParameterValue( + DataError, code="22010", name="INVALID_INDICATOR_PARAMETER_VALUE" +): pass -@sqlcode("SUBSTRING_ERROR", "22011") -class SubstringError(DataError): +class SubstringError(DataError, code="22011", name="SUBSTRING_ERROR"): pass -@sqlcode("DIVISION_BY_ZERO", "22012") -class DivisionByZero(DataError): +class DivisionByZero(DataError, code="22012", name="DIVISION_BY_ZERO"): pass -@sqlcode("INVALID_PRECEDING_OR_FOLLOWING_SIZE", "22013") -class InvalidPrecedingOrFollowingSize(DataError): +class InvalidPrecedingOrFollowingSize( + DataError, code="22013", name="INVALID_PRECEDING_OR_FOLLOWING_SIZE" +): pass -@sqlcode("INVALID_ARGUMENT_FOR_NTILE_FUNCTION", "22014") -class InvalidArgumentForNtileFunction(DataError): +class InvalidArgumentForNtileFunction( + DataError, code="22014", name="INVALID_ARGUMENT_FOR_NTILE_FUNCTION" +): pass -@sqlcode("INTERVAL_FIELD_OVERFLOW", "22015") -class IntervalFieldOverflow(DataError): +class IntervalFieldOverflow(DataError, code="22015", name="INTERVAL_FIELD_OVERFLOW"): pass -@sqlcode("INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION", "22016") -class InvalidArgumentForNthValueFunction(DataError): +class InvalidArgumentForNthValueFunction( + DataError, code="22016", name="INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION" +): pass -@sqlcode("INVALID_CHARACTER_VALUE_FOR_CAST", "22018") -class InvalidCharacterValueForCast(DataError): +class InvalidCharacterValueForCast( + DataError, code="22018", name="INVALID_CHARACTER_VALUE_FOR_CAST" +): pass -@sqlcode("INVALID_ESCAPE_CHARACTER", "22019") -class InvalidEscapeCharacter(DataError): +class InvalidEscapeCharacter(DataError, code="22019", name="INVALID_ESCAPE_CHARACTER"): pass -@sqlcode("INVALID_REGULAR_EXPRESSION", "2201B") -class InvalidRegularExpression(DataError): +class InvalidRegularExpression( + DataError, code="2201B", name="INVALID_REGULAR_EXPRESSION" +): pass -@sqlcode("INVALID_ARGUMENT_FOR_LOGARITHM", "2201E") -class InvalidArgumentForLogarithm(DataError): +class InvalidArgumentForLogarithm( + DataError, code="2201E", name="INVALID_ARGUMENT_FOR_LOGARITHM" +): pass -@sqlcode("INVALID_ARGUMENT_FOR_POWER_FUNCTION", "2201F") -class InvalidArgumentForPowerFunction(DataError): +class InvalidArgumentForPowerFunction( + DataError, code="2201F", name="INVALID_ARGUMENT_FOR_POWER_FUNCTION" +): pass -@sqlcode("INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION", "2201G") -class InvalidArgumentForWidthBucketFunction(DataError): +class InvalidArgumentForWidthBucketFunction( + DataError, code="2201G", name="INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION" +): pass -@sqlcode("INVALID_ROW_COUNT_IN_LIMIT_CLAUSE", "2201W") -class InvalidRowCountInLimitClause(DataError): +class InvalidRowCountInLimitClause( + DataError, code="2201W", name="INVALID_ROW_COUNT_IN_LIMIT_CLAUSE" +): pass -@sqlcode("INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE", "2201X") -class InvalidRowCountInResultOffsetClause(DataError): +class InvalidRowCountInResultOffsetClause( + DataError, code="2201X", name="INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE" +): pass -@sqlcode("CHARACTER_NOT_IN_REPERTOIRE", "22021") -class CharacterNotInRepertoire(DataError): +class CharacterNotInRepertoire( + DataError, code="22021", name="CHARACTER_NOT_IN_REPERTOIRE" +): pass -@sqlcode("INDICATOR_OVERFLOW", "22022") -class IndicatorOverflow(DataError): +class IndicatorOverflow(DataError, code="22022", name="INDICATOR_OVERFLOW"): pass -@sqlcode("INVALID_PARAMETER_VALUE", "22023") -class InvalidParameterValue(DataError): +class InvalidParameterValue(DataError, code="22023", name="INVALID_PARAMETER_VALUE"): pass -@sqlcode("UNTERMINATED_C_STRING", "22024") -class UnterminatedCString(DataError): +class UnterminatedCString(DataError, code="22024", name="UNTERMINATED_C_STRING"): pass -@sqlcode("INVALID_ESCAPE_SEQUENCE", "22025") -class InvalidEscapeSequence(DataError): +class InvalidEscapeSequence(DataError, code="22025", name="INVALID_ESCAPE_SEQUENCE"): pass -@sqlcode("STRING_DATA_LENGTH_MISMATCH", "22026") -class StringDataLengthMismatch(DataError): +class StringDataLengthMismatch( + DataError, code="22026", name="STRING_DATA_LENGTH_MISMATCH" +): pass -@sqlcode("TRIM_ERROR", "22027") -class TrimError(DataError): +class TrimError(DataError, code="22027", name="TRIM_ERROR"): pass -@sqlcode("ARRAY_SUBSCRIPT_ERROR", "2202E") -class ArraySubscriptError(DataError): +class ArraySubscriptError(DataError, code="2202E", name="ARRAY_SUBSCRIPT_ERROR"): pass -@sqlcode("INVALID_TABLESAMPLE_REPEAT", "2202G") -class InvalidTablesampleRepeat(DataError): +class InvalidTablesampleRepeat( + DataError, code="2202G", name="INVALID_TABLESAMPLE_REPEAT" +): pass -@sqlcode("INVALID_TABLESAMPLE_ARGUMENT", "2202H") -class InvalidTablesampleArgument(DataError): +class InvalidTablesampleArgument( + DataError, code="2202H", name="INVALID_TABLESAMPLE_ARGUMENT" +): pass -@sqlcode("DUPLICATE_JSON_OBJECT_KEY_VALUE", "22030") -class DuplicateJsonObjectKeyValue(DataError): +class DuplicateJsonObjectKeyValue( + DataError, code="22030", name="DUPLICATE_JSON_OBJECT_KEY_VALUE" +): pass -@sqlcode("INVALID_ARGUMENT_FOR_SQL_JSON_DATETIME_FUNCTION", "22031") -class InvalidArgumentForSqlJsonDatetimeFunction(DataError): +class InvalidArgumentForSqlJsonDatetimeFunction( + DataError, code="22031", name="INVALID_ARGUMENT_FOR_SQL_JSON_DATETIME_FUNCTION" +): pass -@sqlcode("INVALID_JSON_TEXT", "22032") -class InvalidJsonText(DataError): +class InvalidJsonText(DataError, code="22032", name="INVALID_JSON_TEXT"): pass -@sqlcode("INVALID_SQL_JSON_SUBSCRIPT", "22033") -class InvalidSqlJsonSubscript(DataError): +class InvalidSqlJsonSubscript( + DataError, code="22033", name="INVALID_SQL_JSON_SUBSCRIPT" +): pass -@sqlcode("MORE_THAN_ONE_SQL_JSON_ITEM", "22034") -class MoreThanOneSqlJsonItem(DataError): +class MoreThanOneSqlJsonItem( + DataError, code="22034", name="MORE_THAN_ONE_SQL_JSON_ITEM" +): pass -@sqlcode("NO_SQL_JSON_ITEM", "22035") -class NoSqlJsonItem(DataError): +class NoSqlJsonItem(DataError, code="22035", name="NO_SQL_JSON_ITEM"): pass -@sqlcode("NON_NUMERIC_SQL_JSON_ITEM", "22036") -class NonNumericSqlJsonItem(DataError): +class NonNumericSqlJsonItem(DataError, code="22036", name="NON_NUMERIC_SQL_JSON_ITEM"): pass -@sqlcode("NON_UNIQUE_KEYS_IN_A_JSON_OBJECT", "22037") -class NonUniqueKeysInAJsonObject(DataError): +class NonUniqueKeysInAJsonObject( + DataError, code="22037", name="NON_UNIQUE_KEYS_IN_A_JSON_OBJECT" +): pass -@sqlcode("SINGLETON_SQL_JSON_ITEM_REQUIRED", "22038") -class SingletonSqlJsonItemRequired(DataError): +class SingletonSqlJsonItemRequired( + DataError, code="22038", name="SINGLETON_SQL_JSON_ITEM_REQUIRED" +): pass -@sqlcode("SQL_JSON_ARRAY_NOT_FOUND", "22039") -class SqlJsonArrayNotFound(DataError): +class SqlJsonArrayNotFound(DataError, code="22039", name="SQL_JSON_ARRAY_NOT_FOUND"): pass -@sqlcode("SQL_JSON_MEMBER_NOT_FOUND", "2203A") -class SqlJsonMemberNotFound(DataError): +class SqlJsonMemberNotFound(DataError, code="2203A", name="SQL_JSON_MEMBER_NOT_FOUND"): pass -@sqlcode("SQL_JSON_NUMBER_NOT_FOUND", "2203B") -class SqlJsonNumberNotFound(DataError): +class SqlJsonNumberNotFound(DataError, code="2203B", name="SQL_JSON_NUMBER_NOT_FOUND"): pass -@sqlcode("SQL_JSON_OBJECT_NOT_FOUND", "2203C") -class SqlJsonObjectNotFound(DataError): +class SqlJsonObjectNotFound(DataError, code="2203C", name="SQL_JSON_OBJECT_NOT_FOUND"): pass -@sqlcode("TOO_MANY_JSON_ARRAY_ELEMENTS", "2203D") -class TooManyJsonArrayElements(DataError): +class TooManyJsonArrayElements( + DataError, code="2203D", name="TOO_MANY_JSON_ARRAY_ELEMENTS" +): pass -@sqlcode("TOO_MANY_JSON_OBJECT_MEMBERS", "2203E") -class TooManyJsonObjectMembers(DataError): +class TooManyJsonObjectMembers( + DataError, code="2203E", name="TOO_MANY_JSON_OBJECT_MEMBERS" +): pass -@sqlcode("SQL_JSON_SCALAR_REQUIRED", "2203F") -class SqlJsonScalarRequired(DataError): +class SqlJsonScalarRequired(DataError, code="2203F", name="SQL_JSON_SCALAR_REQUIRED"): pass -@sqlcode("FLOATING_POINT_EXCEPTION", "22P01") -class FloatingPointException(DataError): +class FloatingPointException(DataError, code="22P01", name="FLOATING_POINT_EXCEPTION"): pass -@sqlcode("INVALID_TEXT_REPRESENTATION", "22P02") -class InvalidTextRepresentation(DataError): +class InvalidTextRepresentation( + DataError, code="22P02", name="INVALID_TEXT_REPRESENTATION" +): pass -@sqlcode("INVALID_BINARY_REPRESENTATION", "22P03") -class InvalidBinaryRepresentation(DataError): +class InvalidBinaryRepresentation( + DataError, code="22P03", name="INVALID_BINARY_REPRESENTATION" +): pass -@sqlcode("BAD_COPY_FILE_FORMAT", "22P04") -class BadCopyFileFormat(DataError): +class BadCopyFileFormat(DataError, code="22P04", name="BAD_COPY_FILE_FORMAT"): pass -@sqlcode("UNTRANSLATABLE_CHARACTER", "22P05") -class UntranslatableCharacter(DataError): +class UntranslatableCharacter(DataError, code="22P05", name="UNTRANSLATABLE_CHARACTER"): pass -@sqlcode("NONSTANDARD_USE_OF_ESCAPE_CHARACTER", "22P06") -class NonstandardUseOfEscapeCharacter(DataError): +class NonstandardUseOfEscapeCharacter( + DataError, code="22P06", name="NONSTANDARD_USE_OF_ESCAPE_CHARACTER" +): pass # Class 23 - Integrity Constraint Violation -@sqlcode("INTEGRITY_CONSTRAINT_VIOLATION", "23000") -class IntegrityConstraintViolation(IntegrityError): +class IntegrityConstraintViolation( + IntegrityError, code="23000", name="INTEGRITY_CONSTRAINT_VIOLATION" +): pass -@sqlcode("RESTRICT_VIOLATION", "23001") -class RestrictViolation(IntegrityError): +class RestrictViolation(IntegrityError, code="23001", name="RESTRICT_VIOLATION"): pass -@sqlcode("NOT_NULL_VIOLATION", "23502") -class NotNullViolation(IntegrityError): +class NotNullViolation(IntegrityError, code="23502", name="NOT_NULL_VIOLATION"): pass -@sqlcode("FOREIGN_KEY_VIOLATION", "23503") -class ForeignKeyViolation(IntegrityError): +class ForeignKeyViolation(IntegrityError, code="23503", name="FOREIGN_KEY_VIOLATION"): pass -@sqlcode("UNIQUE_VIOLATION", "23505") -class UniqueViolation(IntegrityError): +class UniqueViolation(IntegrityError, code="23505", name="UNIQUE_VIOLATION"): pass -@sqlcode("CHECK_VIOLATION", "23514") -class CheckViolation(IntegrityError): +class CheckViolation(IntegrityError, code="23514", name="CHECK_VIOLATION"): pass -@sqlcode("EXCLUSION_VIOLATION", "23P01") -class ExclusionViolation(IntegrityError): +class ExclusionViolation(IntegrityError, code="23P01", name="EXCLUSION_VIOLATION"): pass # Class 24 - Invalid Cursor State -@sqlcode("INVALID_CURSOR_STATE", "24000") -class InvalidCursorState(InternalError): +class InvalidCursorState(InternalError, code="24000", name="INVALID_CURSOR_STATE"): pass # Class 25 - Invalid Transaction State -@sqlcode("INVALID_TRANSACTION_STATE", "25000") -class InvalidTransactionState(InternalError): +class InvalidTransactionState( + InternalError, code="25000", name="INVALID_TRANSACTION_STATE" +): pass -@sqlcode("ACTIVE_SQL_TRANSACTION", "25001") -class ActiveSqlTransaction(InternalError): +class ActiveSqlTransaction(InternalError, code="25001", name="ACTIVE_SQL_TRANSACTION"): pass -@sqlcode("BRANCH_TRANSACTION_ALREADY_ACTIVE", "25002") -class BranchTransactionAlreadyActive(InternalError): +class BranchTransactionAlreadyActive( + InternalError, code="25002", name="BRANCH_TRANSACTION_ALREADY_ACTIVE" +): pass -@sqlcode("INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION", "25003") -class InappropriateAccessModeForBranchTransaction(InternalError): +class InappropriateAccessModeForBranchTransaction( + InternalError, code="25003", name="INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION" +): pass -@sqlcode("INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION", "25004") -class InappropriateIsolationLevelForBranchTransaction(InternalError): +class InappropriateIsolationLevelForBranchTransaction( + InternalError, + code="25004", + name="INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION", +): pass -@sqlcode("NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION", "25005") -class NoActiveSqlTransactionForBranchTransaction(InternalError): +class NoActiveSqlTransactionForBranchTransaction( + InternalError, code="25005", name="NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION" +): pass -@sqlcode("READ_ONLY_SQL_TRANSACTION", "25006") -class ReadOnlySqlTransaction(InternalError): +class ReadOnlySqlTransaction( + InternalError, code="25006", name="READ_ONLY_SQL_TRANSACTION" +): pass -@sqlcode("SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED", "25007") -class SchemaAndDataStatementMixingNotSupported(InternalError): +class SchemaAndDataStatementMixingNotSupported( + InternalError, code="25007", name="SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED" +): pass -@sqlcode("HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL", "25008") -class HeldCursorRequiresSameIsolationLevel(InternalError): +class HeldCursorRequiresSameIsolationLevel( + InternalError, code="25008", name="HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL" +): pass -@sqlcode("NO_ACTIVE_SQL_TRANSACTION", "25P01") -class NoActiveSqlTransaction(InternalError): +class NoActiveSqlTransaction( + InternalError, code="25P01", name="NO_ACTIVE_SQL_TRANSACTION" +): pass -@sqlcode("IN_FAILED_SQL_TRANSACTION", "25P02") -class InFailedSqlTransaction(InternalError): +class InFailedSqlTransaction( + InternalError, code="25P02", name="IN_FAILED_SQL_TRANSACTION" +): pass -@sqlcode("IDLE_IN_TRANSACTION_SESSION_TIMEOUT", "25P03") -class IdleInTransactionSessionTimeout(InternalError): +class IdleInTransactionSessionTimeout( + InternalError, code="25P03", name="IDLE_IN_TRANSACTION_SESSION_TIMEOUT" +): pass # Class 26 - Invalid SQL Statement Name -@sqlcode("INVALID_SQL_STATEMENT_NAME", "26000") -class InvalidSqlStatementName(ProgrammingError): +class InvalidSqlStatementName( + ProgrammingError, code="26000", name="INVALID_SQL_STATEMENT_NAME" +): pass # Class 27 - Triggered Data Change Violation -@sqlcode("TRIGGERED_DATA_CHANGE_VIOLATION", "27000") -class TriggeredDataChangeViolation(OperationalError): +class TriggeredDataChangeViolation( + OperationalError, code="27000", name="TRIGGERED_DATA_CHANGE_VIOLATION" +): pass # Class 28 - Invalid Authorization Specification -@sqlcode("INVALID_AUTHORIZATION_SPECIFICATION", "28000") -class InvalidAuthorizationSpecification(OperationalError): +class InvalidAuthorizationSpecification( + OperationalError, code="28000", name="INVALID_AUTHORIZATION_SPECIFICATION" +): pass -@sqlcode("INVALID_PASSWORD", "28P01") -class InvalidPassword(OperationalError): +class InvalidPassword(OperationalError, code="28P01", name="INVALID_PASSWORD"): pass # Class 2B - Dependent Privilege Descriptors Still Exist -@sqlcode("DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST", "2B000") -class DependentPrivilegeDescriptorsStillExist(InternalError): +class DependentPrivilegeDescriptorsStillExist( + InternalError, code="2B000", name="DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST" +): pass -@sqlcode("DEPENDENT_OBJECTS_STILL_EXIST", "2BP01") -class DependentObjectsStillExist(InternalError): +class DependentObjectsStillExist( + InternalError, code="2BP01", name="DEPENDENT_OBJECTS_STILL_EXIST" +): pass # Class 2D - Invalid Transaction Termination -@sqlcode("INVALID_TRANSACTION_TERMINATION", "2D000") -class InvalidTransactionTermination(InternalError): +class InvalidTransactionTermination( + InternalError, code="2D000", name="INVALID_TRANSACTION_TERMINATION" +): pass # Class 2F - SQL Routine Exception -@sqlcode("SQL_ROUTINE_EXCEPTION", "2F000") -class SqlRoutineException(OperationalError): +class SqlRoutineException(OperationalError, code="2F000", name="SQL_ROUTINE_EXCEPTION"): pass -@sqlcode("MODIFYING_SQL_DATA_NOT_PERMITTED", "2F002") -class ModifyingSqlDataNotPermitted(OperationalError): +class ModifyingSqlDataNotPermitted( + OperationalError, code="2F002", name="MODIFYING_SQL_DATA_NOT_PERMITTED" +): pass -@sqlcode("PROHIBITED_SQL_STATEMENT_ATTEMPTED", "2F003") -class ProhibitedSqlStatementAttempted(OperationalError): +class ProhibitedSqlStatementAttempted( + OperationalError, code="2F003", name="PROHIBITED_SQL_STATEMENT_ATTEMPTED" +): pass -@sqlcode("READING_SQL_DATA_NOT_PERMITTED", "2F004") -class ReadingSqlDataNotPermitted(OperationalError): +class ReadingSqlDataNotPermitted( + OperationalError, code="2F004", name="READING_SQL_DATA_NOT_PERMITTED" +): pass -@sqlcode("FUNCTION_EXECUTED_NO_RETURN_STATEMENT", "2F005") -class FunctionExecutedNoReturnStatement(OperationalError): +class FunctionExecutedNoReturnStatement( + OperationalError, code="2F005", name="FUNCTION_EXECUTED_NO_RETURN_STATEMENT" +): pass # Class 34 - Invalid Cursor Name -@sqlcode("INVALID_CURSOR_NAME", "34000") -class InvalidCursorName(ProgrammingError): +class InvalidCursorName(ProgrammingError, code="34000", name="INVALID_CURSOR_NAME"): pass # Class 38 - External Routine Exception -@sqlcode("EXTERNAL_ROUTINE_EXCEPTION", "38000") -class ExternalRoutineException(OperationalError): +class ExternalRoutineException( + OperationalError, code="38000", name="EXTERNAL_ROUTINE_EXCEPTION" +): pass -@sqlcode("CONTAINING_SQL_NOT_PERMITTED", "38001") -class ContainingSqlNotPermitted(OperationalError): +class ContainingSqlNotPermitted( + OperationalError, code="38001", name="CONTAINING_SQL_NOT_PERMITTED" +): pass -@sqlcode("MODIFYING_SQL_DATA_NOT_PERMITTED", "38002") -class ModifyingSqlDataNotPermittedExt(OperationalError): +class ModifyingSqlDataNotPermittedExt( + OperationalError, code="38002", name="MODIFYING_SQL_DATA_NOT_PERMITTED" +): pass -@sqlcode("PROHIBITED_SQL_STATEMENT_ATTEMPTED", "38003") -class ProhibitedSqlStatementAttemptedExt(OperationalError): +class ProhibitedSqlStatementAttemptedExt( + OperationalError, code="38003", name="PROHIBITED_SQL_STATEMENT_ATTEMPTED" +): pass -@sqlcode("READING_SQL_DATA_NOT_PERMITTED", "38004") -class ReadingSqlDataNotPermittedExt(OperationalError): +class ReadingSqlDataNotPermittedExt( + OperationalError, code="38004", name="READING_SQL_DATA_NOT_PERMITTED" +): pass # Class 39 - External Routine Invocation Exception -@sqlcode("EXTERNAL_ROUTINE_INVOCATION_EXCEPTION", "39000") -class ExternalRoutineInvocationException(OperationalError): +class ExternalRoutineInvocationException( + OperationalError, code="39000", name="EXTERNAL_ROUTINE_INVOCATION_EXCEPTION" +): pass -@sqlcode("INVALID_SQLSTATE_RETURNED", "39001") -class InvalidSqlstateReturned(OperationalError): +class InvalidSqlstateReturned( + OperationalError, code="39001", name="INVALID_SQLSTATE_RETURNED" +): pass -@sqlcode("NULL_VALUE_NOT_ALLOWED", "39004") -class NullValueNotAllowedExt(OperationalError): +class NullValueNotAllowedExt( + OperationalError, code="39004", name="NULL_VALUE_NOT_ALLOWED" +): pass -@sqlcode("TRIGGER_PROTOCOL_VIOLATED", "39P01") -class TriggerProtocolViolated(OperationalError): +class TriggerProtocolViolated( + OperationalError, code="39P01", name="TRIGGER_PROTOCOL_VIOLATED" +): pass -@sqlcode("SRF_PROTOCOL_VIOLATED", "39P02") -class SrfProtocolViolated(OperationalError): +class SrfProtocolViolated(OperationalError, code="39P02", name="SRF_PROTOCOL_VIOLATED"): pass -@sqlcode("EVENT_TRIGGER_PROTOCOL_VIOLATED", "39P03") -class EventTriggerProtocolViolated(OperationalError): +class EventTriggerProtocolViolated( + OperationalError, code="39P03", name="EVENT_TRIGGER_PROTOCOL_VIOLATED" +): pass # Class 3B - Savepoint Exception -@sqlcode("SAVEPOINT_EXCEPTION", "3B000") -class SavepointException(OperationalError): +class SavepointException(OperationalError, code="3B000", name="SAVEPOINT_EXCEPTION"): pass -@sqlcode("INVALID_SAVEPOINT_SPECIFICATION", "3B001") -class InvalidSavepointSpecification(OperationalError): +class InvalidSavepointSpecification( + OperationalError, code="3B001", name="INVALID_SAVEPOINT_SPECIFICATION" +): pass # Class 3D - Invalid Catalog Name -@sqlcode("INVALID_CATALOG_NAME", "3D000") -class InvalidCatalogName(ProgrammingError): +class InvalidCatalogName(ProgrammingError, code="3D000", name="INVALID_CATALOG_NAME"): pass # Class 3F - Invalid Schema Name -@sqlcode("INVALID_SCHEMA_NAME", "3F000") -class InvalidSchemaName(ProgrammingError): +class InvalidSchemaName(ProgrammingError, code="3F000", name="INVALID_SCHEMA_NAME"): pass # Class 40 - Transaction Rollback -@sqlcode("TRANSACTION_ROLLBACK", "40000") -class TransactionRollback(OperationalError): +class TransactionRollback(OperationalError, code="40000", name="TRANSACTION_ROLLBACK"): pass -@sqlcode("SERIALIZATION_FAILURE", "40001") -class SerializationFailure(OperationalError): +class SerializationFailure( + OperationalError, code="40001", name="SERIALIZATION_FAILURE" +): pass -@sqlcode("TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION", "40002") -class TransactionIntegrityConstraintViolation(OperationalError): +class TransactionIntegrityConstraintViolation( + OperationalError, code="40002", name="TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION" +): pass -@sqlcode("STATEMENT_COMPLETION_UNKNOWN", "40003") -class StatementCompletionUnknown(OperationalError): +class StatementCompletionUnknown( + OperationalError, code="40003", name="STATEMENT_COMPLETION_UNKNOWN" +): pass -@sqlcode("DEADLOCK_DETECTED", "40P01") -class DeadlockDetected(OperationalError): +class DeadlockDetected(OperationalError, code="40P01", name="DEADLOCK_DETECTED"): pass # Class 42 - Syntax Error or Access Rule Violation -@sqlcode("SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION", "42000") -class SyntaxErrorOrAccessRuleViolation(ProgrammingError): +class SyntaxErrorOrAccessRuleViolation( + ProgrammingError, code="42000", name="SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION" +): pass -@sqlcode("INSUFFICIENT_PRIVILEGE", "42501") -class InsufficientPrivilege(ProgrammingError): +class InsufficientPrivilege( + ProgrammingError, code="42501", name="INSUFFICIENT_PRIVILEGE" +): pass -@sqlcode("SYNTAX_ERROR", "42601") -class SyntaxError(ProgrammingError): +class SyntaxError(ProgrammingError, code="42601", name="SYNTAX_ERROR"): pass -@sqlcode("INVALID_NAME", "42602") -class InvalidName(ProgrammingError): +class InvalidName(ProgrammingError, code="42602", name="INVALID_NAME"): pass -@sqlcode("INVALID_COLUMN_DEFINITION", "42611") -class InvalidColumnDefinition(ProgrammingError): +class InvalidColumnDefinition( + ProgrammingError, code="42611", name="INVALID_COLUMN_DEFINITION" +): pass -@sqlcode("NAME_TOO_LONG", "42622") -class NameTooLong(ProgrammingError): +class NameTooLong(ProgrammingError, code="42622", name="NAME_TOO_LONG"): pass -@sqlcode("DUPLICATE_COLUMN", "42701") -class DuplicateColumn(ProgrammingError): +class DuplicateColumn(ProgrammingError, code="42701", name="DUPLICATE_COLUMN"): pass -@sqlcode("AMBIGUOUS_COLUMN", "42702") -class AmbiguousColumn(ProgrammingError): +class AmbiguousColumn(ProgrammingError, code="42702", name="AMBIGUOUS_COLUMN"): pass -@sqlcode("UNDEFINED_COLUMN", "42703") -class UndefinedColumn(ProgrammingError): +class UndefinedColumn(ProgrammingError, code="42703", name="UNDEFINED_COLUMN"): pass -@sqlcode("UNDEFINED_OBJECT", "42704") -class UndefinedObject(ProgrammingError): +class UndefinedObject(ProgrammingError, code="42704", name="UNDEFINED_OBJECT"): pass -@sqlcode("DUPLICATE_OBJECT", "42710") -class DuplicateObject(ProgrammingError): +class DuplicateObject(ProgrammingError, code="42710", name="DUPLICATE_OBJECT"): pass -@sqlcode("DUPLICATE_ALIAS", "42712") -class DuplicateAlias(ProgrammingError): +class DuplicateAlias(ProgrammingError, code="42712", name="DUPLICATE_ALIAS"): pass -@sqlcode("DUPLICATE_FUNCTION", "42723") -class DuplicateFunction(ProgrammingError): +class DuplicateFunction(ProgrammingError, code="42723", name="DUPLICATE_FUNCTION"): pass -@sqlcode("AMBIGUOUS_FUNCTION", "42725") -class AmbiguousFunction(ProgrammingError): +class AmbiguousFunction(ProgrammingError, code="42725", name="AMBIGUOUS_FUNCTION"): pass -@sqlcode("GROUPING_ERROR", "42803") -class GroupingError(ProgrammingError): +class GroupingError(ProgrammingError, code="42803", name="GROUPING_ERROR"): pass -@sqlcode("DATATYPE_MISMATCH", "42804") -class DatatypeMismatch(ProgrammingError): +class DatatypeMismatch(ProgrammingError, code="42804", name="DATATYPE_MISMATCH"): pass -@sqlcode("WRONG_OBJECT_TYPE", "42809") -class WrongObjectType(ProgrammingError): +class WrongObjectType(ProgrammingError, code="42809", name="WRONG_OBJECT_TYPE"): pass -@sqlcode("INVALID_FOREIGN_KEY", "42830") -class InvalidForeignKey(ProgrammingError): +class InvalidForeignKey(ProgrammingError, code="42830", name="INVALID_FOREIGN_KEY"): pass -@sqlcode("CANNOT_COERCE", "42846") -class CannotCoerce(ProgrammingError): +class CannotCoerce(ProgrammingError, code="42846", name="CANNOT_COERCE"): pass -@sqlcode("UNDEFINED_FUNCTION", "42883") -class UndefinedFunction(ProgrammingError): +class UndefinedFunction(ProgrammingError, code="42883", name="UNDEFINED_FUNCTION"): pass -@sqlcode("GENERATED_ALWAYS", "428C9") -class GeneratedAlways(ProgrammingError): +class GeneratedAlways(ProgrammingError, code="428C9", name="GENERATED_ALWAYS"): pass -@sqlcode("RESERVED_NAME", "42939") -class ReservedName(ProgrammingError): +class ReservedName(ProgrammingError, code="42939", name="RESERVED_NAME"): pass -@sqlcode("UNDEFINED_TABLE", "42P01") -class UndefinedTable(ProgrammingError): +class UndefinedTable(ProgrammingError, code="42P01", name="UNDEFINED_TABLE"): pass -@sqlcode("UNDEFINED_PARAMETER", "42P02") -class UndefinedParameter(ProgrammingError): +class UndefinedParameter(ProgrammingError, code="42P02", name="UNDEFINED_PARAMETER"): pass -@sqlcode("DUPLICATE_CURSOR", "42P03") -class DuplicateCursor(ProgrammingError): +class DuplicateCursor(ProgrammingError, code="42P03", name="DUPLICATE_CURSOR"): pass -@sqlcode("DUPLICATE_DATABASE", "42P04") -class DuplicateDatabase(ProgrammingError): +class DuplicateDatabase(ProgrammingError, code="42P04", name="DUPLICATE_DATABASE"): pass -@sqlcode("DUPLICATE_PREPARED_STATEMENT", "42P05") -class DuplicatePreparedStatement(ProgrammingError): +class DuplicatePreparedStatement( + ProgrammingError, code="42P05", name="DUPLICATE_PREPARED_STATEMENT" +): pass -@sqlcode("DUPLICATE_SCHEMA", "42P06") -class DuplicateSchema(ProgrammingError): +class DuplicateSchema(ProgrammingError, code="42P06", name="DUPLICATE_SCHEMA"): pass -@sqlcode("DUPLICATE_TABLE", "42P07") -class DuplicateTable(ProgrammingError): +class DuplicateTable(ProgrammingError, code="42P07", name="DUPLICATE_TABLE"): pass -@sqlcode("AMBIGUOUS_PARAMETER", "42P08") -class AmbiguousParameter(ProgrammingError): +class AmbiguousParameter(ProgrammingError, code="42P08", name="AMBIGUOUS_PARAMETER"): pass -@sqlcode("AMBIGUOUS_ALIAS", "42P09") -class AmbiguousAlias(ProgrammingError): +class AmbiguousAlias(ProgrammingError, code="42P09", name="AMBIGUOUS_ALIAS"): pass -@sqlcode("INVALID_COLUMN_REFERENCE", "42P10") -class InvalidColumnReference(ProgrammingError): +class InvalidColumnReference( + ProgrammingError, code="42P10", name="INVALID_COLUMN_REFERENCE" +): pass -@sqlcode("INVALID_CURSOR_DEFINITION", "42P11") -class InvalidCursorDefinition(ProgrammingError): +class InvalidCursorDefinition( + ProgrammingError, code="42P11", name="INVALID_CURSOR_DEFINITION" +): pass -@sqlcode("INVALID_DATABASE_DEFINITION", "42P12") -class InvalidDatabaseDefinition(ProgrammingError): +class InvalidDatabaseDefinition( + ProgrammingError, code="42P12", name="INVALID_DATABASE_DEFINITION" +): pass -@sqlcode("INVALID_FUNCTION_DEFINITION", "42P13") -class InvalidFunctionDefinition(ProgrammingError): +class InvalidFunctionDefinition( + ProgrammingError, code="42P13", name="INVALID_FUNCTION_DEFINITION" +): pass -@sqlcode("INVALID_PREPARED_STATEMENT_DEFINITION", "42P14") -class InvalidPreparedStatementDefinition(ProgrammingError): +class InvalidPreparedStatementDefinition( + ProgrammingError, code="42P14", name="INVALID_PREPARED_STATEMENT_DEFINITION" +): pass -@sqlcode("INVALID_SCHEMA_DEFINITION", "42P15") -class InvalidSchemaDefinition(ProgrammingError): +class InvalidSchemaDefinition( + ProgrammingError, code="42P15", name="INVALID_SCHEMA_DEFINITION" +): pass -@sqlcode("INVALID_TABLE_DEFINITION", "42P16") -class InvalidTableDefinition(ProgrammingError): +class InvalidTableDefinition( + ProgrammingError, code="42P16", name="INVALID_TABLE_DEFINITION" +): pass -@sqlcode("INVALID_OBJECT_DEFINITION", "42P17") -class InvalidObjectDefinition(ProgrammingError): +class InvalidObjectDefinition( + ProgrammingError, code="42P17", name="INVALID_OBJECT_DEFINITION" +): pass -@sqlcode("INDETERMINATE_DATATYPE", "42P18") -class IndeterminateDatatype(ProgrammingError): +class IndeterminateDatatype( + ProgrammingError, code="42P18", name="INDETERMINATE_DATATYPE" +): pass -@sqlcode("INVALID_RECURSION", "42P19") -class InvalidRecursion(ProgrammingError): +class InvalidRecursion(ProgrammingError, code="42P19", name="INVALID_RECURSION"): pass -@sqlcode("WINDOWING_ERROR", "42P20") -class WindowingError(ProgrammingError): +class WindowingError(ProgrammingError, code="42P20", name="WINDOWING_ERROR"): pass -@sqlcode("COLLATION_MISMATCH", "42P21") -class CollationMismatch(ProgrammingError): +class CollationMismatch(ProgrammingError, code="42P21", name="COLLATION_MISMATCH"): pass -@sqlcode("INDETERMINATE_COLLATION", "42P22") -class IndeterminateCollation(ProgrammingError): +class IndeterminateCollation( + ProgrammingError, code="42P22", name="INDETERMINATE_COLLATION" +): pass # Class 44 - WITH CHECK OPTION Violation -@sqlcode("WITH_CHECK_OPTION_VIOLATION", "44000") -class WithCheckOptionViolation(ProgrammingError): +class WithCheckOptionViolation( + ProgrammingError, code="44000", name="WITH_CHECK_OPTION_VIOLATION" +): pass # Class 53 - Insufficient Resources -@sqlcode("INSUFFICIENT_RESOURCES", "53000") -class InsufficientResources(OperationalError): +class InsufficientResources( + OperationalError, code="53000", name="INSUFFICIENT_RESOURCES" +): pass -@sqlcode("DISK_FULL", "53100") -class DiskFull(OperationalError): +class DiskFull(OperationalError, code="53100", name="DISK_FULL"): pass -@sqlcode("OUT_OF_MEMORY", "53200") -class OutOfMemory(OperationalError): +class OutOfMemory(OperationalError, code="53200", name="OUT_OF_MEMORY"): pass -@sqlcode("TOO_MANY_CONNECTIONS", "53300") -class TooManyConnections(OperationalError): +class TooManyConnections(OperationalError, code="53300", name="TOO_MANY_CONNECTIONS"): pass -@sqlcode("CONFIGURATION_LIMIT_EXCEEDED", "53400") -class ConfigurationLimitExceeded(OperationalError): +class ConfigurationLimitExceeded( + OperationalError, code="53400", name="CONFIGURATION_LIMIT_EXCEEDED" +): pass # Class 54 - Program Limit Exceeded -@sqlcode("PROGRAM_LIMIT_EXCEEDED", "54000") -class ProgramLimitExceeded(OperationalError): +class ProgramLimitExceeded( + OperationalError, code="54000", name="PROGRAM_LIMIT_EXCEEDED" +): pass -@sqlcode("STATEMENT_TOO_COMPLEX", "54001") -class StatementTooComplex(OperationalError): +class StatementTooComplex(OperationalError, code="54001", name="STATEMENT_TOO_COMPLEX"): pass -@sqlcode("TOO_MANY_COLUMNS", "54011") -class TooManyColumns(OperationalError): +class TooManyColumns(OperationalError, code="54011", name="TOO_MANY_COLUMNS"): pass -@sqlcode("TOO_MANY_ARGUMENTS", "54023") -class TooManyArguments(OperationalError): +class TooManyArguments(OperationalError, code="54023", name="TOO_MANY_ARGUMENTS"): pass # Class 55 - Object Not In Prerequisite State -@sqlcode("OBJECT_NOT_IN_PREREQUISITE_STATE", "55000") -class ObjectNotInPrerequisiteState(OperationalError): +class ObjectNotInPrerequisiteState( + OperationalError, code="55000", name="OBJECT_NOT_IN_PREREQUISITE_STATE" +): pass -@sqlcode("OBJECT_IN_USE", "55006") -class ObjectInUse(OperationalError): +class ObjectInUse(OperationalError, code="55006", name="OBJECT_IN_USE"): pass -@sqlcode("CANT_CHANGE_RUNTIME_PARAM", "55P02") -class CantChangeRuntimeParam(OperationalError): +class CantChangeRuntimeParam( + OperationalError, code="55P02", name="CANT_CHANGE_RUNTIME_PARAM" +): pass -@sqlcode("LOCK_NOT_AVAILABLE", "55P03") -class LockNotAvailable(OperationalError): +class LockNotAvailable(OperationalError, code="55P03", name="LOCK_NOT_AVAILABLE"): pass -@sqlcode("UNSAFE_NEW_ENUM_VALUE_USAGE", "55P04") -class UnsafeNewEnumValueUsage(OperationalError): +class UnsafeNewEnumValueUsage( + OperationalError, code="55P04", name="UNSAFE_NEW_ENUM_VALUE_USAGE" +): pass # Class 57 - Operator Intervention -@sqlcode("OPERATOR_INTERVENTION", "57000") -class OperatorIntervention(OperationalError): +class OperatorIntervention( + OperationalError, code="57000", name="OPERATOR_INTERVENTION" +): pass -@sqlcode("QUERY_CANCELED", "57014") -class QueryCanceled(OperationalError): +class QueryCanceled(OperationalError, code="57014", name="QUERY_CANCELED"): pass -@sqlcode("ADMIN_SHUTDOWN", "57P01") -class AdminShutdown(OperationalError): +class AdminShutdown(OperationalError, code="57P01", name="ADMIN_SHUTDOWN"): pass -@sqlcode("CRASH_SHUTDOWN", "57P02") -class CrashShutdown(OperationalError): +class CrashShutdown(OperationalError, code="57P02", name="CRASH_SHUTDOWN"): pass -@sqlcode("CANNOT_CONNECT_NOW", "57P03") -class CannotConnectNow(OperationalError): +class CannotConnectNow(OperationalError, code="57P03", name="CANNOT_CONNECT_NOW"): pass -@sqlcode("DATABASE_DROPPED", "57P04") -class DatabaseDropped(OperationalError): +class DatabaseDropped(OperationalError, code="57P04", name="DATABASE_DROPPED"): pass -@sqlcode("IDLE_SESSION_TIMEOUT", "57P05") -class IdleSessionTimeout(OperationalError): +class IdleSessionTimeout(OperationalError, code="57P05", name="IDLE_SESSION_TIMEOUT"): pass # Class 58 - System Error (errors external to PostgreSQL itself) -@sqlcode("SYSTEM_ERROR", "58000") -class SystemError(OperationalError): +class SystemError(OperationalError, code="58000", name="SYSTEM_ERROR"): pass -@sqlcode("IO_ERROR", "58030") -class IoError(OperationalError): +class IoError(OperationalError, code="58030", name="IO_ERROR"): pass -@sqlcode("UNDEFINED_FILE", "58P01") -class UndefinedFile(OperationalError): +class UndefinedFile(OperationalError, code="58P01", name="UNDEFINED_FILE"): pass -@sqlcode("DUPLICATE_FILE", "58P02") -class DuplicateFile(OperationalError): +class DuplicateFile(OperationalError, code="58P02", name="DUPLICATE_FILE"): pass # Class 72 - Snapshot Failure -@sqlcode("SNAPSHOT_TOO_OLD", "72000") -class SnapshotTooOld(DatabaseError): +class SnapshotTooOld(DatabaseError, code="72000", name="SNAPSHOT_TOO_OLD"): pass # Class F0 - Configuration File Error -@sqlcode("CONFIG_FILE_ERROR", "F0000") -class ConfigFileError(OperationalError): +class ConfigFileError(OperationalError, code="F0000", name="CONFIG_FILE_ERROR"): pass -@sqlcode("LOCK_FILE_EXISTS", "F0001") -class LockFileExists(OperationalError): +class LockFileExists(OperationalError, code="F0001", name="LOCK_FILE_EXISTS"): pass # Class HV - Foreign Data Wrapper Error (SQL/MED) -@sqlcode("FDW_ERROR", "HV000") -class FdwError(OperationalError): +class FdwError(OperationalError, code="HV000", name="FDW_ERROR"): pass -@sqlcode("FDW_OUT_OF_MEMORY", "HV001") -class FdwOutOfMemory(OperationalError): +class FdwOutOfMemory(OperationalError, code="HV001", name="FDW_OUT_OF_MEMORY"): pass -@sqlcode("FDW_DYNAMIC_PARAMETER_VALUE_NEEDED", "HV002") -class FdwDynamicParameterValueNeeded(OperationalError): +class FdwDynamicParameterValueNeeded( + OperationalError, code="HV002", name="FDW_DYNAMIC_PARAMETER_VALUE_NEEDED" +): pass -@sqlcode("FDW_INVALID_DATA_TYPE", "HV004") -class FdwInvalidDataType(OperationalError): +class FdwInvalidDataType(OperationalError, code="HV004", name="FDW_INVALID_DATA_TYPE"): pass -@sqlcode("FDW_COLUMN_NAME_NOT_FOUND", "HV005") -class FdwColumnNameNotFound(OperationalError): +class FdwColumnNameNotFound( + OperationalError, code="HV005", name="FDW_COLUMN_NAME_NOT_FOUND" +): pass -@sqlcode("FDW_INVALID_DATA_TYPE_DESCRIPTORS", "HV006") -class FdwInvalidDataTypeDescriptors(OperationalError): +class FdwInvalidDataTypeDescriptors( + OperationalError, code="HV006", name="FDW_INVALID_DATA_TYPE_DESCRIPTORS" +): pass -@sqlcode("FDW_INVALID_COLUMN_NAME", "HV007") -class FdwInvalidColumnName(OperationalError): +class FdwInvalidColumnName( + OperationalError, code="HV007", name="FDW_INVALID_COLUMN_NAME" +): pass -@sqlcode("FDW_INVALID_COLUMN_NUMBER", "HV008") -class FdwInvalidColumnNumber(OperationalError): +class FdwInvalidColumnNumber( + OperationalError, code="HV008", name="FDW_INVALID_COLUMN_NUMBER" +): pass -@sqlcode("FDW_INVALID_USE_OF_NULL_POINTER", "HV009") -class FdwInvalidUseOfNullPointer(OperationalError): +class FdwInvalidUseOfNullPointer( + OperationalError, code="HV009", name="FDW_INVALID_USE_OF_NULL_POINTER" +): pass -@sqlcode("FDW_INVALID_STRING_FORMAT", "HV00A") -class FdwInvalidStringFormat(OperationalError): +class FdwInvalidStringFormat( + OperationalError, code="HV00A", name="FDW_INVALID_STRING_FORMAT" +): pass -@sqlcode("FDW_INVALID_HANDLE", "HV00B") -class FdwInvalidHandle(OperationalError): +class FdwInvalidHandle(OperationalError, code="HV00B", name="FDW_INVALID_HANDLE"): pass -@sqlcode("FDW_INVALID_OPTION_INDEX", "HV00C") -class FdwInvalidOptionIndex(OperationalError): +class FdwInvalidOptionIndex( + OperationalError, code="HV00C", name="FDW_INVALID_OPTION_INDEX" +): pass -@sqlcode("FDW_INVALID_OPTION_NAME", "HV00D") -class FdwInvalidOptionName(OperationalError): +class FdwInvalidOptionName( + OperationalError, code="HV00D", name="FDW_INVALID_OPTION_NAME" +): pass -@sqlcode("FDW_OPTION_NAME_NOT_FOUND", "HV00J") -class FdwOptionNameNotFound(OperationalError): +class FdwOptionNameNotFound( + OperationalError, code="HV00J", name="FDW_OPTION_NAME_NOT_FOUND" +): pass -@sqlcode("FDW_REPLY_HANDLE", "HV00K") -class FdwReplyHandle(OperationalError): +class FdwReplyHandle(OperationalError, code="HV00K", name="FDW_REPLY_HANDLE"): pass -@sqlcode("FDW_UNABLE_TO_CREATE_EXECUTION", "HV00L") -class FdwUnableToCreateExecution(OperationalError): +class FdwUnableToCreateExecution( + OperationalError, code="HV00L", name="FDW_UNABLE_TO_CREATE_EXECUTION" +): pass -@sqlcode("FDW_UNABLE_TO_CREATE_REPLY", "HV00M") -class FdwUnableToCreateReply(OperationalError): +class FdwUnableToCreateReply( + OperationalError, code="HV00M", name="FDW_UNABLE_TO_CREATE_REPLY" +): pass -@sqlcode("FDW_UNABLE_TO_ESTABLISH_CONNECTION", "HV00N") -class FdwUnableToEstablishConnection(OperationalError): +class FdwUnableToEstablishConnection( + OperationalError, code="HV00N", name="FDW_UNABLE_TO_ESTABLISH_CONNECTION" +): pass -@sqlcode("FDW_NO_SCHEMAS", "HV00P") -class FdwNoSchemas(OperationalError): +class FdwNoSchemas(OperationalError, code="HV00P", name="FDW_NO_SCHEMAS"): pass -@sqlcode("FDW_SCHEMA_NOT_FOUND", "HV00Q") -class FdwSchemaNotFound(OperationalError): +class FdwSchemaNotFound(OperationalError, code="HV00Q", name="FDW_SCHEMA_NOT_FOUND"): pass -@sqlcode("FDW_TABLE_NOT_FOUND", "HV00R") -class FdwTableNotFound(OperationalError): +class FdwTableNotFound(OperationalError, code="HV00R", name="FDW_TABLE_NOT_FOUND"): pass -@sqlcode("FDW_FUNCTION_SEQUENCE_ERROR", "HV010") -class FdwFunctionSequenceError(OperationalError): +class FdwFunctionSequenceError( + OperationalError, code="HV010", name="FDW_FUNCTION_SEQUENCE_ERROR" +): pass -@sqlcode("FDW_TOO_MANY_HANDLES", "HV014") -class FdwTooManyHandles(OperationalError): +class FdwTooManyHandles(OperationalError, code="HV014", name="FDW_TOO_MANY_HANDLES"): pass -@sqlcode("FDW_INCONSISTENT_DESCRIPTOR_INFORMATION", "HV021") -class FdwInconsistentDescriptorInformation(OperationalError): +class FdwInconsistentDescriptorInformation( + OperationalError, code="HV021", name="FDW_INCONSISTENT_DESCRIPTOR_INFORMATION" +): pass -@sqlcode("FDW_INVALID_ATTRIBUTE_VALUE", "HV024") -class FdwInvalidAttributeValue(OperationalError): +class FdwInvalidAttributeValue( + OperationalError, code="HV024", name="FDW_INVALID_ATTRIBUTE_VALUE" +): pass -@sqlcode("FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH", "HV090") -class FdwInvalidStringLengthOrBufferLength(OperationalError): +class FdwInvalidStringLengthOrBufferLength( + OperationalError, code="HV090", name="FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH" +): pass -@sqlcode("FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER", "HV091") -class FdwInvalidDescriptorFieldIdentifier(OperationalError): +class FdwInvalidDescriptorFieldIdentifier( + OperationalError, code="HV091", name="FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER" +): pass # Class P0 - PL/pgSQL Error -@sqlcode("PLPGSQL_ERROR", "P0000") -class PlpgsqlError(ProgrammingError): +class PlpgsqlError(ProgrammingError, code="P0000", name="PLPGSQL_ERROR"): pass -@sqlcode("RAISE_EXCEPTION", "P0001") -class RaiseException(ProgrammingError): +class RaiseException(ProgrammingError, code="P0001", name="RAISE_EXCEPTION"): pass -@sqlcode("NO_DATA_FOUND", "P0002") -class NoDataFound(ProgrammingError): +class NoDataFound(ProgrammingError, code="P0002", name="NO_DATA_FOUND"): pass -@sqlcode("TOO_MANY_ROWS", "P0003") -class TooManyRows(ProgrammingError): +class TooManyRows(ProgrammingError, code="P0003", name="TOO_MANY_ROWS"): pass -@sqlcode("ASSERT_FAILURE", "P0004") -class AssertFailure(ProgrammingError): +class AssertFailure(ProgrammingError, code="P0004", name="ASSERT_FAILURE"): pass # Class XX - Internal Error -@sqlcode("INTERNAL_ERROR", "XX000") -class InternalError_(InternalError): +class InternalError_(InternalError, code="XX000", name="INTERNAL_ERROR"): pass -@sqlcode("DATA_CORRUPTED", "XX001") -class DataCorrupted(InternalError): +class DataCorrupted(InternalError, code="XX001", name="DATA_CORRUPTED"): pass -@sqlcode("INDEX_CORRUPTED", "XX002") -class IndexCorrupted(InternalError): +class IndexCorrupted(InternalError, code="XX002", name="INDEX_CORRUPTED"): pass diff --git a/tools/update_errors.py b/tools/update_errors.py index 56bda5855..d81220a8e 100755 --- a/tools/update_errors.py +++ b/tools/update_errors.py @@ -137,8 +137,7 @@ def fetch_errors(versions): def generate_module_data(classes, errors): tmpl = """ -@sqlcode(%(errlabel)r, %(sqlstate)r) -class %(clsname)s(%(basename)s): +class %(clsname)s(%(basename)s, code=%(sqlstate)r, name=%(errlabel)r): pass """ for clscode, clslabel in sorted(classes.items()):