diff --git a/mysql/MySQLdb.py b/mysql/MySQLdb.py index 48a44cf..b8b268e 100644 --- a/mysql/MySQLdb.py +++ b/mysql/MySQLdb.py @@ -451,11 +451,7 @@ class Connection: self.cursorclass = Cursor self.db = apply(connect, (), kwargs) self.quote_conv[types.StringType] = self.Thing2Literal - self.db.query('show variables') - r = self.db.store_result() - vars = r.fetch_row(0) - self._server_vars = {} - for k,v in vars: self._server_vars[k] = v + self._transactional = self.db.server_capabilities & CLIENT.TRANSACTIONS if _threading: self.__lock = _threading.Lock() if _threading: @@ -473,12 +469,12 @@ class Connection: def commit(self): """Commit the current transaction.""" - if self._server_vars.get('have_bdb','NO') == 'YES': + if self._transactional: self.db.query("COMMIT") def rollback(self): """Rollback the current transaction.""" - if self._server_vars.get('have_bdb','NO') == 'YES': + if self._transactional: self.db.query("ROLLBACK") else: raise NotSupportedError, "Not supported by server" diff --git a/mysql/_mysql_const/CLIENT.py b/mysql/_mysql_const/CLIENT.py index e9150c5..a29c038 100644 --- a/mysql/_mysql_const/CLIENT.py +++ b/mysql/_mysql_const/CLIENT.py @@ -11,4 +11,4 @@ CHANGE_USER = 512 INTERACTIVE = 1024 SSL = 2048 IGNORE_SIGPIPE = 4096 -TRANSACTIONS = 8196 +TRANSACTIONS = 8192 # mysql_com.h is WRONG diff --git a/mysql/_mysqlmodule.c b/mysql/_mysqlmodule.c index a1cf129..2508b86 100644 --- a/mysql/_mysqlmodule.c +++ b/mysql/_mysqlmodule.c @@ -1245,6 +1245,8 @@ _mysql_ConnectionObject_getattr( return PyInt_FromLong((long)(self->open)); if (strcmp(name, "closed") == 0) return PyInt_FromLong((long)!(self->open)); + if (strcmp(name, "server_capabilities") == 0) + return PyInt_FromLong((long)(self->connection.server_capabilities)); return PyMember_Get((char *)self, _mysql_ConnectionObject_memberlist, name); }