]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Added documentation. Changed my mind - added get_foreign_table_names() only to PGInsp...
authorRodrigo Menezes <rodrigo.menezes@moat.com>
Fri, 5 Sep 2014 17:54:48 +0000 (13:54 -0400)
committerRodrigo Menezes <rodrigo.menezes@moat.com>
Fri, 5 Sep 2014 17:54:48 +0000 (13:54 -0400)
lib/sqlalchemy/dialects/postgresql/base.py
lib/sqlalchemy/engine/default.py
lib/sqlalchemy/engine/interfaces.py
lib/sqlalchemy/engine/reflection.py
lib/sqlalchemy/testing/requirements.py
test/dialect/postgresql/test_reflection.py

index f65bc24735ac08e7a5dacce0e7b41bb7a5e2b6e4..63f6eb89142c348462dd2a6534569cc2824731c3 100644 (file)
@@ -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
@@ -2099,24 +2115,6 @@ class PGDialect(default.DefaultDialect):
             view_names = [row[0] for row in connection.execute(s)]
         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:
index a59efd3015389246349e9edb0c06aea721f0e1e0..2fece76b9fe5fafcc3f96b0b4e89352e02d76bff 100644 (file)
@@ -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
index 795be8273b8a757b9c957c69f731e0ede3bee7a9..71df29cac16eef02512354209b0b3de2c4206390 100644 (file)
@@ -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.
 
index 012d1d35ddb60dc8b4ecd8ad9df0dd728ea842a9..f41ea1fa2767f61575c1448e983f4383df028493 100644 (file)
@@ -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,
index f0f0e9e4701cfc8941ac96c799dfb88883fb8138..a04bcbbdd4d4833343ed14b5a581aef1cba6b0ff 100644 (file)
@@ -252,15 +252,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
@@ -310,12 +301,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
index 567aec927abce217b11019f03902b92aff372de0..3bc4cd71530a438a3ae2bffd4bc47a30602ed12a 100644 (file)
@@ -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"""