]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
chore: add PostgreSQL 18 exceptions
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sun, 11 May 2025 20:48:26 +0000 (22:48 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Sun, 7 Sep 2025 11:47:47 +0000 (13:47 +0200)
docs/api/errors.rst
psycopg/psycopg/errors.py
tools/update_errors.py

index 10301867f3043f00fe35f1f7a0e50b0a811a24b4..ab35c0f026b23c9fc47f16d040282d85764c6d59 100644 (file)
@@ -241,6 +241,9 @@ SQLSTATE  Exception                                          Base exception
 ---------------------------------------------------------------------------------
 ``0Z000`` `!DiagnosticsException`                            `!DatabaseError`
 ``0Z002`` `!StackedDiagnosticsAccessedWithoutActiveHandler`  `!DatabaseError`
+**Class 10** - XQuery Error
+---------------------------------------------------------------------------------
+``10608`` `!InvalidArgumentForXquery`                        `!ProgrammingError`
 **Class 20** - Case Not Found
 ---------------------------------------------------------------------------------
 ``20000`` `!CaseNotFound`                                    `!ProgrammingError`
@@ -487,6 +490,7 @@ SQLSTATE  Exception                                          Base exception
 ``58030`` `!IoError`                                         `!OperationalError`
 ``58P01`` `!UndefinedFile`                                   `!OperationalError`
 ``58P02`` `!DuplicateFile`                                   `!OperationalError`
+``58P03`` `!FileNameTooLong`                                 `!OperationalError`
 **Class 72** - Snapshot Failure
 ---------------------------------------------------------------------------------
 ``72000`` `!SnapshotTooOld`                                  `!DatabaseError`
@@ -544,3 +548,7 @@ SQLSTATE  Exception                                          Base exception
 
 .. versionadded:: 3.2.3
     Exception `!TransactionTimeout`, introduced in PostgreSQL 17.
+
+.. versionadded:: 3.2.10
+    Exception `!InvalidArgumentForXquery`, `FileNameTooLong`, introduced in
+    PostgreSQL 18.
index fd514f0ea5ac37d42f4322019c4a390ab908968a..468957dc46e5fe9a3e213e49fb243250a060c009 100644 (file)
@@ -579,6 +579,7 @@ def get_base_exception(sqlstate: str) -> type[Error]:
 _base_exc_map = {
     "08": OperationalError,  # Connection Exception
     "0A": NotSupportedError,  # Feature Not Supported
+    "10": ProgrammingError,  # XQuery Error
     "20": ProgrammingError,  # Case Not Foud
     "21": ProgrammingError,  # Cardinality Violation
     "22": DataError,  # Data Exception
@@ -728,6 +729,13 @@ class StackedDiagnosticsAccessedWithoutActiveHandler(DatabaseError,
     pass
 
 
+# Class 10 - XQuery Error
+
+class InvalidArgumentForXquery(ProgrammingError,
+    code='10608', name='INVALID_ARGUMENT_FOR_XQUERY'):
+    pass
+
+
 # Class 20 - Case Not Found
 
 class CaseNotFound(ProgrammingError,
@@ -1581,6 +1589,10 @@ class DuplicateFile(OperationalError,
     code='58P02', name='DUPLICATE_FILE'):
     pass
 
+class FileNameTooLong(OperationalError,
+    code='58P03', name='FILE_NAME_TOO_LONG'):
+    pass
+
 
 # Class 72 - Snapshot Failure
 
index bc1264492ab1157d9ffe7c7b1ddcf03cd5c9c9c2..72ee9d4e17aba094a1b5a7549500ffe560f42900 100755 (executable)
@@ -22,7 +22,7 @@ logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(mess
 
 
 def main():
-    classes, errors = fetch_errors("9.6 10 11 12 13 14 15 16 17".split())
+    classes, errors = fetch_errors("9.6 10 11 12 13 14 15 16 17 18".split())
 
     fn = os.path.dirname(__file__) + "/../psycopg/psycopg/errors.py"
     update_file(fn, generate_module_data(classes, errors))