diff options
Diffstat (limited to 'psycopg')
-rw-r--r-- | psycopg/connection_int.c | 13 | ||||
-rw-r--r-- | psycopg/connection_type.c | 8 |
2 files changed, 11 insertions, 10 deletions
diff --git a/psycopg/connection_int.c b/psycopg/connection_int.c index 441d362..41b73f1 100644 --- a/psycopg/connection_int.c +++ b/psycopg/connection_int.c @@ -39,10 +39,10 @@ const IsolationLevel conn_isolevels[] = { {"", 0}, /* autocommit */ - {"read uncommitted", 1}, - {"read committed", 2}, - {"repeatable read", 3}, - {"serializable", 4}, + {"read committed", 1}, + {"read uncommitted", 1}, /* comes after to report real level */ + {"repeatable read", 2}, + {"serializable", 3}, {"default", -1}, { NULL } }; @@ -1041,9 +1041,8 @@ conn_switch_isolation_level(connectionObject *self, int level) /* use only supported levels on older PG versions */ if (self->server_version < 80000) { - if (level == 1 || level == 3) { - ++level; - } + if (level == 2) + level = 3; } if (-1 == (curr_level = conn_get_isolation_level(self))) { diff --git a/psycopg/connection_type.c b/psycopg/connection_type.c index 2bb0e70..02bc4da 100644 --- a/psycopg/connection_type.c +++ b/psycopg/connection_type.c @@ -405,13 +405,15 @@ _psyco_conn_parse_isolevel(connectionObject *self, PyObject *pyval) if (PyInt_Check(pyval)) { long level = PyInt_AsLong(pyval); if (level == -1 && PyErr_Occurred()) { goto exit; } - if (level < 1 || level > 4) { + if (level < 1 || level > 3) { PyErr_SetString(PyExc_ValueError, - "isolation_level must be between 1 and 4"); + "isolation_level must be between 1 and 3"); goto exit; } - isolevel = conn_isolevels + level; + isolevel = conn_isolevels; + while ((++isolevel)->value != level) + ; /* continue */ } /* parse from the string -- this includes "default" */ |