| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| SELECT * |
| FROM a JOIN b ON a.w = b.w |
| JOIN c ON a.x = c.x |
| JOIN d ON a.y = d.y; |
| -- |
| SetOperationStatement |
| +-set_operation_query=SetOperation[set_operation_type=Select] |
| +-children= |
| +-Select |
| +-select_clause=SelectStar |
| +-from_clause= |
| +-JoinedTable[join_type=InnerJoin] |
| +-left_table=JoinedTable[join_type=InnerJoin] |
| | +-left_table=JoinedTable[join_type=InnerJoin] |
| | | +-left_table=TableReference[table=a] |
| | | +-right_table=TableReference[table=b] |
| | | +-join_predicate=Equal |
| | | +-left_operand=AttributeReference[attribute_name=w, |
| | | | relation_name=a] |
| | | +-right_operand=AttributeReference[attribute_name=w, |
| | | relation_name=b] |
| | +-right_table=TableReference[table=c] |
| | +-join_predicate=Equal |
| | +-left_operand=AttributeReference[attribute_name=x,relation_name=a] |
| | +-right_operand=AttributeReference[attribute_name=x, |
| | relation_name=c] |
| +-right_table=TableReference[table=d] |
| +-join_predicate=Equal |
| +-left_operand=AttributeReference[attribute_name=y,relation_name=a] |
| +-right_operand=AttributeReference[attribute_name=y,relation_name=d] |
| == |
| |
| SELECT * |
| FROM a AS a1 JOIN b AS b1 ON a1.w = b1.w |
| JOIN c AS c1 ON a1.x = c1.x |
| JOIN d AS d1 ON a1.y = d1.y; |
| WHERE a1.x > b1.x |
| AND a1.y > c1.y |
| AND a1.z > d1.z; |
| -- |
| SetOperationStatement |
| +-set_operation_query=SetOperation[set_operation_type=Select] |
| +-children= |
| +-Select |
| +-select_clause=SelectStar |
| +-from_clause= |
| +-JoinedTable[join_type=InnerJoin] |
| +-left_table=JoinedTable[join_type=InnerJoin] |
| | +-left_table=JoinedTable[join_type=InnerJoin] |
| | | +-left_table=TableReference[table=a] |
| | | | +-table_signature=TableSignature[table_alias=a1] |
| | | +-right_table=TableReference[table=b] |
| | | | +-table_signature=TableSignature[table_alias=b1] |
| | | +-join_predicate=Equal |
| | | +-left_operand=AttributeReference[attribute_name=w, |
| | | | relation_name=a1] |
| | | +-right_operand=AttributeReference[attribute_name=w, |
| | | relation_name=b1] |
| | +-right_table=TableReference[table=c] |
| | | +-table_signature=TableSignature[table_alias=c1] |
| | +-join_predicate=Equal |
| | +-left_operand=AttributeReference[attribute_name=x, |
| | | relation_name=a1] |
| | +-right_operand=AttributeReference[attribute_name=x, |
| | relation_name=c1] |
| +-right_table=TableReference[table=d] |
| | +-table_signature=TableSignature[table_alias=d1] |
| +-join_predicate=Equal |
| +-left_operand=AttributeReference[attribute_name=y,relation_name=a1] |
| +-right_operand=AttributeReference[attribute_name=y,relation_name=d1] |
| == |
| |
| SELECT * |
| FROM a LEFT OUTER JOIN b ON a.w = b.w |
| RIGHT OUTER JOIN c ON a.x = c.x |
| FULL OUTER JOIN d ON a.y = d.y; |
| -- |
| SetOperationStatement |
| +-set_operation_query=SetOperation[set_operation_type=Select] |
| +-children= |
| +-Select |
| +-select_clause=SelectStar |
| +-from_clause= |
| +-JoinedTable[join_type=FullOuterJoin] |
| +-left_table=JoinedTable[join_type=RightOuterJoin] |
| | +-left_table=JoinedTable[join_type=LeftOuterJoin] |
| | | +-left_table=TableReference[table=a] |
| | | +-right_table=TableReference[table=b] |
| | | +-join_predicate=Equal |
| | | +-left_operand=AttributeReference[attribute_name=w, |
| | | | relation_name=a] |
| | | +-right_operand=AttributeReference[attribute_name=w, |
| | | relation_name=b] |
| | +-right_table=TableReference[table=c] |
| | +-join_predicate=Equal |
| | +-left_operand=AttributeReference[attribute_name=x,relation_name=a] |
| | +-right_operand=AttributeReference[attribute_name=x, |
| | relation_name=c] |
| +-right_table=TableReference[table=d] |
| +-join_predicate=Equal |
| +-left_operand=AttributeReference[attribute_name=y,relation_name=a] |
| +-right_operand=AttributeReference[attribute_name=y,relation_name=d] |
| == |
| |
| SELECT * |
| FROM a INNER JOIN b ON (a.w = b.w OR a.x > b.y); |
| -- |
| SetOperationStatement |
| +-set_operation_query=SetOperation[set_operation_type=Select] |
| +-children= |
| +-Select |
| +-select_clause=SelectStar |
| +-from_clause= |
| +-JoinedTable[join_type=InnerJoin] |
| +-left_table=TableReference[table=a] |
| +-right_table=TableReference[table=b] |
| +-join_predicate=Or |
| +-Equal |
| | +-left_operand=AttributeReference[attribute_name=w,relation_name=a] |
| | +-right_operand=AttributeReference[attribute_name=w, |
| | relation_name=b] |
| +-Greater |
| +-left_operand=AttributeReference[attribute_name=x,relation_name=a] |
| +-right_operand=AttributeReference[attribute_name=y, |
| relation_name=b] |
| == |
| |
| SELECT * |
| FROM b LEFT JOIN c ON b.x = c.x JOIN d ON c.y = d.y; |
| -- |
| SetOperationStatement |
| +-set_operation_query=SetOperation[set_operation_type=Select] |
| +-children= |
| +-Select |
| +-select_clause=SelectStar |
| +-from_clause= |
| +-JoinedTable[join_type=InnerJoin] |
| +-left_table=JoinedTable[join_type=LeftOuterJoin] |
| | +-left_table=TableReference[table=b] |
| | +-right_table=TableReference[table=c] |
| | +-join_predicate=Equal |
| | +-left_operand=AttributeReference[attribute_name=x,relation_name=b] |
| | +-right_operand=AttributeReference[attribute_name=x, |
| | relation_name=c] |
| +-right_table=TableReference[table=d] |
| +-join_predicate=Equal |
| +-left_operand=AttributeReference[attribute_name=y,relation_name=c] |
| +-right_operand=AttributeReference[attribute_name=y,relation_name=d] |
| == |
| |
| SELECT * |
| FROM b LEFT JOIN (c JOIN d ON c.y = d.y) ON b.x = c.x; |
| -- |
| SetOperationStatement |
| +-set_operation_query=SetOperation[set_operation_type=Select] |
| +-children= |
| +-Select |
| +-select_clause=SelectStar |
| +-from_clause= |
| +-JoinedTable[join_type=LeftOuterJoin] |
| +-left_table=TableReference[table=b] |
| +-right_table=JoinedTable[join_type=InnerJoin] |
| | +-left_table=TableReference[table=c] |
| | +-right_table=TableReference[table=d] |
| | +-join_predicate=Equal |
| | +-left_operand=AttributeReference[attribute_name=y,relation_name=c] |
| | +-right_operand=AttributeReference[attribute_name=y, |
| | relation_name=d] |
| +-join_predicate=Equal |
| +-left_operand=AttributeReference[attribute_name=x,relation_name=b] |
| +-right_operand=AttributeReference[attribute_name=x,relation_name=c] |