(self, join, asfrom=False, from_linter=None, **kwargs)
| 5606 | return "" |
| 5607 | |
| 5608 | def visit_join(self, join, asfrom=False, from_linter=None, **kwargs): |
| 5609 | if from_linter: |
| 5610 | from_linter.edges.update( |
| 5611 | itertools.product( |
| 5612 | _de_clone(join.left._from_objects), |
| 5613 | _de_clone(join.right._from_objects), |
| 5614 | ) |
| 5615 | ) |
| 5616 | |
| 5617 | if join.full: |
| 5618 | join_type = " FULL OUTER JOIN " |
| 5619 | elif join.isouter: |
| 5620 | join_type = " LEFT OUTER JOIN " |
| 5621 | else: |
| 5622 | join_type = " JOIN " |
| 5623 | return ( |
| 5624 | join.left._compiler_dispatch( |
| 5625 | self, asfrom=True, from_linter=from_linter, **kwargs |
| 5626 | ) |
| 5627 | + join_type |
| 5628 | + join.right._compiler_dispatch( |
| 5629 | self, asfrom=True, from_linter=from_linter, **kwargs |
| 5630 | ) |
| 5631 | + " ON " |
| 5632 | # TODO: likely need asfrom=True here? |
| 5633 | + join.onclause._compiler_dispatch( |
| 5634 | self, from_linter=from_linter, **kwargs |
| 5635 | ) |
| 5636 | ) |
| 5637 | |
| 5638 | def _setup_crud_hints(self, stmt, table_text): |
| 5639 | dialect_hints = { |
nothing calls this directly
no test coverage detected