Modified: 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestPOCogroup.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestPOCogroup.java?rev=758107&r1=758106&r2=758107&view=diff
==============================================================================
--- hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestPOCogroup.java 
(original)
+++ hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestPOCogroup.java 
Wed Mar 25 00:42:40 2009
@@ -39,6 +39,7 @@
 import org.apache.pig.data.Tuple;
 import org.apache.pig.data.TupleFactory;
 import org.apache.pig.impl.plan.OperatorKey;
+import org.apache.pig.impl.plan.PlanException;
 
 public class TestPOCogroup extends TestCase {
     Random r = new Random();
@@ -146,7 +147,7 @@
         assertEquals(expected.size(), obtained.size());
     }
 
-    public void testCogroup1Input() throws ExecException {
+    public void testCogroup1Input() throws ExecException, PlanException {
         DataBag input = BagFactory.getInstance().newDefaultBag();
         Tuple t = TupleFactory.getInstance().newTuple();
         t.append(1);

Modified: 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestPigContext.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestPigContext.java?rev=758107&r1=758106&r2=758107&view=diff
==============================================================================
--- hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestPigContext.java 
(original)
+++ hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestPigContext.java 
Wed Mar 25 00:42:40 2009
@@ -27,6 +27,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.hadoop.mapred.FileAlreadyExistsException;
 import org.apache.pig.ExecType;
 import org.apache.pig.PigServer;
 import org.apache.pig.impl.PigContext;
@@ -83,6 +84,12 @@
         
         check_asserts();
     }
+    
+    @Test
+    public void testHadoopExceptionCreation() throws Exception {
+       Object object = 
PigContext.instantiateFuncFromSpec("org.apache.hadoop.mapred.FileAlreadyExistsException");
+       assertTrue(object instanceof FileAlreadyExistsException);
+    }
 
     @After
     @Override

Modified: 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestSchema.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestSchema.java?rev=758107&r1=758106&r2=758107&view=diff
==============================================================================
--- hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestSchema.java 
(original)
+++ hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestSchema.java Wed 
Mar 25 00:42:40 2009
@@ -77,9 +77,9 @@
         Schema schema2 = new Schema(list2) ;
         
         Assert.assertTrue(Schema.equals(schema1, schema2, false, false)) ;
-        
+
         innerList2.get(1).alias = "pi" ;
-        
+
         Assert.assertFalse(Schema.equals(schema1, schema2, false, false)) ;
         Assert.assertTrue(Schema.equals(schema1, schema2, false, true)) ;
         
@@ -567,5 +567,63 @@
         // Compare
         Assert.assertTrue(Schema.equals(mergedSchema, expected, false, false)) 
;
     }
+    
+    @Test
+    public void testSchemaEqualTwoLevelAccess() throws Exception {
+        
+        List<FieldSchema> innerList1 = new ArrayList<FieldSchema>() ;
+        innerList1.add(new FieldSchema("11a", DataType.INTEGER)) ;
+        innerList1.add(new FieldSchema("11b", DataType.LONG)) ;
+        
+        List<FieldSchema> innerList2 = new ArrayList<FieldSchema>() ;
+        innerList2.add(new FieldSchema("11a", DataType.INTEGER)) ;
+        innerList2.add(new FieldSchema("11b", DataType.LONG)) ;
+        
+        Schema innerSchema1 = new Schema(innerList1) ;
+        Schema innerSchema2 = new Schema(innerList2) ;
+                
+        List<FieldSchema> list1 = new ArrayList<FieldSchema>() ;
+        list1.add(new FieldSchema("1a", DataType.BYTEARRAY)) ;
+        list1.add(new FieldSchema("1b", innerSchema1)) ;
+        list1.add(new FieldSchema("1c", DataType.INTEGER)) ;
+        
+        List<FieldSchema> list2 = new ArrayList<FieldSchema>() ;
+        list2.add(new FieldSchema("1a", DataType.BYTEARRAY)) ;
+        list2.add(new FieldSchema("1b", innerSchema2)) ;
+        list2.add(new FieldSchema("1c", DataType.INTEGER)) ;
+        
+        Schema schema1 = new Schema(list1) ;
+        Schema schema2 = new Schema(list2) ;        
+      
+        Schema.FieldSchema bagFs1 = new Schema.FieldSchema("b", schema1, 
DataType.BAG);
+        Schema bagSchema1 = new Schema(bagFs1);
+        
+        Schema.FieldSchema tupleFs = new Schema.FieldSchema("t", schema2, 
DataType.TUPLE);
+        Schema bagSchema = new Schema(tupleFs);
+        bagSchema.setTwoLevelAccessRequired(true);
+        Schema.FieldSchema bagFs2 = new Schema.FieldSchema("b", bagSchema, 
DataType.BAG);
+        Schema bagSchema2 = new Schema(bagFs2);
+
+        
+        Assert.assertTrue(Schema.equals(bagSchema1, bagSchema2, false, false)) 
;
+
+        innerList2.get(1).alias = "pi" ;
+
+        Assert.assertFalse(Schema.equals(bagSchema1, bagSchema2, false, 
false)) ;
+        Assert.assertTrue(Schema.equals(bagSchema1, bagSchema2, false, true)) ;
+        
+        innerList2.get(1).alias = "11b" ;
+        innerList2.get(1).type = DataType.BYTEARRAY ;
+        
+        Assert.assertFalse(Schema.equals(bagSchema1, bagSchema2, false, 
false)) ;
+        Assert.assertTrue(Schema.equals(bagSchema1, bagSchema2, true, false)) ;
+        
+        innerList2.get(1).type = DataType.LONG ;
+        
+        Assert.assertTrue(Schema.equals(bagSchema1, bagSchema2, false, false)) 
;
+        
+        list2.get(0).type = DataType.CHARARRAY ;
+        Assert.assertFalse(Schema.equals(bagSchema1, bagSchema2, false, 
false)) ;
+    }
 
 }

Modified: 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestTypeCheckingValidator.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestTypeCheckingValidator.java?rev=758107&r1=758106&r2=758107&view=diff
==============================================================================
--- 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestTypeCheckingValidator.java
 (original)
+++ 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestTypeCheckingValidator.java
 Wed Mar 25 00:42:40 2009
@@ -25,6 +25,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.pig.EvalFunc;
 import org.apache.pig.FuncSpec;
 import org.apache.pig.impl.logicalLayer.validators.*;
 import org.apache.pig.impl.logicalLayer.* ;
@@ -75,9 +76,9 @@
         LOConst constant3 =  new LOConst(plan, genNewOperatorKey(), 123f) ;
         constant3.setType(DataType.FLOAT) ;
         
-        LOAdd add1 = new LOAdd(plan, genNewOperatorKey(), constant1, 
constant2) ;
-        LOCast cast1 = new LOCast(plan, genNewOperatorKey(), constant3, 
DataType.DOUBLE) ;
-        LOMultiply mul1 = new LOMultiply(plan, genNewOperatorKey(), add1, 
cast1) ;
+        LOAdd add1 = new LOAdd(plan, genNewOperatorKey()) ;
+        LOCast cast1 = new LOCast(plan, genNewOperatorKey(), DataType.DOUBLE) ;
+        LOMultiply mul1 = new LOMultiply(plan, genNewOperatorKey()) ;
         
         plan.add(constant1) ;
         plan.add(constant2) ;
@@ -122,9 +123,9 @@
         LOConst constant3 =  new LOConst(plan, genNewOperatorKey(), "123") ;
         constant3.setType(DataType.CHARARRAY) ;
         
-        LOAdd add1 = new LOAdd(plan, genNewOperatorKey(), constant1, 
constant2) ;
-        LOCast cast1 = new LOCast(plan, genNewOperatorKey(), constant3, 
DataType.BYTEARRAY) ;
-        LOMultiply mul1 = new LOMultiply(plan, genNewOperatorKey(), add1, 
cast1) ;
+        LOAdd add1 = new LOAdd(plan, genNewOperatorKey()) ;
+        LOCast cast1 = new LOCast(plan, genNewOperatorKey(), 
DataType.BYTEARRAY) ;
+        LOMultiply mul1 = new LOMultiply(plan, genNewOperatorKey()) ;
         
         plan.add(constant1) ;
         plan.add(constant2) ;
@@ -168,10 +169,10 @@
         LOConst constant4 =  new LOConst(plan, genNewOperatorKey(), true) ;
         constant4.setType(DataType.BOOLEAN) ;
         
-        LOSubtract sub1 = new LOSubtract(plan, genNewOperatorKey(), constant1, 
constant2) ;
-        LOGreaterThan gt1 = new LOGreaterThan(plan, genNewOperatorKey(), sub1, 
constant3) ;
-        LOAnd and1 = new LOAnd(plan, genNewOperatorKey(), gt1, constant4) ;
-        LONot not1 = new LONot(plan, genNewOperatorKey(), and1) ;
+        LOSubtract sub1 = new LOSubtract(plan, genNewOperatorKey()) ;
+        LOGreaterThan gt1 = new LOGreaterThan(plan, genNewOperatorKey()) ;
+        LOAnd and1 = new LOAnd(plan, genNewOperatorKey()) ;
+        LONot not1 = new LONot(plan, genNewOperatorKey()) ;
         
         plan.add(constant1) ;
         plan.add(constant2) ;
@@ -228,8 +229,8 @@
         LOConst constant3 =  new LOConst(plan, genNewOperatorKey(), 123) ;
         constant3.setType(DataType.INTEGER) ;
         
-        LOMod mod1 = new LOMod(plan, genNewOperatorKey(), constant1, 
constant2) ;
-        LOEqual equal1 = new LOEqual(plan, genNewOperatorKey(), mod1, 
constant3) ;
+        LOMod mod1 = new LOMod(plan, genNewOperatorKey()) ;
+        LOEqual equal1 = new LOEqual(plan, genNewOperatorKey()) ;
         
         plan.add(constant1) ;
         plan.add(constant2) ;
@@ -272,9 +273,9 @@
         LOConst constant3 =  new LOConst(plan, genNewOperatorKey(), 123f) ;
         constant3.setType(DataType.FLOAT) ;
         
-        LODivide div1 = new LODivide(plan, genNewOperatorKey(), constant1, 
constant2) ;
-        LOCast cast1 = new LOCast(plan, genNewOperatorKey(), constant3, 
DataType.DOUBLE) ;
-        LONotEqual notequal1 = new LONotEqual(plan, genNewOperatorKey(), div1, 
cast1) ;
+        LODivide div1 = new LODivide(plan, genNewOperatorKey()) ;
+        LOCast cast1 = new LOCast(plan, genNewOperatorKey(), DataType.DOUBLE) ;
+        LONotEqual notequal1 = new LONotEqual(plan, genNewOperatorKey()) ;
         
         plan.add(constant1) ;
         plan.add(constant2) ;
@@ -320,9 +321,9 @@
         LOConst constant3 =  new LOConst(plan, genNewOperatorKey(), "123") ;
         constant3.setType(DataType.CHARARRAY) ;
         
-        LODivide div1 = new LODivide(plan, genNewOperatorKey(), constant1, 
constant2) ;
-        LOCast cast1 = new LOCast(plan, genNewOperatorKey(), constant3, 
DataType.BYTEARRAY) ;
-        LONotEqual notequal1 = new LONotEqual(plan, genNewOperatorKey(), div1, 
cast1) ;
+        LODivide div1 = new LODivide(plan, genNewOperatorKey()) ;
+        LOCast cast1 = new LOCast(plan, genNewOperatorKey(), 
DataType.BYTEARRAY) ;
+        LONotEqual notequal1 = new LONotEqual(plan, genNewOperatorKey()) ;
         
         plan.add(constant1) ;
         plan.add(constant2) ;
@@ -367,8 +368,8 @@
         LOConst constant4 =  new LOConst(plan, genNewOperatorKey(), 123D) ;
         constant4.setType(DataType.DOUBLE) ;
         
-        LOLesserThanEqual lesser1 = new LOLesserThanEqual(plan, 
genNewOperatorKey(), constant1, constant2) ;
-        LOBinCond bincond1 = new LOBinCond(plan, genNewOperatorKey(), lesser1, 
constant3, constant4) ;
+        LOLesserThanEqual lesser1 = new LOLesserThanEqual(plan, 
genNewOperatorKey()) ;
+        LOBinCond bincond1 = new LOBinCond(plan, genNewOperatorKey()) ;
         
         plan.add(constant1) ;
         plan.add(constant2) ;
@@ -414,7 +415,7 @@
         LOConst constant2 =  new LOConst(plan, genNewOperatorKey(), 20L) ;
         constant2.setType(DataType.LONG) ;
         
-        LOAdd add1 = new LOAdd(plan, genNewOperatorKey(), constant1, 
constant2) ;
+        LOAdd add1 = new LOAdd(plan, genNewOperatorKey()) ;
         
         plan.add(constant1) ;
         plan.add(constant2) ;
@@ -451,8 +452,8 @@
         LOConst constant3 =  new LOConst(plan, genNewOperatorKey(), 123L) ;
         constant3.setType(DataType.LONG) ;        
         
-        LOGreaterThan gt1 = new LOGreaterThan(plan, genNewOperatorKey(), 
constant1, constant2) ;
-        LOEqual equal1 = new LOEqual(plan, genNewOperatorKey(), gt1, 
constant3) ;
+        LOGreaterThan gt1 = new LOGreaterThan(plan, genNewOperatorKey()) ;
+        LOEqual equal1 = new LOEqual(plan, genNewOperatorKey()) ;
         
         plan.add(constant1) ;
         plan.add(constant2) ;
@@ -536,10 +537,10 @@
         LOConst constant2 =  new LOConst(plan, genNewOperatorKey(), tuple) ;
         constant2.setType(DataType.TUPLE) ;
         constant2.setFieldSchema(new Schema.FieldSchema(null, tupleSchema, 
DataType.TUPLE));
-        LOCast cast1 = new LOCast(plan, genNewOperatorKey(), constant1, 
DataType.TUPLE) ;
+        LOCast cast1 = new LOCast(plan, genNewOperatorKey(), DataType.TUPLE) ;
         cast1.setFieldSchema(new FieldSchema(null, castSchema, 
DataType.TUPLE));
         
-        LOEqual equal1 = new LOEqual(plan, genNewOperatorKey(), cast1, 
constant2) ;
+        LOEqual equal1 = new LOEqual(plan, genNewOperatorKey()) ;
         
         plan.add(constant1) ;
         plan.add(constant2) ;
@@ -622,10 +623,10 @@
         LOConst constant2 =  new LOConst(plan, genNewOperatorKey(), tuple) ;
         constant2.setType(DataType.TUPLE) ;
         constant2.setFieldSchema(new Schema.FieldSchema(null, tupleSchema, 
DataType.TUPLE));
-        LOCast cast1 = new LOCast(plan, genNewOperatorKey(), constant1, 
DataType.TUPLE) ;
+        LOCast cast1 = new LOCast(plan, genNewOperatorKey(), DataType.TUPLE) ;
         cast1.setFieldSchema(new FieldSchema(null, castSchema, 
DataType.TUPLE));
         
-        LOEqual equal1 = new LOEqual(plan, genNewOperatorKey(), cast1, 
constant2) ;
+        LOEqual equal1 = new LOEqual(plan, genNewOperatorKey()) ;
         
         plan.add(constant1) ;
         plan.add(constant2) ;
@@ -662,7 +663,7 @@
         LOConst constant2 =  new LOConst(plan, genNewOperatorKey(), 20D) ;
         constant2.setType(DataType.DOUBLE) ;
         
-        LOMultiply mul1 = new LOMultiply(plan, genNewOperatorKey(), constant1, 
constant2) ;
+        LOMultiply mul1 = new LOMultiply(plan, genNewOperatorKey()) ;
         
         plan.add(constant1) ;
         plan.add(constant2) ;
@@ -695,11 +696,8 @@
         LOConst constant2 =  new LOConst(plan, genNewOperatorKey(), 20L) ;
         constant2.setType(DataType.LONG) ;
 
-        LONegative neg1 = new LONegative(plan, genNewOperatorKey(), constant1) 
;
-        LOSubtract subtract1 = new LOSubtract(plan,
-                                              genNewOperatorKey(),
-                                              neg1,
-                                              constant2) ;
+        LONegative neg1 = new LONegative(plan, genNewOperatorKey()) ;
+        LOSubtract subtract1 = new LOSubtract(plan, genNewOperatorKey()) ;
 
         plan.add(constant1) ;
         plan.add(neg1) ; 
@@ -737,7 +735,7 @@
         LOConst constant2 =  new LOConst(plan, genNewOperatorKey(), 20L) ;
         constant2.setType(DataType.LONG) ;
 
-        LOMod mod1 = new LOMod(plan, genNewOperatorKey(), constant1, 
constant2) ;
+        LOMod mod1 = new LOMod(plan, genNewOperatorKey()) ;
 
         plan.add(constant1) ;
         plan.add(constant2) ;
@@ -771,15 +769,17 @@
     public void testRegexTypeChecking1() throws Throwable {
         LogicalPlan plan = new LogicalPlan() ;
         LOConst constant1 = new LOConst(plan, genNewOperatorKey(), "10") ;
+        LOConst constant2 = new LOConst(plan, genNewOperatorKey(), "Regex");
         constant1.setType(DataType.CHARARRAY) ;
 
-        LORegexp regex = new LORegexp(plan, genNewOperatorKey(), constant1,
-            new LOConst(plan, genNewOperatorKey(), "Regex")) ;
-
+        LORegexp regex = new LORegexp(plan, genNewOperatorKey()) ;
+        
         plan.add(constant1) ;
+        plan.add(constant2) ;
         plan.add(regex) ;
 
         plan.connect(constant1, regex) ;     
+        plan.connect(constant2, regex) ;     
 
         CompilationMessageCollector collector = new 
CompilationMessageCollector() ;
         TypeCheckingValidator typeValidator = new TypeCheckingValidator() ;
@@ -798,15 +798,17 @@
     public void testRegexTypeChecking2() throws Throwable {
         LogicalPlan plan = new LogicalPlan() ;
         LOConst constant1 = new LOConst(plan, genNewOperatorKey(), new 
DataByteArray()) ;
+        LOConst constant2 = new LOConst(plan, genNewOperatorKey(), "Regex");
         constant1.setType(DataType.BYTEARRAY) ;
 
-        LORegexp regex = new LORegexp(plan, genNewOperatorKey(), constant1,
-            new LOConst(plan, genNewOperatorKey(), "Regex"));
+        LORegexp regex = new LORegexp(plan, genNewOperatorKey());
 
         plan.add(constant1) ;
+        plan.add(constant2) ;
         plan.add(regex) ;
 
         plan.connect(constant1, regex) ;
+        plan.connect(constant2, regex) ;
 
         CompilationMessageCollector collector = new 
CompilationMessageCollector() ;
         TypeCheckingValidator typeValidator = new TypeCheckingValidator() ;
@@ -836,15 +838,17 @@
     public void testRegexTypeChecking3() throws Throwable {
         LogicalPlan plan = new LogicalPlan() ;
         LOConst constant1 = new LOConst(plan, genNewOperatorKey(), 10) ;
+        LOConst constant2 = new LOConst(plan, genNewOperatorKey(), "Regex");
         constant1.setType(DataType.INTEGER) ;
 
-        LORegexp regex = new LORegexp(plan, genNewOperatorKey(), constant1,
-            new LOConst(plan, genNewOperatorKey(), "Regex"));
-
+        LORegexp regex = new LORegexp(plan, genNewOperatorKey());
+        
         plan.add(constant1) ;
+        plan.add(constant2) ;
         plan.add(regex) ;
 
         plan.connect(constant1, regex) ;
+        plan.connect(constant2, regex) ;
 
         try {
             CompilationMessageCollector collector = new 
CompilationMessageCollector() ;
@@ -1315,9 +1319,7 @@
         project2.setSentinel(true);
 
         LOGreaterThan gt1 = new LOGreaterThan(innerPlan,
-                                              genNewOperatorKey(),
-                                              project1,
-                                              project2) ;
+                                              genNewOperatorKey()) ;
 
         innerPlan.add(project1) ;
         innerPlan.add(project2) ;
@@ -1384,7 +1386,7 @@
         LOProject project2 = new LOProject(innerPlan, genNewOperatorKey(), 
load1, 1) ;
         project2.setSentinel(true);
 
-        LOAdd add1 = new LOAdd(innerPlan, genNewOperatorKey(), project1, 
project2) ;
+        LOAdd add1 = new LOAdd(innerPlan, genNewOperatorKey()) ;
 
         innerPlan.add(project1) ;
         innerPlan.add(project2) ;
@@ -1533,7 +1535,7 @@
         project11.setSentinel(true);
         LOProject project12 = new LOProject(innerPlan1, genNewOperatorKey(), 
load1, 1) ;
         project11.setSentinel(true);
-        LOMultiply mul1 = new LOMultiply(innerPlan1, genNewOperatorKey(), 
project11, project12) ;
+        LOMultiply mul1 = new LOMultiply(innerPlan1, genNewOperatorKey()) ;
 
         innerPlan1.add(project11) ;
         innerPlan1.add(project12) ;
@@ -1548,7 +1550,7 @@
         project21.setSentinel(true);
         LOConst const21 = new LOConst(innerPlan2, genNewOperatorKey(), 26L) ;
         const21.setType(DataType.LONG);
-        LOMod mod21 = new LOMod(innerPlan2, genNewOperatorKey(), project21, 
const21) ;
+        LOMod mod21 = new LOMod(innerPlan2, genNewOperatorKey()) ;
 
         innerPlan2.add(project21) ;
         innerPlan2.add(const21) ;
@@ -1631,7 +1633,7 @@
         project11.setSentinel(true);
         LOProject project12 = new LOProject(innerPlan1, genNewOperatorKey(), 
load1, 1) ;
         project11.setSentinel(true);
-        LOMultiply mul1 = new LOMultiply(innerPlan1, genNewOperatorKey(), 
project11, project12) ;
+        LOMultiply mul1 = new LOMultiply(innerPlan1, genNewOperatorKey()) ;
 
         innerPlan1.add(project11) ;
         innerPlan1.add(project12) ;
@@ -1646,7 +1648,7 @@
         project21.setSentinel(true);
         LOConst const21 = new LOConst(innerPlan2, genNewOperatorKey(), "26") ;
         const21.setType(DataType.CHARARRAY);
-        LOMod mod21 = new LOMod(innerPlan2, genNewOperatorKey(), project21, 
const21) ;
+        LOMod mod21 = new LOMod(innerPlan2, genNewOperatorKey()) ;
 
         innerPlan2.add(project21) ;
         innerPlan2.add(const21) ;
@@ -1726,7 +1728,7 @@
         project11.setSentinel(true);
         LOProject project12 = new LOProject(innerPlan1, genNewOperatorKey(), 
load1, 1) ;
         project11.setSentinel(true);
-        LONotEqual notequal1 = new LONotEqual(innerPlan1, genNewOperatorKey(), 
project11, project12) ;
+        LONotEqual notequal1 = new LONotEqual(innerPlan1, genNewOperatorKey()) 
;
 
         innerPlan1.add(project11) ;
         innerPlan1.add(project12) ;
@@ -1742,9 +1744,7 @@
         LOConst const21 = new LOConst(innerPlan2, genNewOperatorKey(), 26) ;
         const21.setType(DataType.LONG);
         LOLesserThanEqual lesser21 = new LOLesserThanEqual(innerPlan2,
-                                                           genNewOperatorKey(),
-                                                           project21,
-                                                           const21) ;
+                                                           
genNewOperatorKey()) ;
 
         innerPlan2.add(project21) ;
         innerPlan2.add(const21) ;
@@ -1854,7 +1854,7 @@
         project11.setSentinel(true);
         LOProject project12 = new LOProject(innerPlan1, genNewOperatorKey(), 
load1, 1) ;
         project11.setSentinel(true);
-        LONotEqual notequal1 = new LONotEqual(innerPlan1, genNewOperatorKey(), 
project11, project12) ;
+        LONotEqual notequal1 = new LONotEqual(innerPlan1, genNewOperatorKey()) 
;
 
         innerPlan1.add(project11) ;
         innerPlan1.add(project12) ;
@@ -1870,9 +1870,7 @@
         LOConst const21 = new LOConst(innerPlan2, genNewOperatorKey(), 26) ;
         const21.setType(DataType.LONG);
         LOSubtract subtract21 = new LOSubtract(innerPlan2,
-                                               genNewOperatorKey(),
-                                               project21,
-                                               const21) ;
+                                               genNewOperatorKey()) ;
 
         innerPlan2.add(project21) ;
         innerPlan2.add(const21) ;
@@ -1972,9 +1970,7 @@
         LOConst const111 = new LOConst(innerPlan11, genNewOperatorKey(), 26F) ;
         const111.setType(DataType.FLOAT);
         LOSubtract subtract111 = new LOSubtract(innerPlan11,
-                                                genNewOperatorKey(),
-                                                project111,
-                                                const111) ;
+                                                genNewOperatorKey()) ;
 
         innerPlan11.add(project111) ;
         innerPlan11.add(const111) ;
@@ -1991,9 +1987,7 @@
         project212.setSentinel(true);
 
         LOAdd add211 = new LOAdd(innerPlan21,
-                                 genNewOperatorKey(),
-                                 project211,
-                                 project212) ;
+                                 genNewOperatorKey()) ;
 
         innerPlan21.add(project211) ;
         innerPlan21.add(project212) ;
@@ -2010,9 +2004,7 @@
         LOConst const121 = new LOConst(innerPlan12, genNewOperatorKey(), 26) ;
         const121.setType(DataType.INTEGER);
         LOSubtract subtract121 = new LOSubtract(innerPlan12,
-                                                genNewOperatorKey(),
-                                                project121,
-                                                const121) ;
+                                                genNewOperatorKey()) ;
 
         innerPlan12.add(project121) ;
         innerPlan12.add(const121) ;
@@ -2143,9 +2135,7 @@
         LOConst const111 = new LOConst(innerPlan11, genNewOperatorKey(), 26F) ;
         const111.setType(DataType.FLOAT);
         LOSubtract subtract111 = new LOSubtract(innerPlan11,
-                                                genNewOperatorKey(),
-                                                project111,
-                                                const111) ;
+                                                genNewOperatorKey()) ;
 
         innerPlan11.add(project111) ;
         innerPlan11.add(const111) ;
@@ -2161,9 +2151,7 @@
         LOConst const121 = new LOConst(innerPlan12, genNewOperatorKey(), 26) ;
         const121.setType(DataType.INTEGER);
         LOSubtract subtract121 = new LOSubtract(innerPlan12,
-                                                genNewOperatorKey(),
-                                                project121,
-                                                const121) ;
+                                                genNewOperatorKey()) ;
 
         innerPlan12.add(project121) ;
         innerPlan12.add(const121) ;
@@ -2282,9 +2270,7 @@
         LOConst const111 = new LOConst(innerPlan11, genNewOperatorKey(), 26F) ;
         const111.setType(DataType.FLOAT);
         LOSubtract subtract111 = new LOSubtract(innerPlan11,
-                                                genNewOperatorKey(),
-                                                project111,
-                                                const111) ;
+                                                genNewOperatorKey()) ;
 
         innerPlan11.add(project111) ;
         innerPlan11.add(const111) ;
@@ -2389,9 +2375,7 @@
         LOConst const11 = new LOConst(innerPlan1, genNewOperatorKey(), 26F) ;
         const11.setType(DataType.FLOAT);
         LOSubtract subtract11 = new LOSubtract(innerPlan1,
-                                                genNewOperatorKey(),
-                                                project11,
-                                                const11) ;
+                                                genNewOperatorKey()) ;
 
         innerPlan1.add(project11) ;
         innerPlan1.add(const11) ;
@@ -2402,14 +2386,12 @@
 
         // Create expression inner plan #2
         LogicalPlan innerPlan2 = new LogicalPlan() ;
-        LOProject project21 = new LOProject(innerPlan1, genNewOperatorKey(), 
load1, 0) ;
+        LOProject project21 = new LOProject(innerPlan2, genNewOperatorKey(), 
load1, 0) ;
         project21.setSentinel(true);
-        LOProject project22 = new LOProject(innerPlan1, genNewOperatorKey(), 
load1, 1) ;
+        LOProject project22 = new LOProject(innerPlan2, genNewOperatorKey(), 
load1, 1) ;
         project21.setSentinel(true);
-        LOAdd add21 = new LOAdd(innerPlan1,
-                                genNewOperatorKey(),
-                                project21,
-                                project22) ;
+        LOAdd add21 = new LOAdd(innerPlan2,
+                                genNewOperatorKey()) ;
 
         innerPlan2.add(project21) ;
         innerPlan2.add(project22) ;
@@ -2483,9 +2465,7 @@
         LOConst const11 = new LOConst(innerPlan1, genNewOperatorKey(), "26F") ;
         const11.setType(DataType.CHARARRAY);
         LOSubtract subtract11 = new LOSubtract(innerPlan1,
-                                                genNewOperatorKey(),
-                                                project11,
-                                                const11) ;
+                                                genNewOperatorKey()) ;
 
         innerPlan1.add(project11) ;
         innerPlan1.add(const11) ;
@@ -2496,14 +2476,12 @@
 
         // Create expression inner plan #2
         LogicalPlan innerPlan2 = new LogicalPlan() ;
-        LOProject project21 = new LOProject(innerPlan1, genNewOperatorKey(), 
load1, 0) ;
+        LOProject project21 = new LOProject(innerPlan2, genNewOperatorKey(), 
load1, 0) ;
         project21.setSentinel(true);
-        LOProject project22 = new LOProject(innerPlan1, genNewOperatorKey(), 
load1, 1) ;
+        LOProject project22 = new LOProject(innerPlan2, genNewOperatorKey(), 
load1, 1) ;
         project21.setSentinel(true);
-        LOAdd add21 = new LOAdd(innerPlan1,
-                                genNewOperatorKey(),
-                                project21,
-                                project22) ;
+        LOAdd add21 = new LOAdd(innerPlan2,
+                                genNewOperatorKey()) ;
 
         innerPlan2.add(project21) ;
         innerPlan2.add(project22) ;
@@ -2699,14 +2677,12 @@
 
         // Create expression inner plan #1 of input #2
         LogicalPlan innerPlan2 = new LogicalPlan() ;
-        LOProject project21 = new LOProject(innerPlan1, genNewOperatorKey(), 
load1, 0) ;
+        LOProject project21 = new LOProject(innerPlan2, genNewOperatorKey(), 
load1, 0) ;
         project21.setSentinel(true);
-        LOProject project22 = new LOProject(innerPlan1, genNewOperatorKey(), 
load1, 1) ;
+        LOProject project22 = new LOProject(innerPlan2, genNewOperatorKey(), 
load1, 1) ;
         project21.setSentinel(true);
-        LOAdd add21 = new LOAdd(innerPlan1,
-                                genNewOperatorKey(),
-                                project21,
-                                project22) ;
+        LOAdd add21 = new LOAdd(innerPlan2,
+                                genNewOperatorKey()) ;
 
         innerPlan2.add(project21) ;
         innerPlan2.add(project22) ;
@@ -5557,6 +5533,106 @@
 
     }
 
+    @Test
+    public void testBincond() throws Throwable {
+        planTester.buildPlan("a = load 'a' as (name: chararray, age: int, gpa: 
float);") ;
+        planTester.buildPlan("b = group a by name;") ;
+        LogicalPlan plan = planTester.buildPlan("c = foreach b generate 
(IsEmpty(a) ? " + TestBinCondFieldSchema.class.getName() + "(*): a) ;") ;
+    
+        // validate
+        CompilationMessageCollector collector = new 
CompilationMessageCollector() ;
+        TypeCheckingValidator typeValidator = new TypeCheckingValidator() ;
+        
+        typeValidator.validate(plan, collector) ;
+    
+        printMessageCollector(collector) ;
+        printTypeGraph(plan) ;
+        planTester.printPlan(plan, 
TypeCheckingTestUtil.getCurrentMethodName());
+    
+        if (collector.hasError()) {
+            throw new AssertionError("Did not expect an error") ;
+        }
+    
+    
+        LOForEach foreach = (LOForEach)plan.getLeaves().get(0);
+        
+        Schema.FieldSchema charFs = new FieldSchema(null, DataType.CHARARRAY);
+        Schema.FieldSchema intFs = new FieldSchema(null, DataType.INTEGER);
+        Schema.FieldSchema floatFs = new FieldSchema(null, DataType.FLOAT);
+        Schema bagSchema = new Schema();
+        bagSchema.add(charFs);
+        bagSchema.add(intFs);
+        bagSchema.add(floatFs);
+        Schema.FieldSchema bagFs = null;
+        try {
+            bagFs = new Schema.FieldSchema(null, bagSchema, DataType.BAG);
+        } catch (FrontendException fee) {
+            fail("Did not expect an error");
+        }
+        
+        Schema expectedSchema = new Schema(bagFs);
+        
+        assertTrue(Schema.equals(foreach.getSchema(), expectedSchema, false, 
true));
+    
+    }
+
+    @Test
+    public void testBinCondForOuterJoin() throws Throwable {
+        planTester.buildPlan("a = LOAD 'student_data' AS (name: chararray, 
age: int, gpa: float);");
+        planTester.buildPlan("b = LOAD 'voter_data' AS (name: chararray, age: 
int, registration: chararray, contributions: float);");
+        planTester.buildPlan("c = COGROUP a BY name, b BY name;");
+        LogicalPlan plan = planTester.buildPlan("d = FOREACH c GENERATE group, 
flatten((not IsEmpty(a) ? a : (bag{tuple(chararray, int, float)}){(null, null, 
null)})), flatten((not IsEmpty(b) ? b : (bag{tuple(chararray, int, chararray, 
float)}){(null,null,null, null)}));");
+    
+        // validate
+        CompilationMessageCollector collector = new 
CompilationMessageCollector() ;
+        TypeCheckingValidator typeValidator = new TypeCheckingValidator() ;
+        typeValidator.validate(plan, collector) ;
+    
+        printMessageCollector(collector) ;
+        printTypeGraph(plan) ;
+        planTester.printPlan(plan, 
TypeCheckingTestUtil.getCurrentMethodName());
+    
+        if (collector.hasError()) {
+            throw new AssertionError("Expect no  error") ;
+        }
+    
+    
+        LOForEach foreach = (LOForEach)plan.getLeaves().get(0);
+        String expectedSchemaString = "mygroup: chararray,A::name: 
chararray,A::age: int,A::gpa: float,B::name: chararray,B::age: 
int,B::registration: chararray,B::contributions: float";
+        Schema expectedSchema = Util.getSchemaFromString(expectedSchemaString);
+        assertTrue(Schema.equals(foreach.getSchema(), expectedSchema, false, 
true));
+    
+    }
+
+    /*
+     * A test UDF that does not data processing but implements the 
getOutputSchema for
+     * checking the type checker
+     */
+    public static class TestBinCondFieldSchema extends EvalFunc<DataBag> {
+        //no-op exec method
+        public DataBag exec(Tuple input) {
+            return null;
+        }
+        
+        @Override
+        public Schema outputSchema(Schema input) {
+            Schema.FieldSchema charFs = new FieldSchema(null, 
DataType.CHARARRAY);
+            Schema.FieldSchema intFs = new FieldSchema(null, DataType.INTEGER);
+            Schema.FieldSchema floatFs = new FieldSchema(null, DataType.FLOAT);
+            Schema bagSchema = new Schema();
+            bagSchema.add(charFs);
+            bagSchema.add(intFs);
+            bagSchema.add(floatFs);
+            Schema.FieldSchema bagFs;
+            try {
+                bagFs = new Schema.FieldSchema(null, bagSchema, DataType.BAG);
+            } catch (FrontendException fee) {
+                return null;
+            }
+            return new Schema(bagFs);
+        }
+    }
+    
     ////////////////////////// Helper //////////////////////////////////
     private void checkForEachCasting(LOForEach foreach, int idx, boolean 
isCast, byte toType) {
         LogicalPlan plan = foreach.getForEachPlans().get(idx) ;

Modified: 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestTypeCheckingValidatorNoSchema.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestTypeCheckingValidatorNoSchema.java?rev=758107&r1=758106&r2=758107&view=diff
==============================================================================
--- 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestTypeCheckingValidatorNoSchema.java
 (original)
+++ 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestTypeCheckingValidatorNoSchema.java
 Wed Mar 25 00:42:40 2009
@@ -147,7 +147,7 @@
         project11.setSentinel(true);
         LOProject project12 = new LOProject(innerPlan1, genNewOperatorKey(), 
load1, 1) ;
         project11.setSentinel(true);
-        LONotEqual notequal1 = new LONotEqual(innerPlan1, genNewOperatorKey(), 
project11, project12) ;
+        LONotEqual notequal1 = new LONotEqual(innerPlan1, genNewOperatorKey()) 
;
 
         innerPlan1.add(project11) ;
         innerPlan1.add(project12) ;
@@ -163,9 +163,7 @@
         LOConst const21 = new LOConst(innerPlan2, genNewOperatorKey(), 26) ;
         const21.setType(DataType.LONG);
         LOLesserThanEqual lesser21 = new LOLesserThanEqual(innerPlan2,
-                                                           genNewOperatorKey(),
-                                                           project21,
-                                                           const21) ;
+                                                           
genNewOperatorKey()) ;
 
         innerPlan2.add(project21) ;
         innerPlan2.add(const21) ;
@@ -246,7 +244,7 @@
         project11.setSentinel(true);
         LOProject project12 = new LOProject(innerPlan1, genNewOperatorKey(), 
load1, 1) ;
         project11.setSentinel(true);
-        LONotEqual notequal1 = new LONotEqual(innerPlan1, genNewOperatorKey(), 
project11, project12) ;
+        LONotEqual notequal1 = new LONotEqual(innerPlan1, genNewOperatorKey()) 
;
 
         innerPlan1.add(project11) ;
         innerPlan1.add(project12) ;
@@ -261,10 +259,10 @@
         project21.setSentinel(true);
         LOConst const21 = new LOConst(innerPlan2, genNewOperatorKey(), 26) ;
         const21.setType(DataType.LONG);
-        LOAdd add21 = new LOAdd(innerPlan2, genNewOperatorKey(), project21, 
const21) ;
+        LOAdd add21 = new LOAdd(innerPlan2, genNewOperatorKey()) ;
         LOConst const22 = new LOConst(innerPlan2, genNewOperatorKey(), "hoho") 
;
         const22.setType(DataType.CHARARRAY);
-        LOSubtract subtract21 = new LOSubtract(innerPlan2, 
genNewOperatorKey(), const22, add21) ;
+        LOSubtract subtract21 = new LOSubtract(innerPlan2, 
genNewOperatorKey()) ;
 
         innerPlan2.add(project21) ;
         innerPlan2.add(const21) ;
@@ -376,7 +374,7 @@
         project11.setSentinel(true);
         LOProject project12 = new LOProject(innerPlan1, genNewOperatorKey(), 
load1, 1) ;
         project11.setSentinel(true);
-        LOMultiply mul1 = new LOMultiply(innerPlan1, genNewOperatorKey(), 
project11, project12) ;
+        LOMultiply mul1 = new LOMultiply(innerPlan1, genNewOperatorKey()) ;
 
         innerPlan1.add(project11) ;
         innerPlan1.add(project12) ;
@@ -391,7 +389,7 @@
         project21.setSentinel(true);
         LOConst const21 = new LOConst(innerPlan2, genNewOperatorKey(), 26) ;
         const21.setType(DataType.LONG);
-        LOMod mod21 = new LOMod(innerPlan2, genNewOperatorKey(), project21, 
const21) ;
+        LOMod mod21 = new LOMod(innerPlan2, genNewOperatorKey()) ;
 
         innerPlan2.add(project21) ;
         innerPlan2.add(const21) ;
@@ -456,14 +454,12 @@
         project1.setSentinel(true);
         LOProject project2 = new LOProject(innerPlan, genNewOperatorKey(), 
load1, 1) ;
         project2.setSentinel(true);
-        LOAdd add1 = new LOAdd(innerPlan, genNewOperatorKey(), project1, 
project2) ;
+        LOAdd add1 = new LOAdd(innerPlan, genNewOperatorKey()) ;
         LOConst const1  = new LOConst(innerPlan, genNewOperatorKey(), 10) ;
         const1.setType(DataType.LONG);
 
         LOGreaterThan gt1 = new LOGreaterThan(innerPlan,
-                                              genNewOperatorKey(),
-                                              add1,
-                                              const1) ;
+                                              genNewOperatorKey()) ;
 
         innerPlan.add(project1) ;
         innerPlan.add(project2) ;
@@ -522,14 +518,12 @@
         project1.setSentinel(true);
         LOProject project2 = new LOProject(innerPlan, genNewOperatorKey(), 
load1, 1) ;
         project2.setSentinel(true);
-        LOAdd add1 = new LOAdd(innerPlan, genNewOperatorKey(), project1, 
project2) ;
+        LOAdd add1 = new LOAdd(innerPlan, genNewOperatorKey()) ;
         LOConst const1  = new LOConst(innerPlan, genNewOperatorKey(), "10") ;
         const1.setType(DataType.CHARARRAY);
 
         LOGreaterThan gt1 = new LOGreaterThan(innerPlan,
-                                              genNewOperatorKey(),
-                                              add1,
-                                              const1) ;
+                                              genNewOperatorKey()) ;
 
         innerPlan.add(project1) ;
         innerPlan.add(project2) ;
@@ -684,9 +678,7 @@
         LOConst const111 = new LOConst(innerPlan11, genNewOperatorKey(), 26F) ;
         const111.setType(DataType.FLOAT);
         LOSubtract subtract111 = new LOSubtract(innerPlan11,
-                                                genNewOperatorKey(),
-                                                project111,
-                                                const111) ;
+                                                genNewOperatorKey()) ;
 
         innerPlan11.add(project111) ;
         innerPlan11.add(const111) ;
@@ -702,9 +694,7 @@
         LOConst const121 = new LOConst(innerPlan12, genNewOperatorKey(), 26) ;
         const121.setType(DataType.INTEGER);
         LOSubtract subtract121 = new LOSubtract(innerPlan12,
-                                                genNewOperatorKey(),
-                                                project121,
-                                                const121) ;
+                                                genNewOperatorKey()) ;
 
         innerPlan12.add(project121) ;
         innerPlan12.add(const121) ;
@@ -790,9 +780,7 @@
         LOConst const111 = new LOConst(innerPlan11, genNewOperatorKey(), 26F) ;
         const111.setType(DataType.FLOAT);
         LOSubtract subtract111 = new LOSubtract(innerPlan11,
-                                                genNewOperatorKey(),
-                                                project111,
-                                                const111) ;
+                                                genNewOperatorKey()) ;
 
         innerPlan11.add(project111) ;
         innerPlan11.add(const111) ;
@@ -809,9 +797,7 @@
         project212.setSentinel(true);
 
         LOAdd add211 = new LOAdd(innerPlan21,
-                                 genNewOperatorKey(),
-                                 project211,
-                                 project212) ;
+                                 genNewOperatorKey()) ;
 
         innerPlan21.add(project211) ;
         innerPlan21.add(project212) ;
@@ -828,9 +814,7 @@
         LOConst const121 = new LOConst(innerPlan12, genNewOperatorKey(), 26) ;
         const121.setType(DataType.INTEGER);
         LOSubtract subtract121 = new LOSubtract(innerPlan12,
-                                                genNewOperatorKey(),
-                                                project121,
-                                                const121) ;
+                                                genNewOperatorKey()) ;
 
         innerPlan12.add(project121) ;
         innerPlan12.add(const121) ;
@@ -928,9 +912,7 @@
         LOConst const11 = new LOConst(innerPlan1, genNewOperatorKey(), 26F) ;
         const11.setType(DataType.FLOAT);
         LOSubtract subtract11 = new LOSubtract(innerPlan1,
-                                                genNewOperatorKey(),
-                                                project11,
-                                                const11) ;
+                                                genNewOperatorKey()) ;
 
         innerPlan1.add(project11) ;
         innerPlan1.add(const11) ;
@@ -941,14 +923,12 @@
 
         // Create expression inner plan #2
         LogicalPlan innerPlan2 = new LogicalPlan() ;
-        LOProject project21 = new LOProject(innerPlan1, genNewOperatorKey(), 
load1, 0) ;
+        LOProject project21 = new LOProject(innerPlan2, genNewOperatorKey(), 
load1, 0) ;
         project21.setSentinel(true);
-        LOProject project22 = new LOProject(innerPlan1, genNewOperatorKey(), 
load1, 1) ;
+        LOProject project22 = new LOProject(innerPlan2, genNewOperatorKey(), 
load1, 1) ;
         project21.setSentinel(true);
-        LOAdd add21 = new LOAdd(innerPlan1,
-                                genNewOperatorKey(),
-                                project21,
-                                project22) ;
+        LOAdd add21 = new LOAdd(innerPlan2,
+                                genNewOperatorKey()) ;
 
         innerPlan2.add(project21) ;
         innerPlan2.add(project22) ;

Modified: hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestUnion.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestUnion.java?rev=758107&r1=758106&r2=758107&view=diff
==============================================================================
--- hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestUnion.java 
(original)
+++ hadoop/pig/branches/multiquery/test/org/apache/pig/test/TestUnion.java Wed 
Mar 25 00:42:40 2009
@@ -216,4 +216,38 @@
         assertFalse(it.hasNext());
     }
     
+    // Test schema merge in union when one of the fields is a bag
+    @Test
+    public void testSchemaMergeWithBag() throws Exception {
+        Util.createInputFile(cluster, "input1.txt", new String[] {"dummy"});
+        Util.createInputFile(cluster, "input2.txt", new String[] {"dummy"});
+        PigServer pig = new PigServer(ExecType.MAPREDUCE, 
cluster.getProperties());
+        Util.registerQuery(pig, "a = load 'input1.txt' ;" +
+                       "b = load 'input2.txt';" +
+                       "c = foreach a generate 1, {(1, 'str1')};" +
+                       "d = foreach b generate 2, {(2, 'str2')};" +
+                       "e = union c,d");
+        Iterator<Tuple> it = pig.openIterator("e");
+        Object[] expected = new Object[] { Util.getPigConstant("(1, {(1, 
'str1')})"),
+                Util.getPigConstant("(2, {(2, 'str2')})")};
+        Object[] results = new Object[2];
+        int i = 0;
+        while(it.hasNext()) {
+            if(i == 2) {
+                fail("Got more tuples than expected!");
+            }
+            Tuple t = it.next();
+            if(t.get(0).equals(1)) {
+                // this is the first tuple
+                results[0] = t;
+            } else {
+                results[1] = t;
+            }
+            i++;
+        }
+        for (int j = 0; j < expected.length; j++) {
+            assertTrue(expected[j].equals(results[j]));
+        }
+    }
+    
 }

Modified: hadoop/pig/branches/multiquery/test/org/apache/pig/test/Util.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/multiquery/test/org/apache/pig/test/Util.java?rev=758107&r1=758106&r2=758107&view=diff
==============================================================================
--- hadoop/pig/branches/multiquery/test/org/apache/pig/test/Util.java (original)
+++ hadoop/pig/branches/multiquery/test/org/apache/pig/test/Util.java Wed Mar 
25 00:42:40 2009
@@ -32,6 +32,7 @@
 import org.apache.hadoop.fs.FSDataOutputStream;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
+import org.apache.pig.PigServer;
 import org.apache.pig.backend.executionengine.ExecException;
 import org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MRCompiler;
 import 
org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.plans.MROperPlan;
@@ -310,6 +311,12 @@
         Schema.setSchemaDefaultType(schema, defaultType);
         return schema;
     }
+    
+    static Object getPigConstant(String pigConstantAsString) throws 
ParseException {
+        ByteArrayInputStream stream = new 
ByteArrayInputStream(pigConstantAsString.getBytes()) ;
+        QueryParser queryParser = new QueryParser(stream) ;
+        return queryParser.Datum();
+    }
 
     public static File createFile(String[] data) throws Exception{
         File f = File.createTempFile("tmp", "");
@@ -333,4 +340,11 @@
         comp.compile();
         return comp.getMRPlan();       
     }
+    
+    public static void registerQuery(PigServer pigServer, String query) throws 
IOException {
+        String[] queryLines = query.split(";");
+        for (String line : queryLines) {
+            pigServer.registerQuery(line + ";");
+        }
+    }
 }

Modified: 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/data/GoldenFiles/MRC15.gld
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/multiquery/test/org/apache/pig/test/data/GoldenFiles/MRC15.gld?rev=758107&r1=758106&r2=758107&view=diff
==============================================================================
--- 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/data/GoldenFiles/MRC15.gld
 (original)
+++ 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/data/GoldenFiles/MRC15.gld
 Wed Mar 25 00:42:40 2009
@@ -1,4 +1,4 @@
-MapReduce(1,GFCross) - -156:
+MapReduce(1,GFCross) - -153:
 |   Store(DummyFil:DummyLdr) - --5683415113785058706
 |   |
 |   |---New For Each(false)[tuple] - --8002381389674382470
@@ -10,10 +10,10 @@
 |       |---Package[tuple]{Unknown} - --885269774183211482
 |   Local Rearrange[tuple]{Unknown}(false) - --776319888013965510
 |   |
-|   
|---Load(/tmp/temp-1456742965/tmp-586682361:org.apache.pig.builtin.BinStorage) 
- -155
+|   
|---Load(/tmp/temp-1456742965/tmp-586682361:org.apache.pig.builtin.BinStorage) 
- -152
 |
-|---MapReduce(1,AVG) - -153:
-    |   
Store(/tmp/temp-1456742965/tmp-586682361:org.apache.pig.builtin.BinStorage) - 
-154
+|---MapReduce(1,AVG) - -150:
+    |   
Store(/tmp/temp-1456742965/tmp-586682361:org.apache.pig.builtin.BinStorage) - 
-151
     |   |
     |   |---New For Each(false)[tuple] - -7965768498188214494
     |       |   |
@@ -24,14 +24,14 @@
     |       |---Package[tuple]{Unknown} - --7335024873119453444
     |   Local Rearrange[tuple]{Unknown}(false) - -4589138876054328603
     |   |
-    |   
|---Load(/tmp/temp-1456742965/tmp-26634357:org.apache.pig.builtin.BinStorage) - 
-152
+    |   
|---Load(/tmp/temp-1456742965/tmp-26634357:org.apache.pig.builtin.BinStorage) - 
-149
     |
-    |---MapReduce(20,TestMRCompiler$WeirdComparator,FindQuantiles,SUM) - -145:
-        |   
Store(/tmp/temp-1456742965/tmp-26634357:org.apache.pig.builtin.BinStorage) - 
-151
+    |---MapReduce(20,TestMRCompiler$WeirdComparator,COUNT,SUM) - -142:
+        |   
Store(/tmp/temp-1456742965/tmp-26634357:org.apache.pig.builtin.BinStorage) - 
-148
         |   |
         |   |---New For Each(false,false)[tuple] - --4248200967728536480
         |       |   |
-        |       |   
POUserFunc(org.apache.pig.impl.builtin.FindQuantiles)[tuple] - 
-8767305735755351861
+        |       |   POUserFunc(org.apache.pig.builtin.COUNT)[tuple] - 
-8767305735755351861
         |       |   |
         |       |   |---Project[tuple][*] - --5908426805312852480
         |       |   |
@@ -39,37 +39,31 @@
         |       |   |
         |       |   |---Project[tuple][*] - --1848504978980807369
         |       |
-        |       |---New For Each(true)[tuple] - -150
+        |       |---New For Each(true)[tuple] - -147
         |           |   |
-        |           |   Project[bag][1] - -149
+        |           |   Project[bag][1] - -146
         |           |
-        |           |---Package[tuple]{tuple} - -148
-        |   Local Rearrange[tuple]{tuple}(false) - -147
+        |           |---Package[tuple]{tuple} - -145
+        |   Local Rearrange[tuple]{tuple}(false) - -144
         |   |   |
-        |   |   Project[tuple][*] - -146
+        |   |   Project[tuple][*] - -143
         |   |
-        |   
|---Load(/tmp/temp-1456742965/tmp-1456742965:org.apache.pig.builtin.BinStorage) 
- -144
+        |   
|---Load(/tmp/temp-1456742965/tmp-1456742965:org.apache.pig.builtin.BinStorage) 
- -141
         |
-        |---MapReduce(1,FindQuantiles,TestMRCompiler$WeirdComparator) - -130:
-            |   
Store(/tmp/temp-1456742965/tmp2077335416:org.apache.pig.builtin.BinStorage) - 
-143
+        |---MapReduce(1,TestMRCompiler$WeirdComparator) - -130:
+            |   
Store(/tmp/temp-1456742965/tmp2077335416:org.apache.pig.builtin.BinStorage) - 
-140
             |   |
-            |   |---New For Each(false)[tuple] - -142
+            |   |---New For Each(false,false)[tuple] - -139
             |       |   |
-            |       |   
POUserFunc(org.apache.pig.impl.builtin.FindQuantiles)[tuple] - -141
+            |       |   Constant(20) - -138
             |       |   |
-            |       |   |---Project[tuple][*] - -140
+            |       |   
POSort[bag](org.apache.pig.test.TestMRCompiler$WeirdComparator) - 
--8479692259657755370
+            |       |   |   |
+            |       |   |   Project[tuple][*] - -137
+            |       |   |
+            |       |   |---Project[tuple][1] - -136
             |       |
-            |       |---New For Each(false,false)[tuple] - -139
-            |           |   |
-            |           |   Constant(20) - -138
-            |           |   |
-            |           |   
POSort[bag](org.apache.pig.test.TestMRCompiler$WeirdComparator) - 
--8479692259657755370
-            |           |   |   |
-            |           |   |   Project[tuple][*] - -137
-            |           |   |
-            |           |   |---Project[tuple][1] - -136
-            |           |
-            |           |---Package[tuple]{chararray} - -135
+            |       |---Package[tuple]{chararray} - -135
             |   Local Rearrange[tuple]{chararray}(false) - -134
             |   |   |
             |   |   Constant(all) - -133

Modified: 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/data/GoldenFiles/MRC16.gld
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/multiquery/test/org/apache/pig/test/data/GoldenFiles/MRC16.gld?rev=758107&r1=758106&r2=758107&view=diff
==============================================================================
--- 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/data/GoldenFiles/MRC16.gld
 (original)
+++ 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/data/GoldenFiles/MRC16.gld
 Wed Mar 25 00:42:40 2009
@@ -1,36 +1,36 @@
-MapReduce(-1) - -170:
+MapReduce(-1) - -167:
 |   Store(DummyFil:DummyLdr) - -7973970339130605847
 |   |
-|   |---New For Each(true)[bag] - -173
+|   |---New For Each(true)[bag] - -170
 |       |   |
-|       |   Project[tuple][0] - -172
+|       |   Project[tuple][0] - -169
 |       |
-|       |---Package[tuple]{tuple} - -171
-|   Local Rearrange[tuple]{tuple}(true) - -167
+|       |---Package[tuple]{tuple} - -168
+|   Local Rearrange[tuple]{tuple}(true) - -164
 |   |   |
-|   |   Project[tuple][*] - -166
+|   |   Project[tuple][*] - -163
 |   |
-|   
|---Load(/tmp/temp-1456742965/tmp2077335416:org.apache.pig.builtin.BinStorage) 
- -169
+|   
|---Load(/tmp/temp-1456742965/tmp2077335416:org.apache.pig.builtin.BinStorage) 
- -166
 |
-|---MapReduce(-1) - -165:
-    |   
Store(/tmp/temp-1456742965/tmp2077335416:org.apache.pig.builtin.BinStorage) - 
-168
+|---MapReduce(-1) - -162:
+    |   
Store(/tmp/temp-1456742965/tmp2077335416:org.apache.pig.builtin.BinStorage) - 
-165
     |   |
     |   |---Package[tuple]{Unknown} - -2082992246427879202
     |   Local Rearrange[tuple]{Unknown}(false) - --3148893660811981376
     |   |
-    |   
|---Load(/tmp/temp-1456742965/tmp-1456742965:org.apache.pig.builtin.BinStorage) 
- -164
+    |   
|---Load(/tmp/temp-1456742965/tmp-1456742965:org.apache.pig.builtin.BinStorage) 
- -161
     |
-    |---MapReduce(-1) - -157:
-        |   
Store(/tmp/temp-1456742965/tmp-1456742965:org.apache.pig.builtin.BinStorage) - 
-163
+    |---MapReduce(-1) - -154:
+        |   
Store(/tmp/temp-1456742965/tmp-1456742965:org.apache.pig.builtin.BinStorage) - 
-160
         |   |
-        |   |---New For Each(true)[bag] - -162
+        |   |---New For Each(true)[bag] - -159
         |       |   |
-        |       |   Project[tuple][0] - -161
+        |       |   Project[tuple][0] - -158
         |       |
-        |       |---Package[tuple]{tuple} - -160
-        |   Local Rearrange[tuple]{tuple}(true) - -159
+        |       |---Package[tuple]{tuple} - -157
+        |   Local Rearrange[tuple]{tuple}(true) - -156
         |   |   |
-        |   |   Project[tuple][*] - -158
+        |   |   Project[tuple][*] - -155
         |   |
         |   |---Filter[tuple] - --7926255547935388282
         |       |

Modified: 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/data/GoldenFiles/MRC17.gld
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/multiquery/test/org/apache/pig/test/data/GoldenFiles/MRC17.gld?rev=758107&r1=758106&r2=758107&view=diff
==============================================================================
--- 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/data/GoldenFiles/MRC17.gld
 (original)
+++ 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/data/GoldenFiles/MRC17.gld
 Wed Mar 25 00:42:40 2009
@@ -1,17 +1,17 @@
-MapReduce(1) - -174:
+MapReduce(1) - -171:
 |   Store(DummyFil:DummyLdr) - -7856319821130535798
 |   |
-|   |---Limit - -180
+|   |---Limit - -177
 |       |
-|       |---New For Each(true)[bag] - -179
+|       |---New For Each(true)[bag] - -176
 |           |   |
-|           |   Project[tuple][1] - -178
+|           |   Project[tuple][1] - -175
 |           |
-|           |---Package[tuple]{tuple} - -177
-|   Local Rearrange[tuple]{tuple}(false) - -176
+|           |---Package[tuple]{tuple} - -174
+|   Local Rearrange[tuple]{tuple}(false) - -173
 |   |   |
-|   |   Project[tuple][*] - -175
+|   |   Project[tuple][*] - -172
 |   |
 |   |---Limit - -7398260302074824818
 |       |
-|       |---Load(DummyFil:DummyLdr) - -4188863770717253580
+|       |---Load(DummyFil:DummyLdr) - -4188863770717253580
\ No newline at end of file

Modified: 
hadoop/pig/branches/multiquery/test/org/apache/pig/test/utils/GenPhyOp.java
URL: 
http://svn.apache.org/viewvc/hadoop/pig/branches/multiquery/test/org/apache/pig/test/utils/GenPhyOp.java?rev=758107&r1=758106&r2=758107&view=diff
==============================================================================
--- hadoop/pig/branches/multiquery/test/org/apache/pig/test/utils/GenPhyOp.java 
(original)
+++ hadoop/pig/branches/multiquery/test/org/apache/pig/test/utils/GenPhyOp.java 
Wed Mar 25 00:42:40 2009
@@ -30,7 +30,6 @@
 import org.apache.pig.data.DataType;
 import org.apache.pig.data.Tuple;
 import org.apache.pig.impl.PigContext;
-import org.apache.pig.impl.builtin.FindQuantiles;
 import org.apache.pig.impl.io.FileLocalizer;
 import org.apache.pig.impl.io.FileSpec;
 import org.apache.pig.impl.plan.OperatorKey;


Reply via email to