Author: olga Date: Wed Sep 17 17:39:45 2008 New Revision: 696527 URL: http://svn.apache.org/viewvc?rev=696527&view=rev Log: PIG-433: no () for single column alias after flatten
Modified: incubator/pig/branches/types/CHANGES.txt incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOForEach.java incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt incubator/pig/branches/types/test/org/apache/pig/test/TestLogicalPlanBuilder.java Modified: incubator/pig/branches/types/CHANGES.txt URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/CHANGES.txt?rev=696527&r1=696526&r2=696527&view=diff ============================================================================== --- incubator/pig/branches/types/CHANGES.txt (original) +++ incubator/pig/branches/types/CHANGES.txt Wed Sep 17 17:39:45 2008 @@ -201,3 +201,5 @@ (pradeepk via olgan) PIG-434: short-circuit AND and OR (pradeepk viia olgan) + + PIG-333: allowing no parethesis with single column alias with flatten Modified: incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOForEach.java URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOForEach.java?rev=696527&r1=696526&r2=696527&view=diff ============================================================================== --- incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOForEach.java (original) +++ incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOForEach.java Wed Sep 17 17:39:45 2008 @@ -30,6 +30,7 @@ import org.apache.pig.impl.plan.OperatorKey; import org.apache.pig.impl.plan.PlanVisitor; import org.apache.pig.impl.plan.VisitorException; +import org.apache.pig.impl.logicalLayer.parser.QueryParser ; import org.apache.pig.impl.logicalLayer.parser.ParseException; import org.apache.pig.data.DataType; import org.apache.commons.logging.Log; @@ -226,6 +227,7 @@ fss.add(newFs); } else { for(Schema.FieldSchema ufs: userDefinedSchema.getFields()) { + QueryParser.SchemaUtils.setFieldSchemaDefaultType(ufs, DataType.BYTEARRAY); fss.add(new Schema.FieldSchema(ufs.alias, ufs.schema, ufs.type)); updateAliasCount(aliases, ufs.alias); } Modified: incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt?rev=696527&r1=696526&r2=696527&view=diff ============================================================================== --- incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt (original) +++ incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt Wed Sep 17 17:39:45 2008 @@ -2260,7 +2260,7 @@ { flatten = true; } - [ <AS> "(" schema = TupleSchema() ")" ] + [ <AS> ( "(" schema = TupleSchema() ")" | fs = FieldSchema() ) ] ) | ( Modified: incubator/pig/branches/types/test/org/apache/pig/test/TestLogicalPlanBuilder.java URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/test/org/apache/pig/test/TestLogicalPlanBuilder.java?rev=696527&r1=696526&r2=696527&view=diff ============================================================================== --- incubator/pig/branches/types/test/org/apache/pig/test/TestLogicalPlanBuilder.java (original) +++ incubator/pig/branches/types/test/org/apache/pig/test/TestLogicalPlanBuilder.java Wed Sep 17 17:39:45 2008 @@ -1183,6 +1183,11 @@ foreach = (LOForEach) lp.getLeaves().get(0); assertTrue(foreach.getSchema().equals(getSchemaFromString("name: chararray, age: int, mycount: long"))); + //the first element in group, i.e., name is renamed as myname + lp = buildPlan("c = foreach b generate flatten(group) as myname, COUNT(a) as mycount;"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(foreach.getSchema().equals(getSchemaFromString("myname: chararray, age: int, mycount: long"))); + //group is renamed as mygroup lp = buildPlan("c = foreach b generate group as mygroup, COUNT(a) as mycount;"); foreach = (LOForEach) lp.getLeaves().get(0); @@ -1203,18 +1208,33 @@ foreach = (LOForEach) lp.getLeaves().get(0); assertTrue(foreach.getSchema().equals(getSchemaFromString("mygroup:(name: chararray, age: int), mycount: long"))); - /* - //forcing an wrror by having more elements in the fhe schema - lp = buildPlan("c = foreach B generate group as mygroup:(myname, myage, mygpa), COUNT(A) as mycount;"); - lp = buildPlan("c = foreach B generate group as mygroup:(myname: int, myage), COUNT(A) as mycount;"); - lp = buildPlan("c = foreach B generate group as mygroup:(myname, myage: chararray), COUNT(A) as mycount;"); - lp = buildPlan("c = foreach B generate group as mygroup:{t: (myname, myage)}, COUNT(A) as mycount;"); - lp = buildPlan("c = foreach B generate flatten(group) as (myname, myage, mygpa), COUNT(A) as mycount;"); + //setting the schema of flattened bag that has no schema with the user defined schema + buildPlan("c = load 'another_file';"); + buildPlan("d = cogroup a by $0, c by $0;"); + lp = buildPlan("e = foreach d generate flatten(DIFF(a, c)) as (x, y, z), COUNT(a) as mycount;"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(foreach.getSchema().equals(getSchemaFromString("x: bytearray, y: bytearray, z: bytearray, mycount: long"))); + + //setting the schema of flattened bag that has no schema with the user defined schema + buildPlan("c = load 'another_file';"); + buildPlan("d = cogroup a by $0, c by $0;"); + lp = buildPlan("e = foreach d generate flatten(DIFF(a, c)) as (x: int, y: float, z), COUNT(a) as mycount;"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(foreach.getSchema().equals(getSchemaFromString("x: int, y: float, z: bytearray, mycount: long"))); + //setting the schema of flattened bag that has no schema with the user defined schema + buildPlan("c = load 'another_file';"); + buildPlan("d = cogroup a by $0, c by $0;"); + lp = buildPlan("e = foreach d generate flatten(DIFF(a, c)) as x, COUNT(a) as mycount;"); foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(foreach.getSchema().equals(getSchemaFromString("x: bytearray, mycount: long"))); - assertTrue(foreach.getSchema().equals(getSchemaFromString())); - */ + //setting the schema of flattened bag that has no schema with the user defined schema + buildPlan("c = load 'another_file';"); + buildPlan("d = cogroup a by $0, c by $0;"); + lp = buildPlan("e = foreach d generate flatten(DIFF(a, c)) as x: int, COUNT(a) as mycount;"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(foreach.getSchema().equals(getSchemaFromString("x: int, mycount: long"))); }