Author: olga
Date: Thu Dec 17 00:50:05 2009
New Revision: 891499
URL: http://svn.apache.org/viewvc?rev=891499&view=rev
Log:
PIG-1075: Error in Cogroup when key fields types don't match (rding via olgan)
Modified:
hadoop/pig/trunk/CHANGES.txt
hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/LOCogroup.java
hadoop/pig/trunk/test/org/apache/pig/test/TestLogicalPlanBuilder.java
Modified: hadoop/pig/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=891499&r1=891498&r2=891499&view=diff
==============================================================================
--- hadoop/pig/trunk/CHANGES.txt (original)
+++ hadoop/pig/trunk/CHANGES.txt Thu Dec 17 00:50:05 2009
@@ -57,6 +57,8 @@
BUG FIXES
+PIG-1075: Error in Cogroup when key fields types don't match (rding via olgan)
+
PIG-973: type resolution inconsistency (rding via olgan)
PIG-1135: skewed join partitioner returns negative partition index (yinghe
Modified: hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/LOCogroup.java
URL:
http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/LOCogroup.java?rev=891499&r1=891498&r2=891499&view=diff
==============================================================================
--- hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/LOCogroup.java
(original)
+++ hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/LOCogroup.java Thu
Dec 17 00:50:05 2009
@@ -489,7 +489,15 @@
}
Schema.FieldSchema groupFs = fsList.get(j);
+ byte dt = groupFs.type;
groupFs.type = DataType.mergeType(groupFs.type, innerType) ;
+ if (!DataType.isUsableType(groupFs.type)) {
+ int errCode = 1110;
+ String msg = "Cogroup column " + j + " has incompatible
types: "
+ + DataType.findTypeName(dt) + " versus "
+ + DataType.findTypeName(innerType);
+ throw new FrontendException(msg, errCode,
PigException.INPUT, false, null);
+ }
Schema.FieldSchema fs = eOp.getFieldSchema();
if(null != fs) {
groupFs.setParent(eOp.getFieldSchema().canonicalName, eOp);
Modified: hadoop/pig/trunk/test/org/apache/pig/test/TestLogicalPlanBuilder.java
URL:
http://svn.apache.org/viewvc/hadoop/pig/trunk/test/org/apache/pig/test/TestLogicalPlanBuilder.java?rev=891499&r1=891498&r2=891499&view=diff
==============================================================================
--- hadoop/pig/trunk/test/org/apache/pig/test/TestLogicalPlanBuilder.java
(original)
+++ hadoop/pig/trunk/test/org/apache/pig/test/TestLogicalPlanBuilder.java Thu
Dec 17 00:50:05 2009
@@ -2179,6 +2179,23 @@
assertEquals("An exception was expected but did " +
"not occur", true, exceptionThrown);
}
+
+ @Test
+ public void testCogroupByIncompatibleSchemaFailure() {
+ boolean exceptionThrown = false;
+ try {
+ buildPlan(" a = load '1.txt' as (a0:int, a1:int);");
+ buildPlan(" b = load '2.txt' as (a0:int, a1:chararray); ");
+ buildPlan("c = cogroup a by (a0,a1), b by (a0,a1);");
+ } catch (AssertionFailedError e) {
+ assertTrue(e.getMessage().contains("Cogroup column"));
+ assertTrue(e.getMessage().contains("has incompatible types"));
+ exceptionThrown = true;
+ }
+ assertEquals("An exception was expected but did " +
+ "not occur", true, exceptionThrown);
+ }
+
private void printPlan(LogicalPlan lp) {
LOPrinter graphPrinter = new LOPrinter(System.err, lp);
System.err.println("Printing the logical plan");