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;
     }
