public void executeProjectionWithFullEngine(String projection) { MaterializedResult result = runner.execute("SELECT " + projection); }
@Override public MaterializedResult execute(@Language("SQL") String sql) { return execute(defaultSession, sql); }
@Test public void testSimpleSelect() { assertEquals(runner.execute("SELECT * from REGION"), runner.execute("SELECT regionkey, name, comment from REGION")); assertEquals(runner.execute("SELECT *, row_number from REGION"), runner.execute("SELECT regionkey, name, comment, row_number from REGION")); assertEquals(runner.execute("SELECT row_number, * from REGION"), runner.execute("SELECT row_number, regionkey, name, comment from REGION")); assertEquals(runner.execute("SELECT *, row_number, * from REGION"), runner.execute("SELECT regionkey, name, comment, row_number, regionkey, name, comment from REGION")); assertEquals(runner.execute("SELECT row_number, x.row_number from REGION x"), runner.execute("SELECT row_number, row_number from REGION")); }
@Test public void testAliasedTableColumns() { // https://github.com/prestodb/presto/issues/11385 // TPCH tables have a hidden "row_number" column, which triggers this bug. assertEquals( runner.execute("SELECT * FROM orders AS t (a, b, c, d, e, f, g, h, i)"), runner.execute("SELECT * FROM orders")); } }
@Test(expectedExceptions = RuntimeException.class, expectedExceptionsMessageRegExp = "/ by zero") public void testQuery() { // The other test does not exercise this function during execution (i.e. inside a page processor). // It only verifies constant folding works. try (LocalQueryRunner runner = new LocalQueryRunner(TEST_SESSION)) { runner.execute("select if(x, 78, 0/0) from (values rand() >= 0, rand() < 0) t(x)"); } } }
@Setup(Level.Invocation) public void createPointsTable() { // Generate random points within the approximate bounding box of the US polygon: // POLYGON ((-124 27, -65 27, -65 49, -124 49, -124 27)) queryRunner.execute(format("CREATE TABLE memory.default.points AS " + "SELECT 'p' || cast(elem AS VARCHAR) as name, xMin + (xMax - xMin) * random() as longitude, yMin + (yMax - yMin) * random() as latitude " + "FROM (SELECT -124 AS xMin, -65 AS xMax, 27 AS yMin, 49 AS yMax) " + "CROSS JOIN UNNEST(sequence(1, %s)) AS t(elem)", pointCount)); }
private void assertCastWithJsonParse(String json, String castSqlType, Type expectedType, Object expected) { String query = "" + "SELECT CAST(JSON_PARSE(col) AS " + castSqlType + ") " + "FROM (VALUES('" + json + "')) AS t(col)"; // building queries with VALUES to avoid constant folding MaterializedResult result = runner.execute(query); assertEquals(result.getTypes().size(), 1); assertEquals(result.getTypes().get(0), expectedType); assertEquals(result.getOnlyValue(), expected); }
public static MaterializedResult executeWindowQueryWithNulls(@Language("SQL") String sql, LocalQueryRunner localQueryRunner) { @Language("SQL") String query = format("" + "SELECT orderkey, orderstatus,\n%s\n" + "FROM (%s) x", sql, VALUES_WITH_NULLS); return localQueryRunner.execute(query); } }
@Benchmark public MaterializedResult benchmarkUnion(Context context) { return context.getQueryRunner() .execute("SELECT geometry_union_agg(p.geom) FROM us_states p"); }
private void assertFails(@Language("SQL") String sql, ErrorCodeSupplier supplier) { try { runner.execute(sql); fail("expected exception"); } catch (PrestoException e) { assertEquals(e.getErrorCode(), supplier.toErrorCode()); } } }
@Benchmark public MaterializedResult benchmarkConvexHull(Context context) { return context.getQueryRunner() .execute("SELECT convex_hull_agg(p.geom) FROM us_states p"); }
@Benchmark public MaterializedResult benchmarkJoin(Context context) { return context.getQueryRunner() .execute("SELECT count(*) FROM points, polygons WHERE ST_Contains(ST_GeometryFromText(wkt), ST_Point(latitude, longitude))"); }
@Benchmark public MaterializedResult benchmarkUserOptimizedJoin(Context context) { return context.getQueryRunner() .execute("SELECT count(*) FROM (SELECT ST_Point(latitude, longitude) as point FROM points) t1, (SELECT ST_GeometryFromText(wkt) as geometry FROM polygons) t2 WHERE ST_Contains(geometry, point)"); }
@Benchmark public MaterializedResult benchmarkArrayUnion(Context context) { return context.getQueryRunner() .execute("SELECT geometry_union(array_agg(p.geom)) FROM us_states p"); }
private void assertInvalidCastWithJsonParse(String json, String castSqlType, String message) { String query = "" + "SELECT CAST(JSON_PARSE(col) AS " + castSqlType + ") " + "FROM (VALUES('" + json + "')) AS t(col)"; try { runner.execute(query); fail("Expected to throw an INVALID_CAST_ARGUMENT exception"); } catch (PrestoException e) { assertEquals(e.getErrorCode(), INVALID_CAST_ARGUMENT.toErrorCode()); assertEquals(e.getMessage(), message); } } }
@Setup public void setUp() throws IOException { queryRunner = new LocalQueryRunner(testSessionBuilder() .setCatalog("memory") .setSchema("default") .build()); queryRunner.installPlugin(new GeoPlugin()); queryRunner.createCatalog("memory", new MemoryConnectorFactory(), ImmutableMap.of()); Path path = Paths.get(BenchmarkSpatialJoin.class.getClassLoader().getResource("us-states.tsv").getPath()); String polygonValues = Files.lines(path) .map(line -> line.split("\t")) .map(parts -> format("('%s', '%s')", parts[0], parts[1])) .collect(Collectors.joining(",")); queryRunner.execute(format("CREATE TABLE memory.default.polygons AS SELECT * FROM (VALUES %s) as t (name, wkt)", polygonValues)); }
@Setup public void setUp() throws IOException { queryRunner = new LocalQueryRunner(testSessionBuilder() .setCatalog("memory") .setSchema("default") .build()); queryRunner.installPlugin(new GeoPlugin()); queryRunner.createCatalog("memory", new MemoryConnectorFactory(), ImmutableMap.of()); Path path = Paths.get(BenchmarkGeometryAggregations.class.getClassLoader().getResource("us-states.tsv").getPath()); String polygonValues = Files.lines(path) .map(line -> line.split("\t")) .map(parts -> format("('%s', '%s')", parts[0], parts[1])) .collect(Collectors.joining(",")); queryRunner.execute( format("CREATE TABLE memory.default.us_states AS SELECT ST_GeometryFromText(t.wkt) AS geom FROM (VALUES %s) as t (name, wkt)", polygonValues)); }
public static void assertWindowQuery(@Language("SQL") String sql, MaterializedResult expected, LocalQueryRunner localQueryRunner) { @Language("SQL") String query = format("" + "SELECT orderkey, orderstatus,\n%s\n" + "FROM (%s) x", sql, VALUES); MaterializedResult actual = localQueryRunner.execute(query); assertEqualsIgnoreOrder(actual.getMaterializedRows(), expected.getMaterializedRows()); }
@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); }
private static LocalQueryRunner createQueryRunner() { LocalQueryRunner queryRunner = new LocalQueryRunner(testSessionBuilder() .setCatalog("memory") .setSchema("default") .build()); queryRunner.installPlugin(new GeoPlugin()); queryRunner.createCatalog("tpch", new TpchConnectorFactory(1), ImmutableMap.of()); queryRunner.createCatalog("memory", new MemoryConnectorFactory(), ImmutableMap.of()); queryRunner.execute(format("CREATE TABLE kdb_tree AS SELECT '%s' AS v", KDB_TREE_JSON)); return queryRunner; }