diff --git a/core/trino-main/src/main/java/io/trino/metadata/MetadataManager.java b/core/trino-main/src/main/java/io/trino/metadata/MetadataManager.java index 585629ef6c1f..2974866ee0fc 100644 --- a/core/trino-main/src/main/java/io/trino/metadata/MetadataManager.java +++ b/core/trino-main/src/main/java/io/trino/metadata/MetadataManager.java @@ -1599,11 +1599,13 @@ public boolean isMaterializedView(Session session, QualifiedObjectName viewName) public Optional getMaterializedView(Session session, QualifiedObjectName viewName) { Optional connectorView = getMaterializedViewInternal(session, viewName); - if (connectorView.isEmpty() || isCatalogManagedSecurity(session, viewName.getCatalogName())) { - return connectorView.map(view -> { - String runAsUser = view.getOwner().orElseThrow(() -> new TrinoException(INVALID_VIEW, "Owner not set for a run-as invoker view: " + viewName)); - return createMaterializedViewDefinition(view, Identity.ofUser(runAsUser)); - }); + if (connectorView.isEmpty()) { + return Optional.empty(); + } + + if (isCatalogManagedSecurity(session, viewName.getCatalogName())) { + String runAsUser = connectorView.get().getOwner().orElseThrow(() -> new TrinoException(INVALID_VIEW, "Owner not set for a run-as invoker view: " + viewName)); + return Optional.of(createMaterializedViewDefinition(connectorView.get(), Identity.ofUser(runAsUser))); } Identity runAsIdentity = systemSecurityMetadata.getViewRunAsIdentity(session, viewName.asCatalogSchemaTableName())