PIG-5354: Show fieldname and a line number for casting errors (knoguchi)
git-svn-id: https://svn.apache.org/repos/asf/pig/trunk@1842987 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/CHANGES.txt b/CHANGES.txt
index bd52721..a59fbef 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -26,6 +26,8 @@
IMPROVEMENTS
+PIG-5354: Show fieldname and a line number for casting errors (knoguchi)
+
PIG-5342: Add setting to turn off bloom join combiner (satishsaley via rohini)
PIG-5349: Log stderr output when shell command fail (knoguchi)
diff --git a/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/PhysicalOperator.java b/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/PhysicalOperator.java
index 8f8b968..af548a4 100644
--- a/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/PhysicalOperator.java
+++ b/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/PhysicalOperator.java
@@ -360,11 +360,30 @@
default:
throw new ExecException("Unsupported type for getNext: " + DataType.findTypeName(dataType));
}
+ } catch (ExecException e) {
+ throw new ExecException("Exception while executing for " + originalLocationsToDescriptiveString()
+ + ": " + e.toString(), e.getErrorCode(), e);
} catch (RuntimeException e) {
throw new ExecException("Exception while executing " + this.toString() + ": " + e.toString(), e);
}
}
+ private String originalLocationsToDescriptiveString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append('[');
+ boolean isFirstItem = true;
+ for( OriginalLocation ol : getOriginalLocations() ) {
+ if( isFirstItem ) {
+ isFirstItem = false;
+ } else {
+ sb.append(",");
+ }
+ sb.append(ol.getAlias()).append("[line=").append(ol.getLine())
+ .append(",offset=").append(ol.getOffset()).append("]");
+ }
+ return sb.append(']').toString();
+ }
+
public Result getNextInteger() throws ExecException {
return res;
}