summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2012-04-12 12:21:02 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2012-04-12 12:21:02 -0400
commit3d66f727f56426592d70d5cf54bbcb891172b6f0 (patch)
treefd0b53c33748a5c8020add16bf6608ce68756bda
parentba199ce80ccc7ab20fc254790b0537665c650b9f (diff)
downloadsqlalchemy-3d66f727f56426592d70d5cf54bbcb891172b6f0.tar.gz
- test explicitly for 'VIEW', 'SYSTEM VIEW'
- move the test to the reflection tests
-rw-r--r--CHANGES5
-rw-r--r--lib/sqlalchemy/dialects/mysql/base.py2
-rw-r--r--test/dialect/test_mysql.py13
3 files changed, 12 insertions, 8 deletions
diff --git a/CHANGES b/CHANGES
index 161668e82..96383e1d7 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 7d856f0b7..780007a4d 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 da59e7984..5a34a79a0 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):