You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pig.apache.org by da...@apache.org on 2016/02/15 07:26:08 UTC
svn commit: r1730453 - in /pig/trunk: CHANGES.txt
src/org/apache/pig/builtin/PluckTuple.java
test/org/apache/pig/builtin/TestPluckTuple.java
Author: daijy
Date: Mon Feb 15 06:26:08 2016
New Revision: 1730453
URL: http://svn.apache.org/viewvc?rev=1730453&view=rev
Log:
PIG-4808: PluckTuple overwrites regex if used more than once in the same script
Modified:
pig/trunk/CHANGES.txt
pig/trunk/src/org/apache/pig/builtin/PluckTuple.java
pig/trunk/test/org/apache/pig/builtin/TestPluckTuple.java
Modified: pig/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/trunk/CHANGES.txt?rev=1730453&r1=1730452&r2=1730453&view=diff
==============================================================================
--- pig/trunk/CHANGES.txt (original)
+++ pig/trunk/CHANGES.txt Mon Feb 15 06:26:08 2016
@@ -91,6 +91,8 @@ PIG-4639: Add better parser for Apache H
BUG FIXES
+PIG-4808: PluckTuple overwrites regex if used more than once in the same script (eyal via daijy)
+
PIG-4801: Provide backward compatibility with mapreduce mapred.task settings (rohini)
PIG-4759: Fix Classresolution_1 e2e failure (rohini)
Modified: pig/trunk/src/org/apache/pig/builtin/PluckTuple.java
URL: http://svn.apache.org/viewvc/pig/trunk/src/org/apache/pig/builtin/PluckTuple.java?rev=1730453&r1=1730452&r2=1730453&view=diff
==============================================================================
--- pig/trunk/src/org/apache/pig/builtin/PluckTuple.java (original)
+++ pig/trunk/src/org/apache/pig/builtin/PluckTuple.java Mon Feb 15 06:26:08 2016
@@ -61,7 +61,7 @@ import com.google.common.collect.Lists;
*/
public class PluckTuple extends EvalFunc<Tuple> {
private static final TupleFactory mTupleFactory = TupleFactory.getInstance();
- private static Pattern pattern;
+ private Pattern pattern;
private boolean isInitialized = false;
private int[] indicesToInclude;
@@ -85,10 +85,10 @@ public class PluckTuple extends EvalFunc
Schema inputSchema = getInputSchema();
for (int i = 0; i < inputSchema.size(); i++) {
String alias = inputSchema.getField(i).alias;
- if ((alias.startsWith(prefix) || pattern.matcher(alias).matches()) && this.match) {
+ if (this.match && (alias.startsWith(prefix) || pattern.matcher(alias).matches()) ) {
indicesToInclude.add(i);
}
- else if (!alias.startsWith(prefix) && !pattern.matcher(alias).matches() && !this.match){
+ else if (!this.match && !alias.startsWith(prefix) && !pattern.matcher(alias).matches() ){
indicesToInclude.add(i);
}
}
@@ -117,10 +117,10 @@ public class PluckTuple extends EvalFunc
} catch (FrontendException e) {
throw new RuntimeException(e); // Should never happen
}
- if ((alias.startsWith(prefix) || pattern.matcher(alias).matches()) && this.match) {
+ if (this.match && (alias.startsWith(prefix) || pattern.matcher(alias).matches())) {
indicesToInclude.add(i);
}
- else if (!alias.startsWith(prefix) && !pattern.matcher(alias).matches() && !this.match){
+ else if (!this.match && !alias.startsWith(prefix) && !pattern.matcher(alias).matches()){
indicesToInclude.add(i);
}
}
Modified: pig/trunk/test/org/apache/pig/builtin/TestPluckTuple.java
URL: http://svn.apache.org/viewvc/pig/trunk/test/org/apache/pig/builtin/TestPluckTuple.java?rev=1730453&r1=1730452&r2=1730453&view=diff
==============================================================================
--- pig/trunk/test/org/apache/pig/builtin/TestPluckTuple.java (original)
+++ pig/trunk/test/org/apache/pig/builtin/TestPluckTuple.java Mon Feb 15 06:26:08 2016
@@ -122,6 +122,29 @@ public class TestPluckTuple {
}
@Test
+ public void testTwoPluckTuples() throws Exception {
+ Data data = resetData(pigServer);
+
+ data.set("a",
+ Utils.getSchemaFromString("xa:int,yb:chararray,zc:long"),
+ tuple(1, "hey", 3L),
+ tuple(2, "woah", 4L)
+ );
+
+ String query = "a = load 'a' using mock.Storage();" +
+ "define pluck1 PluckTuple('.a');" +
+ "define pluck2 PluckTuple('.b');" +
+ "b = foreach a generate flatten(pluck1(*)), flatten(pluck2(*));";
+ pigServer.registerQuery(query);
+ Iterator<Tuple> it = pigServer.openIterator("b");
+ assertTrue(it.hasNext());
+ assertEquals(tuple(1,"hey"), it.next());
+ assertTrue(it.hasNext());
+ assertEquals(tuple(2,"woah"), it.next());
+ assertFalse(it.hasNext());
+ }
+
+ @Test
public void testNegativeOutput() throws Exception {
Data data = resetData(pigServer);