#   Copyright 2016, Quickstep Research Group, Computer Sciences Department,
#     University of Wisconsin—Madison.
#
#   Licensed 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.

[default initial_logical_plan]

SELECT a.z
FROM a JOIN b ON a.w = b.w
       JOIN c ON a.x = c.x
       JOIN d ON a.y = d.y;
--
TopLevelPlan
+-plan=Project
| +-input=Filter
| | +-input=MultiwayCartesianJoin
| | | +-Filter
| | | | +-input=MultiwayCartesianJoin
| | | | | +-Filter
| | | | | | +-input=MultiwayCartesianJoin
| | | | | | | +-TableReference[relation_name=a]
| | | | | | | | +-AttributeReference[id=0,name=w,relation=a,type=Int]
| | | | | | | | +-AttributeReference[id=1,name=x,relation=a,type=Int]
| | | | | | | | +-AttributeReference[id=2,name=y,relation=a,type=Int]
| | | | | | | | +-AttributeReference[id=3,name=z,relation=a,type=Int]
| | | | | | | +-TableReference[relation_name=b]
| | | | | | |   +-AttributeReference[id=4,name=w,relation=b,type=Int]
| | | | | | |   +-AttributeReference[id=5,name=x,relation=b,type=Int]
| | | | | | +-filter_predicate=Equal
| | | | | |   +-AttributeReference[id=0,name=w,relation=a,type=Int]
| | | | | |   +-AttributeReference[id=4,name=w,relation=b,type=Int]
| | | | | +-TableReference[relation_name=c]
| | | | |   +-AttributeReference[id=6,name=x,relation=c,type=Int]
| | | | |   +-AttributeReference[id=7,name=y,relation=c,type=Int]
| | | | +-filter_predicate=Equal
| | | |   +-AttributeReference[id=1,name=x,relation=a,type=Int]
| | | |   +-AttributeReference[id=6,name=x,relation=c,type=Int]
| | | +-TableReference[relation_name=d]
| | |   +-AttributeReference[id=8,name=y,relation=d,type=Int]
| | |   +-AttributeReference[id=9,name=z,relation=d,type=Int]
| | +-filter_predicate=Equal
| |   +-AttributeReference[id=2,name=y,relation=a,type=Int]
| |   +-AttributeReference[id=8,name=y,relation=d,type=Int]
| +-project_list=
|   +-AttributeReference[id=3,name=z,relation=a,type=Int]
+-output_attributes=
  +-AttributeReference[id=3,name=z,relation=a,type=Int]
==

SELECT a.z
FROM a JOIN b ON (a.w = b.w OR a.x > b.x)
       JOIN c ON (a.x = c.x OR a.y > c.y)
       JOIN d ON (a.y = d.y OR a.z > d.z);
--
TopLevelPlan
+-plan=Project
| +-input=Filter
| | +-input=MultiwayCartesianJoin
| | | +-Filter
| | | | +-input=MultiwayCartesianJoin
| | | | | +-Filter
| | | | | | +-input=MultiwayCartesianJoin
| | | | | | | +-TableReference[relation_name=a]
| | | | | | | | +-AttributeReference[id=0,name=w,relation=a,type=Int]
| | | | | | | | +-AttributeReference[id=1,name=x,relation=a,type=Int]
| | | | | | | | +-AttributeReference[id=2,name=y,relation=a,type=Int]
| | | | | | | | +-AttributeReference[id=3,name=z,relation=a,type=Int]
| | | | | | | +-TableReference[relation_name=b]
| | | | | | |   +-AttributeReference[id=4,name=w,relation=b,type=Int]
| | | | | | |   +-AttributeReference[id=5,name=x,relation=b,type=Int]
| | | | | | +-filter_predicate=Or
| | | | | |   +-Equal
| | | | | |   | +-AttributeReference[id=0,name=w,relation=a,type=Int]
| | | | | |   | +-AttributeReference[id=4,name=w,relation=b,type=Int]
| | | | | |   +-Greater
| | | | | |     +-AttributeReference[id=1,name=x,relation=a,type=Int]
| | | | | |     +-AttributeReference[id=5,name=x,relation=b,type=Int]
| | | | | +-TableReference[relation_name=c]
| | | | |   +-AttributeReference[id=6,name=x,relation=c,type=Int]
| | | | |   +-AttributeReference[id=7,name=y,relation=c,type=Int]
| | | | +-filter_predicate=Or
| | | |   +-Equal
| | | |   | +-AttributeReference[id=1,name=x,relation=a,type=Int]
| | | |   | +-AttributeReference[id=6,name=x,relation=c,type=Int]
| | | |   +-Greater
| | | |     +-AttributeReference[id=2,name=y,relation=a,type=Int]
| | | |     +-AttributeReference[id=7,name=y,relation=c,type=Int]
| | | +-TableReference[relation_name=d]
| | |   +-AttributeReference[id=8,name=y,relation=d,type=Int]
| | |   +-AttributeReference[id=9,name=z,relation=d,type=Int]
| | +-filter_predicate=Or
| |   +-Equal
| |   | +-AttributeReference[id=2,name=y,relation=a,type=Int]
| |   | +-AttributeReference[id=8,name=y,relation=d,type=Int]
| |   +-Greater
| |     +-AttributeReference[id=3,name=z,relation=a,type=Int]
| |     +-AttributeReference[id=9,name=z,relation=d,type=Int]
| +-project_list=
|   +-AttributeReference[id=3,name=z,relation=a,type=Int]
+-output_attributes=
  +-AttributeReference[id=3,name=z,relation=a,type=Int]
==

SELECT a1.z
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;
--
TopLevelPlan
+-plan=Project
| +-input=Filter
| | +-input=MultiwayCartesianJoin
| | | +-Filter
| | | | +-input=MultiwayCartesianJoin
| | | | | +-Filter
| | | | | | +-input=MultiwayCartesianJoin
| | | | | | | +-TableReference[relation_name=a,relation_alias=a1]
| | | | | | | | +-AttributeReference[id=0,name=w,relation=a1,type=Int]
| | | | | | | | +-AttributeReference[id=1,name=x,relation=a1,type=Int]
| | | | | | | | +-AttributeReference[id=2,name=y,relation=a1,type=Int]
| | | | | | | | +-AttributeReference[id=3,name=z,relation=a1,type=Int]
| | | | | | | +-TableReference[relation_name=b,relation_alias=b1]
| | | | | | |   +-AttributeReference[id=4,name=w,relation=b1,type=Int]
| | | | | | |   +-AttributeReference[id=5,name=x,relation=b1,type=Int]
| | | | | | +-filter_predicate=Equal
| | | | | |   +-AttributeReference[id=0,name=w,relation=a1,type=Int]
| | | | | |   +-AttributeReference[id=4,name=w,relation=b1,type=Int]
| | | | | +-TableReference[relation_name=c,relation_alias=c1]
| | | | |   +-AttributeReference[id=6,name=x,relation=c1,type=Int]
| | | | |   +-AttributeReference[id=7,name=y,relation=c1,type=Int]
| | | | +-filter_predicate=Equal
| | | |   +-AttributeReference[id=1,name=x,relation=a1,type=Int]
| | | |   +-AttributeReference[id=6,name=x,relation=c1,type=Int]
| | | +-TableReference[relation_name=d,relation_alias=d1]
| | |   +-AttributeReference[id=8,name=y,relation=d1,type=Int]
| | |   +-AttributeReference[id=9,name=z,relation=d1,type=Int]
| | +-filter_predicate=Equal
| |   +-AttributeReference[id=2,name=y,relation=a1,type=Int]
| |   +-AttributeReference[id=8,name=y,relation=d1,type=Int]
| +-project_list=
|   +-AttributeReference[id=3,name=z,relation=a1,type=Int]
+-output_attributes=
  +-AttributeReference[id=3,name=z,relation=a1,type=Int]
==


# Outer joins
SELECT *
FROM b LEFT JOIN c ON (b.x = c.x AND c.x > 10);
--
TopLevelPlan
+-plan=Project
| +-input=HashLeftOuterJoin
| | +-left=TableReference[relation_name=b]
| | | +-AttributeReference[id=0,name=w,relation=b,type=Int]
| | | +-AttributeReference[id=1,name=x,relation=b,type=Int]
| | +-right=TableReference[relation_name=c]
| | | +-AttributeReference[id=2,name=x,relation=c,type=Int]
| | | +-AttributeReference[id=3,name=y,relation=c,type=Int]
| | +-residual_predicate=And
| | | +-Equal
| | | | +-AttributeReference[id=1,name=x,relation=b,type=Int]
| | | | +-AttributeReference[id=2,name=x,relation=c,type=Int]
| | | +-Greater
| | |   +-AttributeReference[id=2,name=x,relation=c,type=Int]
| | |   +-Literal[value=10,type=Int]
| | +-left_join_attributes=
| | | +-[]
| | +-right_join_attributes=
| |   +-[]
| +-project_list=
|   +-AttributeReference[id=0,name=w,relation=b,type=Int]
|   +-AttributeReference[id=1,name=x,relation=b,type=Int]
|   +-AttributeReference[id=2,name=x,relation=c,type=Int NULL]
|   +-AttributeReference[id=3,name=y,relation=c,type=Int NULL]
+-output_attributes=
  +-AttributeReference[id=0,name=w,relation=b,type=Int]
  +-AttributeReference[id=1,name=x,relation=b,type=Int]
  +-AttributeReference[id=2,name=x,relation=c,type=Int NULL]
  +-AttributeReference[id=3,name=y,relation=c,type=Int NULL]
==

SELECT a.w, b.x, c.y, a.w + b.x + c.y
FROM a LEFT JOIN b ON a.w = b.w RIGHT JOIN c ON b.x = c.x;
--
TopLevelPlan
+-plan=Project
| +-input=HashLeftOuterJoin
| | +-left=TableReference[relation_name=c]
| | | +-AttributeReference[id=6,name=x,relation=c,type=Int]
| | | +-AttributeReference[id=7,name=y,relation=c,type=Int]
| | +-right=HashLeftOuterJoin
| | | +-left=TableReference[relation_name=a]
| | | | +-AttributeReference[id=0,name=w,relation=a,type=Int]
| | | | +-AttributeReference[id=1,name=x,relation=a,type=Int]
| | | | +-AttributeReference[id=2,name=y,relation=a,type=Int]
| | | | +-AttributeReference[id=3,name=z,relation=a,type=Int]
| | | +-right=TableReference[relation_name=b]
| | | | +-AttributeReference[id=4,name=w,relation=b,type=Int]
| | | | +-AttributeReference[id=5,name=x,relation=b,type=Int]
| | | +-residual_predicate=Equal
| | | | +-AttributeReference[id=0,name=w,relation=a,type=Int]
| | | | +-AttributeReference[id=4,name=w,relation=b,type=Int]
| | | +-left_join_attributes=
| | | | +-[]
| | | +-right_join_attributes=
| | |   +-[]
| | +-residual_predicate=Equal
| | | +-AttributeReference[id=5,name=x,relation=b,type=Int NULL]
| | | +-AttributeReference[id=6,name=x,relation=c,type=Int]
| | +-left_join_attributes=
| | | +-[]
| | +-right_join_attributes=
| |   +-[]
| +-project_list=
|   +-AttributeReference[id=0,name=w,relation=a,type=Int NULL]
|   +-AttributeReference[id=5,name=x,relation=b,type=Int NULL]
|   +-AttributeReference[id=7,name=y,relation=c,type=Int]
|   +-Alias[id=8,name=,alias=((a.w+b.x)+c.y),relation=,type=Int NULL]
|     +-Add
|       +-Add
|       | +-AttributeReference[id=0,name=w,relation=a,type=Int NULL]
|       | +-AttributeReference[id=5,name=x,relation=b,type=Int NULL]
|       +-AttributeReference[id=7,name=y,relation=c,type=Int]
+-output_attributes=
  +-AttributeReference[id=0,name=w,relation=a,type=Int NULL]
  +-AttributeReference[id=5,name=x,relation=b,type=Int NULL]
  +-AttributeReference[id=7,name=y,relation=c,type=Int]
  +-AttributeReference[id=8,name=,alias=((a.w+b.x)+c.y),relation=,type=Int NULL]
==

SELECT a.w, b.x, c.y, a.w + b.x + c.y
FROM a LEFT JOIN (b RIGHT JOIN c ON b.x = c.x) ON a.w = b.w;
--
TopLevelPlan
+-plan=Project
| +-input=HashLeftOuterJoin
| | +-left=TableReference[relation_name=a]
| | | +-AttributeReference[id=0,name=w,relation=a,type=Int]
| | | +-AttributeReference[id=1,name=x,relation=a,type=Int]
| | | +-AttributeReference[id=2,name=y,relation=a,type=Int]
| | | +-AttributeReference[id=3,name=z,relation=a,type=Int]
| | +-right=HashLeftOuterJoin
| | | +-left=TableReference[relation_name=c]
| | | | +-AttributeReference[id=6,name=x,relation=c,type=Int]
| | | | +-AttributeReference[id=7,name=y,relation=c,type=Int]
| | | +-right=TableReference[relation_name=b]
| | | | +-AttributeReference[id=4,name=w,relation=b,type=Int]
| | | | +-AttributeReference[id=5,name=x,relation=b,type=Int]
| | | +-residual_predicate=Equal
| | | | +-AttributeReference[id=5,name=x,relation=b,type=Int]
| | | | +-AttributeReference[id=6,name=x,relation=c,type=Int]
| | | +-left_join_attributes=
| | | | +-[]
| | | +-right_join_attributes=
| | |   +-[]
| | +-residual_predicate=Equal
| | | +-AttributeReference[id=0,name=w,relation=a,type=Int]
| | | +-AttributeReference[id=4,name=w,relation=b,type=Int NULL]
| | +-left_join_attributes=
| | | +-[]
| | +-right_join_attributes=
| |   +-[]
| +-project_list=
|   +-AttributeReference[id=0,name=w,relation=a,type=Int]
|   +-AttributeReference[id=5,name=x,relation=b,type=Int NULL]
|   +-AttributeReference[id=7,name=y,relation=c,type=Int NULL]
|   +-Alias[id=8,name=,alias=((a.w+b.x)+c.y),relation=,type=Int NULL]
|     +-Add
|       +-Add
|       | +-AttributeReference[id=0,name=w,relation=a,type=Int]
|       | +-AttributeReference[id=5,name=x,relation=b,type=Int NULL]
|       +-AttributeReference[id=7,name=y,relation=c,type=Int NULL]
+-output_attributes=
  +-AttributeReference[id=0,name=w,relation=a,type=Int]
  +-AttributeReference[id=5,name=x,relation=b,type=Int NULL]
  +-AttributeReference[id=7,name=y,relation=c,type=Int NULL]
  +-AttributeReference[id=8,name=,alias=((a.w+b.x)+c.y),relation=,type=Int NULL]
==

SELECT *
FROM b FULL JOIN c ON b.x = c.x;
--
ERROR: Full outer join is not supported yet (2 : 13)
FROM b FULL JOIN c ON b.x = c.x;
            ^
