Search in sources :

Example 6 with QueryCompletedEvent

use of io.trino.spi.eventlistener.QueryCompletedEvent in project trino by trinodb.

the class TestEventListenerBasic method assertFailedQuery.

private void assertFailedQuery(Session session, @Language("SQL") String sql, String expectedFailure) throws Exception {
    queries.runQueryAndWaitForEvents(sql, 2, session, Optional.of(expectedFailure));
    QueryCompletedEvent queryCompletedEvent = getOnlyElement(generatedEvents.getQueryCompletedEvents());
    assertEquals(queryCompletedEvent.getMetadata().getQuery(), sql);
    QueryFailureInfo failureInfo = queryCompletedEvent.getFailureInfo().orElseThrow(() -> new AssertionError("Expected query event to be failed"));
    assertEquals(expectedFailure, failureInfo.getFailureMessage().orElse(null));
}
Also used : QueryFailureInfo(io.trino.spi.eventlistener.QueryFailureInfo) QueryCompletedEvent(io.trino.spi.eventlistener.QueryCompletedEvent)

Example 7 with QueryCompletedEvent

use of io.trino.spi.eventlistener.QueryCompletedEvent in project trino by trinodb.

the class TestEventListenerBasic method testOutputColumnsForInsertingSingleColumn.

@Test
public void testOutputColumnsForInsertingSingleColumn() throws Exception {
    runQueryAndWaitForEvents("INSERT INTO mock.default.table_for_output(test_bigint) SELECT nationkey + 1 AS test_bigint FROM nation", 2);
    QueryCompletedEvent event = getOnlyElement(generatedEvents.getQueryCompletedEvents());
    assertThat(event.getIoMetadata().getOutput().get().getColumns().get()).containsExactly(new OutputColumnMetadata("test_bigint", BIGINT_TYPE, ImmutableSet.of(new ColumnDetail("tpch", "tiny", "nation", "nationkey"))));
}
Also used : ColumnDetail(io.trino.spi.eventlistener.ColumnDetail) QueryCompletedEvent(io.trino.spi.eventlistener.QueryCompletedEvent) OutputColumnMetadata(io.trino.spi.eventlistener.OutputColumnMetadata) Test(org.testng.annotations.Test)

Example 8 with QueryCompletedEvent

use of io.trino.spi.eventlistener.QueryCompletedEvent in project trino by trinodb.

the class TestEventListenerBasic method testOutputColumnsForCreateTableAsSelectAll.

@Test
public void testOutputColumnsForCreateTableAsSelectAll() throws Exception {
    runQueryAndWaitForEvents("CREATE TABLE mock.default.create_new_table AS SELECT * FROM nation", 2);
    QueryCompletedEvent event = getOnlyElement(generatedEvents.getQueryCompletedEvents());
    assertThat(event.getIoMetadata().getOutput().get().getColumns().get()).containsExactly(new OutputColumnMetadata("nationkey", BIGINT_TYPE, ImmutableSet.of(new ColumnDetail("tpch", "tiny", "nation", "nationkey"))), new OutputColumnMetadata("name", "varchar(25)", ImmutableSet.of(new ColumnDetail("tpch", "tiny", "nation", "name"))), new OutputColumnMetadata("regionkey", BIGINT_TYPE, ImmutableSet.of(new ColumnDetail("tpch", "tiny", "nation", "regionkey"))), new OutputColumnMetadata("comment", "varchar(152)", ImmutableSet.of(new ColumnDetail("tpch", "tiny", "nation", "comment"))));
}
Also used : ColumnDetail(io.trino.spi.eventlistener.ColumnDetail) QueryCompletedEvent(io.trino.spi.eventlistener.QueryCompletedEvent) OutputColumnMetadata(io.trino.spi.eventlistener.OutputColumnMetadata) Test(org.testng.annotations.Test)

Example 9 with QueryCompletedEvent

use of io.trino.spi.eventlistener.QueryCompletedEvent in project trino by trinodb.

the class TestEventListenerBasic method testReferencedColumns.

@Test
public void testReferencedColumns() throws Exception {
    // assert that ColumnInfos for referenced columns are present when the table was not aliased
    runQueryAndWaitForEvents("SELECT name, nationkey FROM nation", 2);
    QueryCompletedEvent event = getOnlyElement(generatedEvents.getQueryCompletedEvents());
    TableInfo table = getOnlyElement(event.getMetadata().getTables());
    assertEquals(table.getColumns().stream().map(ColumnInfo::getColumn).collect(toImmutableSet()), ImmutableSet.of("name", "nationkey"));
    // assert that ColumnInfos for referenced columns are present when the table was aliased
    runQueryAndWaitForEvents("SELECT name, nationkey FROM nation n", 2);
    event = getOnlyElement(generatedEvents.getQueryCompletedEvents());
    table = getOnlyElement(event.getMetadata().getTables());
    assertEquals(table.getColumns().stream().map(ColumnInfo::getColumn).collect(toImmutableSet()), ImmutableSet.of("name", "nationkey"));
    // assert that ColumnInfos for referenced columns are present when the table was aliased and its columns were aliased
    runQueryAndWaitForEvents("SELECT a, b FROM nation n(a, b, c, d)", 2);
    event = getOnlyElement(generatedEvents.getQueryCompletedEvents());
    table = getOnlyElement(event.getMetadata().getTables());
    assertEquals(table.getColumns().stream().map(ColumnInfo::getColumn).collect(toImmutableSet()), ImmutableSet.of("name", "nationkey"));
}
Also used : QueryCompletedEvent(io.trino.spi.eventlistener.QueryCompletedEvent) ColumnInfo(io.trino.spi.eventlistener.ColumnInfo) TableInfo(io.trino.spi.eventlistener.TableInfo) Test(org.testng.annotations.Test)

Example 10 with QueryCompletedEvent

use of io.trino.spi.eventlistener.QueryCompletedEvent in project trino by trinodb.

the class TestEventListenerBasic method testReferencedTablesWithColumnMask.

@Test
public void testReferencedTablesWithColumnMask() throws Exception {
    runQueryAndWaitForEvents("CREATE TABLE mock.default.create_table_with_referring_mask AS SELECT * FROM mock.default.test_table_with_column_mask", 2);
    QueryCompletedEvent event = getOnlyElement(generatedEvents.getQueryCompletedEvents());
    assertThat(event.getIoMetadata().getOutput().get().getCatalogName()).isEqualTo("mock");
    assertThat(event.getIoMetadata().getOutput().get().getSchema()).isEqualTo("default");
    assertThat(event.getIoMetadata().getOutput().get().getTable()).isEqualTo("create_table_with_referring_mask");
    assertThat(event.getIoMetadata().getOutput().get().getColumns().get()).containsExactly(new OutputColumnMetadata("test_varchar", VARCHAR_TYPE, ImmutableSet.of(new ColumnDetail("mock", "default", "test_table_with_column_mask", "test_varchar"))), new OutputColumnMetadata("test_bigint", BIGINT_TYPE, ImmutableSet.of(new ColumnDetail("mock", "default", "test_table_with_column_mask", "test_bigint"))));
    List<TableInfo> tables = event.getMetadata().getTables();
    assertThat(tables).hasSize(2);
    TableInfo table = tables.get(0);
    assertThat(table.getCatalog()).isEqualTo("tpch");
    assertThat(table.getSchema()).isEqualTo("tiny");
    assertThat(table.getTable()).isEqualTo("orders");
    assertThat(table.getAuthorization()).isEqualTo("user");
    assertThat(table.isDirectlyReferenced()).isFalse();
    assertThat(table.getFilters()).isEmpty();
    assertThat(table.getColumns()).hasSize(1);
    ColumnInfo column = table.getColumns().get(0);
    assertThat(column.getColumn()).isEqualTo("orderkey");
    assertThat(column.getMasks()).isEmpty();
    table = tables.get(1);
    assertThat(table.getCatalog()).isEqualTo("mock");
    assertThat(table.getSchema()).isEqualTo("default");
    assertThat(table.getTable()).isEqualTo("test_table_with_column_mask");
    assertThat(table.getAuthorization()).isEqualTo("user");
    assertThat(table.isDirectlyReferenced()).isTrue();
    assertThat(table.getFilters()).isEmpty();
    assertThat(table.getColumns()).hasSize(2);
    column = table.getColumns().get(0);
    assertThat(column.getColumn()).isEqualTo("test_varchar");
    assertThat(column.getMasks()).hasSize(1);
    column = table.getColumns().get(1);
    assertThat(column.getColumn()).isEqualTo("test_bigint");
    assertThat(column.getMasks()).isEmpty();
}
Also used : ColumnDetail(io.trino.spi.eventlistener.ColumnDetail) QueryCompletedEvent(io.trino.spi.eventlistener.QueryCompletedEvent) ColumnInfo(io.trino.spi.eventlistener.ColumnInfo) TableInfo(io.trino.spi.eventlistener.TableInfo) OutputColumnMetadata(io.trino.spi.eventlistener.OutputColumnMetadata) Test(org.testng.annotations.Test)

Aggregations

QueryCompletedEvent (io.trino.spi.eventlistener.QueryCompletedEvent)26 Test (org.testng.annotations.Test)22 OutputColumnMetadata (io.trino.spi.eventlistener.OutputColumnMetadata)13 ColumnDetail (io.trino.spi.eventlistener.ColumnDetail)9 TableInfo (io.trino.spi.eventlistener.TableInfo)8 ColumnInfo (io.trino.spi.eventlistener.ColumnInfo)6 QueryCreatedEvent (io.trino.spi.eventlistener.QueryCreatedEvent)4 QueryStatistics (io.trino.spi.eventlistener.QueryStatistics)3 Session (io.trino.Session)2 SplitCompletedEvent (io.trino.spi.eventlistener.SplitCompletedEvent)2 MaterializedResult (io.trino.testing.MaterializedResult)2 ImmutableList (com.google.common.collect.ImmutableList)1 ImmutableMap (com.google.common.collect.ImmutableMap)1 ImmutableSet (com.google.common.collect.ImmutableSet)1 Iterables.getOnlyElement (com.google.common.collect.Iterables.getOnlyElement)1 MockConnectorFactory (io.trino.connector.MockConnectorFactory)1 QueryStats (io.trino.execution.QueryStats)1 TestingEventListenerPlugin (io.trino.execution.TestEventListenerPlugin.TestingEventListenerPlugin)1 TestQueues.createResourceGroupId (io.trino.execution.TestQueues.createResourceGroupId)1 ResourceGroupManagerPlugin (io.trino.plugin.resourcegroups.ResourceGroupManagerPlugin)1