summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--NEWS-2.32
-rw-r--r--doc/src/connection.rst4
-rw-r--r--psycopg/connection_int.c8
4 files changed, 17 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index cc318ff..244710c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-11-16 Daniele Varrazzo <daniele.varrazzo@gmail.com>
+
+ * psycopg/connection_int.c: abort connection to protocol 2 server.
+
2010-11-11 Daniele Varrazzo <daniele.varrazzo@gmail.com>
* lib/extras.py: build the namedtuple only once per execution, not once
diff --git a/NEWS-2.3 b/NEWS-2.3
index 87f03ca..bf1e628 100644
--- a/NEWS-2.3
+++ b/NEWS-2.3
@@ -13,6 +13,8 @@ psycopg 2.3 aims to expose some new features introduced in PostgreSQL 9.0.
* Other features and changes:
+ - Dropped support for protocol 2: Psycopg 2.3 can only connect to PostgreSQL
+ servers with version at least 7.4.
- `mogrify()` now supports unicode queries.
- subclasses of a type that can be adapted are adapted as the superclass.
- `errorcodes` knows a couple of new codes introduced in PostgreSQL 9.0.
diff --git a/doc/src/connection.rst b/doc/src/connection.rst
index 624fcba..22241fe 100644
--- a/doc/src/connection.rst
+++ b/doc/src/connection.rst
@@ -428,7 +428,9 @@ The ``connection`` class
.. attribute:: protocol_version
A read-only integer representing frontend/backend protocol being used.
- It can be 2 or 3.
+ Currently Psycopg supports only protocol 3, which allows connection
+ to PostgreSQL server from version 7.4. Psycopg versions previous than
+ 2.3 support both protocols 2 and 3.
.. seealso:: libpq docs for `PQprotocolVersion()`__ for details.
diff --git a/psycopg/connection_int.c b/psycopg/connection_int.c
index 7f86460..e335c39 100644
--- a/psycopg/connection_int.c
+++ b/psycopg/connection_int.c
@@ -295,6 +295,10 @@ conn_setup(connectionObject *self, PGconn *pgconn)
self->equote = conn_get_standard_conforming_strings(pgconn);
self->server_version = conn_get_server_version(pgconn);
self->protocol = conn_get_protocol_version(self->pgconn);
+ if (3 != self->protocol) {
+ PyErr_SetString(InterfaceError, "only protocol 3 supported");
+ return -1;
+ }
Py_BEGIN_ALLOW_THREADS;
pthread_mutex_lock(&self->lock);
@@ -636,6 +640,10 @@ _conn_poll_setup_async(connectionObject *self)
self->equote = conn_get_standard_conforming_strings(self->pgconn);
self->protocol = conn_get_protocol_version(self->pgconn);
self->server_version = conn_get_server_version(self->pgconn);
+ if (3 != self->protocol) {
+ PyErr_SetString(InterfaceError, "only protocol 3 supported");
+ break;
+ }
/* asynchronous connections always use isolation level 0, the user is
* expected to manage the transactions himself, by sending