From 01087224ce2198fadcb56227b4764901941472c0 Mon Sep 17 00:00:00 2001 From: elazar Date: Wed, 11 Apr 2012 21:32:00 -0500 Subject: [PATCH] Modified MySQLDialect.get_view_names() to also return system views such as those in information_schema --- lib/sqlalchemy/dialects/mysql/base.py | 3 +-- test/dialect/test_mysql.py | 8 ++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) 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" -- 2.47.2