diff options
| -rw-r--r-- | NEWS | 1 | ||||
| -rw-r--r-- | lib/errorcodes.py | 33 | ||||
| -rwxr-xr-x | scripts/make_errorcodes.py | 20 |
3 files changed, 49 insertions, 5 deletions
@@ -8,6 +8,7 @@ What's new in psycopg 2.4.3 - Lazy import of the slow uuid module, thanks to Marko Kreen. - Fixed NamedTupleCursor.executemany() (ticket #65). - Fixed --static-libpq setup option (ticket #64). + - 'errorcodes' map updated to PostgreSQL 9.1. What's new in psycopg 2.4.2 diff --git a/lib/errorcodes.py b/lib/errorcodes.py index c13150e..e6c03eb 100644 --- a/lib/errorcodes.py +++ b/lib/errorcodes.py @@ -86,6 +86,7 @@ CLASS_OBJECT_NOT_IN_PREREQUISITE_STATE = '55' CLASS_OPERATOR_INTERVENTION = '57' CLASS_SYSTEM_ERROR = '58' CLASS_CONFIGURATION_FILE_ERROR = 'F0' +CLASS_FOREIGN_DATA_WRAPPER_ERROR = 'HV' CLASS_PL_PGSQL_ERROR = 'P0' CLASS_INTERNAL_ERROR = 'XX' @@ -319,6 +320,8 @@ INVALID_OBJECT_DEFINITION = '42P17' INDETERMINATE_DATATYPE = '42P18' INVALID_RECURSION = '42P19' WINDOWING_ERROR = '42P20' +COLLATION_MISMATCH = '42P21' +INDETERMINATE_COLLATION = '42P22' # Class 44 - WITH CHECK OPTION Violation WITH_CHECK_OPTION_VIOLATION = '44000' @@ -347,6 +350,7 @@ QUERY_CANCELED = '57014' ADMIN_SHUTDOWN = '57P01' CRASH_SHUTDOWN = '57P02' CANNOT_CONNECT_NOW = '57P03' +DATABASE_DROPPED = '57P04' # Class 58 - System Error (errors external to PostgreSQL itself) IO_ERROR = '58030' @@ -357,6 +361,35 @@ DUPLICATE_FILE = '58P02' CONFIG_FILE_ERROR = 'F0000' LOCK_FILE_EXISTS = 'F0001' +# Class HV - Foreign Data Wrapper Error (SQL/MED) +FDW_ERROR = 'HV000' +FDW_OUT_OF_MEMORY = 'HV001' +FDW_DYNAMIC_PARAMETER_VALUE_NEEDED = 'HV002' +FDW_INVALID_DATA_TYPE = 'HV004' +FDW_COLUMN_NAME_NOT_FOUND = 'HV005' +FDW_INVALID_DATA_TYPE_DESCRIPTORS = 'HV006' +FDW_INVALID_COLUMN_NAME = 'HV007' +FDW_INVALID_COLUMN_NUMBER = 'HV008' +FDW_INVALID_USE_OF_NULL_POINTER = 'HV009' +FDW_INVALID_STRING_FORMAT = 'HV00A' +FDW_INVALID_HANDLE = 'HV00B' +FDW_INVALID_OPTION_INDEX = 'HV00C' +FDW_INVALID_OPTION_NAME = 'HV00D' +FDW_OPTION_NAME_NOT_FOUND = 'HV00J' +FDW_REPLY_HANDLE = 'HV00K' +FDW_UNABLE_TO_CREATE_EXECUTION = 'HV00L' +FDW_UNABLE_TO_CREATE_REPLY = 'HV00M' +FDW_UNABLE_TO_ESTABLISH_CONNECTION = 'HV00N' +FDW_NO_SCHEMAS = 'HV00P' +FDW_SCHEMA_NOT_FOUND = 'HV00Q' +FDW_TABLE_NOT_FOUND = 'HV00R' +FDW_FUNCTION_SEQUENCE_ERROR = 'HV010' +FDW_TOO_MANY_HANDLES = 'HV014' +FDW_INCONSISTENT_DESCRIPTOR_INFORMATION = 'HV021' +FDW_INVALID_ATTRIBUTE_VALUE = 'HV024' +FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH = 'HV090' +FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER = 'HV091' + # Class P0 - PL/pgSQL Error PLPGSQL_ERROR = 'P0000' RAISE_EXCEPTION = 'P0001' diff --git a/scripts/make_errorcodes.py b/scripts/make_errorcodes.py index 8477e41..e59f399 100755 --- a/scripts/make_errorcodes.py +++ b/scripts/make_errorcodes.py @@ -30,7 +30,7 @@ def main(): filename = sys.argv[1] file_start = read_base_file(filename) - classes, errors = fetch_errors(['8.1', '8.2', '8.3', '8.4', '9.0']) + classes, errors = fetch_errors(['8.1', '8.2', '8.3', '8.4', '9.0', '9.1']) f = open(filename, "w") for line in file_start: @@ -70,11 +70,21 @@ def parse_errors(url): else: # it's an error errcode = tr.tt.string.encode("ascii") assert len(errcode) == 5 - errlabel = tr('td')[1].string.replace(" ", "_").encode("ascii") - # double check the columns are equal - cond_name = tr('td')[2].string.upper().encode("ascii") - assert errlabel == cond_name, tr + tds = tr('td') + if len(tds) == 3: + errlabel = tds[1].string.replace(" ", "_").encode("ascii") + + # double check the columns are equal + cond_name = tds[2].string.upper().encode("ascii") + assert errlabel == cond_name, tr + + elif len(tds) == 2: + # found in PG 9.1 beta3 docs + errlabel = tds[1].tt.string.upper().encode("ascii") + + else: + assert False, tr errors[class_][errcode] = errlabel |
