# Golden test output of ABTPlanGeneration/LowerFilterNodeParameterized

==== VARIATION: filter for: a >= Constant ====
-- INPUT:
Filter []
|   BinaryOp [FillEmpty]
|   |   Const [false]
|   BinaryOp [Gte]
|   |   FunctionCall [getParam]
|   |   |   Const [1]
|   |   Const [0]
|   FunctionCall [getField]
|   |   Const ["a"]
|   Variable [scan0]
PhysicalScan [{'<root>': scan0}, collName]

-- OUTPUT:
[1] filter {(((getField(s1, "a") <=> s2) >= 0ll) ?: false)} 
[0] scan s1 none none none none none none none lowPriority [] @"<collUUID>" true false 

==== VARIATION: range conjunction filter for: a >= Constant1, a < Constant2 ====
-- INPUT:
Filter []
|   BinaryOp [FillEmpty]
|   |   Const [false]
|   Let [inputComposeM_0]
|   |   If []
|   |   |   |   Const [false]
|   |   |   BinaryOp [Lt]
|   |   |   |   FunctionCall [getParam]
|   |   |   |   |   Const [1]
|   |   |   |   Const [2]
|   |   |   Variable [inputComposeM_0]
|   |   BinaryOp [Gte]
|   |   |   FunctionCall [getParam]
|   |   |   |   Const [1]
|   |   |   Const [1]
|   |   Variable [inputComposeM_0]
|   FunctionCall [getField]
|   |   Const ["a"]
|   Variable [scan0]
PhysicalScan [{'<root>': scan0}, collName]

-- OUTPUT:
[1] filter {(
    let [
        l101.0 = getField(s1, "a") 
    ] 
    in 
        if ((l101.0 <=> s2) >= 0ll) 
        then ((move(l101.0) <=> s3) < 0ll) 
        else false 
?: false)} 
[0] scan s1 none none none none none none none lowPriority [] @"<collUUID>" true false 

==== VARIATION: filter for getParam duplicated by the optimizer: a >= Constant1, a < Constant2 ====
-- INPUT:
Filter []
|   BinaryOp [FillEmpty]
|   |   Const [false]
|   Let [inputComposeM_0]
|   |   If []
|   |   |   |   Const [false]
|   |   |   BinaryOp [Lt]
|   |   |   |   FunctionCall [getParam]
|   |   |   |   |   Const [1]
|   |   |   |   Const [2]
|   |   |   Variable [inputComposeM_0]
|   |   BinaryOp [Gte]
|   |   |   FunctionCall [getParam]
|   |   |   |   Const [1]
|   |   |   Const [1]
|   |   Variable [inputComposeM_0]
|   FunctionCall [getField]
|   |   Const ["a"]
|   Variable [scan0]
PhysicalScan [{'<root>': scan0}, collName]

-- OUTPUT:
[1] filter {(
    let [
        l101.0 = getField(s1, "a") 
    ] 
    in 
        if ((l101.0 <=> s2) >= 0ll) 
        then ((move(l101.0) <=> s3) < 0ll) 
        else false 
?: false)} 
[0] scan s1 none none none none none none none lowPriority [] @"<collUUID>" true false 
