From: elazar Date: Thu, 12 Apr 2012 02:32:00 +0000 (-0500) Subject: Modified MySQLDialect.get_view_names() to also return system views such as those... X-Git-Tag: rel_0_7_7~20^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=01087224ce2198fadcb56227b4764901941472c0;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Modified MySQLDialect.get_view_names() to also return system views such as those in information_schema --- diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index 65c2c59b9f..7d856f0b7d 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -2021,7 +2021,6 @@ class MySQLDialect(default.DefaultDialect): @reflection.cache def get_view_names(self, connection, schema=None, **kw): - charset = self._connection_charset if self.server_version_info < (5, 0, 2): raise NotImplementedError if schema is None: @@ -2032,7 +2031,7 @@ class MySQLDialect(default.DefaultDialect): rp = connection.execute("SHOW FULL TABLES FROM %s" % self.identifier_preparer.quote_identifier(schema)) return [row[0] for row in self._compat_fetchall(rp, charset=charset)\ - if row[1] == 'VIEW'] + if 'VIEW' in row[1]] @reflection.cache def get_table_options(self, connection, table_name, schema=None, **kw): diff --git a/test/dialect/test_mysql.py b/test/dialect/test_mysql.py index 9a2e17ecc1..a5623a3bde 100644 --- a/test/dialect/test_mysql.py +++ b/test/dialect/test_mysql.py @@ -108,6 +108,14 @@ class DialectTest(fixtures.TestBase): } ) + @testing.only_on(['mysql'], + 'requires information_schema') + def test_system_views(self): + dialect = testing.db.dialect + connection = testing.db.connect() + view_names = dialect.get_view_names(connection, "information_schema") + self.assert_('TABLES' in view_names) + class TypesTest(fixtures.TestBase, AssertsExecutionResults, AssertsCompiledSQL): "Test MySQL column types"