Search in sources :

Example 1 with AnalyzerFactory

use of io.trino.sql.analyzer.AnalyzerFactory in project trino by trinodb.

the class TestCreateMaterializedViewTask method testCreateDenyPermission.

@Test
public void testCreateDenyPermission() {
    CreateMaterializedView statement = new CreateMaterializedView(Optional.empty(), QualifiedName.of("test_mv"), simpleQuery(selectList(new AllColumns()), table(QualifiedName.of("catalog", "schema", "mock_table"))), false, true, ImmutableList.of(), Optional.empty());
    TestingAccessControlManager accessControl = new TestingAccessControlManager(transactionManager, emptyEventListenerManager());
    accessControl.loadSystemAccessControl(AllowAllSystemAccessControl.NAME, ImmutableMap.of());
    accessControl.deny(privilege("test_mv", CREATE_MATERIALIZED_VIEW));
    StatementAnalyzerFactory statementAnalyzerFactory = createTestingStatementAnalyzerFactory(plannerContext, accessControl, new TablePropertyManager(), new AnalyzePropertyManager());
    AnalyzerFactory analyzerFactory = new AnalyzerFactory(statementAnalyzerFactory, new StatementRewrite(ImmutableSet.of()));
    assertThatThrownBy(() -> getFutureValue(new CreateMaterializedViewTask(plannerContext, accessControl, parser, analyzerFactory, materializedViewPropertyManager, new FeaturesConfig()).execute(statement, queryStateMachine, ImmutableList.of(), WarningCollector.NOOP))).isInstanceOf(AccessDeniedException.class).hasMessageContaining("Cannot create materialized view catalog.schema.test_mv");
}
Also used : AccessDeniedException(io.trino.spi.security.AccessDeniedException) CreateMaterializedView(io.trino.sql.tree.CreateMaterializedView) FeaturesConfig(io.trino.FeaturesConfig) StatementRewrite(io.trino.sql.rewrite.StatementRewrite) AllColumns(io.trino.sql.tree.AllColumns) TablePropertyManager(io.trino.metadata.TablePropertyManager) TestingAccessControlManager(io.trino.testing.TestingAccessControlManager) StatementAnalyzerFactory.createTestingStatementAnalyzerFactory(io.trino.sql.analyzer.StatementAnalyzerFactory.createTestingStatementAnalyzerFactory) StatementAnalyzerFactory(io.trino.sql.analyzer.StatementAnalyzerFactory) AnalyzePropertyManager(io.trino.metadata.AnalyzePropertyManager) AnalyzerFactory(io.trino.sql.analyzer.AnalyzerFactory) StatementAnalyzerFactory.createTestingStatementAnalyzerFactory(io.trino.sql.analyzer.StatementAnalyzerFactory.createTestingStatementAnalyzerFactory) StatementAnalyzerFactory(io.trino.sql.analyzer.StatementAnalyzerFactory) Test(org.testng.annotations.Test)

Example 2 with AnalyzerFactory

use of io.trino.sql.analyzer.AnalyzerFactory in project trino by trinodb.

the class TestCreateViewTask method setUp.

@Override
@BeforeMethod
public void setUp() {
    super.setUp();
    parser = new SqlParser();
    analyzerFactory = new AnalyzerFactory(createTestingStatementAnalyzerFactory(plannerContext, new AllowAllAccessControl(), new TablePropertyManager(), new AnalyzePropertyManager()), new StatementRewrite(ImmutableSet.of()));
    QualifiedObjectName tableName = qualifiedObjectName("mock_table");
    metadata.createTable(testSession, CATALOG_NAME, someTable(tableName), false);
}
Also used : AllowAllAccessControl(io.trino.security.AllowAllAccessControl) StatementRewrite(io.trino.sql.rewrite.StatementRewrite) SqlParser(io.trino.sql.parser.SqlParser) TablePropertyManager(io.trino.metadata.TablePropertyManager) QualifiedObjectName(io.trino.metadata.QualifiedObjectName) AnalyzerFactory(io.trino.sql.analyzer.AnalyzerFactory) StatementAnalyzerFactory.createTestingStatementAnalyzerFactory(io.trino.sql.analyzer.StatementAnalyzerFactory.createTestingStatementAnalyzerFactory) AnalyzePropertyManager(io.trino.metadata.AnalyzePropertyManager) BeforeMethod(org.testng.annotations.BeforeMethod)

Example 3 with AnalyzerFactory

use of io.trino.sql.analyzer.AnalyzerFactory in project trino by trinodb.

the class TestCreateMaterializedViewTask method setUp.

@BeforeMethod
public void setUp() {
    queryRunner = LocalQueryRunner.create(TEST_SESSION);
    transactionManager = queryRunner.getTransactionManager();
    queryRunner.createCatalog(CATALOG_NAME, MockConnectorFactory.builder().withGetMaterializedViewProperties(() -> ImmutableList.<PropertyMetadata<?>>builder().add(stringProperty("foo", "test materialized view property", DEFAULT_MATERIALIZED_VIEW_FOO_PROPERTY_VALUE, false)).add(integerProperty("bar", "test materialized view property", DEFAULT_MATERIALIZED_VIEW_BAR_PROPERTY_VALUE, false)).build()).build(), ImmutableMap.of());
    materializedViewPropertyManager = queryRunner.getMaterializedViewPropertyManager();
    testSession = testSessionBuilder().build();
    metadata = new MockMetadata(new CatalogName(CATALOG_NAME));
    plannerContext = plannerContextBuilder().withMetadata(metadata).build();
    parser = queryRunner.getSqlParser();
    analyzerFactory = new AnalyzerFactory(createTestingStatementAnalyzerFactory(plannerContext, new AllowAllAccessControl(), new TablePropertyManager(), new AnalyzePropertyManager()), new StatementRewrite(ImmutableSet.of()));
    queryStateMachine = stateMachine(transactionManager, createTestMetadataManager(), new AllowAllAccessControl());
}
Also used : AllowAllAccessControl(io.trino.security.AllowAllAccessControl) StatementRewrite(io.trino.sql.rewrite.StatementRewrite) AbstractMockMetadata(io.trino.metadata.AbstractMockMetadata) PropertyMetadata(io.trino.spi.session.PropertyMetadata) CatalogName(io.trino.connector.CatalogName) TablePropertyManager(io.trino.metadata.TablePropertyManager) AnalyzerFactory(io.trino.sql.analyzer.AnalyzerFactory) StatementAnalyzerFactory.createTestingStatementAnalyzerFactory(io.trino.sql.analyzer.StatementAnalyzerFactory.createTestingStatementAnalyzerFactory) StatementAnalyzerFactory(io.trino.sql.analyzer.StatementAnalyzerFactory) AnalyzePropertyManager(io.trino.metadata.AnalyzePropertyManager) BeforeMethod(org.testng.annotations.BeforeMethod)

Example 4 with AnalyzerFactory

use of io.trino.sql.analyzer.AnalyzerFactory in project trino by trinodb.

the class LocalQueryRunner method createPlan.

public Plan createPlan(Session session, @Language("SQL") String sql, List<PlanOptimizer> optimizers, LogicalPlanner.Stage stage, WarningCollector warningCollector) {
    PreparedQuery preparedQuery = new QueryPreparer(sqlParser).prepareQuery(session, sql);
    assertFormattedSql(sqlParser, createParsingOptions(session), preparedQuery.getStatement());
    PlanNodeIdAllocator idAllocator = new PlanNodeIdAllocator();
    AnalyzerFactory analyzerFactory = createAnalyzerFactory(createQueryExplainerFactory(optimizers));
    Analyzer analyzer = analyzerFactory.createAnalyzer(session, preparedQuery.getParameters(), parameterExtractor(preparedQuery.getStatement(), preparedQuery.getParameters()), warningCollector);
    LogicalPlanner logicalPlanner = new LogicalPlanner(session, optimizers, new PlanSanityChecker(true), idAllocator, getPlannerContext(), new TypeAnalyzer(plannerContext, statementAnalyzerFactory), statsCalculator, costCalculator, warningCollector);
    Analysis analysis = analyzer.analyze(preparedQuery.getStatement());
    // make LocalQueryRunner always compute plan statistics for test purposes
    return logicalPlanner.plan(analysis, stage);
}
Also used : QueryPreparer(io.trino.execution.QueryPreparer) LogicalPlanner(io.trino.sql.planner.LogicalPlanner) PlanNodeIdAllocator(io.trino.sql.planner.PlanNodeIdAllocator) Analysis(io.trino.sql.analyzer.Analysis) PreparedQuery(io.trino.execution.QueryPreparer.PreparedQuery) PlanSanityChecker(io.trino.sql.planner.sanity.PlanSanityChecker) Analyzer(io.trino.sql.analyzer.Analyzer) TypeAnalyzer(io.trino.sql.planner.TypeAnalyzer) TypeAnalyzer(io.trino.sql.planner.TypeAnalyzer) StatementAnalyzerFactory(io.trino.sql.analyzer.StatementAnalyzerFactory) AnalyzerFactory(io.trino.sql.analyzer.AnalyzerFactory)

Example 5 with AnalyzerFactory

use of io.trino.sql.analyzer.AnalyzerFactory in project trino by trinodb.

the class LocalQueryRunner method getQueryExplainer.

@Override
public QueryExplainer getQueryExplainer() {
    QueryExplainerFactory queryExplainerFactory = createQueryExplainerFactory(getPlanOptimizers(true));
    AnalyzerFactory analyzerFactory = createAnalyzerFactory(queryExplainerFactory);
    return queryExplainerFactory.createQueryExplainer(analyzerFactory);
}
Also used : QueryExplainerFactory(io.trino.sql.analyzer.QueryExplainerFactory) StatementAnalyzerFactory(io.trino.sql.analyzer.StatementAnalyzerFactory) AnalyzerFactory(io.trino.sql.analyzer.AnalyzerFactory)

Aggregations

AnalyzerFactory (io.trino.sql.analyzer.AnalyzerFactory)5 StatementAnalyzerFactory (io.trino.sql.analyzer.StatementAnalyzerFactory)4 AnalyzePropertyManager (io.trino.metadata.AnalyzePropertyManager)3 TablePropertyManager (io.trino.metadata.TablePropertyManager)3 StatementAnalyzerFactory.createTestingStatementAnalyzerFactory (io.trino.sql.analyzer.StatementAnalyzerFactory.createTestingStatementAnalyzerFactory)3 StatementRewrite (io.trino.sql.rewrite.StatementRewrite)3 AllowAllAccessControl (io.trino.security.AllowAllAccessControl)2 BeforeMethod (org.testng.annotations.BeforeMethod)2 FeaturesConfig (io.trino.FeaturesConfig)1 CatalogName (io.trino.connector.CatalogName)1 QueryPreparer (io.trino.execution.QueryPreparer)1 PreparedQuery (io.trino.execution.QueryPreparer.PreparedQuery)1 AbstractMockMetadata (io.trino.metadata.AbstractMockMetadata)1 QualifiedObjectName (io.trino.metadata.QualifiedObjectName)1 AccessDeniedException (io.trino.spi.security.AccessDeniedException)1 PropertyMetadata (io.trino.spi.session.PropertyMetadata)1 Analysis (io.trino.sql.analyzer.Analysis)1 Analyzer (io.trino.sql.analyzer.Analyzer)1 QueryExplainerFactory (io.trino.sql.analyzer.QueryExplainerFactory)1 SqlParser (io.trino.sql.parser.SqlParser)1