You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by cw...@apache.org on 2011/07/27 00:28:35 UTC
svn commit: r1151280 - in /hive/trunk/ql/src:
java/org/apache/hadoop/hive/ql/parse/ java/org/apache/hadoop/hive/ql/udf/
test/results/clientnegative/ test/results/compiler/errors/
Author: cws
Date: Tue Jul 26 22:28:33 2011
New Revision: 1151280
URL: http://svn.apache.org/viewvc?rev=1151280&view=rev
Log:
HIVE-2256. Better error message in CLI on invalid column name (Sohan Jain via cws)
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFPercentile.java
hive/trunk/ql/src/test/results/clientnegative/clustern4.q.out
hive/trunk/ql/src/test/results/clientnegative/input2.q.out
hive/trunk/ql/src/test/results/clientnegative/regex_col_groupby.q.out
hive/trunk/ql/src/test/results/clientnegative/semijoin1.q.out
hive/trunk/ql/src/test/results/clientnegative/semijoin2.q.out
hive/trunk/ql/src/test/results/clientnegative/semijoin3.q.out
hive/trunk/ql/src/test/results/clientnegative/semijoin4.q.out
hive/trunk/ql/src/test/results/compiler/errors/unknown_column4.q.out
hive/trunk/ql/src/test/results/compiler/errors/unknown_column5.q.out
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java?rev=1151280&r1=1151279&r2=1151280&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/RowResolver.java Tue Jul 26 22:28:33 2011
@@ -22,6 +22,7 @@ import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -167,6 +168,26 @@ public class RowResolver implements Seri
return rowSchema.getSignature();
}
+ /**
+ * Get a list of non-hidden column names
+ * @param max the maximum number of columns to return
+ * @return a list of non-hidden column names no greater in size than max
+ */
+ public List<String> getNonHiddenColumnNames(int max) {
+ List<String> columnNames = new ArrayList<String>();
+ int count = 0;
+ for (ColumnInfo columnInfo : getColumnInfos()) {
+ if (max > 0 && count >= max) {
+ break;
+ }
+ if (!columnInfo.isHiddenVirtualCol()) {
+ columnNames.add(columnInfo.getInternalName());
+ count++;
+ }
+ }
+ return columnNames;
+ }
+
public HashMap<String, ColumnInfo> getFieldMap(String tabAlias) {
if (tabAlias == null) {
return rslvMap.get(null);
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java?rev=1151280&r1=1151279&r2=1151280&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java Tue Jul 26 22:28:33 2011
@@ -26,6 +26,7 @@ import java.util.List;
import java.util.Map;
import java.util.Stack;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hive.ql.exec.ColumnInfo;
@@ -395,8 +396,11 @@ public final class TypeCheckProcFactory
ctx.setError(ErrorMsg.NON_KEY_EXPR_IN_GROUPBY.getMsg(exprNode), expr);
return null;
} else {
- ctx.setError(ErrorMsg.INVALID_TABLE_OR_COLUMN.getMsg(expr
- .getChild(0)), expr);
+ List<String> possibleColumnNames = input.getNonHiddenColumnNames(-1);
+ String reason = String.format("(possible column names are: %s)",
+ StringUtils.join(possibleColumnNames, ", "));
+ ctx.setError(ErrorMsg.INVALID_TABLE_OR_COLUMN.getMsg(expr.getChild(0), reason),
+ expr);
LOG.debug(ErrorMsg.INVALID_TABLE_OR_COLUMN.toString() + ":"
+ input.toString());
return null;
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFPercentile.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFPercentile.java?rev=1151280&r1=1151279&r2=1151280&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFPercentile.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFPercentile.java Tue Jul 26 22:28:33 2011
@@ -234,12 +234,18 @@ public class UDAFPercentile extends UDAF
public boolean iterate(LongWritable o, List<DoubleWritable> percentiles) {
if (state.percentiles == null) {
- for (int i = 0; i < percentiles.size(); i++) {
- if (percentiles.get(i).get() < 0.0 || percentiles.get(i).get() > 1.0) {
- throw new RuntimeException("Percentile value must be wihin the range of 0 to 1.");
- }
+ if(percentiles != null) {
+ for (int i = 0; i < percentiles.size(); i++) {
+ if (percentiles.get(i).get() < 0.0 || percentiles.get(i).get() > 1.0) {
+ throw new RuntimeException("Percentile value must be wihin the range of 0 to 1.");
+ }
+ }
+
+ state.percentiles = new ArrayList<DoubleWritable>(percentiles);
+ }
+ else {
+ state.percentiles = new ArrayList<DoubleWritable>();
}
- state.percentiles = new ArrayList<DoubleWritable>(percentiles);
}
if (o != null) {
increment(state, o, 1);
Modified: hive/trunk/ql/src/test/results/clientnegative/clustern4.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/clustern4.q.out?rev=1151280&r1=1151279&r2=1151280&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/clustern4.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/clustern4.q.out Tue Jul 26 22:28:33 2011
@@ -1 +1 @@
-FAILED: Error in semantic analysis: Line 2:50 Invalid table alias or column reference 'key'
+FAILED: Error in semantic analysis: Line 2:50 Invalid table alias or column reference 'key': (possible column names are: _col0, _col1)
Modified: hive/trunk/ql/src/test/results/clientnegative/input2.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/input2.q.out?rev=1151280&r1=1151279&r2=1151280&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/input2.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/input2.q.out Tue Jul 26 22:28:33 2011
@@ -1 +1 @@
-FAILED: Error in semantic analysis: Line 1:7 Invalid table alias or column reference 'a'
+FAILED: Error in semantic analysis: Line 1:7 Invalid table alias or column reference 'a': (possible column names are: key, value)
Modified: hive/trunk/ql/src/test/results/clientnegative/regex_col_groupby.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/regex_col_groupby.q.out?rev=1151280&r1=1151279&r2=1151280&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/regex_col_groupby.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/regex_col_groupby.q.out Tue Jul 26 22:28:33 2011
@@ -1 +1 @@
-FAILED: Error in semantic analysis: Line 2:44 Invalid table alias or column reference '`..`'
+FAILED: Error in semantic analysis: Line 2:44 Invalid table alias or column reference '`..`': (possible column names are: key, value, ds, hr)
Modified: hive/trunk/ql/src/test/results/clientnegative/semijoin1.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/semijoin1.q.out?rev=1151280&r1=1151279&r2=1151280&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/semijoin1.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/semijoin1.q.out Tue Jul 26 22:28:33 2011
@@ -1 +1 @@
-FAILED: Error in semantic analysis: Line 2:7 Invalid table alias or column reference 'b'
+FAILED: Error in semantic analysis: Line 2:7 Invalid table alias or column reference 'b': (possible column names are: _col0, _col1)
Modified: hive/trunk/ql/src/test/results/clientnegative/semijoin2.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/semijoin2.q.out?rev=1151280&r1=1151279&r2=1151280&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/semijoin2.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/semijoin2.q.out Tue Jul 26 22:28:33 2011
@@ -1 +1 @@
-FAILED: Error in semantic analysis: Line 2:70 Invalid table alias or column reference 'b'
+FAILED: Error in semantic analysis: Line 2:70 Invalid table alias or column reference 'b': (possible column names are: _col0, _col1)
Modified: hive/trunk/ql/src/test/results/clientnegative/semijoin3.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/semijoin3.q.out?rev=1151280&r1=1151279&r2=1151280&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/semijoin3.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/semijoin3.q.out Tue Jul 26 22:28:33 2011
@@ -1 +1 @@
-FAILED: Error in semantic analysis: Line 2:67 Invalid table alias or column reference 'b'
+FAILED: Error in semantic analysis: Line 2:67 Invalid table alias or column reference 'b': (possible column names are: _col0, _col1)
Modified: hive/trunk/ql/src/test/results/clientnegative/semijoin4.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/semijoin4.q.out?rev=1151280&r1=1151279&r2=1151280&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/semijoin4.q.out (original)
+++ hive/trunk/ql/src/test/results/clientnegative/semijoin4.q.out Tue Jul 26 22:28:33 2011
@@ -1 +1 @@
-FAILED: Error in semantic analysis: Line 2:112 Invalid table alias or column reference 'b'
+FAILED: Error in semantic analysis: Line 2:112 Invalid table alias or column reference 'b': (possible column names are: _col0, _col1)
Modified: hive/trunk/ql/src/test/results/compiler/errors/unknown_column4.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/errors/unknown_column4.q.out?rev=1151280&r1=1151279&r2=1151280&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/errors/unknown_column4.q.out (original)
+++ hive/trunk/ql/src/test/results/compiler/errors/unknown_column4.q.out Tue Jul 26 22:28:33 2011
@@ -1,2 +1,2 @@
Semantic Exception:
-Line 2:83 Invalid table alias or column reference 'dummysrc'
\ No newline at end of file
+Line 2:83 Invalid table alias or column reference 'dummysrc': (possible column names are: key, value)
\ No newline at end of file
Modified: hive/trunk/ql/src/test/results/compiler/errors/unknown_column5.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/compiler/errors/unknown_column5.q.out?rev=1151280&r1=1151279&r2=1151280&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/compiler/errors/unknown_column5.q.out (original)
+++ hive/trunk/ql/src/test/results/compiler/errors/unknown_column5.q.out Tue Jul 26 22:28:33 2011
@@ -1,2 +1,2 @@
Semantic Exception:
-Line 2:60 Invalid table alias or column reference 'dummysrc'
\ No newline at end of file
+Line 2:60 Invalid table alias or column reference 'dummysrc': (possible column names are: key, value)
\ No newline at end of file