@Test public void testDescribeOutputShowTables() { Session session = Session.builder(getSession()) .addPreparedStatement("my_query", "SHOW TABLES") .build(); MaterializedResult actual = computeActual(session, "DESCRIBE OUTPUT my_query"); MaterializedResult expected = resultBuilder(session, VARCHAR, VARCHAR, VARCHAR, VARCHAR, VARCHAR, BIGINT, BOOLEAN) .row("Table", session.getCatalog().get(), "information_schema", "tables", "varchar", 0, true) .build(); assertEqualsIgnoreOrder(actual, expected); }
@Test public void testWindowFunctionWithGroupBy() { MaterializedResult actual = computeActual("" + "SELECT *, rank() OVER (PARTITION BY x)\n" + "FROM (SELECT 'foo' x)\n" + "GROUP BY 1"); MaterializedResult expected = resultBuilder(getSession(), createVarcharType(3), BIGINT) .row("foo", 1L) .build(); assertEquals(actual, expected); }
@Test public void testDescribeInputNoParameters() { Session session = Session.builder(getSession()) .addPreparedStatement("my_query", "SELECT * FROM nation") .build(); MaterializedResult actual = computeActual(session, "DESCRIBE INPUT my_query"); MaterializedResult expected = resultBuilder(session, UNKNOWN, UNKNOWN).build(); assertEquals(actual, expected); }
@Test public void testEmptyInput() { RowPagesBuilder rowPagesBuilder = RowPagesBuilder.rowPagesBuilder(BOOLEAN, VARCHAR, BIGINT); List<Page> input = rowPagesBuilder.build(); MaterializedResult expected = resultBuilder(driverContext.getSession(), VARCHAR, BIGINT, BIGINT).build(); assertOperatorEquals(operatorFactory, driverContext, input, expected); }
@Test public void testSinglePage() { RowPagesBuilder rowPagesBuilder = RowPagesBuilder.rowPagesBuilder(BOOLEAN, VARCHAR, BIGINT); List<Page> input = rowPagesBuilder .row(false, "a", 5) .build(); MaterializedResult expected = resultBuilder(driverContext.getSession(), VARCHAR, BIGINT, BIGINT) .row("a", 1L, 5L) .build(); assertOperatorEquals(operatorFactory, driverContext, input, expected); }
@Test public void testApproximateCountDistinctGroupBy() { MaterializedResult actual = computeActual("SELECT orderstatus, approx_distinct(custkey) FROM orders GROUP BY orderstatus"); MaterializedResult expected = resultBuilder(getSession(), actual.getTypes()) .row("O", 990L) .row("F", 990L) .row("P", 303L) .build(); assertEqualsIgnoreOrder(actual.getMaterializedRows(), expected.getMaterializedRows()); }
private void assertDescribeOutputRowCount(@Language("SQL") String sql) { Session session = Session.builder(getSession()) .addPreparedStatement("my_query", sql) .build(); MaterializedResult actual = computeActual(session, "DESCRIBE OUTPUT my_query"); MaterializedResult expected = resultBuilder(session, VARCHAR, VARCHAR, VARCHAR, VARCHAR, VARCHAR, BIGINT, BOOLEAN) .row("rows", "", "", "", "bigint", 8, false) .build(); assertEqualsIgnoreOrder(actual, expected); }
@Test public void testMergeEmptyNonEmptyApproxSet() { MaterializedResult actual = computeActual("SELECT cardinality(merge(c)) FROM (SELECT create_hll(custkey) c FROM orders UNION ALL SELECT empty_approx_set())"); MaterializedResult expected = resultBuilder(getSession(), BIGINT) .row(1002L) .build(); assertEquals(actual.getMaterializedRows(), expected.getMaterializedRows()); }
@Override @Test public void testShowSchemas() { MaterializedResult actualSchemas = computeActual("SHOW SCHEMAS").toTestTypes(); MaterializedResult.Builder resultBuilder = MaterializedResult.resultBuilder(getQueryRunner().getDefaultSession(), VARCHAR) .row("tiny") .row("sf1"); assertContains(actualSchemas, resultBuilder.build()); } }
@Test public void testEmptyInput() { RowPagesBuilder rowPagesBuilder = RowPagesBuilder.rowPagesBuilder(BOOLEAN, VARCHAR, BIGINT); List<Page> input = rowPagesBuilder.build(); MaterializedResult expected = resultBuilder(driverContext.getSession(), VARCHAR, BIGINT, BIGINT).build(); assertOperatorEquals(operatorFactory, driverContext, input, expected); }
public static MaterializedResult toMaterializedResult(ConnectorSession session, List<Type> types, List<Page> pages) { // materialize pages MaterializedResult.Builder resultBuilder = MaterializedResult.resultBuilder(session, types); for (Page outputPage : pages) { resultBuilder.page(outputPage); } return resultBuilder.build(); }
@Test public void testP4ApproxSetWithNulls() { MaterializedResult actual = computeActual("SELECT cardinality(cast(approx_set(IF(orderstatus = 'O', custkey)) AS P4HYPERLOGLOG)) FROM orders"); MaterializedResult expected = resultBuilder(getSession(), actual.getTypes()) .row(1001L) .build(); assertEquals(actual.getMaterializedRows(), expected.getMaterializedRows()); }
@Test public void testMergeHyperLogLogWithNulls() { MaterializedResult actual = computeActual("SELECT cardinality(merge(create_hll(IF(orderstatus = 'O', custkey)))) FROM orders"); MaterializedResult expected = resultBuilder(getSession(), BIGINT) .row(1001L) .build(); assertEquals(actual.getMaterializedRows(), expected.getMaterializedRows()); }
@Test public void testDuplicateColumnsInWindowOrderByClause() { MaterializedResult actual = computeActual("SELECT a, row_number() OVER (ORDER BY a ASC, a DESC) FROM (VALUES 3, 2, 1) t(a)"); MaterializedResult expected = resultBuilder(getSession(), BIGINT, BIGINT) .row(1, 1L) .row(2, 2L) .row(3, 3L) .build(); assertEqualsIgnoreOrder(actual, expected); }
@Test public void testShowTables() { MaterializedResult actualTables = computeActual("SHOW TABLES").toTestTypes(); MaterializedResult expectedTables = MaterializedResult.resultBuilder(getQueryRunner().getDefaultSession(), VARCHAR) .row("orders") .build(); assertContains(actualTables, expectedTables); }
@Test public void testDescribeTable() { MaterializedResult expected = MaterializedResult.resultBuilder(TEST_SESSION, VARCHAR, VARCHAR, VARCHAR, VARCHAR) .row("regionkey", "bigint", "", "") .row("name", "varchar(25)", "", "") .row("comment", "varchar(152)", "", "") .build(); assertEquals(runner.execute("DESC REGION"), expected); }
@Test public void testSinglePage() { RowPagesBuilder rowPagesBuilder = RowPagesBuilder.rowPagesBuilder(BOOLEAN, VARCHAR, BIGINT); List<Page> input = rowPagesBuilder .row(false, "a", 5) .build(); MaterializedResult expected = resultBuilder(driverContext.getSession(), VARCHAR, BIGINT, BIGINT) .row("a", 1L, 5L) .build(); assertOperatorEquals(operatorFactory, driverContext, input, expected); }
public static MaterializedResult materializeSourceDataStream(ConnectorSession session, ConnectorPageSource pageSource, List<Type> types) { MaterializedResult.Builder builder = resultBuilder(session, types); while (!pageSource.isFinished()) { Page outputPage = pageSource.getNextPage(); if (outputPage == null) { break; } builder.page(outputPage); } return builder.build(); }
public static MaterializedResult toMaterializedResult(ConnectorSession session, List<Type> types, List<Page> pages) { // materialize pages MaterializedResult.Builder resultBuilder = MaterializedResult.resultBuilder(session, types); for (Page outputPage : pages) { resultBuilder.page(outputPage); } return resultBuilder.build(); }
public static MaterializedResult toMaterializedResult(Session session, List<Type> types, List<Page> pages) { // materialize pages MaterializedResult.Builder resultBuilder = MaterializedResult.resultBuilder(session, types); for (Page outputPage : pages) { resultBuilder.page(outputPage); } return resultBuilder.build(); }