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");