Repository: hive Updated Branches: refs/heads/master bf93128e7 -> 31207eded
HIVE-18641: Remove MCreationMetadata from MTable class (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/31207ede Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/31207ede Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/31207ede Branch: refs/heads/master Commit: 31207eded3f130d3e336965d66825bb25ca89c35 Parents: bf93128 Author: Jesus Camacho Rodriguez <jcama...@apache.org> Authored: Tue Feb 6 11:49:48 2018 -0800 Committer: Jesus Camacho Rodriguez <jcama...@apache.org> Committed: Wed Feb 7 09:19:43 2018 -0800 ---------------------------------------------------------------------- .../hadoop/hive/metastore/ObjectStore.java | 55 ++++++++++++++------ .../hadoop/hive/metastore/model/MTable.java | 19 +------ 2 files changed, 41 insertions(+), 33 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/31207ede/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java index 6498fe5..d58ed67 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java @@ -1124,6 +1124,11 @@ public class ObjectStore implements RawStore, Configurable { MTable mtbl = convertToMTable(tbl); pm.makePersistent(mtbl); + if (tbl.getCreationMetadata() != null) { + MCreationMetadata mcm = convertToMCreationMetadata(tbl.getCreationMetadata()); + pm.makePersistent(mcm); + } + PrincipalPrivilegeSet principalPrivs = tbl.getPrivileges(); List<Object> toPersistPrivObjs = new ArrayList<>(); if (principalPrivs != null) { @@ -1234,11 +1239,9 @@ public class ObjectStore implements RawStore, Configurable { preDropStorageDescriptor(tbl.getSd()); - if (tbl.getCreationMetadata() != null) { - // Remove creation metadata - MCreationMetadata mcm = tbl.getCreationMetadata(); - tbl.setCreationMetadata(null); - pm.deletePersistent(mcm); + if (materializedView) { + dropCreationMetadata( + tbl.getDatabase().getName(), tbl.getTableName()); } // then remove the table @@ -1257,6 +1260,25 @@ public class ObjectStore implements RawStore, Configurable { return success; } + private boolean dropCreationMetadata(String dbName, String tableName) throws MetaException, + NoSuchObjectException, InvalidObjectException, InvalidInputException { + boolean success = false; + try { + openTransaction(); + MCreationMetadata mcm = getCreationMetadata(dbName, tableName); + pm.retrieve(mcm); + if (mcm != null) { + pm.deletePersistentAll(mcm); + } + success = commitTransaction(); + } finally { + if (!success) { + rollbackTransaction(); + } + } + return success; + } + private List<MConstraint> listAllTableConstraintsWithOptionalConstraintName (String dbName, String tableName, String constraintname) { dbName = normalizeIdentifier(dbName); @@ -1309,6 +1331,11 @@ public class ObjectStore implements RawStore, Configurable { try { openTransaction(); tbl = convertToTable(getMTable(dbName, tableName)); + // Retrieve creation metadata if needed + if (tbl != null && TableType.MATERIALIZED_VIEW.toString().equals(tbl.getTableType())) { + tbl.setCreationMetadata( + convertToCreationMetadata(getCreationMetadata(dbName, tableName))); + } commited = commitTransaction(); } finally { if (!commited) { @@ -1557,11 +1584,6 @@ public class ObjectStore implements RawStore, Configurable { pm.retrieveAll(mtbl.getSd().getCD()); nmtbl.mcd = mtbl.getSd().getCD(); } - // Retrieve creation metadata if needed - if (mtbl != null && - TableType.MATERIALIZED_VIEW.toString().equals(mtbl.getTableType())) { - mtbl.setCreationMetadata(getCreationMetadata(db, table)); - } commited = commitTransaction(); } finally { rollbackAndCleanup(commited, query); @@ -1665,7 +1687,6 @@ public class ObjectStore implements RawStore, Configurable { .getRetention(), convertToStorageDescriptor(mtbl.getSd()), convertToFieldSchemas(mtbl.getPartitionKeys()), convertMap(mtbl.getParameters()), mtbl.getViewOriginalText(), mtbl.getViewExpandedText(), tableType); - t.setCreationMetadata(convertToCreationMetadata(mtbl.getCreationMetadata())); t.setRewriteEnabled(mtbl.isRewriteEnabled()); return t; } @@ -1705,7 +1726,7 @@ public class ObjectStore implements RawStore, Configurable { .getCreateTime(), tbl.getLastAccessTime(), tbl.getRetention(), convertToMFieldSchemas(tbl.getPartitionKeys()), tbl.getParameters(), tbl.getViewOriginalText(), tbl.getViewExpandedText(), tbl.isRewriteEnabled(), - convertToMCreationMetadata(tbl.getCreationMetadata()), tableType); + tableType); } private List<MFieldSchema> convertToMFieldSchemas(List<FieldSchema> keys) { @@ -3717,10 +3738,14 @@ public class ObjectStore implements RawStore, Configurable { oldt.setViewOriginalText(newt.getViewOriginalText()); oldt.setViewExpandedText(newt.getViewExpandedText()); oldt.setRewriteEnabled(newt.isRewriteEnabled()); - registerCreationSignature = newt.getCreationMetadata() != null; + registerCreationSignature = newTable.getCreationMetadata() != null; if (registerCreationSignature) { - oldt.getCreationMetadata().setTables(newt.getCreationMetadata().getTables()); - oldt.getCreationMetadata().setTxnList(newt.getCreationMetadata().getTxnList()); + // Update creation metadata + MCreationMetadata newMcm = convertToMCreationMetadata( + newTable.getCreationMetadata()); + MCreationMetadata mcm = getCreationMetadata(dbname, name); + mcm.setTables(newMcm.getTables()); + mcm.setTxnList(newMcm.getTxnList()); } // commit the changes http://git-wip-us.apache.org/repos/asf/hive/blob/31207ede/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/model/MTable.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/model/MTable.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/model/MTable.java index aea16ad..a38a125 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/model/MTable.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/model/MTable.java @@ -35,7 +35,6 @@ public class MTable { private String viewOriginalText; private String viewExpandedText; private boolean rewriteEnabled; - private MCreationMetadata creationMetadata; private String tableType; public MTable() {} @@ -57,8 +56,7 @@ public class MTable { public MTable(String tableName, MDatabase database, MStorageDescriptor sd, String owner, int createTime, int lastAccessTime, int retention, List<MFieldSchema> partitionKeys, Map<String, String> parameters, String viewOriginalText, String viewExpandedText, - boolean rewriteEnabled, MCreationMetadata creationMetadata, - String tableType) { + boolean rewriteEnabled, String tableType) { this.tableName = tableName; this.database = database; this.sd = sd; @@ -71,7 +69,6 @@ public class MTable { this.viewOriginalText = viewOriginalText; this.viewExpandedText = viewExpandedText; this.rewriteEnabled = rewriteEnabled; - this.creationMetadata = creationMetadata; this.tableType = tableType; } @@ -174,20 +171,6 @@ public class MTable { } /** - * @return the metadata information related to a materialized view creation - */ - public MCreationMetadata getCreationMetadata() { - return creationMetadata; - } - - /** - * @param creationMetadata the metadata information to set - */ - public void setCreationMetadata(MCreationMetadata creationMetadata) { - this.creationMetadata = creationMetadata; - } - - /** * @return the owner */ public String getOwner() {