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