Author: thejas
Date: Fri Sep 10 17:19:17 2010
New Revision: 995881

URL: http://svn.apache.org/viewvc?rev=995881&view=rev
Log:
PIG-1604: 'relation as scalar' does not work with complex types 

Modified:
    hadoop/pig/branches/branch-0.8/CHANGES.txt
    
hadoop/pig/branches/branch-0.8/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt
    
hadoop/pig/branches/branch-0.8/test/org/apache/pig/test/TestScalarAliases.java

Modified: hadoop/pig/branches/branch-0.8/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/branch-0.8/CHANGES.txt?rev=995881&r1=995880&r2=995881&view=diff
==============================================================================
--- hadoop/pig/branches/branch-0.8/CHANGES.txt (original)
+++ hadoop/pig/branches/branch-0.8/CHANGES.txt Fri Sep 10 17:19:17 2010
@@ -190,6 +190,8 @@ PIG-1309: Map-side Cogroup (ashutoshc)
 
 BUG FIXES
 
+PIG-1604: 'relation as scalar' does not work with complex types (thejas)
+
 PIG-1601: Make scalar work for secure hadoop (daijy)
 
 PIG-1602: The .classpath of eclipse template still use hbase-0.20.0 (zjffdu)

Modified: 
hadoop/pig/branches/branch-0.8/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/branch-0.8/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt?rev=995881&r1=995880&r2=995881&view=diff
==============================================================================
--- 
hadoop/pig/branches/branch-0.8/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt
 (original)
+++ 
hadoop/pig/branches/branch-0.8/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt
 Fri Sep 10 17:19:17 2010
@@ -3467,17 +3467,17 @@ ExpressionOperator BaseEvalSpec(Schema o
                ( 
                        "." projection = BracketedSimpleProj(subSchema,lp,item) 
                        {
-                               if(item instanceof LOUserFunc && 
((LOUserFunc)item).getImplicitReferencedOperator() != null) {
-                                       assertAtomic(item,true);
-                               }
-                               else {
+                               if((!(item instanceof LOUserFunc)) || 
((LOUserFunc)item).getImplicitReferencedOperator() == null) {
                                        assertAtomic(item,false);
                                }
                                item = projection;
                        }
                )
-|              ( "#" key = StringDatum() { 
-                       assertAtomic(item, false);
+|              ( "#" key = StringDatum() {
+                        if( (!(item instanceof LOUserFunc)) || 
((LOUserFunc)item).getImplicitReferencedOperator() == null){
+                            // if it is not a scalar udf , it should not be 
atomic
+                           assertAtomic(item, false);
+                       }      
                        ExpressionOperator mapLookup = new LOMapLookup(lp, new 
OperatorKey(scope, getNextId()), key, DataType.BYTEARRAY, null);
                        lp.add(mapLookup);
                        log.debug("BaseEvalSpec: Added operator " + 
mapLookup.getClass().getName() + " " + mapLookup + " to logical plan " + lp);

Modified: 
hadoop/pig/branches/branch-0.8/test/org/apache/pig/test/TestScalarAliases.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/branch-0.8/test/org/apache/pig/test/TestScalarAliases.java?rev=995881&r1=995880&r2=995881&view=diff
==============================================================================
--- 
hadoop/pig/branches/branch-0.8/test/org/apache/pig/test/TestScalarAliases.java 
(original)
+++ 
hadoop/pig/branches/branch-0.8/test/org/apache/pig/test/TestScalarAliases.java 
Fri Sep 10 17:19:17 2010
@@ -17,6 +17,7 @@
  */
 package org.apache.pig.test;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
@@ -296,18 +297,21 @@ public class TestScalarAliases  {
     @Test
     public void testFilteredScalarDollarProj() throws Exception{
         String[] input = {
-                "1\t5",
-                "2\t10",
-                "3\t20"
+                "1\t5\t[state#maine,city#portland]\t{(a),(b)}\t(a,b)",
+                "2\t10\t\t\t",
+                "3\t20\t\t\t"
         };
 
         // Test the use of scalars in expressions
         Util.createLocalInputFile( "table_testFilteredScalarDollarProj", 
input);
         // Test in script mode
         pigServer.setBatchOn();
-        pigServer.registerQuery("A = LOAD 'table_testFilteredScalarDollarProj' 
as (a0: long, a1: double);");
+        pigServer.registerQuery("A = LOAD 
'table_testFilteredScalarDollarProj'" +
+                       " as (a0: long, a1: double, a2 : bytearray, " +
+                       "a3: bag{ t : tuple(tc : chararray)}, " +
+                       "a4: tuple(c1 : chararray, c2 : chararray) );");
         pigServer.registerQuery("B = filter A by $1 < 8;");
-        pigServer.registerQuery("Y = foreach A generate (a0 * B.$0), (a1 / 
B.$1);");
+        pigServer.registerQuery("Y = foreach A generate (a0 * B.$0), (a1 / 
B.$1), B.$2, B.$2#'state', B.$3, B.a4;");
         pigServer.registerQuery("Store Y into 
'table_testFilteredScalarDollarProjDir';");
         pigServer.explain("Y", System.err);
         pigServer.executeBatch();
@@ -332,13 +336,13 @@ public class TestScalarAliases  {
         iter = pigServer.openIterator("Y");
 
         t = iter.next();
-        assertTrue(t.toString().equals("(1,1.0)"));
+        
assertEquals(t.toString(),"(1,1.0,[state#maine,city#portland],maine,{(a),(b)},(a,b))");
 
         t = iter.next();
-        assertTrue(t.toString().equals("(2,2.0)"));
+        
assertEquals(t.toString(),"(2,2.0,[state#maine,city#portland],maine,{(a),(b)},(a,b))");
 
         t = iter.next();
-        assertTrue(t.toString().equals("(3,4.0)"));
+        
assertEquals(t.toString(),"(3,4.0,[state#maine,city#portland],maine,{(a),(b)},(a,b))");
 
         assertFalse(iter.hasNext());
 


Reply via email to