Author: phd
Date: 2004-11-29 21:30:03 +0000 (Mon, 29 Nov 2004)
New Revision: 420
Modified:
home/phd/SQLObject/inheritance/sqlobject/postgres/pgconnection.py
Log:
Merged changes 418:419: test the server's version and adapt DROP TABLE (do not use CASCADE in version 7.2 or earlier).
Modified: home/phd/SQLObject/inheritance/sqlobject/postgres/pgconnection.py
===================================================================
--- home/phd/SQLObject/inheritance/sqlobject/postgres/pgconnection.py 2004-11-29 21:27:38 UTC (rev 419)
+++ home/phd/SQLObject/inheritance/sqlobject/postgres/pgconnection.py 2004-11-29 21:30:03 UTC (rev 420)
@@ -39,6 +39,9 @@
self.dsn = dsn
DBAPI.__init__(self, **kw)
+ # Server version cache
+ self._server_version = None # Not yet initialized
+
def connectionFromURI(cls, uri):
user, password, host, path, args = cls._parseURI(uri)
path = path.strip('/')
@@ -93,6 +96,8 @@
return '%s SERIAL PRIMARY KEY' % soClass._idName
def dropTable(self, tableName, cascade=False):
+ if self.server_version[:3] <= "7.2":
+ cascade=False
self.query("DROP TABLE %s %s" % (tableName,
cascade and 'CASCADE' or ''))
@@ -198,3 +203,11 @@
else:
return col.Col, {}
+ def server_version(self):
+ if self._server_version is None:
+ # The result is something like
+ # ' PostgreSQL 7.2.1 on i686-pc-linux-gnu, compiled by GCC 2.95.4'
+ server_version = self.queryOne("SELECT version()")[0]
+ self._server_version = server_version.split()[1]
+ return self._server_version
+ server_version = property(server_version)
|