# Golden test output of ABTPlanGeneration/LowerExchangeNode

==== VARIATION: Lower exchange node of type HashPartitioning ====
-- INPUT:
Exchange []
|   |   distribution: 
|   |       type: HashPartitioning
|   |           projections: 
|   |               proj0
Evaluation [{proj1}]
|   FunctionCall [getField]
|   |   Const ["a"]
|   Variable [scan0]
Evaluation [{proj0}]
|   FunctionCall [getField]
|   |   Const ["a"]
|   Variable [scan0]
PhysicalScan [{'<root>': scan0}, collName]

-- OUTPUT:
[0] exchange [s2, s3] 1 hash 
[1] project [s3 = getField(s1, "a")] 
[1] project [s2 = getField(s1, "a")] 
[2] scan s1 none none none none none [] @"<collUUID>" true false 

==== VARIATION: Lower exchange node of type Centralized ====
-- INPUT:
Exchange []
|   |   distribution: 
|   |       type: Centralized
|   |           projections: 
|   |               proj0
Evaluation [{proj1}]
|   FunctionCall [getField]
|   |   Const ["a"]
|   Variable [scan0]
Evaluation [{proj0}]
|   FunctionCall [getField]
|   |   Const ["a"]
|   Variable [scan0]
PhysicalScan [{'<root>': scan0}, collName]

-- OUTPUT:
[0] exchange [s2, s3] 1 bcast 
[1] project [s3 = getField(s1, "a")] 
[1] project [s2 = getField(s1, "a")] 
[2] scan s1 none none none none none [] @"<collUUID>" true false 

==== VARIATION: Lower exchange node of type RoundRobin ====
-- INPUT:
Exchange []
|   |   distribution: 
|   |       type: RoundRobin
|   |           projections: 
|   |               proj0
Evaluation [{proj1}]
|   FunctionCall [getField]
|   |   Const ["a"]
|   Variable [scan0]
Evaluation [{proj0}]
|   FunctionCall [getField]
|   |   Const ["a"]
|   Variable [scan0]
PhysicalScan [{'<root>': scan0}, collName]

-- OUTPUT:
[0] exchange [s2, s3] 1 round 
[1] project [s3 = getField(s1, "a")] 
[1] project [s2 = getField(s1, "a")] 
[2] scan s1 none none none none none [] @"<collUUID>" true false 

==== VARIATION: Lower exchange node of type Replicated ====
-- INPUT:
Exchange []
|   |   distribution: 
|   |       type: Replicated
|   |           projections: 
|   |               proj0
Evaluation [{proj1}]
|   FunctionCall [getField]
|   |   Const ["a"]
|   Variable [scan0]
Evaluation [{proj0}]
|   FunctionCall [getField]
|   |   Const ["a"]
|   Variable [scan0]
PhysicalScan [{'<root>': scan0}, collName]

-- OUTPUT:
[0] exchange [s2, s3] 1 bcast 
[1] project [s3 = getField(s1, "a")] 
[1] project [s2 = getField(s1, "a")] 
[2] scan s1 none none none none none [] @"<collUUID>" true false 
