/** * @return * @throws ExecutionException * @throws UnsupportedException */ private LogicalWorkflow selectLogicalWorkflowWithAlias() throws UnsupportedException, ExecutionException { List<LogicalStep> stepList = new LinkedList<>(); // Input data Project projectRight = createProject( CASSANDRA_CLUSTERNAME_CONSTANT, KEYSPACE, MYTABLE2_CONSTANT, Arrays.asList(ARTIST_CONSTANT, AGE_CONSTANT)); projectRight.setNextStep( createSelect( Arrays.asList( createColumn(KEYSPACE, MYTABLE2_CONSTANT, ARTIST_CONSTANT), createColumn(KEYSPACE, MYTABLE2_CONSTANT, AGE_CONSTANT)), Arrays.asList(ARTIST_ALIAS_CONSTANT, AGE_ALIAS_CONSTANT))); // One initial steps stepList.add(projectRight); LogicalWorkflow logicalWorkflow = new LogicalWorkflow(stepList); return logicalWorkflow; }
@Test public void testPartialResultJoinTest() throws ConnectorException { // Input data List<LogicalStep> stepList = new LinkedList<>(); Project projectLeft = createProject( CASSANDRA_CLUSTERNAME_CONSTANT, KEYSPACE, MYTABLE1_CONSTANT, Arrays.asList(ARTIST_CONSTANT, DESCRIPTION_CONSTANT, TITLE_CONSTANT, YEAR_CONSTANT)); ResultSet resultSet = deepQueryEngine.execute(selectLogicalWorkflow()).getResultSet(); List<ColumnMetadata> columnMetadata = resultSet.getColumnMetadata(); List<Row> rows = resultSet.getRows(); Join join = createJoinPartialResults( "joinId", createColumn(KEYSPACE, MYTABLE1_CONSTANT, ARTIST_CONSTANT), createColumn(KEYSPACE, MYTABLE2_CONSTANT, ARTIST_CONSTANT), columnMetadata, rows); join.setNextStep( createSelect( Arrays.asList( createColumn(KEYSPACE, MYTABLE1_CONSTANT, ARTIST_CONSTANT), createColumn(KEYSPACE, MYTABLE2_CONSTANT, ARTIST_CONSTANT), createColumn(KEYSPACE, MYTABLE2_CONSTANT, AGE_CONSTANT), createColumn(KEYSPACE, MYTABLE1_CONSTANT, DESCRIPTION_CONSTANT)), Arrays.asList( ARTIST_ALIAS_CONSTANT, ARTIST_ALIAS2_CONSTANT, DESCRIPTION_ALIAS_CONSTANT, AGE_ALIAS_CONSTANT))); projectLeft.setNextStep(join); // One initial steps stepList.add(projectLeft); LogicalWorkflow logicalWorkflow = new LogicalWorkflow(stepList); // Execution QueryResult result = deepQueryEngine.execute(logicalWorkflow); // Assertions List<ColumnMetadata> columnsMetadata = result.getResultSet().getColumnMetadata(); List<Row> rowsList = result.getResultSet().getRows(); // Checking results number assertEquals("Wrong number of rows metadata", 4, columnsMetadata.size()); assertEquals("Wrong number of rows", 72, rowsList.size()); // Checking metadata assertEquals( "Author expected", ARTIST_ALIAS_CONSTANT, columnsMetadata.get(0).getName().getAlias()); assertEquals( "Author expected", ARTIST_ALIAS2_CONSTANT, columnsMetadata.get(1).getName().getAlias()); assertEquals( "Author expected", DESCRIPTION_ALIAS_CONSTANT, columnsMetadata.get(2).getName().getAlias()); assertEquals( "Author expected", AGE_ALIAS_CONSTANT, columnsMetadata.get(3).getName().getAlias()); assertEquals( "mytable1 expected", KEYSPACE + "." + MYTABLE1_CONSTANT, columnsMetadata.get(0).getName().getTableName().getQualifiedName()); assertEquals( "mytable2 expected", KEYSPACE + "." + MYTABLE2_CONSTANT, columnsMetadata.get(1).getName().getTableName().getQualifiedName()); assertEquals( "mytable2 expected", KEYSPACE + "." + MYTABLE2_CONSTANT, columnsMetadata.get(2).getName().getTableName().getQualifiedName()); assertEquals( "mytable1 expected", KEYSPACE + "." + MYTABLE1_CONSTANT, columnsMetadata.get(3).getName().getTableName().getQualifiedName()); // Checking rows for (Row row : rowsList) { assertEquals("Wrong number of columns in the row", 4, row.size()); assertNotNull("Expecting author column in row", row.getCell(ARTIST_ALIAS_CONSTANT)); assertNotNull("Expecting author column in row", row.getCell(ARTIST_ALIAS2_CONSTANT)); assertNotNull("Expecting author column in row", row.getCell(DESCRIPTION_ALIAS_CONSTANT)); assertNotNull("Expecting author column in row", row.getCell(AGE_ALIAS_CONSTANT)); } }