'Add a left outer join to the statement thats being constructed.'

def setup_query(self, context, entity, path, loadopt, adapter, column_collection=None, parentmapper=None, **kwargs):

    if (not context.query._enable_eagerloads):
        return
    path = path[self.parent_property]
    with_polymorphic = None
    user_defined_adapter = (self._init_user_defined_eager_proc(loadopt, context) if loadopt else False)
    if (user_defined_adapter is not False):
        (clauses, adapter, add_to_collection) = self._setup_query_on_user_defined_adapter(context, entity, path, adapter, user_defined_adapter)
    else:
        if (not path.contains(context.attributes, 'loader')):
            if self.join_depth:
                if ((path.length / 2) > self.join_depth):
                    return
            elif path.contains_mapper(self.mapper):
                return
        (clauses, adapter, add_to_collection) = self._generate_row_adapter(context, entity, path, loadopt, adapter, column_collection, parentmapper)
    with_poly_info = path.get(context.attributes, 'path_with_polymorphic', None)
    if (with_poly_info is not None):
        with_polymorphic = with_poly_info.with_polymorphic_mappers
    else:
        with_polymorphic = None
    path = path[self.mapper]
    for value in self.mapper._iterate_polymorphic_properties(mappers=with_polymorphic):
        value.setup(context, entity, path, clauses, parentmapper=self.mapper, column_collection=add_to_collection)
    if ((with_poly_info is not None) and (None in set(context.secondary_columns))):
        raise sa_exc.InvalidRequestError('Detected    unaliased    columns    when    generating    joined    load.        Make    sure    to    use    aliased=True    or    flat=True    when    using    joined    loading    with    with_polymorphic().')
