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