diff --git a/presto-main-base/src/main/java/com/facebook/presto/connector/system/SystemConnectorSessionUtil.java b/presto-main-base/src/main/java/com/facebook/presto/connector/system/SystemConnectorSessionUtil.java index 19cc00b0a7065..405b3f4cceadf 100644 --- a/presto-main-base/src/main/java/com/facebook/presto/connector/system/SystemConnectorSessionUtil.java +++ b/presto-main-base/src/main/java/com/facebook/presto/connector/system/SystemConnectorSessionUtil.java @@ -21,6 +21,10 @@ import com.facebook.presto.spi.connector.ConnectorTransactionHandle; import com.facebook.presto.spi.security.ConnectorIdentity; import com.facebook.presto.spi.security.Identity; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; + +import java.util.Optional; import static com.facebook.presto.metadata.SessionPropertyManager.createTestingSessionPropertyManager; @@ -35,7 +39,7 @@ public static Session toSession(ConnectorTransactionHandle transactionHandle, Co { TransactionId transactionId = ((GlobalSystemTransactionHandle) transactionHandle).getTransactionId(); ConnectorIdentity connectorIdentity = session.getIdentity(); - Identity identity = new Identity(connectorIdentity.getUser(), connectorIdentity.getPrincipal(), connectorIdentity.getExtraCredentials()); + Identity identity = new Identity(connectorIdentity.getUser(), connectorIdentity.getPrincipal(), ImmutableMap.of(), connectorIdentity.getExtraCredentials(), ImmutableMap.of(), Optional.empty(), connectorIdentity.getReasonForSelect(), ImmutableList.of()); return Session.builder(createTestingSessionPropertyManager(SYSTEM_SESSION_PROPERTIES)) .setQueryId(new QueryId(session.getQueryId())) .setTransactionId(transactionId) diff --git a/presto-main-base/src/main/java/com/facebook/presto/sql/MaterializedViewUtils.java b/presto-main-base/src/main/java/com/facebook/presto/sql/MaterializedViewUtils.java index 503320a9b4bdb..dcc80d61ab1ad 100644 --- a/presto-main-base/src/main/java/com/facebook/presto/sql/MaterializedViewUtils.java +++ b/presto-main-base/src/main/java/com/facebook/presto/sql/MaterializedViewUtils.java @@ -130,7 +130,7 @@ public static Session buildOwnerSession(Session session, Optional owner, public static Identity getOwnerIdentity(Optional owner, Session session) { if (owner.isPresent() && !owner.get().equals(session.getIdentity().getUser())) { - return new Identity(owner.get(), Optional.empty(), session.getIdentity().getExtraCredentials()); + return new Identity(owner.get(), Optional.empty(), ImmutableMap.of(), session.getIdentity().getExtraCredentials(), ImmutableMap.of(), Optional.empty(), session.getIdentity().getReasonForSelect(), ImmutableList.of()); } return session.getIdentity(); } diff --git a/presto-main-base/src/main/java/com/facebook/presto/sql/analyzer/StatementAnalyzer.java b/presto-main-base/src/main/java/com/facebook/presto/sql/analyzer/StatementAnalyzer.java index e4925a46b5f84..bc886d1fb1c0b 100644 --- a/presto-main-base/src/main/java/com/facebook/presto/sql/analyzer/StatementAnalyzer.java +++ b/presto-main-base/src/main/java/com/facebook/presto/sql/analyzer/StatementAnalyzer.java @@ -2474,7 +2474,7 @@ private Scope processMaterializedView( if (!owner.isPresent()) { throw new SemanticException(NOT_SUPPORTED, "Owner must be present for DEFINER security mode"); } - queryIdentity = new Identity(owner.get(), Optional.empty(), session.getIdentity().getExtraCredentials()); + queryIdentity = new Identity(owner.get(), Optional.empty(), emptyMap(), session.getIdentity().getExtraCredentials(), emptyMap(), Optional.empty(), session.getIdentity().getReasonForSelect(), emptyList()); // For materialized views, use regular access control (not ViewAccessControl) // to check SELECT permissions on base tables, not CREATE VIEW permissions queryAccessControl = accessControl; @@ -4258,7 +4258,7 @@ private RelationType analyzeView(Query query, QualifiedObjectName name, Optional AccessControl viewAccessControl; if (owner.isPresent() && !owner.get().equals(session.getIdentity().getUser())) { // definer mode - identity = new Identity(owner.get(), Optional.empty(), session.getIdentity().getExtraCredentials()); + identity = new Identity(owner.get(), Optional.empty(), emptyMap(), session.getIdentity().getExtraCredentials(), emptyMap(), Optional.empty(), session.getIdentity().getReasonForSelect(), emptyList()); viewAccessControl = new ViewAccessControl(accessControl); } else {