summaryrefslogtreecommitdiff
path: root/odb/pgsql/error.cxx
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2024-01-25 17:28:38 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2024-01-25 17:28:38 +0300
commitd9f372d7b1bc1abbff5fdf9735118290cd024d5e (patch)
tree49bc3160ea184e19cd5cb6a7404dee42311c0fd7 /odb/pgsql/error.cxx
parent55e14d8f9697adeeb05fcd23cf8f19c33452bb56 (diff)
Turn libodb-pgsql repository into package for muti-package repositorylibodb-pgsql
Diffstat (limited to 'odb/pgsql/error.cxx')
-rw-r--r--odb/pgsql/error.cxx86
1 files changed, 0 insertions, 86 deletions
diff --git a/odb/pgsql/error.cxx b/odb/pgsql/error.cxx
deleted file mode 100644
index ba8451e..0000000
--- a/odb/pgsql/error.cxx
+++ /dev/null
@@ -1,86 +0,0 @@
-// file : odb/pgsql/error.cxx
-// license : GNU GPL v2; see accompanying LICENSE file
-
-#include <string>
-#include <cassert>
-
-#include <odb/pgsql/error.hxx>
-#include <odb/pgsql/exceptions.hxx>
-#include <odb/pgsql/connection.hxx>
-
-using namespace std;
-
-namespace odb
-{
- namespace pgsql
- {
- void
- translate_error (connection& c, PGresult* r,
- size_t pos, multiple_exceptions* mex)
- {
- if (!r)
- {
- if (PQstatus (c.handle ()) == CONNECTION_BAD)
- {
- c.mark_failed ();
- throw connection_lost ();
- }
- else
- throw bad_alloc ();
- }
-
- // Note that we expect the caller to handle PGRES_PIPELINE_ABORTED since
- // it's not really an error but rather an indication that no attempt was
- // made to execute this statement.
- //
- string ss;
- switch (PQresultStatus (r))
- {
- case PGRES_BAD_RESPONSE:
- {
- throw database_exception ("bad server response");
- }
- case PGRES_FATAL_ERROR:
- {
- const char* s (PQresultErrorField (r, PG_DIAG_SQLSTATE));
- ss = (s != 0 ? s : "?????");
-
- // Deadlock detected.
- //
- if (ss == "40001" || ss == "40P01")
- throw deadlock ();
- else if (PQstatus (c.handle ()) == CONNECTION_BAD)
- {
- c.mark_failed ();
- throw connection_lost ();
- }
- break;
- }
- default:
- assert (false);
- break;
- }
-
- string msg;
- {
- // Can be NULL in case of PGRES_BAD_RESPONSE.
- //
- const char* m (PQresultErrorMessage (r));
- msg = (m != 0 ? m : "bad server response");
-
- // Get rid of the trailing newline if there is one.
- //
- string::size_type n (msg.size ());
- if (n != 0 && msg[n - 1] == '\n')
- msg.resize (n - 1);
- }
-
- if (mex == 0)
- throw database_exception (ss, msg);
- else
- // In PosgreSQL all errors are fatal.
- //
- mex->insert (pos, database_exception (ss, msg), true);
- }
- }
-}