You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by ol...@apache.org on 2008/09/24 22:35:01 UTC
svn commit: r698718 - in /incubator/pig/branches/types: CHANGES.txt
src/org/apache/pig/impl/logicalLayer/schema/Schema.java
test/org/apache/pig/test/TestLogicalPlanBuilder.java
Author: olga
Date: Wed Sep 24 13:35:01 2008
New Revision: 698718
URL: http://svn.apache.org/viewvc?rev=698718&view=rev
Log:
If an field is part of group followed by flatten, then referring to it causes a parse error
Modified:
incubator/pig/branches/types/CHANGES.txt
incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/schema/Schema.java
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=698718&r1=698717&r2=698718&view=diff
==============================================================================
--- incubator/pig/branches/types/CHANGES.txt (original)
+++ incubator/pig/branches/types/CHANGES.txt Wed Sep 24 13:35:01 2008
@@ -241,3 +241,7 @@
PIG-448: explain broken after load with types (pradeepk via olgan)
PIG-380: invalid schema for databag constant (sms via olgan)
+
+ PIG-451: If an field is part of group followed by flatten, then referring
+ to it causes a parse error (pradeepk via olgan)
+
Modified: incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/schema/Schema.java
URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/schema/Schema.java?rev=698718&r1=698717&r2=698718&view=diff
==============================================================================
--- incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/schema/Schema.java (original)
+++ incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/schema/Schema.java Wed Sep 24 13:35:01 2008
@@ -20,6 +20,7 @@
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -554,6 +555,17 @@
}
return mAliases.get(key);
} else {
+ // check if the multiple aliases obtained actually
+ // point to the same field schema - then just return
+ // that field schema
+ Set<FieldSchema> set = new HashSet<FieldSchema>();
+ for (String key: aliasMatches.keySet()) {
+ set.add(mAliases.get(key));
+ }
+ if(set.size() == 1) {
+ return set.iterator().next();
+ }
+
boolean hasNext = false;
StringBuilder sb = new StringBuilder("Found more than one match: ");
for (String key: aliasMatches.keySet()) {
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=698718&r1=698717&r2=698718&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 24 13:35:01 2008
@@ -157,29 +157,7 @@
assertTrue(lo instanceof LODefine);
}
- @Test
- public void testQuery101() {
- // test usage of an alias from define
- String query = "define FUNC ARITY();";
- buildPlan(query);
- query = "foreach (load 'data') generate FUNC($0);";
- buildPlan(query);
- }
-
- @Test
- public void testQuery102() {
- // test basic store
- buildPlan("a = load 'a';");
- buildPlan("store a into 'out';");
- }
-
- @Test
- public void testQuery103() {
- // test store with store function
- buildPlan("a = load 'a';");
- buildPlan("store a into 'out' using PigStorage();");
- }
@Test
public void testQueryFail1() {
@@ -1517,6 +1495,45 @@
}
+ @Test
+ public void testQuery101() {
+ // test usage of an alias from define
+ String query = "define FUNC ARITY();";
+ buildPlan(query);
+
+ query = "foreach (load 'data') generate FUNC($0);";
+ buildPlan(query);
+ }
+
+ @Test
+ public void testQuery102() {
+ // test basic store
+ buildPlan("a = load 'a';");
+ buildPlan("store a into 'out';");
+ }
+
+ @Test
+ public void testQuery103() {
+ // test store with store function
+ buildPlan("a = load 'a';");
+ buildPlan("store a into 'out' using PigStorage();");
+ }
+
+ @Test
+ public void testQuery104() {
+ // check that a field alias can be referenced
+ // by unambiguous free form alias, fully qualified alias
+ // and partially qualified unambiguous alias
+ String query = "a = load 'st10k' as (name, age, gpa);" +
+"b = group a by name;" +
+"c = foreach b generate flatten(a);" +
+"d = filter c by name != 'fred';" +
+"e = group d by name;" +
+"f = foreach e generate flatten(d);" +
+"g = foreach f generate name, d::a::name, a::name;";
+ buildPlan(query);
+ }
+
private Schema getSchemaFromString(String schemaString) throws ParseException {
return getSchemaFromString(schemaString, DataType.BYTEARRAY);
}