From 3d66f727f56426592d70d5cf54bbcb891172b6f0 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Thu, 12 Apr 2012 12:21:02 -0400 Subject: [PATCH] - test explicitly for 'VIEW', 'SYSTEM VIEW' - move the test to the reflection tests --- CHANGES | 5 +++++ lib/sqlalchemy/dialects/mysql/base.py | 2 +- test/dialect/test_mysql.py | 13 ++++++------- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/CHANGES b/CHANGES index 161668e82c..96383e1d74 100644 --- a/CHANGES +++ b/CHANGES @@ -81,6 +81,11 @@ CHANGES name that's a reserved word. Courtesy Jeff Dairiki. [ticket:2460] + - [bug] Fixed bug whereby get_view_names() for + "information_schema" schema would fail + to retrieve views marked as "SYSTEM VIEW". + courtesy Matthew Turland. + 0.7.6 ===== - orm diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index 7d856f0b7d..780007a4d8 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -2031,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 'VIEW' in row[1]] + if row[1] in ('VIEW', 'SYSTEM VIEW')] @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 da59e79840..5a34a79a0d 100644 --- a/test/dialect/test_mysql.py +++ b/test/dialect/test_mysql.py @@ -108,13 +108,6 @@ class DialectTest(fixtures.TestBase): } ) - @testing.only_on(['mysql'], 'requires information_schema') - @testing.exclude('mysql', '<', (5, 0, 0), 'no information_schema support') - 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" @@ -1127,6 +1120,12 @@ class ReflectionTest(fixtures.TestBase, AssertsExecutionResults): finally: meta.drop_all() + @testing.exclude('mysql', '<', (5, 0, 0), 'no information_schema support') + 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 SQLTest(fixtures.TestBase, AssertsCompiledSQL): -- 2.47.2