use of com.hortonworks.streamline.streams.sql.runtime.ChannelHandler in project streamline by hortonworks.
the class TestPlanCompiler method testNested.
@Test
public void testNested() throws Exception {
String sql = "SELECT ID, MAPFIELD['c'], NESTEDMAPFIELD, ARRAYFIELD " + "FROM FOO " + "WHERE NESTEDMAPFIELD['a']['b'] = 2 AND ARRAYFIELD[2] = 200";
TestCompilerUtils.CalciteState state = TestCompilerUtils.sqlOverNestedTable(sql);
PlanCompiler compiler = new PlanCompiler(typeFactory);
AbstractValuesProcessor proc = compiler.compile(state.tree());
Map<String, DataSource> data = new HashMap<>();
data.put("FOO", new TestUtils.MockNestedDataSource());
List<CorrelatedValues> values = new ArrayList<>();
ChannelHandler h = new TestUtils.CollectDataChannelHandler(values);
proc.initialize(data, h);
Map<String, Integer> map = ImmutableMap.of("b", 2, "c", 4);
Map<String, Map<String, Integer>> nestedMap = ImmutableMap.of("a", map);
Assert.assertEquals(1, values.size());
Assert.assertEquals(4, values.get(0).size());
Assert.assertEquals(2, values.get(0).get(0));
Assert.assertEquals(4, values.get(0).get(1));
Assert.assertEquals(nestedMap, values.get(0).get(2));
Assert.assertEquals(Arrays.asList(100, 200, 300), values.get(0).get(3));
}
use of com.hortonworks.streamline.streams.sql.runtime.ChannelHandler in project streamline by hortonworks.
the class TestPlanCompiler method testUdf.
@Test
public void testUdf() throws Exception {
String sql = "SELECT MYPLUS(ID, 3)" + "FROM FOO " + "WHERE ID = 2";
TestCompilerUtils.CalciteState state = TestCompilerUtils.sqlOverNestedTable(sql);
PlanCompiler compiler = new PlanCompiler(typeFactory);
AbstractValuesProcessor proc = compiler.compile(state.tree());
Map<String, DataSource> data = new HashMap<>();
data.put("FOO", new TestUtils.MockDataSource());
List<CorrelatedValues> values = new ArrayList<>();
ChannelHandler h = new TestUtils.CollectDataChannelHandler(values);
proc.initialize(data, h);
Assert.assertEquals(1, values.size());
Assert.assertEquals(1, values.get(0).size());
Assert.assertEquals(5, values.get(0).get(0));
}
use of com.hortonworks.streamline.streams.sql.runtime.ChannelHandler in project streamline by hortonworks.
the class TestPlanCompiler method testCompile.
@Test
public void testCompile() throws Exception {
String sql = "SELECT ID + 1 FROM FOO WHERE ID > 2";
TestCompilerUtils.CalciteState state = TestCompilerUtils.sqlOverDummyTable(sql);
PlanCompiler compiler = new PlanCompiler(typeFactory);
AbstractValuesProcessor proc = compiler.compile(state.tree());
Map<String, DataSource> data = new HashMap<>();
data.put("FOO", new TestUtils.MockDataSource());
List<CorrelatedValues> values = new ArrayList<>();
ChannelHandler h = new TestUtils.CollectDataChannelHandler(values);
proc.initialize(data, h);
Assert.assertEquals(2, values.size());
Assert.assertEquals(1, values.get(0).size());
Assert.assertEquals(4, values.get(0).get(0));
Assert.assertEquals(1, values.get(1).size());
Assert.assertEquals(5, values.get(1).get(0));
}
use of com.hortonworks.streamline.streams.sql.runtime.ChannelHandler in project streamline by hortonworks.
the class TestPlanCompiler method testLogicalExpr.
@Test
public void testLogicalExpr() throws Exception {
String sql = "SELECT ID > 0 OR ID < 1, ID > 0 AND ID < 1, NOT (ID > 0 AND ID < 1) FROM FOO WHERE ID > 0 AND ID < 2";
TestCompilerUtils.CalciteState state = TestCompilerUtils.sqlOverDummyTable(sql);
PlanCompiler compiler = new PlanCompiler(typeFactory);
AbstractValuesProcessor proc = compiler.compile(state.tree());
Map<String, DataSource> data = new HashMap<>();
data.put("FOO", new TestUtils.MockDataSource());
List<CorrelatedValues> values = new ArrayList<>();
ChannelHandler h = new TestUtils.CollectDataChannelHandler(values);
proc.initialize(data, h);
Assert.assertEquals(1, values.size());
Assert.assertEquals(3, values.get(0).size());
Assert.assertEquals(true, values.get(0).get(0));
Assert.assertEquals(false, values.get(0).get(1));
Assert.assertEquals(true, values.get(0).get(2));
}
Aggregations