diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 72c47a2..072e4ec 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -38,6 +38,7 @@ import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; +import com.google.common.base.Preconditions; import org.antlr.runtime.ClassicToken; import org.antlr.runtime.CommonToken; import org.antlr.runtime.Token; @@ -6218,6 +6219,18 @@ protected Operator genFileSinkPlan(String dest, QB qb, Operator input) qb.getParseInfo().getDestForClause(dest), ErrorMsg.DYNAMIC_PARTITION_DISABLED.getMsg())); } + + // Give user information about DP columns + List inputColumnInfoList = inputRR.getColumnInfos(); + List dpColumnList = dpCtx.getDPColNames(); + int lengthDiff = inputColumnInfoList.size() - dpColumnList.size(); + Preconditions.checkArgument(lengthDiff >= 0, + "Expected lengthDiff to be non-negative, but was " + lengthDiff); + for (int i = dpColumnList.size()-1; i >= 0; i--) { + warn("Selected input column: " + inputColumnInfoList.get(i+lengthDiff).getAlias() + + " is used as dynamic partition column: " + dpColumnList.get(i)); + } + if (dpCtx.getSPPath() != null) { dest_path = new Path(dest_tab.getPath(), dpCtx.getSPPath()); }