summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRodrigo Menezes <rodrigo.menezes@moat.com>2014-09-05 13:54:48 -0400
committerRodrigo Menezes <rodrigo.menezes@moat.com>2014-09-05 13:54:48 -0400
commitfd2faa9bc2c6d2d1b0b8e1738f0bce21e2527bb0 (patch)
tree150e1e77ee0a139d54b0363751e575aa078c43f2
parent619b0be0ce05c394613d8565c08c09cac10cdd88 (diff)
downloadsqlalchemy-pr/128.tar.gz
Added documentation. Changed my mind - added get_foreign_table_names() only to PGInspect and not in the Dialect. Added tests for PGInspect and removed a bunch of the old test scaffolding.pr/128
-rw-r--r--lib/sqlalchemy/dialects/postgresql/base.py36
-rw-r--r--lib/sqlalchemy/engine/default.py1
-rw-r--r--lib/sqlalchemy/engine/interfaces.py6
-rw-r--r--lib/sqlalchemy/engine/reflection.py3
-rw-r--r--lib/sqlalchemy/testing/requirements.py15
-rw-r--r--test/dialect/postgresql/test_reflection.py6
6 files changed, 26 insertions, 41 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py
index f65bc2473..63f6eb891 100644
--- a/lib/sqlalchemy/dialects/postgresql/base.py
+++ b/lib/sqlalchemy/dialects/postgresql/base.py
@@ -1679,6 +1679,23 @@ class PGInspector(reflection.Inspector):
schema = schema or self.default_schema_name
return self.dialect._load_enums(self.bind, schema)
+ 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]
+
class CreateEnumType(schema._CreateDropBase):
__visit_name__ = "create_enum_type"
@@ -1753,7 +1770,6 @@ class PGDialect(default.DefaultDialect):
supports_default_values = True
supports_empty_insert = False
- supports_foreign_tables = True
supports_multivalues_insert = True
default_paramstyle = 'pyformat'
ischema_names = ischema_names
@@ -2100,24 +2116,6 @@ 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
diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py
index a59efd301..2fece76b9 100644
--- a/lib/sqlalchemy/engine/default.py
+++ b/lib/sqlalchemy/engine/default.py
@@ -107,7 +107,6 @@ class DefaultDialect(interfaces.Dialect):
default_paramstyle = 'named'
supports_default_values = False
supports_empty_insert = True
- supports_foreign_tables = False
supports_multivalues_insert = False
server_version_info = None
diff --git a/lib/sqlalchemy/engine/interfaces.py b/lib/sqlalchemy/engine/interfaces.py
index 795be8273..71df29cac 100644
--- a/lib/sqlalchemy/engine/interfaces.py
+++ b/lib/sqlalchemy/engine/interfaces.py
@@ -319,12 +319,6 @@ class Dialect(object):
raise NotImplementedError()
- def get_foreign_table_names(self, connection, 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/lib/sqlalchemy/engine/reflection.py b/lib/sqlalchemy/engine/reflection.py
index 012d1d35d..f41ea1fa2 100644
--- a/lib/sqlalchemy/engine/reflection.py
+++ b/lib/sqlalchemy/engine/reflection.py
@@ -227,6 +227,9 @@ class Inspector(object):
:param schema: Optional, retrieve names from a non-default schema.
For special quoting, use :class:`.quoted_name`.
+ .. versionchanged:: 1.0.0 now returns materialized views as well
+ as normal views.
+
"""
return self.dialect.get_view_names(self.bind, schema,
diff --git a/lib/sqlalchemy/testing/requirements.py b/lib/sqlalchemy/testing/requirements.py
index f0f0e9e47..a04bcbbdd 100644
--- a/lib/sqlalchemy/testing/requirements.py
+++ b/lib/sqlalchemy/testing/requirements.py
@@ -253,15 +253,6 @@ class SuiteRequirements(Requirements):
return exclusions.closed()
@property
- def foreign_tables(self):
- """target platform supports FOREIGN TABLEs."""
-
- return exclusions.only_if(
- lambda config: config.db.dialect.supports_foreign_tables,
- "%(database)s %(does_support)s 'FOREIGN TABLEs'"
- )
-
- @property
def schemas(self):
"""Target database must support external schemas, and have one
named 'test_schema'."""
@@ -311,12 +302,6 @@ class SuiteRequirements(Requirements):
return self.views
@property
- def foreign_table_reflection(self):
- """target database must support inspection of the full CREATE FOREIGN TABLE definition.
- """
- return self.foreign_tables
-
- @property
def schema_reflection(self):
return self.schemas
diff --git a/test/dialect/postgresql/test_reflection.py b/test/dialect/postgresql/test_reflection.py
index 567aec927..3bc4cd715 100644
--- a/test/dialect/postgresql/test_reflection.py
+++ b/test/dialect/postgresql/test_reflection.py
@@ -107,6 +107,12 @@ class AltRelkindReflectionTest(fixtures.TestBase, AssertsExecutionResults):
(89, 'd1',)
]
+ def test_get_foreign_table_names(self):
+ inspector = inspect(testing.db)
+ connection = testing.db.connect()
+ ft_names = inspector.get_foreign_table_names(connection)
+ assert u'test_foreigntable' in ft_names
+
class DomainReflectionTest(fixtures.TestBase, AssertsExecutionResults):
"""Test PostgreSQL domains"""