statement
if self._params:
stmt = stmt.params(self._params)
+
+
# TODO: there's no tests covering effects of
# the annotation not being there
return stmt._annotate({'no_replacement_traverse': True})
def _transform_select_for_nested_joins(self, select):
adapters = []
- traverse_options = {"cloned": {}}
+ traverse_options = {"cloned": {}, "unconditional": True}
def visit_join(elem):
if isinstance(elem.right, sql.FromGrouping):
c._label = c._key_label = c.name
elem.right = selectable
- import pdb
- pdb.set_trace()
adapter = sql_util.ClauseAdapter(selectable,
traverse_options=traverse_options)
- adapter.__traverse_options__.pop('stop_on')
adapters.append(adapter)
select = visitors.cloned_traverse(select,
traverse_options, {"join": visit_join})
- if adapters:
- import pdb
- pdb.set_trace()
for adap in reversed(adapters):
select = adap.traverse(select)
return select
cloned = util.column_dict()
stop_on = util.column_set([id(x) for x in opts.get('stop_on', [])])
+ unconditional = opts.get('unconditional', False)
def clone(elem, **kw):
if id(elem) in stop_on or \
- 'no_replacement_traverse' in elem._annotations:
+ (not unconditional
+ and 'no_replacement_traverse' in elem._annotations):
return elem
else:
newelem = replace(elem)