Author: daijy Date: Mon Oct 19 21:15:14 2009 New Revision: 826814 URL: http://svn.apache.org/viewvc?rev=826814&view=rev Log: PIG-644: Duplicate column names in foreach do not throw parser error
Modified: hadoop/pig/trunk/CHANGES.txt hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/validators/LogicalPlanValidationExecutor.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=826814&r1=826813&r2=826814&view=diff ============================================================================== --- hadoop/pig/trunk/CHANGES.txt (original) +++ hadoop/pig/trunk/CHANGES.txt Mon Oct 19 21:15:14 2009 @@ -93,6 +93,8 @@ PIG-1024: Script contains nested limit fail due to "LOLimit does not support multiple outputs" (daijy) +PIG-644: Duplicate column names in foreach do not throw parser error (daijy) + Release 0.5.0 - Unreleased INCOMPATIBLE CHANGES Modified: hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/validators/LogicalPlanValidationExecutor.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/validators/LogicalPlanValidationExecutor.java?rev=826814&r1=826813&r2=826814&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/validators/LogicalPlanValidationExecutor.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/validators/LogicalPlanValidationExecutor.java Mon Oct 19 21:15:14 2009 @@ -68,7 +68,7 @@ //validatorList.add(new TypeCastInserterValidator()) ; validatorList.add(new TypeCheckingValidator()) ; - + validatorList.add(new SchemaAliasValidator()) ; } public void validate(LogicalPlan plan, 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=826814&r1=826813&r2=826814&view=diff ============================================================================== --- hadoop/pig/trunk/test/org/apache/pig/test/TestLogicalPlanBuilder.java (original) +++ hadoop/pig/trunk/test/org/apache/pig/test/TestLogicalPlanBuilder.java Mon Oct 19 21:15:14 2009 @@ -47,9 +47,13 @@ import org.apache.pig.ExecType; import org.apache.pig.impl.builtin.GFAny; import org.apache.pig.impl.io.BufferedPositionedInputStream; +import org.apache.pig.impl.plan.CompilationMessageCollector; import org.apache.pig.impl.plan.OperatorKey; +import org.apache.pig.impl.plan.PlanValidationException; import org.apache.pig.impl.logicalLayer.*; import org.apache.pig.impl.logicalLayer.schema.Schema; +import org.apache.pig.impl.logicalLayer.validators.SchemaAliasValidator; +import org.apache.pig.impl.logicalLayer.validators.TypeCheckingValidator; import org.apache.pig.data.DataType; import org.apache.pig.impl.logicalLayer.parser.ParseException ; import org.apache.pig.impl.util.MultiMap; @@ -2067,6 +2071,37 @@ buildPlan(" c = foreach b { c1 = limit a 10;c2 = (c1.a0/c1.a1);c3 = (c1.a0/c1.a2);generate c2, c3;};"); } + @Test + // See PIG-644 + public void testDuplicateSchema1() { + try { + LogicalPlan lp = buildPlan(" a = load '1.txt' as (a0:int, a0:int);"); + SchemaAliasValidator schemaAliasValidator = new SchemaAliasValidator() ; + CompilationMessageCollector collector = new CompilationMessageCollector() ; + schemaAliasValidator.validate(lp, collector); + } catch (PlanValidationException e) { + assertTrue(e.getCause().getMessage().contains("Duplicate schema")); + return; + } + fail(); + } + + @Test + // See PIG-644 + public void testDuplicateSchema2() { + try { + buildPlan(" a = load '1.txt' as (a0:int, a1:int);"); + LogicalPlan lp = buildPlan(" b = foreach a generate a0, a1 as a0;"); + SchemaAliasValidator schemaAliasValidator = new SchemaAliasValidator() ; + CompilationMessageCollector collector = new CompilationMessageCollector() ; + schemaAliasValidator.validate(lp, collector); + } catch (PlanValidationException e) { + assertTrue(e.getCause().getMessage().contains("Duplicate schema")); + return; + } + fail(); + } + private void printPlan(LogicalPlan lp) { LOPrinter graphPrinter = new LOPrinter(System.err, lp); System.err.println("Printing the logical plan");