Skip to content

Commit 40aeed5

Browse files
committed
Test IR print with QueryRunner
1 parent 61a2bee commit 40aeed5

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

testing/trino-testing/src/main/java/io/trino/testing/AbstractDistributedEngineOnlyQueries.java

+25
Original file line numberDiff line numberDiff line change
@@ -403,4 +403,29 @@ public void testRowConstructorColumnLimit()
403403
@Language("SQL") String query = "SELECT row(" + rowFields + ") FROM (select * from tpch.tiny.orders limit 1) t(" + colNames + ")";
404404
assertThat(getQueryRunner().execute(query).getOnlyValue()).isNotNull();
405405
}
406+
407+
@Test
408+
public void testProgramAssembly()
409+
{
410+
assertAssembly(
411+
"SELECT name FROM nation",
412+
"""
413+
IR version = 1
414+
%0 = query() : () -> "boolean" ({
415+
^query
416+
%1 = table_scan() : () -> "multiset(row(""f_1"" varchar(25)))" ()
417+
{table_handle = "{""catalogHandle"":""memory:normal:21a29a35ed877cb4ea566f4b08371b5a0a3c0588f07ba25bd0881def395049cd"",""connectorHandle"":{""@type"":""system:io.trino.plugin.memory.MemoryTableHandle"",""id"":2},""transaction"":[""system:io.trino.plugin.memory.MemoryTransactionHandle"",""INSTANCE""]}", column_handles = "[{""@type"":""system:io.trino.plugin.memory.MemoryColumnHandle"",""columnIndex"":1,""type"":""varchar(25)""}]", constraint = "{""columnDomains"":[]}", update_target = "false", use_connector_node_partitioning = "false"}
418+
%2 = output(%1) : ("multiset(row(""f_1"" varchar(25)))") -> "boolean" ({
419+
^outputFieldSelector (%3 : "row(""f_1"" varchar(25))")
420+
%4 = field_selection(%3) : ("row(""f_1"" varchar(25))") -> "varchar(25)" ()
421+
{field_name = "f_1"}
422+
%5 = row(%4) : ("varchar(25)") -> "row(varchar(25))" ()
423+
%6 = return(%5) : ("row(varchar(25))") -> "row(varchar(25))" ()
424+
{ir.terminal = "true"}
425+
})
426+
{output_names = "[""name""]", ir.terminal = "true"}
427+
})
428+
{ir.terminal = "true"}
429+
""");
430+
}
406431
}

testing/trino-testing/src/main/java/io/trino/testing/AbstractTestQueryFramework.java

+10
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.google.common.collect.MoreCollectors;
1919
import com.google.errorprone.annotations.CanIgnoreReturnValue;
2020
import com.google.errorprone.annotations.CheckReturnValue;
21+
import com.google.inject.Key;
2122
import io.airlift.log.Level;
2223
import io.airlift.log.Logging;
2324
import io.airlift.units.Duration;
@@ -47,6 +48,8 @@
4748
import io.trino.spi.connector.CatalogSchemaTableName;
4849
import io.trino.spi.type.Type;
4950
import io.trino.sql.analyzer.QueryExplainer;
51+
import io.trino.sql.dialect.trino.ProgramBuilder;
52+
import io.trino.sql.newir.FormatOptions;
5053
import io.trino.sql.parser.SqlParser;
5154
import io.trino.sql.planner.OptimizerConfig.JoinDistributionType;
5255
import io.trino.sql.planner.Plan;
@@ -595,6 +598,13 @@ protected void assertNoDataRead(@Language("SQL") String sql)
595598
results -> assertThat(results.getRowCount()).isEqualTo(0));
596599
}
597600

601+
protected void assertAssembly(@Language("SQL") String sql, String expectedAssembly)
602+
{
603+
Plan plan = queryRunner.executeWithPlan(getSession(), sql).queryPlan().orElseThrow();
604+
String actualAssembly = ProgramBuilder.buildProgram(plan.getRoot()).print(1, getQueryRunner().getCoordinator().getInstance(Key.get(FormatOptions.class)));
605+
assertThat(actualAssembly).isEqualTo(expectedAssembly);
606+
}
607+
598608
protected MaterializedResult computeExpected(@Language("SQL") String sql, List<? extends Type> resultTypes)
599609
{
600610
return h2QueryRunner.execute(getSession(), sql, resultTypes);

0 commit comments

Comments
 (0)