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


Reply via email to