transformJoinOnClause() * Transform the qual conditions for JOIN/ON. * Result is a transformed qualification expression. */
| 505 | * Result is a transformed qualification expression. |
| 506 | */ |
| 507 | static Node * |
| 508 | transformJoinOnClause(ParseState *pstate, JoinExpr *j, List *namespace) |
| 509 | { |
| 510 | Node *result; |
| 511 | List *save_namespace; |
| 512 | |
| 513 | /* |
| 514 | * The namespace that the join expression should see is just the two |
| 515 | * subtrees of the JOIN plus any outer references from upper pstate |
| 516 | * levels. Temporarily set this pstate's namespace accordingly. (We need |
| 517 | * not check for refname conflicts, because transformFromClauseItem() |
| 518 | * already did.) All namespace items are marked visible regardless of |
| 519 | * LATERAL state. |
| 520 | */ |
| 521 | setNamespaceLateralState(namespace, false, true); |
| 522 | |
| 523 | save_namespace = pstate->p_namespace; |
| 524 | pstate->p_namespace = namespace; |
| 525 | |
| 526 | result = transformWhereClause(pstate, j->quals, |
| 527 | EXPR_KIND_JOIN_ON, "JOIN/ON"); |
| 528 | |
| 529 | pstate->p_namespace = save_namespace; |
| 530 | |
| 531 | return result; |
| 532 | } |
| 533 | |
| 534 | /* |
| 535 | * transformTableEntry --- transform a RangeVar (simple relation reference) |
no test coverage detected