Search in sources :

Example 1 with Identity

use of com.facebook.presto.spi.security.Identity in project presto by prestodb.

the class TestQueryQueueDefinition method testNameExpansion.

@Test
public void testNameExpansion() {
    Session session = TestingSession.testSessionBuilder().setIdentity(new Identity("bob", Optional.empty())).setSource("the-internet").build();
    QueryQueueDefinition definition = new QueryQueueDefinition("user.${USER}", 1, 1);
    assertEquals(definition.getExpandedTemplate(session), "user.bob");
    definition = new QueryQueueDefinition("source.${SOURCE}", 1, 1);
    assertEquals(definition.getExpandedTemplate(session), "source.the-internet");
    definition = new QueryQueueDefinition("${USER}.${SOURCE}", 1, 1);
    assertEquals(definition.getExpandedTemplate(session), "bob.the-internet");
    definition = new QueryQueueDefinition("global", 1, 1);
    assertEquals(definition.getExpandedTemplate(session), "global");
}
Also used : Identity(com.facebook.presto.spi.security.Identity) Session(com.facebook.presto.Session) TestingSession(com.facebook.presto.testing.TestingSession) Test(org.testng.annotations.Test)

Example 2 with Identity

use of com.facebook.presto.spi.security.Identity in project presto by prestodb.

the class AbstractTestDistributedQueries method testViewAccessControl.

@Test
public void testViewAccessControl() {
    skipTestUnless(supportsViews());
    Session viewOwnerSession = TestingSession.testSessionBuilder().setIdentity(new Identity("test_view_access_owner", Optional.empty())).setCatalog(getSession().getCatalog().get()).setSchema(getSession().getSchema().get()).build();
    // TEST COLUMN-LEVEL PRIVILEGES
    // view creation permissions are only checked at query time, not at creation
    assertAccessAllowed(viewOwnerSession, "CREATE VIEW test_view_access AS SELECT * FROM orders", privilege("orders", CREATE_VIEW_WITH_SELECT_COLUMNS));
    // verify selecting from a view over a table requires the view owner to have special view creation privileges for the table
    assertAccessDenied("SELECT * FROM test_view_access", "View owner 'test_view_access_owner' cannot create view that selects from .*.orders.*", privilege(viewOwnerSession.getUser(), "orders", CREATE_VIEW_WITH_SELECT_COLUMNS));
    // verify the view owner can select from the view even without special view creation privileges
    assertAccessAllowed(viewOwnerSession, "SELECT * FROM test_view_access", privilege(viewOwnerSession.getUser(), "orders", CREATE_VIEW_WITH_SELECT_COLUMNS));
    // verify selecting from a view over a table does not require the session user to have SELECT privileges on the underlying table
    assertAccessAllowed("SELECT * FROM test_view_access", privilege(getSession().getUser(), "orders", CREATE_VIEW_WITH_SELECT_COLUMNS));
    assertAccessAllowed("SELECT * FROM test_view_access", privilege(getSession().getUser(), "orders", SELECT_COLUMN));
    Session nestedViewOwnerSession = TestingSession.testSessionBuilder().setIdentity(new Identity("test_nested_view_access_owner", Optional.empty())).setCatalog(getSession().getCatalog().get()).setSchema(getSession().getSchema().get()).build();
    // view creation permissions are only checked at query time, not at creation
    assertAccessAllowed(nestedViewOwnerSession, "CREATE VIEW test_nested_view_access AS SELECT * FROM test_view_access", privilege("test_view_access", CREATE_VIEW_WITH_SELECT_COLUMNS));
    // verify selecting from a view over a view requires the view owner of the outer view to have special view creation privileges for the inner view
    assertAccessDenied("SELECT * FROM test_nested_view_access", "View owner 'test_nested_view_access_owner' cannot create view that selects from .*.test_view_access.*", privilege(nestedViewOwnerSession.getUser(), "test_view_access", CREATE_VIEW_WITH_SELECT_COLUMNS));
    // verify selecting from a view over a view does not require the session user to have SELECT privileges for the inner view
    assertAccessAllowed("SELECT * FROM test_nested_view_access", privilege(getSession().getUser(), "test_view_access", CREATE_VIEW_WITH_SELECT_COLUMNS));
    assertAccessAllowed("SELECT * FROM test_nested_view_access", privilege(getSession().getUser(), "test_view_access", SELECT_COLUMN));
    // verify that INVOKER security runs as session user
    assertAccessAllowed(viewOwnerSession, "CREATE VIEW test_invoker_view_access SECURITY INVOKER AS SELECT * FROM orders", privilege("orders", CREATE_VIEW_WITH_SELECT_COLUMNS));
    assertAccessAllowed("SELECT * FROM test_invoker_view_access", privilege(viewOwnerSession.getUser(), "orders", SELECT_COLUMN));
    assertAccessDenied("SELECT * FROM test_invoker_view_access", "Cannot select from columns \\[.*\\] in table .*.orders.*", privilege(getSession().getUser(), "orders", SELECT_COLUMN));
    assertAccessAllowed(nestedViewOwnerSession, "DROP VIEW test_nested_view_access");
    assertAccessAllowed(viewOwnerSession, "DROP VIEW test_view_access");
    assertAccessAllowed(viewOwnerSession, "DROP VIEW test_invoker_view_access");
}
Also used : Identity(com.facebook.presto.spi.security.Identity) TestingSession(com.facebook.presto.testing.TestingSession) Session(com.facebook.presto.Session) Test(org.testng.annotations.Test)

Example 3 with Identity

use of com.facebook.presto.spi.security.Identity in project presto by prestodb.

the class TestHiveIntegrationSmokeTest method testCurrentUserInView.

@Test
public void testCurrentUserInView() {
    checkState(getSession().getCatalog().isPresent(), "catalog is not set");
    checkState(getSession().getSchema().isPresent(), "schema is not set");
    String testAccountsUnqualifiedName = "test_accounts";
    String testAccountsViewUnqualifiedName = "test_accounts_view";
    String testAccountsViewFullyQualifiedName = format("%s.%s.%s", getSession().getCatalog().get(), getSession().getSchema().get(), testAccountsViewUnqualifiedName);
    assertUpdate(format("CREATE TABLE %s AS SELECT user_name, account_name" + "  FROM (VALUES ('user1', 'account1'), ('user2', 'account2'))" + "  t (user_name, account_name)", testAccountsUnqualifiedName), 2);
    assertUpdate(format("CREATE VIEW %s AS SELECT account_name FROM test_accounts WHERE user_name = CURRENT_USER", testAccountsViewUnqualifiedName));
    assertUpdate(format("GRANT SELECT ON %s TO user1", testAccountsViewFullyQualifiedName));
    assertUpdate(format("GRANT SELECT ON %s TO user2", testAccountsViewFullyQualifiedName));
    Session user1 = testSessionBuilder().setCatalog(getSession().getCatalog().get()).setSchema(getSession().getSchema().get()).setIdentity(new Identity("user1", getSession().getIdentity().getPrincipal())).build();
    Session user2 = testSessionBuilder().setCatalog(getSession().getCatalog().get()).setSchema(getSession().getSchema().get()).setIdentity(new Identity("user2", getSession().getIdentity().getPrincipal())).build();
    assertQuery(user1, "SELECT account_name FROM test_accounts_view", "VALUES 'account1'");
    assertQuery(user2, "SELECT account_name FROM test_accounts_view", "VALUES 'account2'");
    assertUpdate("DROP VIEW test_accounts_view");
    assertUpdate("DROP TABLE test_accounts");
}
Also used : Identity(com.facebook.presto.spi.security.Identity) ConnectorSession(com.facebook.presto.spi.ConnectorSession) HiveQueryRunner.createBucketedSession(com.facebook.presto.hive.HiveQueryRunner.createBucketedSession) Session(com.facebook.presto.Session) HiveQueryRunner.createMaterializeExchangesSession(com.facebook.presto.hive.HiveQueryRunner.createMaterializeExchangesSession) Test(org.testng.annotations.Test) AbstractTestIntegrationSmokeTest(com.facebook.presto.tests.AbstractTestIntegrationSmokeTest)

Example 4 with Identity

use of com.facebook.presto.spi.security.Identity in project presto by prestodb.

the class TestHiveLogicalPlanner method testRefreshMaterializedViewAccessControl.

@Test
public void testRefreshMaterializedViewAccessControl() {
    QueryRunner queryRunner = getQueryRunner();
    Session invokerSession = Session.builder(getSession()).setIdentity(new Identity("test_view_invoker", Optional.empty())).setCatalog(getSession().getCatalog().get()).setSchema(getSession().getSchema().get()).build();
    Session ownerSession = getSession();
    queryRunner.execute(ownerSession, "CREATE TABLE test_orders_base WITH (partitioned_by = ARRAY['orderstatus']) " + "AS SELECT orderkey, custkey, totalprice, orderstatus FROM orders LIMIT 10");
    queryRunner.execute(ownerSession, "CREATE MATERIALIZED VIEW test_orders_view " + "WITH (partitioned_by = ARRAY['orderstatus']) " + "AS SELECT orderkey, totalprice, orderstatus FROM test_orders_base");
    String refreshMaterializedView = "REFRESH MATERIALIZED VIEW test_orders_view WHERE orderstatus = 'F'";
    try {
        // Verify that refresh checks the owner's permission instead of the invoker's permission on the base table
        assertAccessDenied(invokerSession, refreshMaterializedView, "Cannot select from columns \\[.*\\] in table .*test_orders_base.*", privilege(ownerSession.getUser(), "test_orders_base", SELECT_COLUMN));
        assertAccessAllowed(invokerSession, refreshMaterializedView, privilege(invokerSession.getUser(), "test_orders_base", SELECT_COLUMN));
        // Verify that refresh checks owner's permission instead of the invokers permission on the materialized view.
        // Verify that refresh requires INSERT_TABLE permission instead of SELECT_COLUMN permission on the materialized view.
        assertAccessDenied(invokerSession, refreshMaterializedView, "Cannot insert into table .*test_orders_view.*", privilege(ownerSession.getUser(), "test_orders_view", INSERT_TABLE));
        assertAccessAllowed(invokerSession, refreshMaterializedView, privilege(invokerSession.getUser(), "test_orders_view", INSERT_TABLE));
        assertAccessAllowed(invokerSession, refreshMaterializedView, privilege(ownerSession.getUser(), "test_orders_view", SELECT_COLUMN));
        assertAccessAllowed(invokerSession, refreshMaterializedView, privilege(invokerSession.getUser(), "test_orders_view", SELECT_COLUMN));
        // Verify for the owner invoking refresh
        assertAccessDenied(ownerSession, refreshMaterializedView, "Cannot select from columns \\[.*\\] in table .*test_orders_base.*", privilege(ownerSession.getUser(), "test_orders_base", SELECT_COLUMN));
        assertAccessDenied(ownerSession, refreshMaterializedView, "Cannot insert into table .*test_orders_view.*", privilege(ownerSession.getUser(), "test_orders_view", INSERT_TABLE));
        assertAccessAllowed(ownerSession, refreshMaterializedView);
    } finally {
        queryRunner.execute(ownerSession, "DROP MATERIALIZED VIEW test_orders_view");
        queryRunner.execute(ownerSession, "DROP TABLE test_orders_base");
    }
}
Also used : Identity(com.facebook.presto.spi.security.Identity) QueryRunner(com.facebook.presto.testing.QueryRunner) DistributedQueryRunner(com.facebook.presto.tests.DistributedQueryRunner) Session(com.facebook.presto.Session) Test(org.testng.annotations.Test)

Example 5 with Identity

use of com.facebook.presto.spi.security.Identity in project presto by prestodb.

the class TestHiveLogicalPlanner method testMaterializedViewQueryAccessControl.

@Test
public void testMaterializedViewQueryAccessControl() {
    QueryRunner queryRunner = getQueryRunner();
    Session invokerSession = Session.builder(getSession()).setIdentity(new Identity("test_view_invoker", Optional.empty())).setCatalog(getSession().getCatalog().get()).setSchema(getSession().getSchema().get()).setSystemProperty(QUERY_OPTIMIZATION_WITH_MATERIALIZED_VIEW_ENABLED, "true").build();
    Session ownerSession = getSession();
    queryRunner.execute(ownerSession, "CREATE TABLE test_orders_base WITH (partitioned_by = ARRAY['orderstatus']) " + "AS SELECT orderkey, custkey, totalprice, orderstatus FROM orders LIMIT 10");
    queryRunner.execute(ownerSession, "CREATE MATERIALIZED VIEW test_orders_view " + "WITH (partitioned_by = ARRAY['orderstatus']) " + "AS SELECT SUM(totalprice) AS totalprice, orderstatus FROM test_orders_base GROUP BY orderstatus");
    setReferencedMaterializedViews((DistributedQueryRunner) getQueryRunner(), "test_orders_base", ImmutableList.of("test_orders_view"));
    Consumer<String> testQueryWithDeniedPrivilege = query -> {
        // Verify checking the base table instead of the materialized view for SELECT permission
        assertAccessDenied(invokerSession, query, "Cannot select from columns \\[.*\\] in table .*test_orders_base.*", privilege(invokerSession.getUser(), "test_orders_base", SELECT_COLUMN));
        assertAccessAllowed(invokerSession, query, privilege(invokerSession.getUser(), "test_orders_view", SELECT_COLUMN));
    };
    try {
        // Check for both the direct materialized view query and the base table query optimization with materialized view
        String directMaterializedViewQuery = "SELECT totalprice, orderstatus FROM test_orders_view";
        String queryWithMaterializedViewOptimization = "SELECT SUM(totalprice) AS totalprice, orderstatus FROM test_orders_base GROUP BY orderstatus";
        // Test when the materialized view is not materialized yet
        testQueryWithDeniedPrivilege.accept(directMaterializedViewQuery);
        testQueryWithDeniedPrivilege.accept(queryWithMaterializedViewOptimization);
        // Test when the materialized view is partially materialized
        queryRunner.execute(ownerSession, "REFRESH MATERIALIZED VIEW test_orders_view WHERE orderstatus = 'F'");
        testQueryWithDeniedPrivilege.accept(directMaterializedViewQuery);
        testQueryWithDeniedPrivilege.accept(queryWithMaterializedViewOptimization);
        // Test when the materialized view is fully materialized
        queryRunner.execute(ownerSession, "REFRESH MATERIALIZED VIEW test_orders_view WHERE orderstatus <> 'F'");
        testQueryWithDeniedPrivilege.accept(directMaterializedViewQuery);
        testQueryWithDeniedPrivilege.accept(queryWithMaterializedViewOptimization);
    } finally {
        queryRunner.execute(ownerSession, "DROP MATERIALIZED VIEW test_orders_view");
        queryRunner.execute(ownerSession, "DROP TABLE test_orders_base");
    }
}
Also used : TestingAccessControlManager.privilege(com.facebook.presto.testing.TestingAccessControlManager.privilege) Arrays(java.util.Arrays) SELECT_COLUMN(com.facebook.presto.testing.TestingAccessControlManager.TestingPrivilegeType.SELECT_COLUMN) PlanMatchPattern.filter(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.filter) PartitionWithStatistics(com.facebook.presto.hive.metastore.PartitionWithStatistics) PlanMatchPattern.anyTree(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.anyTree) MetastoreContext(com.facebook.presto.hive.metastore.MetastoreContext) MatchResult(com.facebook.presto.sql.planner.assertions.MatchResult) QueryRunner(com.facebook.presto.testing.QueryRunner) Test(org.testng.annotations.Test) PlanMatchPattern(com.facebook.presto.sql.planner.assertions.PlanMatchPattern) PlanMatchPattern.join(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.join) TupleDomain.withColumnDomains(com.facebook.presto.common.predicate.TupleDomain.withColumnDomains) OPTIMIZE_METADATA_QUERIES_IGNORE_STATS(com.facebook.presto.SystemSessionProperties.OPTIMIZE_METADATA_QUERIES_IGNORE_STATS) ExtendedHiveMetastore(com.facebook.presto.hive.metastore.ExtendedHiveMetastore) Slices(io.airlift.slice.Slices) Map(java.util.Map) PlanMatchPattern.expression(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.expression) Slices.utf8Slice(io.airlift.slice.Slices.utf8Slice) CUSTOMER(io.airlift.tpch.TpchTable.CUSTOMER) Assert.assertFalse(org.testng.Assert.assertFalse) PrincipalPrivileges(com.facebook.presto.hive.metastore.PrincipalPrivileges) ImmutableList.toImmutableList(com.google.common.collect.ImmutableList.toImmutableList) SHUFFLE_PARTITIONED_COLUMNS_FOR_TABLE_WRITE(com.facebook.presto.hive.HiveSessionProperties.SHUFFLE_PARTITIONED_COLUMNS_FOR_TABLE_WRITE) Set(java.util.Set) PlanMatchPattern.anySymbol(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.anySymbol) JOIN_DISTRIBUTION_TYPE(com.facebook.presto.SystemSessionProperties.JOIN_DISTRIBUTION_TYPE) MATERIALIZED_VIEW_MISSING_PARTITIONS_THRESHOLD(com.facebook.presto.hive.HiveSessionProperties.MATERIALIZED_VIEW_MISSING_PARTITIONS_THRESHOLD) PlanMatchPattern.unnest(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.unnest) Collectors.joining(java.util.stream.Collectors.joining) FeaturesConfig(com.facebook.presto.sql.analyzer.FeaturesConfig) ImmutableMap.toImmutableMap(com.google.common.collect.ImmutableMap.toImmutableMap) FileHiveMetastore(com.facebook.presto.hive.metastore.file.FileHiveMetastore) LongLiteral(com.facebook.presto.sql.tree.LongLiteral) PARTIAL_AGGREGATION_PUSHDOWN_ENABLED(com.facebook.presto.hive.HiveSessionProperties.PARTIAL_AGGREGATION_PUSHDOWN_ENABLED) PlanMatchPattern.node(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.node) MoreObjects.toStringHelper(com.google.common.base.MoreObjects.toStringHelper) Domain.notNull(com.facebook.presto.common.predicate.Domain.notNull) Table(com.facebook.presto.hive.metastore.Table) Slice(io.airlift.slice.Slice) GATHER(com.facebook.presto.sql.planner.plan.ExchangeNode.Type.GATHER) ConstantExpression(com.facebook.presto.spi.relation.ConstantExpression) TypeSignatureProvider.fromTypes(com.facebook.presto.sql.analyzer.TypeSignatureProvider.fromTypes) ArrayList(java.util.ArrayList) ParquetTypeUtils.pushdownColumnNameForSubfield(com.facebook.presto.parquet.ParquetTypeUtils.pushdownColumnNameForSubfield) Identity(com.facebook.presto.spi.security.Identity) BOOLEAN(com.facebook.presto.common.type.BooleanType.BOOLEAN) ImmutableSet.toImmutableSet(com.google.common.collect.ImmutableSet.toImmutableSet) ArrayType(com.facebook.presto.common.type.ArrayType) FunctionResolution(com.facebook.presto.sql.relational.FunctionResolution) ImmutableMultimap(com.google.common.collect.ImmutableMultimap) OPTIMIZE_METADATA_QUERIES(com.facebook.presto.SystemSessionProperties.OPTIMIZE_METADATA_QUERIES) Functions(com.google.common.base.Functions) BIGINT(com.facebook.presto.common.type.BigintType.BIGINT) SymbolAliases(com.facebook.presto.sql.planner.assertions.SymbolAliases) AbstractTestQueryFramework(com.facebook.presto.tests.AbstractTestQueryFramework) HIVE_CATALOG(com.facebook.presto.hive.HiveQueryRunner.HIVE_CATALOG) Session(com.facebook.presto.Session) ELIMINATE_CROSS_JOINS(com.facebook.presto.sql.analyzer.FeaturesConfig.JoinReorderingStrategy.ELIMINATE_CROSS_JOINS) StatsProvider(com.facebook.presto.cost.StatsProvider) PlanMatchPattern.exchange(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.exchange) Domain(com.facebook.presto.common.predicate.Domain) COLLECT_COLUMN_STATISTICS_ON_WRITE(com.facebook.presto.hive.HiveSessionProperties.COLLECT_COLUMN_STATISTICS_ON_WRITE) ColumnHandle(com.facebook.presto.spi.ColumnHandle) PUSHDOWN_FILTER_ENABLED(com.facebook.presto.hive.HiveSessionProperties.PUSHDOWN_FILTER_ENABLED) TableScanNode(com.facebook.presto.spi.plan.TableScanNode) SemiJoinNode(com.facebook.presto.sql.planner.plan.SemiJoinNode) PartitionStatistics(com.facebook.presto.hive.metastore.PartitionStatistics) MatchResult.match(com.facebook.presto.sql.planner.assertions.MatchResult.match) ValueSet(com.facebook.presto.common.predicate.ValueSet) Metadata(com.facebook.presto.metadata.Metadata) FunctionAndTypeManager(com.facebook.presto.metadata.FunctionAndTypeManager) AggregationNode(com.facebook.presto.spi.plan.AggregationNode) HiveColumnHandle.isPushedDownSubfield(com.facebook.presto.hive.HiveColumnHandle.isPushedDownSubfield) PlanMatchPattern.output(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.output) QUERY_OPTIMIZATION_WITH_MATERIALIZED_VIEW_ENABLED(com.facebook.presto.SystemSessionProperties.QUERY_OPTIMIZATION_WITH_MATERIALIZED_VIEW_ENABLED) LINE_ITEM(io.airlift.tpch.TpchTable.LINE_ITEM) VariableReferenceExpression(com.facebook.presto.spi.relation.VariableReferenceExpression) DistributedQueryRunner(com.facebook.presto.tests.DistributedQueryRunner) ValueSet.ofRanges(com.facebook.presto.common.predicate.ValueSet.ofRanges) EQUAL(com.facebook.presto.common.function.OperatorType.EQUAL) PUSHDOWN_DEREFERENCE_ENABLED(com.facebook.presto.SystemSessionProperties.PUSHDOWN_DEREFERENCE_ENABLED) Path(org.apache.hadoop.fs.Path) CallExpression(com.facebook.presto.spi.relation.CallExpression) URI(java.net.URI) PlanMatchPattern.aggregation(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.aggregation) FunctionCall(com.facebook.presto.sql.tree.FunctionCall) PlanMatchPattern.globalAggregation(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.globalAggregation) ImmutableSet(com.google.common.collect.ImmutableSet) PlanMatchPattern.project(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.project) ImmutableMap(com.google.common.collect.ImmutableMap) DOUBLE(com.facebook.presto.common.type.DoubleType.DOUBLE) Domain.singleValue(com.facebook.presto.common.predicate.Domain.singleValue) VarcharType(com.facebook.presto.common.type.VarcharType) Collectors(java.util.stream.Collectors) TRUE_CONSTANT(com.facebook.presto.expressions.LogicalRowExpressions.TRUE_CONSTANT) PARQUET_DEREFERENCE_PUSHDOWN_ENABLED(com.facebook.presto.hive.HiveSessionProperties.PARQUET_DEREFERENCE_PUSHDOWN_ENABLED) String.format(java.lang.String.format) Range(com.facebook.presto.common.predicate.Range) REMOTE_STREAMING(com.facebook.presto.sql.planner.plan.ExchangeNode.Scope.REMOTE_STREAMING) Objects(java.util.Objects) List(java.util.List) Range.greaterThan(com.facebook.presto.common.predicate.Range.greaterThan) JOIN_REORDERING_STRATEGY(com.facebook.presto.SystemSessionProperties.JOIN_REORDERING_STRATEGY) Domain.create(com.facebook.presto.common.predicate.Domain.create) RANGE_FILTERS_ON_SUBSCRIPTS_ENABLED(com.facebook.presto.hive.HiveSessionProperties.RANGE_FILTERS_ON_SUBSCRIPTS_ENABLED) MetastoreUtil.toPartitionValues(com.facebook.presto.hive.metastore.MetastoreUtil.toPartitionValues) Optional(java.util.Optional) NO_MATCH(com.facebook.presto.sql.planner.assertions.MatchResult.NO_MATCH) ExpectedValueProvider(com.facebook.presto.sql.planner.assertions.ExpectedValueProvider) OPTIMIZE_METADATA_QUERIES_CALL_THRESHOLD(com.facebook.presto.SystemSessionProperties.OPTIMIZE_METADATA_QUERIES_CALL_THRESHOLD) NoHdfsAuthentication(com.facebook.presto.hive.authentication.NoHdfsAuthentication) INNER(com.facebook.presto.sql.planner.plan.JoinNode.Type.INNER) NATION(io.airlift.tpch.TpchTable.NATION) PARTIAL_AGGREGATION_PUSHDOWN_FOR_VARIABLE_LENGTH_DATATYPES_ENABLED(com.facebook.presto.hive.HiveSessionProperties.PARTIAL_AGGREGATION_PUSHDOWN_FOR_VARIABLE_LENGTH_DATATYPES_ENABLED) Assert.assertEquals(com.facebook.presto.testing.assertions.Assert.assertEquals) ORDERS(io.airlift.tpch.TpchTable.ORDERS) VARCHAR(com.facebook.presto.common.type.VarcharType.VARCHAR) ConnectorTableLayoutHandle(com.facebook.presto.spi.ConnectorTableLayoutHandle) VarcharType.createVarcharType(com.facebook.presto.common.type.VarcharType.createVarcharType) Partition(com.facebook.presto.hive.metastore.Partition) StringLiteral(com.facebook.presto.sql.tree.StringLiteral) Subfield(com.facebook.presto.common.Subfield) ImmutableList(com.google.common.collect.ImmutableList) LOCAL(com.facebook.presto.sql.planner.plan.ExchangeNode.Scope.LOCAL) PlanMatchPattern.equiJoinClause(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.equiJoinClause) Objects.requireNonNull(java.util.Objects.requireNonNull) PlanMatchPattern.any(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.any) PlanMatchPattern.strictTableScan(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.strictTableScan) Plan(com.facebook.presto.sql.planner.Plan) Domain.multipleValues(com.facebook.presto.common.predicate.Domain.multipleValues) PlanNodeSearcher.searchFrom(com.facebook.presto.sql.planner.optimizations.PlanNodeSearcher.searchFrom) RowExpression(com.facebook.presto.spi.relation.RowExpression) JoinNode(com.facebook.presto.sql.planner.plan.JoinNode) INSERT_TABLE(com.facebook.presto.testing.TestingAccessControlManager.TestingPrivilegeType.INSERT_TABLE) Matcher(com.facebook.presto.sql.planner.assertions.Matcher) TupleDomain(com.facebook.presto.common.predicate.TupleDomain) Consumer(java.util.function.Consumer) PlanNode(com.facebook.presto.spi.plan.PlanNode) MaterializedResult(com.facebook.presto.testing.MaterializedResult) LEFT(com.facebook.presto.sql.planner.plan.JoinNode.Type.LEFT) StorageFormat.fromHiveStorageFormat(com.facebook.presto.hive.metastore.StorageFormat.fromHiveStorageFormat) SYNTHESIZED(com.facebook.presto.hive.HiveColumnHandle.ColumnType.SYNTHESIZED) Assert.assertTrue(org.testng.Assert.assertTrue) REFERENCED_MATERIALIZED_VIEWS(com.facebook.presto.hive.HiveMetadata.REFERENCED_MATERIALIZED_VIEWS) PlanMatchPattern.values(com.facebook.presto.sql.planner.assertions.PlanMatchPattern.values) TestHiveIntegrationSmokeTest.assertRemoteExchangesCount(com.facebook.presto.hive.TestHiveIntegrationSmokeTest.assertRemoteExchangesCount) Identity(com.facebook.presto.spi.security.Identity) QueryRunner(com.facebook.presto.testing.QueryRunner) DistributedQueryRunner(com.facebook.presto.tests.DistributedQueryRunner) Session(com.facebook.presto.Session) Test(org.testng.annotations.Test)

Aggregations

Identity (com.facebook.presto.spi.security.Identity)23 Test (org.testng.annotations.Test)18 QueryId (com.facebook.presto.spi.QueryId)11 Session (com.facebook.presto.Session)10 AccessControlContext (com.facebook.presto.spi.security.AccessControlContext)9 ConnectorIdentity (com.facebook.presto.spi.security.ConnectorIdentity)9 SelectedRole (com.facebook.presto.spi.security.SelectedRole)5 QualifiedObjectName (com.facebook.presto.common.QualifiedObjectName)4 InMemoryTransactionManager.createTestTransactionManager (com.facebook.presto.transaction.InMemoryTransactionManager.createTestTransactionManager)4 TransactionManager (com.facebook.presto.transaction.TransactionManager)4 ConnectorId (com.facebook.presto.spi.ConnectorId)3 ConnectorId.createInformationSchemaConnectorId (com.facebook.presto.spi.ConnectorId.createInformationSchemaConnectorId)3 ConnectorId.createSystemTablesConnectorId (com.facebook.presto.spi.ConnectorId.createSystemTablesConnectorId)3 DistributedQueryRunner (com.facebook.presto.tests.DistributedQueryRunner)3 Map (java.util.Map)3 CatalogManager (com.facebook.presto.metadata.CatalogManager)2 SessionPropertyManager (com.facebook.presto.metadata.SessionPropertyManager)2 ConnectorSession (com.facebook.presto.spi.ConnectorSession)2 MaterializedResult (com.facebook.presto.testing.MaterializedResult)2 QueryRunner (com.facebook.presto.testing.QueryRunner)2