[Sqlalchemy-tickets] [sqlalchemy] #2728: potential glitch in schema calcs for metadata.reflect
Brought to you by:
zzzeek
|
From: sqlalchemy <mi...@zz...> - 2013-05-16 16:59:38
|
#2728: potential glitch in schema calcs for metadata.reflect
--------------------+------------------------------------
Reporter: zzzeek | Owner: zzzeek
Type: defect | Status: new
Priority: medium | Milestone: 0.8.xx
Component: schema | Severity: major - 1-3 hours
Keywords: | Progress State: needs tests
--------------------+------------------------------------
{{{
#!diff
diff -r e57b8df1f95e lib/sqlalchemy/schema.py
--- a/lib/sqlalchemy/schema.py Wed May 15 15:46:29 2013 -0400
+++ b/lib/sqlalchemy/schema.py Thu May 16 12:58:47 2013 -0400
@@ -2716,20 +2716,28 @@
if schema is not None:
reflect_opts['schema'] = schema
- available = util.OrderedSet(bind.engine.table_names(schema,
-
connection=conn))
+ available = util.OrderedSet(bind.engine.table_names(schema,
connection=conn))
if views:
available.update(
bind.dialect.get_view_names(conn, schema)
)
+ if schema is not None:
+ available_w_schema = util.OrderedSet(["%s.%s" % (schema,
name)
+ for name in available])
+ else:
+ available_w_schema = available
+
current = set(self.tables.iterkeys())
if only is None:
- load = [name for name in available if name not in
current]
+ load = [name for name, schname in
+ zip(available, available_w_schema)
+ if schname not in current]
elif util.callable(only):
- load = [name for name in available
- if name not in current and only(name, self)]
+ load = [name for name, schname
+ in zip(available, available_w_schema)
+ if schname not in current and only(name, self)]
else:
missing = [name for name in only if name not in
available]
if missing:
}}}
--
Ticket URL: <http://www.sqlalchemy.org/trac/ticket/2728>
sqlalchemy <http://www.sqlalchemy.org/>
The Database Toolkit for Python
|