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 2011/11/17 09:36:13 UTC

svn commit: r1203105 - in /pig/branches/branch-0.10: CHANGES.txt src/org/apache/pig/parser/PigMacro.java src/org/apache/pig/parser/QueryParser.g test/org/apache/pig/test/TestMacroExpansion.java

Author: daijy
Date: Thu Nov 17 08:36:12 2011
New Revision: 1203105

URL: http://svn.apache.org/viewvc?rev=1203105&view=rev
Log:
PIG-2184: Not able to provide positional reference to macro invocations

Modified:
    pig/branches/branch-0.10/CHANGES.txt
    pig/branches/branch-0.10/src/org/apache/pig/parser/PigMacro.java
    pig/branches/branch-0.10/src/org/apache/pig/parser/QueryParser.g
    pig/branches/branch-0.10/test/org/apache/pig/test/TestMacroExpansion.java

Modified: pig/branches/branch-0.10/CHANGES.txt
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/CHANGES.txt?rev=1203105&r1=1203104&r2=1203105&view=diff
==============================================================================
--- pig/branches/branch-0.10/CHANGES.txt (original)
+++ pig/branches/branch-0.10/CHANGES.txt Thu Nov 17 08:36:12 2011
@@ -150,6 +150,8 @@ PIG-2228: support partial aggregation in
 
 BUG FIXES
 
+PIG-2184: Not able to provide positional reference to macro invocations (daijy)
+
 PIG-2209: JsonMetadata fails to find schema for glob paths (daijy)
 
 PIG-2352: e2e test harness' use of environment variables causes unintended effects between tests (gates)

Modified: pig/branches/branch-0.10/src/org/apache/pig/parser/PigMacro.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/src/org/apache/pig/parser/PigMacro.java?rev=1203105&r1=1203104&r2=1203105&view=diff
==============================================================================
--- pig/branches/branch-0.10/src/org/apache/pig/parser/PigMacro.java (original)
+++ pig/branches/branch-0.10/src/org/apache/pig/parser/PigMacro.java Thu Nov 17 08:36:12 2011
@@ -138,6 +138,8 @@ class PigMacro {
         
         String[] args = new String[params.size()];
         for (int i=0; i<params.size(); i++) {
+        	 if (inputs[i].startsWith("$"))
+        		 inputs[i]="\\\\"+inputs[i];
             args[i] = params.get(i) + "=" + inputs[i];
         }
         if (!isVoidReturn) {

Modified: pig/branches/branch-0.10/src/org/apache/pig/parser/QueryParser.g
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/src/org/apache/pig/parser/QueryParser.g?rev=1203105&r1=1203104&r2=1203105&view=diff
==============================================================================
--- pig/branches/branch-0.10/src/org/apache/pig/parser/QueryParser.g (original)
+++ pig/branches/branch-0.10/src/org/apache/pig/parser/QueryParser.g Thu Nov 17 08:36:12 2011
@@ -197,6 +197,7 @@ parameter 
     | INTEGER 
     | DOUBLENUMBER
     | QUOTEDSTRING
+    | DOLLARVAR
 ;
 
 content : LEFT_CURLY ( content | ~(LEFT_CURLY | RIGHT_CURLY) )* RIGHT_CURLY

Modified: pig/branches/branch-0.10/test/org/apache/pig/test/TestMacroExpansion.java
URL: http://svn.apache.org/viewvc/pig/branches/branch-0.10/test/org/apache/pig/test/TestMacroExpansion.java?rev=1203105&r1=1203104&r2=1203105&view=diff
==============================================================================
--- pig/branches/branch-0.10/test/org/apache/pig/test/TestMacroExpansion.java (original)
+++ pig/branches/branch-0.10/test/org/apache/pig/test/TestMacroExpansion.java Thu Nov 17 08:36:12 2011
@@ -1210,27 +1210,23 @@ public class TestMacroExpansion {
         validateFailure(sb.toString(), expectedErr, "at");
     }
     
-    @Test // PIG-2081
-    public void lineNumberTest3() throws Throwable {
-        StringBuilder sb = new StringBuilder();
-        
-        sb.append("DEFINE my_macro (X,key) returns Y\n" +
-            "{\n" +   
-            "tmp1 = foreach  $X generate TOKENIZE((chararray)$key) as tokens;\n" +
-            "tmp2 = foreach tmp1 generate flatten(tokens);\n" +
-            "tmp3 = order tmp2 by $0;\n" + 
-            "$Y = distinct tmp3;\n" +
-            "};\n");
-        
-        sb.append("A3 = load 'sometext3' using TextLoader() as (row3);\n");
-        
-        sb.append("E3 = my_macro(A3,$0);\n");
-
-        
-        String expectedErr = 
-            "<file myscript.pig, line 9, column 17>  Syntax error, unexpected symbol at or near '$0'";
-        
-        validateDryrunFailure(sb.toString(), expectedErr, "<file");
+    //see Pig-2184
+    @Test
+    public void testMacroAliasConversion() throws Exception {
+    	  String macro = "define my_macro (X,key) returns Y {\n" +
+    	        "$Y = filter $X by $key>0;\n" +
+    	            "};\n";
+    	        
+    	        String script = 
+    	            "A = load 'sometext1' using TextLoader() as (row1) ;\n" +
+    	            "E = my_macro (A, $0);\n" +
+    	            "store E into 'byrow1';\n";
+    	        
+    	        String expected =
+    	        			"A = load 'sometext1' USING TextLoader() as row1;\n"+
+    	        			"E = filter A BY ($0 > 0);\n"+
+    	        			"store E INTO 'byrow1';\n";
+    	        verify(macro + script, expected);
     }
     
     @Test