[ 
https://issues.apache.org/jira/browse/CALCITE-3407?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Wang Yanlin updated CALCITE-3407:
---------------------------------
    Component/s: core

> Add support for interpretering minus/intersect relational set operators
> -----------------------------------------------------------------------
>
>                 Key: CALCITE-3407
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3407
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>            Reporter: Wang Yanlin
>            Priority: Major
>
> Currently, for SetOp,  only `union` is supported by Interpreter
> add the test cases in InterpreterTest, and run, they will fail by throwing 
> exception
> {code:java}
> @Test public void testInterpretIntersect() throws Exception {
>     final String sql = "select * from\n"
>         + "(select x, y from (values (1, 'a'), (1, 'a'), (2, 'b'), (3, 'c')) 
> as t(x, y))\n"
>         + "intersect\n"
>         + "(select x, y from (values (1, 'a'), (2, 'c'), (4, 'x')) as t2(x, 
> y))\n";
>     SqlNode validate = planner.validate(planner.parse(sql));
>     RelNode convert = planner.rel(validate).rel;
>     final Interpreter interpreter = new Interpreter(dataContext, convert);
>     assertRows(interpreter, "[1, a]");
>   }
>   @Test public void testInterpretIntersectAll() throws Exception {
>     final String sql = "select * from\n"
>         + "(select x, y from (values (1, 'a'), (1, 'a'), (2, 'b'), (3, 'c')) 
> as t(x, y))\n"
>         + "intersect all\n"
>         + "(select x, y from (values (1, 'a'), (2, 'c'), (4, 'x')) as t2(x, 
> y))\n";
>     SqlNode validate = planner.validate(planner.parse(sql));
>     RelNode convert = planner.rel(validate).rel;
>     final Interpreter interpreter = new Interpreter(dataContext, convert);
>     assertRows(interpreter, "[1, a]", "[1, a]");
>   }
>   @Test public void testInterpretMinus() throws Exception {
>     final String sql = "select * from\n"
>         + "(select x, y from (values (1, 'a'), (2, 'b'), (2, 'b'), (3, 'c')) 
> as t(x, y))\n"
>         + "except\n"
>         + "(select x, y from (values (1, 'a'), (2, 'c'), (4, 'x')) as t2(x, 
> y))\n";
>     SqlNode validate = planner.validate(planner.parse(sql));
>     RelNode convert = planner.rel(validate).rel;
>     final Interpreter interpreter = new Interpreter(dataContext, convert);
>     assertRows(interpreter, "[2, b]", "[3, c]");
>   }
>   @Test public void testInterpretMinusAll() throws Exception {
>     final String sql = "select * from\n"
>         + "(select x, y from (values (1, 'a'), (2, 'b'), (2, 'b'), (3, 'c')) 
> as t(x, y))\n"
>         + "except all\n"
>         + "(select x, y from (values (1, 'a'), (2, 'c'), (4, 'x')) as t2(x, 
> y))\n";
>     SqlNode validate = planner.validate(planner.parse(sql));
>     RelNode convert = planner.rel(validate).rel;
>     final Interpreter interpreter = new Interpreter(dataContext, convert);
>     assertRows(interpreter, "[2, b]", "[2, b]", "[3, c]");
>   }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to