summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--lib/errorcodes.py33
-rwxr-xr-xscripts/make_errorcodes.py20
3 files changed, 49 insertions, 5 deletions
diff --git a/NEWS b/NEWS
index b044c3e..ed38fc4 100644
--- a/NEWS
+++ b/NEWS
@@ -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