diff options
author | Rodrigo Menezes <rodrigo.menezes@moat.com> | 2014-09-03 16:38:43 -0400 |
---|---|---|
committer | Rodrigo Menezes <rodrigo.menezes@moat.com> | 2014-09-03 16:38:43 -0400 |
commit | fbd2d70a5cfd7b5c219c51cb5b7866c4ab89cece (patch) | |
tree | 996181dbb3fcade0e1dbfad163d01d3cb547580d | |
parent | d39be884321d0afbae7ef3da556382b53fef8060 (diff) | |
download | sqlalchemy-fbd2d70a5cfd7b5c219c51cb5b7866c4ab89cece.tar.gz |
Fixing some pep8s and adding get_foreign_tables.
-rw-r--r-- | lib/sqlalchemy/dialects/postgresql/base.py | 22 | ||||
-rw-r--r-- | lib/sqlalchemy/engine/interfaces.py | 6 | ||||
-rw-r--r-- | test/dialect/postgresql/test_reflection.py | 17 | ||||
-rw-r--r-- | test/requirements.py | 2 |
4 files changed, 38 insertions, 9 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py index 40b2f60ae..69ae6cfed 100644 --- a/lib/sqlalchemy/dialects/postgresql/base.py +++ b/lib/sqlalchemy/dialects/postgresql/base.py @@ -2086,7 +2086,7 @@ class PGDialect(default.DefaultDialect): s = """ SELECT relname FROM pg_class c - WHERE relkind = 'v' + WHERE relkind IN ('m', v') AND '%(schema)s' = (select nspname from pg_namespace n where n.oid = c.relnamespace) """ % dict(schema=current_schema) @@ -2099,6 +2099,24 @@ class PGDialect(default.DefaultDialect): return view_names @reflection.cache + def get_foreign_table_names(self, connection, schema=None, **kw): + if schema is not None: + current_schema = schema + else: + current_schema = self.default_schema_name + + result = connection.execute( + sql.text("SELECT relname FROM pg_class c " + "WHERE relkind = 'f' " + "AND '%s' = (select nspname from pg_namespace n " + "where n.oid = c.relnamespace) " % + current_schema, + typemap={'relname': sqltypes.Unicode} + ) + ) + return [row[0] for row in result] + + @reflection.cache def get_view_definition(self, connection, view_name, schema=None, **kw): if schema is not None: current_schema = schema @@ -2434,7 +2452,7 @@ class PGDialect(default.DefaultDialect): # cast indkey as varchar since it's an int2vector, # returned as a list by some drivers such as pypostgresql - + IDX_SQL = """ SELECT i.relname as relname, diff --git a/lib/sqlalchemy/engine/interfaces.py b/lib/sqlalchemy/engine/interfaces.py index 71df29cac..e1e346850 100644 --- a/lib/sqlalchemy/engine/interfaces.py +++ b/lib/sqlalchemy/engine/interfaces.py @@ -319,6 +319,12 @@ class Dialect(object): raise NotImplementedError() + def get_foreign_tables(self, connection, view_name, schema=None, **kw): + """Return a list of foreign table names for `schema`.""" + """ + + raise NotImplementedError() + def get_view_definition(self, connection, view_name, schema=None, **kw): """Return view definition. diff --git a/test/dialect/postgresql/test_reflection.py b/test/dialect/postgresql/test_reflection.py index 405ac5921..567aec927 100644 --- a/test/dialect/postgresql/test_reflection.py +++ b/test/dialect/postgresql/test_reflection.py @@ -13,7 +13,7 @@ import sqlalchemy as sa from sqlalchemy.dialects.postgresql import base as postgresql -class AlternateRelkindReflectionTest(fixtures.TestBase, AssertsExecutionResults): +class AltRelkindReflectionTest(fixtures.TestBase, AssertsExecutionResults): """Test reflection on materialized views and foreign tables""" __requires__ = 'postgresql_test_dblink', @@ -23,7 +23,8 @@ class AlternateRelkindReflectionTest(fixtures.TestBase, AssertsExecutionResults) @classmethod def setup_class(cls): from sqlalchemy.testing import config - cls.dblink = config.file_config.get('sqla_testing', 'postgres_test_db_link') + cls.dblink = config.file_config.get('sqla_testing', + 'postgres_test_db_link') metadata = MetaData(testing.db) testtable = Table( @@ -39,8 +40,10 @@ class AlternateRelkindReflectionTest(fixtures.TestBase, AssertsExecutionResults) for ddl in \ "CREATE MATERIALIZED VIEW test_mview AS SELECT * FROM testtable;", \ - "CREATE SERVER test_server FOREIGN DATA WRAPPER postgres_fdw OPTIONS (dbname 'test', host '%s');" % cls.dblink, \ - "CREATE USER MAPPING FOR public SERVER test_server options (user 'scott', password 'tiger');", \ + "CREATE SERVER test_server FOREIGN DATA WRAPPER postgres_fdw \ + OPTIONS (dbname 'test', host '%s');" % cls.dblink, \ + "CREATE USER MAPPING FOR public \ + SERVER test_server options (user 'scott', password 'tiger');", \ "CREATE FOREIGN TABLE test_foreigntable ( \ id INT, \ data VARCHAR(30) \ @@ -63,7 +66,8 @@ class AlternateRelkindReflectionTest(fixtures.TestBase, AssertsExecutionResults) def test_mview_is_reflected(self): metadata = MetaData(testing.db) table = Table('test_mview', metadata, autoload=True) - eq_(set(table.columns.keys()), set(['id', 'data']), "Columns of reflected mview didn't equal expected columns") + eq_(set(table.columns.keys()), set(['id', 'data']), + "Columns of reflected mview didn't equal expected columns") def test_mview_select(self): metadata = MetaData(testing.db) @@ -75,7 +79,8 @@ class AlternateRelkindReflectionTest(fixtures.TestBase, AssertsExecutionResults) def test_foreign_table_is_reflected(self): metadata = MetaData(testing.db) table = Table('test_foreigntable', metadata, autoload=True) - eq_(set(table.columns.keys()), set(['id', 'data']), "Columns of reflected foreign table didn't equal expected columns") + eq_(set(table.columns.keys()), set(['id', 'data']), + "Columns of reflected foreign table didn't equal expected columns") def test_foreign_table_select(self): metadata = MetaData(testing.db) diff --git a/test/requirements.py b/test/requirements.py index 46c19389a..14bb25691 100644 --- a/test/requirements.py +++ b/test/requirements.py @@ -712,7 +712,7 @@ class DefaultRequirements(SuiteRequirements): 'sqla_testing', 'postgres_test_db_link'), "postgres_test_db_link option not specified in config" ) - + @property def percent_schema_names(self): return skip_if( |