locked = True
The exception names are generated from the PostgreSQL source code and includes
-classes for every error defined by PostgreSQL in versions between 9.6 and 13.
+classes for every error defined by PostgreSQL in versions between 9.6 and 14.
Every class in the module is named after what referred as "condition name" `in
the documentation`__, converted to CamelCase: e.g. the error 22012,
``division_by_zero`` is exposed by this module as the class `!DivisionByZero`.
``57P02`` `!CrashShutdown` `!OperationalError`
``57P03`` `!CannotConnectNow` `!OperationalError`
``57P04`` `!DatabaseDropped` `!OperationalError`
+``57P05`` `!IdleSessionTimeout` `!OperationalError`
**Class 58**: Class 58 - System Error (errors external to PostgreSQL itself)
---------------------------------------------------------------------------------
``58000`` `!SystemError` `!OperationalError`
pass
+@sqlcode("IDLE_SESSION_TIMEOUT", "57P05")
+class IdleSessionTimeout(OperationalError):
+ pass
+
+
# Class 58 - System Error (errors external to PostgreSQL itself)
#!/usr/bin/env python
+# type: ignore
"""
Generate per-sqlstate errors from PostgreSQL source code.
# Copyright (C) 2020-2021 The Psycopg Team
-
import os
import re
import sys
from urllib.request import urlopen
from collections import defaultdict, namedtuple
-from psycopg.errors import get_base_exception # type: ignore
+from psycopg.errors import get_base_exception
logger = logging.getLogger()
logging.basicConfig(
def main():
- classes, errors = fetch_errors(["9.6", "10", "11", "12", "13"])
+ classes, errors = fetch_errors(["9.6", "10", "11", "12", "13", "14"])
fn = os.path.dirname(__file__) + "/../psycopg/psycopg/errors.py"
update_file(fn, generate_module_data(classes, errors))