You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2014/06/24 07:41:56 UTC
svn commit: r1605007 -
/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
Author: hashutosh
Date: Tue Jun 24 05:41:56 2014
New Revision: 1605007
URL: http://svn.apache.org/r1605007
Log:
HIVE-7241 : Wrong lock acquired for alter table rename partition (Alan Gates via Ashutosh Chauhan)
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java?rev=1605007&r1=1605006&r2=1605007&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java Tue Jun 24 05:41:56 2014
@@ -2544,12 +2544,14 @@ public class DDLSemanticAnalyzer extends
}
Table tab = getTable(tblName, true);
validateAlterTableType(tab, AlterTableTypes.RENAMEPARTITION);
- inputs.add(new ReadEntity(tab));
+ ReadEntity re = new ReadEntity(tab);
+ re.noLockNeeded();
+ inputs.add(re);
List<Map<String, String>> partSpecs = new ArrayList<Map<String, String>>();
partSpecs.add(oldPartSpec);
partSpecs.add(newPartSpec);
- addTablePartsOutputs(tblName, partSpecs);
+ addTablePartsOutputs(tblName, partSpecs, WriteEntity.WriteType.DDL_EXCLUSIVE);
RenamePartitionDesc renamePartitionDesc = new RenamePartitionDesc(
SessionState.get().getCurrentDatabase(), tblName, oldPartSpec, newPartSpec);
rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(),
@@ -2828,7 +2830,7 @@ public class DDLSemanticAnalyzer extends
rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(),
touchDesc), conf));
} else {
- addTablePartsOutputs(tblName, partSpecs);
+ addTablePartsOutputs(tblName, partSpecs, WriteEntity.WriteType.DDL_NO_LOCK);
for (Map<String, String> partSpec : partSpecs) {
AlterTableSimpleDesc touchDesc = new AlterTableSimpleDesc(
SessionState.get().getCurrentDatabase(), tblName, partSpec,
@@ -2851,7 +2853,7 @@ public class DDLSemanticAnalyzer extends
List<Map<String, String>> partSpecs = getPartitionSpecs(ast);
Table tab = getTable(tblName, true);
- addTablePartsOutputs(tblName, partSpecs, true);
+ addTablePartsOutputs(tblName, partSpecs, true, WriteEntity.WriteType.DDL_NO_LOCK);
validateAlterTableType(tab, AlterTableTypes.ARCHIVE);
inputs.add(new ReadEntity(tab));
@@ -3039,9 +3041,10 @@ public class DDLSemanticAnalyzer extends
* Add the table partitions to be modified in the output, so that it is available for the
* pre-execution hook. If the partition does not exist, no error is thrown.
*/
- private void addTablePartsOutputs(String tblName, List<Map<String, String>> partSpecs)
+ private void addTablePartsOutputs(String tblName, List<Map<String, String>> partSpecs,
+ WriteEntity.WriteType writeType)
throws SemanticException {
- addTablePartsOutputs(tblName, partSpecs, false, false, null);
+ addTablePartsOutputs(tblName, partSpecs, false, false, null, writeType);
}
/**
@@ -3049,9 +3052,9 @@ public class DDLSemanticAnalyzer extends
* pre-execution hook. If the partition does not exist, no error is thrown.
*/
private void addTablePartsOutputs(String tblName, List<Map<String, String>> partSpecs,
- boolean allowMany)
+ boolean allowMany, WriteEntity.WriteType writeType)
throws SemanticException {
- addTablePartsOutputs(tblName, partSpecs, false, allowMany, null);
+ addTablePartsOutputs(tblName, partSpecs, false, allowMany, null, writeType);
}
/**
@@ -3060,7 +3063,7 @@ public class DDLSemanticAnalyzer extends
* throwIfNonExistent is true, otherwise ignore it.
*/
private void addTablePartsOutputs(String tblName, List<Map<String, String>> partSpecs,
- boolean throwIfNonExistent, boolean allowMany, ASTNode ast)
+ boolean throwIfNonExistent, boolean allowMany, ASTNode ast, WriteEntity.WriteType writeType)
throws SemanticException {
Table tab = getTable(tblName);
@@ -3096,7 +3099,7 @@ public class DDLSemanticAnalyzer extends
}
for (Partition p : parts) {
// Don't request any locks here, as the table has already been locked.
- outputs.add(new WriteEntity(p, WriteEntity.WriteType.DDL_NO_LOCK));
+ outputs.add(new WriteEntity(p, writeType));
}
}
}