summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>2017-02-16 13:14:45 +0000
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>2017-02-16 13:14:45 +0000
commitd7bba865f3ed3b5c9e5dde9154b6a6c091a54deb (patch)
treec8e37012b8e44add4ffb068e8928cd11e7e65e45
parentd50ed488074a3b809bf98fb1e6971bc295ba31c3 (diff)
downloadpsycopg2-d7bba865f3ed3b5c9e5dde9154b6a6c091a54deb.tar.gz
Check for deferrable unsupported applied to attribute too
-rw-r--r--psycopg/connection_int.c9
-rw-r--r--psycopg/connection_type.c6
2 files changed, 8 insertions, 7 deletions
diff --git a/psycopg/connection_int.c b/psycopg/connection_int.c
index 49daae5..e0a369e 100644
--- a/psycopg/connection_int.c
+++ b/psycopg/connection_int.c
@@ -1189,6 +1189,13 @@ conn_set_session(connectionObject *self, int autocommit,
PGresult *pgres = NULL;
char *error = NULL;
+ if (deferrable != self->deferrable && self->server_version < 90100) {
+ PyErr_SetString(ProgrammingError,
+ "the 'deferrable' setting is only available"
+ " from PostgreSQL 9.1");
+ goto exit;
+ }
+
/* Promote an isolation level to one of the levels supported by the server */
if (self->server_version < 80000) {
if (isolevel == ISOLATION_LEVEL_READ_UNCOMMITTED) {
@@ -1219,7 +1226,7 @@ conn_set_session(connectionObject *self, int autocommit,
goto endlock;
}
}
- if (deferrable != self->deferrable && self->server_version >= 90100) {
+ if (deferrable != self->deferrable) {
if (0 > pq_set_guc_locked(self,
"default_transaction_deferrable", srv_state_guc[deferrable],
&pgres, &error, &_save)) {
diff --git a/psycopg/connection_type.c b/psycopg/connection_type.c
index 66ff705..26100b2 100644
--- a/psycopg/connection_type.c
+++ b/psycopg/connection_type.c
@@ -588,12 +588,6 @@ psyco_conn_set_session(connectionObject *self, PyObject *args, PyObject *kwargs)
}
}
if (Py_None != deferrable) {
- if (self->server_version < 90100) {
- PyErr_SetString(ProgrammingError,
- "the 'deferrable' setting is only available"
- " from PostgreSQL 9.1");
- return NULL;
- }
if (0 > (c_deferrable = _psyco_conn_parse_onoff(deferrable))) {
return NULL;
}