diff --git a/presto-analyzer/pom.xml b/presto-analyzer/pom.xml index 3be03fc4f3ca5..0a93c34101820 100644 --- a/presto-analyzer/pom.xml +++ b/presto-analyzer/pom.xml @@ -36,6 +36,11 @@ guava + + com.fasterxml.jackson.core + jackson-annotations + + com.google.code.findbugs jsr305 diff --git a/presto-main/src/main/java/com/facebook/presto/metadata/ViewDefinition.java b/presto-analyzer/src/main/java/com/facebook/presto/sql/analyzer/ViewDefinition.java similarity index 80% rename from presto-main/src/main/java/com/facebook/presto/metadata/ViewDefinition.java rename to presto-analyzer/src/main/java/com/facebook/presto/sql/analyzer/ViewDefinition.java index 54d65f9a0384f..256c16fca46c6 100644 --- a/presto-main/src/main/java/com/facebook/presto/metadata/ViewDefinition.java +++ b/presto-analyzer/src/main/java/com/facebook/presto/sql/analyzer/ViewDefinition.java @@ -11,18 +11,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.facebook.presto.metadata; +package com.facebook.presto.sql.analyzer; import com.facebook.presto.common.type.Type; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.collect.ImmutableList; import java.util.List; import java.util.Optional; -import static com.google.common.base.MoreObjects.toStringHelper; -import static com.google.common.base.Preconditions.checkArgument; +import static java.util.Collections.unmodifiableList; import static java.util.Objects.requireNonNull; public final class ViewDefinition @@ -46,10 +44,12 @@ public ViewDefinition( this.originalSql = requireNonNull(originalSql, "originalSql is null"); this.catalog = requireNonNull(catalog, "catalog is null"); this.schema = requireNonNull(schema, "schema is null"); - this.columns = ImmutableList.copyOf(requireNonNull(columns, "columns is null")); + this.columns = unmodifiableList(requireNonNull(columns, "columns is null")); this.owner = requireNonNull(owner, "owner is null"); this.runAsInvoker = runAsInvoker; - checkArgument(!runAsInvoker || !owner.isPresent(), "owner cannot be present with runAsInvoker"); + if (runAsInvoker && owner.isPresent()) { + throw new IllegalArgumentException("owner cannot be present with runAsInvoker"); + } } @JsonProperty @@ -91,15 +91,14 @@ public boolean isRunAsInvoker() @Override public String toString() { - return toStringHelper(this) - .add("originalSql", originalSql) - .add("catalog", catalog.orElse(null)) - .add("schema", schema.orElse(null)) - .add("columns", columns) - .add("owner", owner.orElse(null)) - .add("runAsInvoker", runAsInvoker) - .omitNullValues() - .toString(); + return "ViewDefinition{" + + "originalSql='" + originalSql + '\'' + + ", catalog=" + catalog.orElse(null) + + ", schema=" + schema.orElse(null) + + ", columns=" + columns + + ", owner=" + owner.orElse(null) + + ", runAsInvoker=" + runAsInvoker + + '}'; } public ViewDefinition withOwner(String owner) diff --git a/presto-hive/src/main/java/com/facebook/presto/hive/HiveMaterializedViewUtils.java b/presto-hive/src/main/java/com/facebook/presto/hive/HiveMaterializedViewUtils.java index 06534dc5f31dd..a195e21a634c9 100644 --- a/presto-hive/src/main/java/com/facebook/presto/hive/HiveMaterializedViewUtils.java +++ b/presto-hive/src/main/java/com/facebook/presto/hive/HiveMaterializedViewUtils.java @@ -21,7 +21,7 @@ import com.facebook.presto.hive.metastore.MetastoreContext; import com.facebook.presto.hive.metastore.SemiTransactionalHiveMetastore; import com.facebook.presto.hive.metastore.Table; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.SchemaTableName; import com.facebook.presto.spi.TableNotFoundException; @@ -75,7 +75,7 @@ public static void validateMaterializedViewPartitionColumns( SemiTransactionalHiveMetastore metastore, MetastoreContext metastoreContext, Table viewTable, - ConnectorMaterializedViewDefinition viewDefinition) + MaterializedViewDefinition viewDefinition) { SchemaTableName viewName = new SchemaTableName(viewTable.getDatabaseName(), viewTable.getTableName()); @@ -194,7 +194,7 @@ public static MaterializedDataPredicates getMaterializedDataPredicates( // baseTable: t2, partitioned by [a] // Output: t1_a -> t2.a public static Optional> viewToBaseTableOnOuterJoinSideIndirectMappedPartitions( - ConnectorMaterializedViewDefinition viewDefinition, + MaterializedViewDefinition viewDefinition, Table baseTable) { SchemaTableName schemaBaseTable = new SchemaTableName(baseTable.getDatabaseName(), baseTable.getTableName()); diff --git a/presto-hive/src/main/java/com/facebook/presto/hive/HiveMetadata.java b/presto-hive/src/main/java/com/facebook/presto/hive/HiveMetadata.java index c8d8750f4937c..31fa4d65c0be3 100644 --- a/presto-hive/src/main/java/com/facebook/presto/hive/HiveMetadata.java +++ b/presto-hive/src/main/java/com/facebook/presto/hive/HiveMetadata.java @@ -48,7 +48,6 @@ import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ColumnMetadata; import com.facebook.presto.spi.ConnectorInsertTableHandle; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; import com.facebook.presto.spi.ConnectorMetadataUpdateHandle; import com.facebook.presto.spi.ConnectorNewTableLayout; import com.facebook.presto.spi.ConnectorOutputTableHandle; @@ -64,6 +63,7 @@ import com.facebook.presto.spi.DiscretePredicates; import com.facebook.presto.spi.InMemoryRecordSet; import com.facebook.presto.spi.LocalProperty; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.MaterializedViewNotFoundException; import com.facebook.presto.spi.MaterializedViewStatus; import com.facebook.presto.spi.PrestoException; @@ -396,7 +396,7 @@ public class HiveMetadata private static final String CSV_QUOTE_KEY = OpenCSVSerde.QUOTECHAR; private static final String CSV_ESCAPE_KEY = OpenCSVSerde.ESCAPECHAR; - private static final JsonCodec MATERIALIZED_VIEW_JSON_CODEC = jsonCodec(ConnectorMaterializedViewDefinition.class); + private static final JsonCodec MATERIALIZED_VIEW_JSON_CODEC = jsonCodec(MaterializedViewDefinition.class); private final boolean allowCorruptWritesForTesting; private final SemiTransactionalHiveMetastore metastore; @@ -2392,7 +2392,7 @@ public Map getViews(ConnectorSession s } @Override - public Optional getMaterializedView(ConnectorSession session, SchemaTableName viewName) + public Optional getMaterializedView(ConnectorSession session, SchemaTableName viewName) { requireNonNull(viewName, "viewName is null"); @@ -2415,7 +2415,7 @@ public Optional getMaterializedView(Connect public MaterializedViewStatus getMaterializedViewStatus(ConnectorSession session, SchemaTableName materializedViewName, TupleDomain baseQueryDomain) { MetastoreContext metastoreContext = getMetastoreContext(session); - ConnectorMaterializedViewDefinition viewDefinition = getMaterializedView(session, materializedViewName) + MaterializedViewDefinition viewDefinition = getMaterializedView(session, materializedViewName) .orElseThrow(() -> new MaterializedViewNotFoundException(materializedViewName)); List baseTables = viewDefinition.getBaseTables().stream() @@ -2482,14 +2482,14 @@ public MaterializedViewStatus getMaterializedViewStatus(ConnectorSession session } @Override - public void createMaterializedView(ConnectorSession session, ConnectorTableMetadata viewMetadata, ConnectorMaterializedViewDefinition viewDefinition, boolean ignoreExisting) + public void createMaterializedView(ConnectorSession session, ConnectorTableMetadata viewMetadata, MaterializedViewDefinition viewDefinition, boolean ignoreExisting) { if (isExternalTable(viewMetadata.getProperties())) { throw new PrestoException(INVALID_TABLE_PROPERTY, "Specifying external location for materialized view is not supported."); } Table basicTable = prepareTable(session, viewMetadata, MATERIALIZED_VIEW); - viewDefinition = new ConnectorMaterializedViewDefinition( + viewDefinition = new MaterializedViewDefinition( viewDefinition.getOriginalSql(), viewDefinition.getSchema(), viewDefinition.getTable(), @@ -2529,7 +2529,7 @@ public void createMaterializedView(ConnectorSession session, ConnectorTableMetad @Override public void dropMaterializedView(ConnectorSession session, SchemaTableName viewName) { - Optional view = getMaterializedView(session, viewName); + Optional view = getMaterializedView(session, viewName); if (!view.isPresent()) { throw new MaterializedViewNotFoundException(viewName); } diff --git a/presto-hive/src/test/java/com/facebook/presto/hive/TestHiveMaterializedViewUtils.java b/presto-hive/src/test/java/com/facebook/presto/hive/TestHiveMaterializedViewUtils.java index c81d7a748e836..95592678069e5 100644 --- a/presto-hive/src/test/java/com/facebook/presto/hive/TestHiveMaterializedViewUtils.java +++ b/presto-hive/src/test/java/com/facebook/presto/hive/TestHiveMaterializedViewUtils.java @@ -23,7 +23,7 @@ import com.facebook.presto.hive.metastore.PrestoTableType; import com.facebook.presto.hive.metastore.Storage; import com.facebook.presto.hive.metastore.Table; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.SchemaTableName; import com.facebook.presto.sql.planner.LiteralEncoder; @@ -651,10 +651,10 @@ public TestingPartitionResult(String columnName, Type type, String partitionValu } } - private static ConnectorMaterializedViewDefinition getConnectorMaterializedViewDefinition( + private static MaterializedViewDefinition getConnectorMaterializedViewDefinition( List tables, Map> originalColumnMapping) { - return new ConnectorMaterializedViewDefinition(SQL, SCHEMA_NAME, TABLE_NAME, tables, Optional.empty(), originalColumnMapping, originalColumnMapping, ImmutableList.of(), Optional.empty()); + return new MaterializedViewDefinition(SQL, SCHEMA_NAME, TABLE_NAME, tables, Optional.empty(), originalColumnMapping, originalColumnMapping, ImmutableList.of(), Optional.empty()); } } diff --git a/presto-main/src/main/java/com/facebook/presto/catalogserver/CatalogServer.java b/presto-main/src/main/java/com/facebook/presto/catalogserver/CatalogServer.java index 029b7bf0c606a..5e2c7650d8651 100644 --- a/presto-main/src/main/java/com/facebook/presto/catalogserver/CatalogServer.java +++ b/presto-main/src/main/java/com/facebook/presto/catalogserver/CatalogServer.java @@ -22,9 +22,9 @@ import com.facebook.presto.metadata.MetadataManager; import com.facebook.presto.metadata.QualifiedTablePrefix; import com.facebook.presto.metadata.SessionPropertyManager; -import com.facebook.presto.metadata.ViewDefinition; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.TableHandle; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.facebook.presto.transaction.TransactionInfo; import com.facebook.presto.transaction.TransactionManager; import com.fasterxml.jackson.core.JsonProcessingException; @@ -137,7 +137,7 @@ public String getView(TransactionInfo transactionInfo, SessionRepresentation ses public String getMaterializedView(TransactionInfo transactionInfo, SessionRepresentation session, QualifiedObjectName viewName) { transactionManager.tryRegisterTransaction(transactionInfo); - Optional connectorMaterializedViewDefinition = + Optional connectorMaterializedViewDefinition = metadataProvider.getMaterializedView(session.toSession(sessionPropertyManager), viewName); return connectorMaterializedViewDefinition.map(materializedView -> writeValueAsString(materializedView, objectMapper)) .orElse(EMPTY_STRING); diff --git a/presto-main/src/main/java/com/facebook/presto/catalogserver/RemoteMetadataManager.java b/presto-main/src/main/java/com/facebook/presto/catalogserver/RemoteMetadataManager.java index 8a5feba459e63..f0707e312219f 100644 --- a/presto-main/src/main/java/com/facebook/presto/catalogserver/RemoteMetadataManager.java +++ b/presto-main/src/main/java/com/facebook/presto/catalogserver/RemoteMetadataManager.java @@ -21,9 +21,9 @@ import com.facebook.presto.metadata.DelegatingMetadataManager; import com.facebook.presto.metadata.MetadataManager; import com.facebook.presto.metadata.QualifiedTablePrefix; -import com.facebook.presto.metadata.ViewDefinition; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.TableHandle; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.facebook.presto.transaction.TransactionManager; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; @@ -162,7 +162,7 @@ public Optional getView(Session session, QualifiedObjectName vie } @Override - public Optional getMaterializedView(Session session, QualifiedObjectName viewName) + public Optional getMaterializedView(Session session, QualifiedObjectName viewName) { String connectorMaterializedViewDefinitionJson = catalogServerClient.get().getMaterializedView( transactionManager.getTransactionInfo(session.getRequiredTransactionId()), @@ -170,7 +170,7 @@ public Optional getMaterializedView(Session viewName); return connectorMaterializedViewDefinitionJson.isEmpty() ? Optional.empty() - : Optional.of(readValue(connectorMaterializedViewDefinitionJson, new TypeReference() {})); + : Optional.of(readValue(connectorMaterializedViewDefinitionJson, new TypeReference() {})); } @Override diff --git a/presto-main/src/main/java/com/facebook/presto/connector/informationSchema/InformationSchemaPageSourceProvider.java b/presto-main/src/main/java/com/facebook/presto/connector/informationSchema/InformationSchemaPageSourceProvider.java index a5190aa2e8707..a05e2fb33543d 100644 --- a/presto-main/src/main/java/com/facebook/presto/connector/informationSchema/InformationSchemaPageSourceProvider.java +++ b/presto-main/src/main/java/com/facebook/presto/connector/informationSchema/InformationSchemaPageSourceProvider.java @@ -21,7 +21,6 @@ import com.facebook.presto.metadata.InternalTable; import com.facebook.presto.metadata.Metadata; import com.facebook.presto.metadata.QualifiedTablePrefix; -import com.facebook.presto.metadata.ViewDefinition; import com.facebook.presto.security.AccessControl; import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ColumnMetadata; @@ -37,6 +36,7 @@ import com.facebook.presto.spi.security.GrantInfo; import com.facebook.presto.spi.security.PrestoPrincipal; import com.facebook.presto.spi.security.RoleGrant; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.google.common.collect.ImmutableList; import java.util.ArrayList; diff --git a/presto-main/src/main/java/com/facebook/presto/execution/AddColumnTask.java b/presto-main/src/main/java/com/facebook/presto/execution/AddColumnTask.java index 84d74d7795cf2..039524399ab7a 100644 --- a/presto-main/src/main/java/com/facebook/presto/execution/AddColumnTask.java +++ b/presto-main/src/main/java/com/facebook/presto/execution/AddColumnTask.java @@ -21,7 +21,7 @@ import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ColumnMetadata; import com.facebook.presto.spi.ConnectorId; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.TableHandle; import com.facebook.presto.spi.WarningCollector; @@ -71,7 +71,7 @@ public ListenableFuture execute(AddColumn statement, TransactionManager trans return immediateFuture(null); } - Optional optionalMaterializedView = metadata.getMaterializedView(session, tableName); + Optional optionalMaterializedView = metadata.getMaterializedView(session, tableName); if (optionalMaterializedView.isPresent()) { if (!statement.isTableExists()) { throw new SemanticException(NOT_SUPPORTED, statement, "'%s' is a materialized view, and add column is not supported", tableName); diff --git a/presto-main/src/main/java/com/facebook/presto/execution/CreateMaterializedViewTask.java b/presto-main/src/main/java/com/facebook/presto/execution/CreateMaterializedViewTask.java index 6d0f930a22d74..2d8b5cf5fceee 100644 --- a/presto-main/src/main/java/com/facebook/presto/execution/CreateMaterializedViewTask.java +++ b/presto-main/src/main/java/com/facebook/presto/execution/CreateMaterializedViewTask.java @@ -19,8 +19,8 @@ import com.facebook.presto.security.AccessControl; import com.facebook.presto.spi.ColumnMetadata; import com.facebook.presto.spi.ConnectorId; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; import com.facebook.presto.spi.ConnectorTableMetadata; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.SchemaTableName; import com.facebook.presto.spi.TableHandle; @@ -133,7 +133,7 @@ public ListenableFuture execute(CreateMaterializedView statement, Transaction .collect(toImmutableList()); MaterializedViewColumnMappingExtractor extractor = new MaterializedViewColumnMappingExtractor(analysis, session); - ConnectorMaterializedViewDefinition viewDefinition = new ConnectorMaterializedViewDefinition( + MaterializedViewDefinition viewDefinition = new MaterializedViewDefinition( sql, viewName.getSchemaName(), viewName.getObjectName(), diff --git a/presto-main/src/main/java/com/facebook/presto/execution/CreateViewTask.java b/presto-main/src/main/java/com/facebook/presto/execution/CreateViewTask.java index ce43f8a6b0555..fa3c552cf4910 100644 --- a/presto-main/src/main/java/com/facebook/presto/execution/CreateViewTask.java +++ b/presto-main/src/main/java/com/facebook/presto/execution/CreateViewTask.java @@ -17,7 +17,6 @@ import com.facebook.presto.Session; import com.facebook.presto.common.QualifiedObjectName; import com.facebook.presto.metadata.Metadata; -import com.facebook.presto.metadata.ViewDefinition; import com.facebook.presto.security.AccessControl; import com.facebook.presto.spi.ColumnMetadata; import com.facebook.presto.spi.ConnectorTableMetadata; @@ -25,6 +24,7 @@ import com.facebook.presto.sql.analyzer.Analysis; import com.facebook.presto.sql.analyzer.Analyzer; import com.facebook.presto.sql.analyzer.FeaturesConfig; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.facebook.presto.sql.parser.SqlParser; import com.facebook.presto.sql.tree.CreateView; import com.facebook.presto.sql.tree.Expression; @@ -39,8 +39,8 @@ import static com.facebook.presto.metadata.MetadataUtil.createQualifiedObjectName; import static com.facebook.presto.metadata.MetadataUtil.toSchemaTableName; -import static com.facebook.presto.metadata.ViewDefinition.ViewColumn; import static com.facebook.presto.sql.SqlFormatterUtil.getFormattedSql; +import static com.facebook.presto.sql.analyzer.ViewDefinition.ViewColumn; import static com.facebook.presto.sql.analyzer.utils.ParameterUtils.parameterExtractor; import static com.facebook.presto.sql.tree.CreateView.Security.INVOKER; import static com.google.common.collect.ImmutableList.toImmutableList; diff --git a/presto-main/src/main/java/com/facebook/presto/execution/DropColumnTask.java b/presto-main/src/main/java/com/facebook/presto/execution/DropColumnTask.java index 1cd66f329d871..7d0366342c4ea 100644 --- a/presto-main/src/main/java/com/facebook/presto/execution/DropColumnTask.java +++ b/presto-main/src/main/java/com/facebook/presto/execution/DropColumnTask.java @@ -18,7 +18,7 @@ import com.facebook.presto.metadata.Metadata; import com.facebook.presto.security.AccessControl; import com.facebook.presto.spi.ColumnHandle; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.TableHandle; import com.facebook.presto.spi.WarningCollector; import com.facebook.presto.sql.analyzer.SemanticException; @@ -59,7 +59,7 @@ public ListenableFuture execute(DropColumn statement, TransactionManager tran return immediateFuture(null); } - Optional optionalMaterializedView = metadata.getMaterializedView(session, tableName); + Optional optionalMaterializedView = metadata.getMaterializedView(session, tableName); if (optionalMaterializedView.isPresent()) { if (!statement.isTableExists()) { throw new SemanticException(NOT_SUPPORTED, statement, "'%s' is a materialized view, and drop column is not supported", tableName); diff --git a/presto-main/src/main/java/com/facebook/presto/execution/DropMaterializedViewTask.java b/presto-main/src/main/java/com/facebook/presto/execution/DropMaterializedViewTask.java index 80a0949287a9f..fe219680248f2 100644 --- a/presto-main/src/main/java/com/facebook/presto/execution/DropMaterializedViewTask.java +++ b/presto-main/src/main/java/com/facebook/presto/execution/DropMaterializedViewTask.java @@ -17,7 +17,7 @@ import com.facebook.presto.common.QualifiedObjectName; import com.facebook.presto.metadata.Metadata; import com.facebook.presto.security.AccessControl; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.WarningCollector; import com.facebook.presto.sql.analyzer.SemanticException; import com.facebook.presto.sql.tree.DropMaterializedView; @@ -46,7 +46,7 @@ public ListenableFuture execute(DropMaterializedView statement, TransactionMa { QualifiedObjectName name = createQualifiedObjectName(session, statement, statement.getName()); - Optional view = metadata.getMaterializedView(session, name); + Optional view = metadata.getMaterializedView(session, name); if (!view.isPresent()) { if (!statement.isExists()) { throw new SemanticException(MISSING_MATERIALIZED_VIEW, statement, "Materialized view '%s' does not exist", name); diff --git a/presto-main/src/main/java/com/facebook/presto/execution/DropTableTask.java b/presto-main/src/main/java/com/facebook/presto/execution/DropTableTask.java index 222be5553957c..5106fd4a3e3eb 100644 --- a/presto-main/src/main/java/com/facebook/presto/execution/DropTableTask.java +++ b/presto-main/src/main/java/com/facebook/presto/execution/DropTableTask.java @@ -17,7 +17,7 @@ import com.facebook.presto.common.QualifiedObjectName; import com.facebook.presto.metadata.Metadata; import com.facebook.presto.security.AccessControl; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.TableHandle; import com.facebook.presto.spi.WarningCollector; import com.facebook.presto.sql.analyzer.SemanticException; @@ -56,7 +56,7 @@ public ListenableFuture execute(DropTable statement, TransactionManager trans return immediateFuture(null); } - Optional optionalMaterializedView = metadata.getMaterializedView(session, tableName); + Optional optionalMaterializedView = metadata.getMaterializedView(session, tableName); if (optionalMaterializedView.isPresent()) { if (!statement.isExists()) { throw new SemanticException(NOT_SUPPORTED, statement, "'%s' is a materialized view, not a table. Use DROP MATERIALIZED VIEW to drop.", tableName); diff --git a/presto-main/src/main/java/com/facebook/presto/execution/DropViewTask.java b/presto-main/src/main/java/com/facebook/presto/execution/DropViewTask.java index b0fc2865ea8ea..a766e3f036750 100644 --- a/presto-main/src/main/java/com/facebook/presto/execution/DropViewTask.java +++ b/presto-main/src/main/java/com/facebook/presto/execution/DropViewTask.java @@ -16,10 +16,10 @@ import com.facebook.presto.Session; import com.facebook.presto.common.QualifiedObjectName; import com.facebook.presto.metadata.Metadata; -import com.facebook.presto.metadata.ViewDefinition; import com.facebook.presto.security.AccessControl; import com.facebook.presto.spi.WarningCollector; import com.facebook.presto.sql.analyzer.SemanticException; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.facebook.presto.sql.tree.DropView; import com.facebook.presto.sql.tree.Expression; import com.facebook.presto.transaction.TransactionManager; diff --git a/presto-main/src/main/java/com/facebook/presto/execution/RenameColumnTask.java b/presto-main/src/main/java/com/facebook/presto/execution/RenameColumnTask.java index f52e2e845e48b..c80026820d716 100644 --- a/presto-main/src/main/java/com/facebook/presto/execution/RenameColumnTask.java +++ b/presto-main/src/main/java/com/facebook/presto/execution/RenameColumnTask.java @@ -18,7 +18,7 @@ import com.facebook.presto.metadata.Metadata; import com.facebook.presto.security.AccessControl; import com.facebook.presto.spi.ColumnHandle; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.TableHandle; import com.facebook.presto.spi.WarningCollector; import com.facebook.presto.sql.analyzer.SemanticException; @@ -60,7 +60,7 @@ public ListenableFuture execute(RenameColumn statement, TransactionManager tr return immediateFuture(null); } - Optional optionalMaterializedView = metadata.getMaterializedView(session, tableName); + Optional optionalMaterializedView = metadata.getMaterializedView(session, tableName); if (optionalMaterializedView.isPresent()) { if (!statement.isTableExists()) { throw new SemanticException(NOT_SUPPORTED, statement, "'%s' is a materialized view, and rename column is not supported", tableName); diff --git a/presto-main/src/main/java/com/facebook/presto/execution/RenameTableTask.java b/presto-main/src/main/java/com/facebook/presto/execution/RenameTableTask.java index 647d6586db668..e74ce0d792e37 100644 --- a/presto-main/src/main/java/com/facebook/presto/execution/RenameTableTask.java +++ b/presto-main/src/main/java/com/facebook/presto/execution/RenameTableTask.java @@ -17,7 +17,7 @@ import com.facebook.presto.common.QualifiedObjectName; import com.facebook.presto.metadata.Metadata; import com.facebook.presto.security.AccessControl; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.TableHandle; import com.facebook.presto.spi.WarningCollector; import com.facebook.presto.sql.analyzer.SemanticException; @@ -57,7 +57,7 @@ public ListenableFuture execute(RenameTable statement, TransactionManager tra return immediateFuture(null); } - Optional optionalMaterializedView = metadata.getMaterializedView(session, tableName); + Optional optionalMaterializedView = metadata.getMaterializedView(session, tableName); if (optionalMaterializedView.isPresent()) { if (!statement.isExists()) { throw new SemanticException(NOT_SUPPORTED, statement, "'%s' is a materialized view, and rename is not supported", tableName); diff --git a/presto-main/src/main/java/com/facebook/presto/metadata/DelegatingMetadataManager.java b/presto-main/src/main/java/com/facebook/presto/metadata/DelegatingMetadataManager.java index 9121b6ea03222..8fb6566061599 100644 --- a/presto-main/src/main/java/com/facebook/presto/metadata/DelegatingMetadataManager.java +++ b/presto-main/src/main/java/com/facebook/presto/metadata/DelegatingMetadataManager.java @@ -24,9 +24,9 @@ import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ColumnMetadata; import com.facebook.presto.spi.ConnectorId; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; import com.facebook.presto.spi.ConnectorTableMetadata; import com.facebook.presto.spi.Constraint; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.MaterializedViewStatus; import com.facebook.presto.spi.QueryId; import com.facebook.presto.spi.SystemTable; @@ -41,6 +41,7 @@ import com.facebook.presto.spi.statistics.ComputedStatistics; import com.facebook.presto.spi.statistics.TableStatistics; import com.facebook.presto.spi.statistics.TableStatisticsMetadata; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.facebook.presto.sql.planner.PartitioningHandle; import com.google.common.util.concurrent.ListenableFuture; import io.airlift.slice.Slice; @@ -442,7 +443,7 @@ public void dropView(Session session, QualifiedObjectName viewName) } @Override - public Optional getMaterializedView(Session session, QualifiedObjectName viewName) + public Optional getMaterializedView(Session session, QualifiedObjectName viewName) { return delegate.getMaterializedView(session, viewName); } @@ -452,7 +453,7 @@ public void createMaterializedView( Session session, String catalogName, ConnectorTableMetadata viewMetadata, - ConnectorMaterializedViewDefinition viewDefinition, + MaterializedViewDefinition viewDefinition, boolean ignoreExisting) { delegate.createMaterializedView(session, catalogName, viewMetadata, viewDefinition, ignoreExisting); diff --git a/presto-main/src/main/java/com/facebook/presto/metadata/Metadata.java b/presto-main/src/main/java/com/facebook/presto/metadata/Metadata.java index 44ba2919b79b9..65def9919be54 100644 --- a/presto-main/src/main/java/com/facebook/presto/metadata/Metadata.java +++ b/presto-main/src/main/java/com/facebook/presto/metadata/Metadata.java @@ -24,10 +24,10 @@ import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ColumnMetadata; import com.facebook.presto.spi.ConnectorId; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; import com.facebook.presto.spi.ConnectorSession; import com.facebook.presto.spi.ConnectorTableMetadata; import com.facebook.presto.spi.Constraint; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.MaterializedViewStatus; import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.QueryId; @@ -46,6 +46,7 @@ import com.facebook.presto.spi.statistics.ComputedStatistics; import com.facebook.presto.spi.statistics.TableStatistics; import com.facebook.presto.spi.statistics.TableStatisticsMetadata; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.facebook.presto.sql.planner.PartitioningHandle; import com.google.common.util.concurrent.ListenableFuture; import io.airlift.slice.Slice; @@ -374,7 +375,7 @@ default boolean isView(Session session, QualifiedObjectName viewName) /** * Returns the materialized view definition for the specified materialized view name. */ - Optional getMaterializedView(Session session, QualifiedObjectName viewName); + Optional getMaterializedView(Session session, QualifiedObjectName viewName); /** * Is the specified table a materialized view. @@ -387,7 +388,7 @@ default boolean isMaterializedView(Session session, QualifiedObjectName viewName /** * Creates the specified materialized view with the specified view definition. */ - void createMaterializedView(Session session, String catalogName, ConnectorTableMetadata viewMetadata, ConnectorMaterializedViewDefinition viewDefinition, boolean ignoreExisting); + void createMaterializedView(Session session, String catalogName, ConnectorTableMetadata viewMetadata, MaterializedViewDefinition viewDefinition, boolean ignoreExisting); /** * Drops the specified materialized view. diff --git a/presto-main/src/main/java/com/facebook/presto/metadata/MetadataManager.java b/presto-main/src/main/java/com/facebook/presto/metadata/MetadataManager.java index 4b17679da6df2..b6ff4a7869ad4 100644 --- a/presto-main/src/main/java/com/facebook/presto/metadata/MetadataManager.java +++ b/presto-main/src/main/java/com/facebook/presto/metadata/MetadataManager.java @@ -31,7 +31,6 @@ import com.facebook.presto.spi.ColumnMetadata; import com.facebook.presto.spi.ConnectorId; import com.facebook.presto.spi.ConnectorInsertTableHandle; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; import com.facebook.presto.spi.ConnectorMetadataUpdateHandle; import com.facebook.presto.spi.ConnectorOutputTableHandle; import com.facebook.presto.spi.ConnectorResolvedIndex; @@ -42,6 +41,7 @@ import com.facebook.presto.spi.ConnectorTableMetadata; import com.facebook.presto.spi.ConnectorViewDefinition; import com.facebook.presto.spi.Constraint; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.MaterializedViewStatus; import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.QueryId; @@ -66,6 +66,7 @@ import com.facebook.presto.spi.statistics.TableStatisticsMetadata; import com.facebook.presto.sql.analyzer.FeaturesConfig; import com.facebook.presto.sql.analyzer.TypeSignatureProvider; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.facebook.presto.sql.planner.PartitioningHandle; import com.facebook.presto.transaction.TransactionManager; import com.facebook.presto.type.TypeDeserializer; @@ -112,7 +113,6 @@ import static com.facebook.presto.common.function.OperatorType.NOT_EQUAL; import static com.facebook.presto.metadata.MetadataUtil.toSchemaTableName; import static com.facebook.presto.metadata.TableLayout.fromConnectorLayout; -import static com.facebook.presto.metadata.ViewDefinition.ViewColumn; import static com.facebook.presto.spi.Constraint.alwaysTrue; import static com.facebook.presto.spi.StandardErrorCode.INVALID_VIEW; import static com.facebook.presto.spi.StandardErrorCode.NOT_FOUND; @@ -120,6 +120,7 @@ import static com.facebook.presto.spi.StandardErrorCode.SYNTAX_ERROR; import static com.facebook.presto.spi.TableLayoutFilterCoverage.NOT_APPLICABLE; import static com.facebook.presto.sql.analyzer.TypeSignatureProvider.fromTypes; +import static com.facebook.presto.sql.analyzer.ViewDefinition.ViewColumn; import static com.facebook.presto.transaction.InMemoryTransactionManager.createTestTransactionManager; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.collect.ImmutableList.toImmutableList; @@ -1051,7 +1052,7 @@ public void dropView(Session session, QualifiedObjectName viewName) } @Override - public Optional getMaterializedView(Session session, QualifiedObjectName viewName) + public Optional getMaterializedView(Session session, QualifiedObjectName viewName) { Optional catalog = getOptionalCatalogMetadata(session, viewName.getCatalogName()); if (catalog.isPresent()) { @@ -1065,7 +1066,7 @@ public Optional getMaterializedView(Session } @Override - public void createMaterializedView(Session session, String catalogName, ConnectorTableMetadata viewMetadata, ConnectorMaterializedViewDefinition viewDefinition, boolean ignoreExisting) + public void createMaterializedView(Session session, String catalogName, ConnectorTableMetadata viewMetadata, MaterializedViewDefinition viewDefinition, boolean ignoreExisting) { CatalogMetadata catalogMetadata = getCatalogMetadataForWrite(session, catalogName); ConnectorId connectorId = catalogMetadata.getConnectorId(); diff --git a/presto-main/src/main/java/com/facebook/presto/server/ServerMainModule.java b/presto-main/src/main/java/com/facebook/presto/server/ServerMainModule.java index 48a7c1fd8c7ba..4c6905c1b4080 100644 --- a/presto-main/src/main/java/com/facebook/presto/server/ServerMainModule.java +++ b/presto-main/src/main/java/com/facebook/presto/server/ServerMainModule.java @@ -105,7 +105,6 @@ import com.facebook.presto.metadata.StaticFunctionNamespaceStore; import com.facebook.presto.metadata.StaticFunctionNamespaceStoreConfig; import com.facebook.presto.metadata.TablePropertyManager; -import com.facebook.presto.metadata.ViewDefinition; import com.facebook.presto.operator.ExchangeClientConfig; import com.facebook.presto.operator.ExchangeClientFactory; import com.facebook.presto.operator.ExchangeClientSupplier; @@ -175,6 +174,7 @@ import com.facebook.presto.sql.SqlEnvironmentConfig; import com.facebook.presto.sql.analyzer.FeaturesConfig; import com.facebook.presto.sql.analyzer.FeaturesConfig.SingleStreamSpillerChoice; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.facebook.presto.sql.gen.ExpressionCompiler; import com.facebook.presto.sql.gen.JoinCompiler; import com.facebook.presto.sql.gen.JoinFilterFunctionCompiler; diff --git a/presto-main/src/main/java/com/facebook/presto/sql/analyzer/MaterializedViewColumnMappingExtractor.java b/presto-main/src/main/java/com/facebook/presto/sql/analyzer/MaterializedViewColumnMappingExtractor.java index 1668e15c596f7..f9cefc11117ea 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/analyzer/MaterializedViewColumnMappingExtractor.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/analyzer/MaterializedViewColumnMappingExtractor.java @@ -34,7 +34,7 @@ import static com.facebook.presto.metadata.MetadataUtil.createQualifiedObjectName; import static com.facebook.presto.metadata.MetadataUtil.toSchemaTableName; -import static com.facebook.presto.spi.ConnectorMaterializedViewDefinition.TableColumn; +import static com.facebook.presto.spi.MaterializedViewDefinition.TableColumn; import static com.facebook.presto.sql.MaterializedViewUtils.transitiveClosure; import static com.facebook.presto.sql.analyzer.SemanticErrorCode.NOT_SUPPORTED; import static com.facebook.presto.sql.tree.Join.Type.INNER; diff --git a/presto-main/src/main/java/com/facebook/presto/sql/analyzer/MaterializedViewQueryOptimizer.java b/presto-main/src/main/java/com/facebook/presto/sql/analyzer/MaterializedViewQueryOptimizer.java index 0d18c84ccff60..f355532537c23 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/analyzer/MaterializedViewQueryOptimizer.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/analyzer/MaterializedViewQueryOptimizer.java @@ -24,7 +24,7 @@ import com.facebook.presto.security.AccessControl; import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ColumnMetadata; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.MaterializedViewStatus; import com.facebook.presto.spi.TableHandle; import com.facebook.presto.spi.WarningCollector; @@ -357,7 +357,7 @@ private QuerySpecification rewriteQuerySpecificationIfCompatible(QuerySpecificat private QuerySpecification getRewrittenQuerySpecification(Metadata metadata, QualifiedObjectName materializedViewName, QuerySpecification originalQuerySpecification) { - ConnectorMaterializedViewDefinition materializedViewDefinition = metadata.getMaterializedView(session, materializedViewName).orElseThrow(() -> + MaterializedViewDefinition materializedViewDefinition = metadata.getMaterializedView(session, materializedViewName).orElseThrow(() -> new IllegalStateException("Materialized view definition not present in metadata as expected.")); Table materializedViewTable = new Table(QualifiedName.of(materializedViewDefinition.getTable())); Query materializedViewQuery = (Query) sqlParser.createStatement(materializedViewDefinition.getOriginalSql(), createParsingOptions(session)); diff --git a/presto-main/src/main/java/com/facebook/presto/sql/analyzer/RefreshMaterializedViewPredicateAnalyzer.java b/presto-main/src/main/java/com/facebook/presto/sql/analyzer/RefreshMaterializedViewPredicateAnalyzer.java index 6c2131fe9790e..1f005138e50f0 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/analyzer/RefreshMaterializedViewPredicateAnalyzer.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/analyzer/RefreshMaterializedViewPredicateAnalyzer.java @@ -16,7 +16,7 @@ import com.facebook.presto.Session; import com.facebook.presto.common.QualifiedObjectName; import com.facebook.presto.metadata.Metadata; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.MaterializedViewNotFoundException; import com.facebook.presto.spi.SchemaTableName; import com.facebook.presto.sql.tree.ComparisonExpression; @@ -58,7 +58,7 @@ public static Map extractTablePredicates( Metadata metadata, Session session) { - ConnectorMaterializedViewDefinition viewDefinition = metadata.getMaterializedView(session, viewName) + MaterializedViewDefinition viewDefinition = metadata.getMaterializedView(session, viewName) .orElseThrow(() -> new MaterializedViewNotFoundException(toSchemaTableName(viewName))); Visitor visitor = new Visitor(viewDefinition, viewScope); @@ -75,11 +75,11 @@ private static class Visitor { private final ImmutableMultimap.Builder tablePredicatesBuilder = ImmutableMultimap.builder(); - private final ConnectorMaterializedViewDefinition viewDefinition; + private final MaterializedViewDefinition viewDefinition; private final Scope viewScope; private Visitor( - ConnectorMaterializedViewDefinition viewDefinition, + MaterializedViewDefinition viewDefinition, Scope viewScope) { this.viewDefinition = requireNonNull(viewDefinition, "viewDefinition is null"); diff --git a/presto-main/src/main/java/com/facebook/presto/sql/analyzer/StatementAnalyzer.java b/presto-main/src/main/java/com/facebook/presto/sql/analyzer/StatementAnalyzer.java index 3c3eae95630a6..5cf4b31158998 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/analyzer/StatementAnalyzer.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/analyzer/StatementAnalyzer.java @@ -31,14 +31,13 @@ import com.facebook.presto.metadata.Metadata; import com.facebook.presto.metadata.OperatorNotFoundException; import com.facebook.presto.metadata.TableMetadata; -import com.facebook.presto.metadata.ViewDefinition; import com.facebook.presto.security.AccessControl; import com.facebook.presto.security.AllowAllAccessControl; import com.facebook.presto.security.ViewAccessControl; import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ColumnMetadata; import com.facebook.presto.spi.ConnectorId; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.MaterializedViewStatus; import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.PrestoWarning; @@ -717,7 +716,7 @@ protected Scope visitRefreshMaterializedView(RefreshMaterializedView node, Optio QualifiedObjectName viewName = createQualifiedObjectName(session, node.getTarget(), node.getTarget().getName()); - ConnectorMaterializedViewDefinition view = metadata.getMaterializedView(session, viewName) + MaterializedViewDefinition view = metadata.getMaterializedView(session, viewName) .orElseThrow(() -> new SemanticException(MISSING_MATERIALIZED_VIEW, node, "Materialized view '%s' does not exist", viewName)); // the original refresh statement will always be one line @@ -1069,7 +1068,7 @@ private void validateBaseTables(List
baseTables, Node node) for (Table baseTable : baseTables) { QualifiedObjectName baseName = createQualifiedObjectName(session, baseTable, baseTable.getName()); - Optional optionalMaterializedView = metadata.getMaterializedView(session, baseName); + Optional optionalMaterializedView = metadata.getMaterializedView(session, baseName); if (optionalMaterializedView.isPresent()) { throw new SemanticException( NOT_SUPPORTED, @@ -1241,7 +1240,7 @@ protected Scope visitTable(Table table, Optional scope) return processView(table, scope, name, optionalView); } - Optional optionalMaterializedView = session.getRuntimeStats().profileNanos( + Optional optionalMaterializedView = session.getRuntimeStats().profileNanos( GET_MATERIALIZED_VIEW_TIME_NANOS, () -> metadata.getMaterializedView(session, name)); // Prevent INSERT and CREATE TABLE when selecting from a materialized view. @@ -1406,7 +1405,7 @@ private Scope processMaterializedView( Table materializedView, QualifiedObjectName materializedViewName, Optional scope, - ConnectorMaterializedViewDefinition materializedViewDefinition) + MaterializedViewDefinition materializedViewDefinition) { MaterializedViewPlanValidator.validate((Query) sqlParser.createStatement(materializedViewDefinition.getOriginalSql(), createParsingOptions(session, warningCollector))); @@ -1426,12 +1425,12 @@ private Scope processMaterializedView( private String getMaterializedViewSQL( Table materializedView, QualifiedObjectName materializedViewName, - ConnectorMaterializedViewDefinition connectorMaterializedViewDefinition, + MaterializedViewDefinition materializedViewDefinition, Optional scope) { MaterializedViewStatus materializedViewStatus = getMaterializedViewStatus(materializedViewName, scope, materializedView); - String materializedViewCreateSql = connectorMaterializedViewDefinition.getOriginalSql(); + String materializedViewCreateSql = materializedViewDefinition.getOriginalSql(); if (materializedViewStatus.isNotMaterialized() || materializedViewStatus.isTooManyPartitionsMissing()) { session.getRuntimeStats().addMetricValue(SKIP_READING_FROM_MATERIALIZED_VIEW_COUNT, NONE, 1); @@ -1444,7 +1443,7 @@ private String getMaterializedViewSQL( if (materializedViewStatus.isFullyMaterialized()) { // We need to include base table queries by Union in order to add required access control for the base tables and utilized columns during visit. // Here we stitch with the predicate WHERE FALSE, and the optimizer will then prune the FALSE branch with no extra overhead introduced. - baseTablePredicates = generateFalsePredicates(connectorMaterializedViewDefinition.getBaseTables()); + baseTablePredicates = generateFalsePredicates(materializedViewDefinition.getBaseTables()); } else if (materializedViewStatus.isPartiallyMaterialized()) { baseTablePredicates = generateBaseTablePredicates(materializedViewStatus.getPartitionsFromBaseTables(), metadata); @@ -1488,7 +1487,7 @@ private MaterializedViewStatus getMaterializedViewStatus(QualifiedObjectName mat QuerySpecification currentSubquery = analysis.getCurrentQuerySpecification().get(); if (currentSubquery.getWhere().isPresent() && isMaterializedViewPartitionFilteringEnabled(session)) { - Optional materializedViewDefinition = metadata.getMaterializedView(session, materializedViewName); + Optional materializedViewDefinition = metadata.getMaterializedView(session, materializedViewName); if (!materializedViewDefinition.isPresent()) { log.warn("Materialized view definition not present as expected when fetching materialized view status"); return metadata.getMaterializedViewStatus(session, materializedViewName, baseQueryDomain); diff --git a/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/DetermineSemiJoinDistributionType.java b/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/DetermineSemiJoinDistributionType.java index 3ea3a661104d0..3e923b44db879 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/DetermineSemiJoinDistributionType.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/DetermineSemiJoinDistributionType.java @@ -48,7 +48,6 @@ import static com.facebook.presto.SystemSessionProperties.getJoinMaxBroadcastTableSize; import static com.facebook.presto.SystemSessionProperties.isSizeBasedJoinDistributionTypeEnabled; import static com.facebook.presto.cost.CostCalculatorWithEstimatedExchanges.calculateJoinCostWithoutOutput; -import static com.facebook.presto.sql.analyzer.FeaturesConfig.JoinDistributionType.AUTOMATIC; import static com.facebook.presto.sql.planner.iterative.rule.DetermineJoinDistributionType.getSourceTablesSizeInBytes; import static com.facebook.presto.sql.planner.plan.Patterns.semiJoin; import static com.facebook.presto.sql.planner.plan.SemiJoinNode.DistributionType.PARTITIONED; diff --git a/presto-main/src/main/java/com/facebook/presto/sql/rewrite/ShowQueriesRewrite.java b/presto-main/src/main/java/com/facebook/presto/sql/rewrite/ShowQueriesRewrite.java index e1ed66534e97a..5341cd05b182b 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/rewrite/ShowQueriesRewrite.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/rewrite/ShowQueriesRewrite.java @@ -19,11 +19,10 @@ import com.facebook.presto.common.type.TypeSignature; import com.facebook.presto.metadata.Metadata; import com.facebook.presto.metadata.SessionPropertyManager.SessionPropertyValue; -import com.facebook.presto.metadata.ViewDefinition; import com.facebook.presto.security.AccessControl; import com.facebook.presto.spi.ConnectorId; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; import com.facebook.presto.spi.ConnectorTableMetadata; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.SchemaTableName; import com.facebook.presto.spi.StandardErrorCode; @@ -39,6 +38,7 @@ import com.facebook.presto.sql.QueryUtil; import com.facebook.presto.sql.analyzer.QueryExplainer; import com.facebook.presto.sql.analyzer.SemanticException; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.facebook.presto.sql.parser.ParsingException; import com.facebook.presto.sql.parser.SqlParser; import com.facebook.presto.sql.tree.AllColumns; @@ -449,7 +449,7 @@ protected Node visitShowCreate(ShowCreate node, Void context) { QualifiedObjectName objectName = createQualifiedObjectName(session, node, node.getName()); Optional viewDefinition = metadata.getView(session, objectName); - Optional materializedViewDefinition = metadata.getMaterializedView(session, objectName); + Optional materializedViewDefinition = metadata.getMaterializedView(session, objectName); if (node.getType() == VIEW) { if (!viewDefinition.isPresent()) { diff --git a/presto-main/src/main/java/com/facebook/presto/testing/LocalQueryRunner.java b/presto-main/src/main/java/com/facebook/presto/testing/LocalQueryRunner.java index 45b0330aa4115..a898e8e9d4789 100644 --- a/presto-main/src/main/java/com/facebook/presto/testing/LocalQueryRunner.java +++ b/presto-main/src/main/java/com/facebook/presto/testing/LocalQueryRunner.java @@ -102,7 +102,6 @@ import com.facebook.presto.metadata.SessionPropertyManager; import com.facebook.presto.metadata.Split; import com.facebook.presto.metadata.TablePropertyManager; -import com.facebook.presto.metadata.ViewDefinition; import com.facebook.presto.operator.Driver; import com.facebook.presto.operator.DriverContext; import com.facebook.presto.operator.DriverFactory; @@ -154,6 +153,7 @@ import com.facebook.presto.sql.analyzer.BuiltInQueryPreparer.BuiltInPreparedQuery; import com.facebook.presto.sql.analyzer.FeaturesConfig; import com.facebook.presto.sql.analyzer.QueryExplainer; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.facebook.presto.sql.gen.ExpressionCompiler; import com.facebook.presto.sql.gen.JoinCompiler; import com.facebook.presto.sql.gen.JoinFilterFunctionCompiler; diff --git a/presto-main/src/main/java/com/facebook/presto/testing/TestingMetadata.java b/presto-main/src/main/java/com/facebook/presto/testing/TestingMetadata.java index e7491f83e8cf6..1c8263073b63d 100644 --- a/presto-main/src/main/java/com/facebook/presto/testing/TestingMetadata.java +++ b/presto-main/src/main/java/com/facebook/presto/testing/TestingMetadata.java @@ -18,7 +18,6 @@ import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ColumnMetadata; import com.facebook.presto.spi.ConnectorInsertTableHandle; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; import com.facebook.presto.spi.ConnectorNewTableLayout; import com.facebook.presto.spi.ConnectorOutputTableHandle; import com.facebook.presto.spi.ConnectorSession; @@ -29,6 +28,7 @@ import com.facebook.presto.spi.ConnectorTableMetadata; import com.facebook.presto.spi.ConnectorViewDefinition; import com.facebook.presto.spi.Constraint; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.MaterializedViewStatus; import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.SchemaTableName; @@ -68,7 +68,7 @@ public class TestingMetadata { private final Map tables = new ConcurrentHashMap<>(); private final Map views = new ConcurrentHashMap<>(); - private final Map materializedViews = new ConcurrentHashMap<>(); + private final Map materializedViews = new ConcurrentHashMap<>(); @Override public List listSchemaNames(ConnectorSession session) @@ -312,7 +312,7 @@ public void dropMaterializedView(ConnectorSession session, SchemaTableName viewN } @Override - public void createMaterializedView(ConnectorSession session, ConnectorTableMetadata viewMetadata, ConnectorMaterializedViewDefinition viewDefinition, boolean ignoreExisting) + public void createMaterializedView(ConnectorSession session, ConnectorTableMetadata viewMetadata, MaterializedViewDefinition viewDefinition, boolean ignoreExisting) { SchemaTableName viewName = new SchemaTableName(viewDefinition.getSchema(), viewDefinition.getTable()); tables.put(viewName, new ConnectorTableMetadata(viewName, ImmutableList.of())); @@ -320,7 +320,7 @@ public void createMaterializedView(ConnectorSession session, ConnectorTableMetad } @Override - public Optional getMaterializedView(ConnectorSession session, SchemaTableName viewName) + public Optional getMaterializedView(ConnectorSession session, SchemaTableName viewName) { return Optional.ofNullable(materializedViews.get(viewName)); } diff --git a/presto-main/src/test/java/com/facebook/presto/catalogserver/TestCatalogServerResponse.java b/presto-main/src/test/java/com/facebook/presto/catalogserver/TestCatalogServerResponse.java index 5ead92ffc7277..b3f5d9c85c5d5 100644 --- a/presto-main/src/test/java/com/facebook/presto/catalogserver/TestCatalogServerResponse.java +++ b/presto-main/src/test/java/com/facebook/presto/catalogserver/TestCatalogServerResponse.java @@ -18,13 +18,13 @@ import com.facebook.presto.connector.informationSchema.InformationSchemaTableHandle; import com.facebook.presto.connector.informationSchema.InformationSchemaTransactionHandle; import com.facebook.presto.metadata.HandleJsonModule; -import com.facebook.presto.metadata.ViewDefinition; import com.facebook.presto.spi.ConnectorId; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; import com.facebook.presto.spi.ConnectorTableHandle; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.SchemaTableName; import com.facebook.presto.spi.TableHandle; import com.facebook.presto.spi.connector.ConnectorTransactionHandle; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.facebook.presto.transaction.TransactionId; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -186,27 +186,27 @@ public void testGetMaterializedView() throws Exception { String connectorMaterializedViewDefinitionJson = testingCatalogServerClient.getMaterializedView(null, null, null); - ConnectorMaterializedViewDefinition connectorMaterializedViewDefinition = objectMapper.readValue( + MaterializedViewDefinition materializedViewDefinition = objectMapper.readValue( connectorMaterializedViewDefinitionJson, - ConnectorMaterializedViewDefinition.class); + MaterializedViewDefinition.class); String originalSql = "SELECT\n name\n, nationkey\nFROM\n test_customer_base\n"; String schema = "tpch"; String table = "eric"; List baseTables = new ArrayList<>(Arrays.asList(new SchemaTableName("tpch", "test_customer_base"))); Optional owner = Optional.of("ericn576"); - List columnMappings = new ArrayList<>(); - ConnectorMaterializedViewDefinition.TableColumn tableColumn = new ConnectorMaterializedViewDefinition.TableColumn( + List columnMappings = new ArrayList<>(); + MaterializedViewDefinition.TableColumn tableColumn = new MaterializedViewDefinition.TableColumn( new SchemaTableName("tpch", "eric"), "name", true); - ConnectorMaterializedViewDefinition.TableColumn listTableColumn = new ConnectorMaterializedViewDefinition.TableColumn( + MaterializedViewDefinition.TableColumn listTableColumn = new MaterializedViewDefinition.TableColumn( new SchemaTableName("tpch", "test_customer_base"), "name", true); - columnMappings.add(new ConnectorMaterializedViewDefinition.ColumnMapping(tableColumn, new ArrayList<>(Arrays.asList(listTableColumn)))); + columnMappings.add(new MaterializedViewDefinition.ColumnMapping(tableColumn, new ArrayList<>(Arrays.asList(listTableColumn)))); List baseTablesOnOuterJoinSide = new ArrayList<>(); Optional> validRefreshColumns = Optional.of(new ArrayList<>(Arrays.asList("nationkey"))); - ConnectorMaterializedViewDefinition actualConnectorMaterializedViewDefinition = new ConnectorMaterializedViewDefinition( + MaterializedViewDefinition actualMaterializedViewDefinition = new MaterializedViewDefinition( originalSql, schema, table, @@ -216,14 +216,14 @@ public void testGetMaterializedView() baseTablesOnOuterJoinSide, validRefreshColumns); - assertEquals(connectorMaterializedViewDefinition.getOriginalSql(), actualConnectorMaterializedViewDefinition.getOriginalSql()); - assertEquals(connectorMaterializedViewDefinition.getSchema(), actualConnectorMaterializedViewDefinition.getSchema()); - assertEquals(connectorMaterializedViewDefinition.getTable(), actualConnectorMaterializedViewDefinition.getTable()); - assertEquals(connectorMaterializedViewDefinition.getBaseTables(), actualConnectorMaterializedViewDefinition.getBaseTables()); - assertEquals(connectorMaterializedViewDefinition.getOwner(), actualConnectorMaterializedViewDefinition.getOwner()); - assertEquals(connectorMaterializedViewDefinition.getColumnMappingsAsMap(), actualConnectorMaterializedViewDefinition.getColumnMappingsAsMap()); - assertEquals(connectorMaterializedViewDefinition.getBaseTablesOnOuterJoinSide(), actualConnectorMaterializedViewDefinition.getBaseTablesOnOuterJoinSide()); - assertEquals(connectorMaterializedViewDefinition.getValidRefreshColumns(), actualConnectorMaterializedViewDefinition.getValidRefreshColumns()); + assertEquals(materializedViewDefinition.getOriginalSql(), actualMaterializedViewDefinition.getOriginalSql()); + assertEquals(materializedViewDefinition.getSchema(), actualMaterializedViewDefinition.getSchema()); + assertEquals(materializedViewDefinition.getTable(), actualMaterializedViewDefinition.getTable()); + assertEquals(materializedViewDefinition.getBaseTables(), actualMaterializedViewDefinition.getBaseTables()); + assertEquals(materializedViewDefinition.getOwner(), actualMaterializedViewDefinition.getOwner()); + assertEquals(materializedViewDefinition.getColumnMappingsAsMap(), actualMaterializedViewDefinition.getColumnMappingsAsMap()); + assertEquals(materializedViewDefinition.getBaseTablesOnOuterJoinSide(), actualMaterializedViewDefinition.getBaseTablesOnOuterJoinSide()); + assertEquals(materializedViewDefinition.getValidRefreshColumns(), actualMaterializedViewDefinition.getValidRefreshColumns()); } @Test diff --git a/presto-main/src/test/java/com/facebook/presto/execution/TestCreateMaterializedViewTask.java b/presto-main/src/test/java/com/facebook/presto/execution/TestCreateMaterializedViewTask.java index d01d507019691..2ca8a6140bff4 100644 --- a/presto-main/src/test/java/com/facebook/presto/execution/TestCreateMaterializedViewTask.java +++ b/presto-main/src/test/java/com/facebook/presto/execution/TestCreateMaterializedViewTask.java @@ -26,20 +26,20 @@ import com.facebook.presto.metadata.FunctionAndTypeManager; import com.facebook.presto.metadata.TableMetadata; import com.facebook.presto.metadata.TablePropertyManager; -import com.facebook.presto.metadata.ViewDefinition; import com.facebook.presto.security.AccessControl; import com.facebook.presto.security.AllowAllAccessControl; import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ConnectorId; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; import com.facebook.presto.spi.ConnectorTableHandle; import com.facebook.presto.spi.ConnectorTableMetadata; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.SchemaTableName; import com.facebook.presto.spi.TableHandle; import com.facebook.presto.spi.WarningCollector; import com.facebook.presto.spi.connector.ConnectorTransactionHandle; import com.facebook.presto.spi.resourceGroups.ResourceGroupId; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.facebook.presto.sql.parser.ParsingOptions; import com.facebook.presto.sql.parser.SqlParser; import com.facebook.presto.sql.tree.CreateMaterializedView; @@ -206,7 +206,7 @@ public MockMetadata( } @Override - public void createMaterializedView(Session session, String catalogName, ConnectorTableMetadata viewMetadata, ConnectorMaterializedViewDefinition viewDefinition, boolean ignoreExisting) + public void createMaterializedView(Session session, String catalogName, ConnectorTableMetadata viewMetadata, MaterializedViewDefinition viewDefinition, boolean ignoreExisting) { if (!ignoreExisting) { throw new PrestoException(ALREADY_EXISTS, "Materialized view already exists"); @@ -280,7 +280,7 @@ public Optional getView(Session session, QualifiedObjectName vie } @Override - public Optional getMaterializedView(Session session, QualifiedObjectName viewName) + public Optional getMaterializedView(Session session, QualifiedObjectName viewName) { return Optional.empty(); } diff --git a/presto-main/src/test/java/com/facebook/presto/metadata/AbstractMockMetadata.java b/presto-main/src/test/java/com/facebook/presto/metadata/AbstractMockMetadata.java index 41df375458317..5cb672f61ab36 100644 --- a/presto-main/src/test/java/com/facebook/presto/metadata/AbstractMockMetadata.java +++ b/presto-main/src/test/java/com/facebook/presto/metadata/AbstractMockMetadata.java @@ -24,9 +24,9 @@ import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ColumnMetadata; import com.facebook.presto.spi.ConnectorId; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; import com.facebook.presto.spi.ConnectorTableMetadata; import com.facebook.presto.spi.Constraint; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.MaterializedViewStatus; import com.facebook.presto.spi.QueryId; import com.facebook.presto.spi.SystemTable; @@ -41,6 +41,7 @@ import com.facebook.presto.spi.statistics.ComputedStatistics; import com.facebook.presto.spi.statistics.TableStatistics; import com.facebook.presto.spi.statistics.TableStatisticsMetadata; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.facebook.presto.sql.planner.PartitioningHandle; import com.google.common.util.concurrent.ListenableFuture; import io.airlift.slice.Slice; @@ -415,13 +416,13 @@ public void dropView(Session session, QualifiedObjectName viewName) } @Override - public Optional getMaterializedView(Session session, QualifiedObjectName viewName) + public Optional getMaterializedView(Session session, QualifiedObjectName viewName) { throw new UnsupportedOperationException(); } @Override - public void createMaterializedView(Session session, String catalogName, ConnectorTableMetadata viewMetadata, ConnectorMaterializedViewDefinition viewDefinition, boolean ignoreExisting) + public void createMaterializedView(Session session, String catalogName, ConnectorTableMetadata viewMetadata, MaterializedViewDefinition viewDefinition, boolean ignoreExisting) { throw new UnsupportedOperationException(); } diff --git a/presto-main/src/test/java/com/facebook/presto/metadata/TestInformationSchemaMetadata.java b/presto-main/src/test/java/com/facebook/presto/metadata/TestInformationSchemaMetadata.java index 459fbcf0afbc0..5107a8511b247 100644 --- a/presto-main/src/test/java/com/facebook/presto/metadata/TestInformationSchemaMetadata.java +++ b/presto-main/src/test/java/com/facebook/presto/metadata/TestInformationSchemaMetadata.java @@ -32,6 +32,7 @@ import com.facebook.presto.spi.SchemaTableName; import com.facebook.presto.spi.connector.Connector; import com.facebook.presto.sql.analyzer.FeaturesConfig; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.facebook.presto.testing.TestingConnectorContext; import com.facebook.presto.transaction.TransactionId; import com.facebook.presto.transaction.TransactionManager; diff --git a/presto-main/src/test/java/com/facebook/presto/sql/analyzer/AbstractAnalyzerTest.java b/presto-main/src/test/java/com/facebook/presto/sql/analyzer/AbstractAnalyzerTest.java index df02d466c4640..31d136e98662a 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/analyzer/AbstractAnalyzerTest.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/analyzer/AbstractAnalyzerTest.java @@ -32,7 +32,6 @@ import com.facebook.presto.metadata.InMemoryNodeManager; import com.facebook.presto.metadata.InternalNodeManager; import com.facebook.presto.metadata.Metadata; -import com.facebook.presto.metadata.ViewDefinition; import com.facebook.presto.security.AccessControl; import com.facebook.presto.security.AllowAllAccessControl; import com.facebook.presto.spi.ColumnMetadata; diff --git a/presto-main/src/test/java/com/facebook/presto/sql/analyzer/TestMaterializedViewQueryOptimizer.java b/presto-main/src/test/java/com/facebook/presto/sql/analyzer/TestMaterializedViewQueryOptimizer.java index cffb39ede2a14..d2837732be856 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/analyzer/TestMaterializedViewQueryOptimizer.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/analyzer/TestMaterializedViewQueryOptimizer.java @@ -15,7 +15,7 @@ import com.facebook.presto.Session; import com.facebook.presto.common.QualifiedObjectName; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.SchemaTableName; import com.facebook.presto.sql.parser.SqlParser; import com.facebook.presto.sql.relational.RowExpressionDomainTranslator; @@ -1573,9 +1573,9 @@ private void assertOptimizedQuery(String baseQuerySql, String expectedQueryAfter }); } - private ConnectorMaterializedViewDefinition createStubConnectorMaterializedViewDefinition(String viewName, String viewSql, String schema, List baseTables) + private MaterializedViewDefinition createStubConnectorMaterializedViewDefinition(String viewName, String viewSql, String schema, List baseTables) { - return new ConnectorMaterializedViewDefinition( + return new MaterializedViewDefinition( viewSql, schema, viewName, diff --git a/presto-spark-base/src/main/java/com/facebook/presto/spark/PrestoSparkModule.java b/presto-spark-base/src/main/java/com/facebook/presto/spark/PrestoSparkModule.java index 4837530ce46a7..c6e5a8d1b3c9d 100644 --- a/presto-spark-base/src/main/java/com/facebook/presto/spark/PrestoSparkModule.java +++ b/presto-spark-base/src/main/java/com/facebook/presto/spark/PrestoSparkModule.java @@ -81,7 +81,6 @@ import com.facebook.presto.metadata.StaticFunctionNamespaceStore; import com.facebook.presto.metadata.StaticFunctionNamespaceStoreConfig; import com.facebook.presto.metadata.TablePropertyManager; -import com.facebook.presto.metadata.ViewDefinition; import com.facebook.presto.operator.FileFragmentResultCacheConfig; import com.facebook.presto.operator.FileFragmentResultCacheManager; import com.facebook.presto.operator.FragmentCacheStats; @@ -152,6 +151,7 @@ import com.facebook.presto.sql.analyzer.BuiltInQueryPreparer; import com.facebook.presto.sql.analyzer.FeaturesConfig; import com.facebook.presto.sql.analyzer.QueryExplainer; +import com.facebook.presto.sql.analyzer.ViewDefinition; import com.facebook.presto.sql.gen.ExpressionCompiler; import com.facebook.presto.sql.gen.JoinCompiler; import com.facebook.presto.sql.gen.JoinFilterFunctionCompiler; diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/ConnectorMaterializedViewDefinition.java b/presto-spi/src/main/java/com/facebook/presto/spi/MaterializedViewDefinition.java similarity index 98% rename from presto-spi/src/main/java/com/facebook/presto/spi/ConnectorMaterializedViewDefinition.java rename to presto-spi/src/main/java/com/facebook/presto/spi/MaterializedViewDefinition.java index d83a6bdf4dc52..b5762854f7276 100644 --- a/presto-spi/src/main/java/com/facebook/presto/spi/ConnectorMaterializedViewDefinition.java +++ b/presto-spi/src/main/java/com/facebook/presto/spi/MaterializedViewDefinition.java @@ -27,7 +27,7 @@ import static java.util.Objects.requireNonNull; import static java.util.stream.Collectors.toMap; -public final class ConnectorMaterializedViewDefinition +public final class MaterializedViewDefinition { private final String originalSql; private final String schema; @@ -39,7 +39,7 @@ public final class ConnectorMaterializedViewDefinition private final Optional> validRefreshColumns; @JsonCreator - public ConnectorMaterializedViewDefinition( + public MaterializedViewDefinition( @JsonProperty("originalSql") String originalSql, @JsonProperty("schema") String schema, @JsonProperty("table") String table, @@ -60,7 +60,7 @@ public ConnectorMaterializedViewDefinition( } @JsonIgnore - public ConnectorMaterializedViewDefinition( + public MaterializedViewDefinition( String originalSql, String schema, String table, diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/connector/ConnectorMetadata.java b/presto-spi/src/main/java/com/facebook/presto/spi/connector/ConnectorMetadata.java index c3f8b08c1d09b..a033ae88f13ec 100644 --- a/presto-spi/src/main/java/com/facebook/presto/spi/connector/ConnectorMetadata.java +++ b/presto-spi/src/main/java/com/facebook/presto/spi/connector/ConnectorMetadata.java @@ -18,7 +18,6 @@ import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ColumnMetadata; import com.facebook.presto.spi.ConnectorInsertTableHandle; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; import com.facebook.presto.spi.ConnectorMetadataUpdateHandle; import com.facebook.presto.spi.ConnectorNewTableLayout; import com.facebook.presto.spi.ConnectorOutputTableHandle; @@ -31,6 +30,7 @@ import com.facebook.presto.spi.ConnectorTableMetadata; import com.facebook.presto.spi.ConnectorViewDefinition; import com.facebook.presto.spi.Constraint; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.MaterializedViewStatus; import com.facebook.presto.spi.PrestoException; import com.facebook.presto.spi.QueryId; @@ -575,7 +575,7 @@ default Map getViews(ConnectorSession /** * Gets the materialized view data for the specified materialized view name. */ - default Optional getMaterializedView(ConnectorSession session, SchemaTableName viewName) + default Optional getMaterializedView(ConnectorSession session, SchemaTableName viewName) { return Optional.empty(); } @@ -583,7 +583,7 @@ default Optional getMaterializedView(Connec /** * Create the specified materialized view. The data for the materialized view is opaque to the connector. */ - default void createMaterializedView(ConnectorSession session, ConnectorTableMetadata viewMetadata, ConnectorMaterializedViewDefinition viewDefinition, boolean ignoreExisting) + default void createMaterializedView(ConnectorSession session, ConnectorTableMetadata viewMetadata, MaterializedViewDefinition viewDefinition, boolean ignoreExisting) { throw new PrestoException(NOT_SUPPORTED, "This connector does not support creating materialized views"); } diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/connector/classloader/ClassLoaderSafeConnectorMetadata.java b/presto-spi/src/main/java/com/facebook/presto/spi/connector/classloader/ClassLoaderSafeConnectorMetadata.java index da48c4efbd4ea..e4baa89e5b0f9 100644 --- a/presto-spi/src/main/java/com/facebook/presto/spi/connector/classloader/ClassLoaderSafeConnectorMetadata.java +++ b/presto-spi/src/main/java/com/facebook/presto/spi/connector/classloader/ClassLoaderSafeConnectorMetadata.java @@ -18,7 +18,6 @@ import com.facebook.presto.spi.ColumnHandle; import com.facebook.presto.spi.ColumnMetadata; import com.facebook.presto.spi.ConnectorInsertTableHandle; -import com.facebook.presto.spi.ConnectorMaterializedViewDefinition; import com.facebook.presto.spi.ConnectorMetadataUpdateHandle; import com.facebook.presto.spi.ConnectorNewTableLayout; import com.facebook.presto.spi.ConnectorOutputTableHandle; @@ -31,6 +30,7 @@ import com.facebook.presto.spi.ConnectorTableMetadata; import com.facebook.presto.spi.ConnectorViewDefinition; import com.facebook.presto.spi.Constraint; +import com.facebook.presto.spi.MaterializedViewDefinition; import com.facebook.presto.spi.MaterializedViewStatus; import com.facebook.presto.spi.QueryId; import com.facebook.presto.spi.SchemaTableName; @@ -494,7 +494,7 @@ public Map getViews(ConnectorSession s } @Override - public Optional getMaterializedView(ConnectorSession session, SchemaTableName viewName) + public Optional getMaterializedView(ConnectorSession session, SchemaTableName viewName) { try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) { return delegate.getMaterializedView(session, viewName); @@ -502,7 +502,7 @@ public Optional getMaterializedView(Connect } @Override - public void createMaterializedView(ConnectorSession session, ConnectorTableMetadata viewMetadata, ConnectorMaterializedViewDefinition viewDefinition, boolean ignoreExisting) + public void createMaterializedView(ConnectorSession session, ConnectorTableMetadata viewMetadata, MaterializedViewDefinition viewDefinition, boolean ignoreExisting) { try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) { delegate.createMaterializedView(session, viewMetadata, viewDefinition, ignoreExisting);