| 382 | on_all = _rec(on_field) |
| 383 | |
| 384 | def _test(e: expr.ColumnExpression) -> bool: |
| 385 | if not isinstance(e, expr.ColumnBinaryOpExpression): |
| 386 | return False |
| 387 | if e._operator != operator.eq: |
| 388 | return False |
| 389 | left_side = e._left |
| 390 | if not isinstance(left_side, expr.ColumnReference): |
| 391 | return False |
| 392 | right_side = e._right |
| 393 | if not isinstance(right_side, expr.ColumnReference): |
| 394 | return False |
| 395 | return ( |
| 396 | left_side.table in left_tab._subtables() |
| 397 | and right_side.table in right_tab._subtables() |
| 398 | ) |
| 399 | |
| 400 | on = [] |
| 401 | postfilter = [] |