diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/ImportSemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/ImportSemanticAnalyzer.java index d4fb1917b0..1f0b0797e7 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/ImportSemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/ImportSemanticAnalyzer.java @@ -275,8 +275,8 @@ public static boolean prepareImport(boolean isImportCmd, // Create table associated with the import // Executed if relevant, and used to contain all the other details about the table if not. ImportTableDesc tblDesc; + org.apache.hadoop.hive.metastore.api.Table tblObj = rv.getTable(); try { - org.apache.hadoop.hive.metastore.api.Table tblObj = rv.getTable(); // The table can be non acid in case of replication from a cluster with STRICT_MANAGED set to false. if (!TxnUtils.isTransactionalTable(tblObj) && replicationSpec.isInReplicationScope() && x.getConf().getBoolVar(HiveConf.ConfVars.HIVE_STRICT_MANAGED_TABLES) && @@ -316,6 +316,7 @@ public static boolean prepareImport(boolean isImportCmd, } inReplicationScope = true; tblDesc.setReplWriteId(writeId); + tblDesc.setOwnerName(tblObj.getOwner()); } if (isExternalSet) { diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateTableDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateTableDesc.java index c71ff6d713..4514af1f08 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateTableDesc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateTableDesc.java @@ -115,6 +115,7 @@ // This is not needed beyond compilation, so it is transient. private transient FileSinkDesc writer; private Long replWriteId; // to be used by repl task to get the txn and valid write id list + private String ownerName = null; public CreateTableDesc() { } @@ -909,6 +910,10 @@ public Table toTable(HiveConf conf) throws HiveException { StatsSetupConst.FALSE); } } + + if (ownerName != null) { + tbl.setOwner(ownerName); + } return tbl; } @@ -939,4 +944,12 @@ public Long getReplWriteId() { public void setReplWriteId(Long replWriteId) { this.replWriteId = replWriteId; } + + public String getOwnerName() { + return ownerName; + } + + public void setOwnerName(String ownerName) { + this.ownerName = ownerName; + } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateViewDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateViewDesc.java index 7130aba597..721a23419a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateViewDesc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/CreateViewDesc.java @@ -70,6 +70,7 @@ private Map serdeProps; // only used for materialized views private Set tablesUsed; // only used for materialized views private ReplicationSpec replicationSpec = null; + private String ownerName = null; /** * For serialization only. @@ -419,4 +420,8 @@ public Table toTable(HiveConf conf) throws HiveException { return tbl; } + + public void setOwnerName(String ownerName) { + this.ownerName = ownerName; + } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ImportTableDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ImportTableDesc.java index 5c30fca2d3..017e1c7f9b 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ImportTableDesc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ImportTableDesc.java @@ -366,4 +366,17 @@ public void setReplWriteId(Long replWriteId) { this.createTblDesc.setReplWriteId(replWriteId); } } + + public void setOwnerName(String ownerName) { + switch (getDescType()) { + case TABLE: + createTblDesc.setOwnerName(ownerName); + break; + case VIEW: + createViewDesc.setOwnerName(ownerName); + break; + default: + throw new RuntimeException("Invalid table type : " + getDescType()); + } + } }