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"
supports_default_values = True
supports_empty_insert = False
- supports_foreign_tables = True
supports_multivalues_insert = True
default_paramstyle = 'pyformat'
ischema_names = ischema_names
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:
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.
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
"""
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
(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"""