Author: olga Date: Mon Sep 22 20:34:10 2008 New Revision: 698082 URL: http://svn.apache.org/viewvc?rev=698082&view=rev Log: PIG-380: invalid schema for databag constant
Modified: incubator/pig/branches/types/CHANGES.txt incubator/pig/branches/types/src/org/apache/pig/data/DataType.java incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOConst.java incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/validators/TypeCheckingVisitor.java incubator/pig/branches/types/test/org/apache/pig/test/TestGrunt.java incubator/pig/branches/types/test/org/apache/pig/test/TestLogicalPlanBuilder.java incubator/pig/branches/types/test/org/apache/pig/test/TestTypeCheckingValidator.java incubator/pig/branches/types/test/org/apache/pig/test/TestTypeCheckingValidatorNoSchema.java Modified: incubator/pig/branches/types/CHANGES.txt URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/CHANGES.txt?rev=698082&r1=698081&r2=698082&view=diff ============================================================================== --- incubator/pig/branches/types/CHANGES.txt (original) +++ incubator/pig/branches/types/CHANGES.txt Mon Sep 22 20:34:10 2008 @@ -239,3 +239,5 @@ PIG-447: improved error messages (pradeepk via olgan) PIG-448: explain broken after load with types (pradeepk via olgan) + + PIG-380: invalid schema for databag constant (sms via olgan) Modified: incubator/pig/branches/types/src/org/apache/pig/data/DataType.java URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/data/DataType.java?rev=698082&r1=698081&r2=698082&view=diff ============================================================================== --- incubator/pig/branches/types/src/org/apache/pig/data/DataType.java (original) +++ incubator/pig/branches/types/src/org/apache/pig/data/DataType.java Mon Sep 22 20:34:10 2008 @@ -23,6 +23,7 @@ import java.util.Iterator; import java.util.Map; import java.util.TreeMap; +import java.util.ArrayList; import org.apache.hadoop.io.BooleanWritable; import org.apache.hadoop.io.BytesWritable; @@ -32,6 +33,9 @@ import org.apache.hadoop.io.Text; import org.apache.hadoop.io.WritableComparable; import org.apache.pig.backend.executionengine.ExecException; +import org.apache.pig.impl.logicalLayer.schema.Schema; +import org.apache.pig.impl.logicalLayer.schema.SchemaMergeException; +import org.apache.pig.impl.logicalLayer.FrontendException; /** * A class of static final values used to encode data type and a number of @@ -706,4 +710,94 @@ return true; } + /*** + * Determine the field schema of an object + * @param o the object whose field schema is to be determined + * @return the field schema corresponding to the object + * @throws ExecException,FrontendException,SchemaMergeException + */ + public static Schema.FieldSchema determineFieldSchema(Object o) + throws ExecException, FrontendException, SchemaMergeException { + byte dt = findType(o); + + switch (dt) { + case NULL: + return new Schema.FieldSchema(null, NULL); + + case BOOLEAN: + return new Schema.FieldSchema(null, BOOLEAN); + + case INTEGER: + return new Schema.FieldSchema(null, INTEGER); + + case LONG: + return new Schema.FieldSchema(null, LONG); + + case FLOAT: + return new Schema.FieldSchema(null, FLOAT); + + case DOUBLE: + return new Schema.FieldSchema(null, DOUBLE); + + case BYTEARRAY: + return new Schema.FieldSchema(null, BYTEARRAY); + + case CHARARRAY: + return new Schema.FieldSchema(null, CHARARRAY); + + case MAP: + return new Schema.FieldSchema(null, MAP); + + case TUPLE: { + Tuple t = (Tuple)o; + long tupleSize = t.size(); + Schema schema = null; + + if(tupleSize != 0) { + schema = new Schema(); + for(int i = 0; i < t.size(); ++i) { + schema.add(determineFieldSchema(t.get(i))); + } + } + return new Schema.FieldSchema(null, schema, TUPLE); + } + + case BAG: { + DataBag b = (DataBag)o; + long bagSize = b.size(); + Schema schema = null; + + if(bagSize != 0) { + Iterator<Tuple> it = b.iterator(); + ArrayList<Schema> schemas = new ArrayList<Schema>(); + while(it.hasNext()) { + schemas.add(determineFieldSchema((Object)it.next()).schema); + } + schema = schemas.get(0); + if(null == schema) { + Schema.FieldSchema tupleFs = new Schema.FieldSchema(null, null, TUPLE); + Schema bagSchema = new Schema(tupleFs); + return new Schema.FieldSchema(null, null, BAG); + } + int schemaSize = schema.size(); + + for(int i = 1; i < schemas.size(); ++i) { + Schema currSchema = schemas.get(i); + if((null == currSchema) || (currSchema.size() != schemaSize)) { + Schema.FieldSchema tupleFs = new Schema.FieldSchema(null, null, TUPLE); + Schema bagSchema = new Schema(tupleFs); + return new Schema.FieldSchema(null, bagSchema, BAG); + } + schema = Schema.mergeSchema(schema, currSchema, false, false, false); + } + } + Schema.FieldSchema tupleFs = new Schema.FieldSchema(null, schema, TUPLE); + Schema bagSchema = new Schema(tupleFs); + return new Schema.FieldSchema(null, bagSchema, BAG); + } + default: { + throw new ExecException("Cannot determine field schema for " + o); + } + } + } } Modified: incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOConst.java URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOConst.java?rev=698082&r1=698081&r2=698082&view=diff ============================================================================== --- incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOConst.java (original) +++ incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/LOConst.java Mon Sep 22 20:34:10 2008 @@ -60,11 +60,17 @@ } @Override - public Schema.FieldSchema getFieldSchema() { + public Schema.FieldSchema getFieldSchema() throws FrontendException { if(!mIsFieldSchemaComputed) { - if(DataType.isAtomic(mType)) { - mFieldSchema = new Schema.FieldSchema(null, mType); + try { + mFieldSchema = DataType.determineFieldSchema(mValue); mIsFieldSchemaComputed = true; + } catch (Exception e) { + mFieldSchema = null; + mIsFieldSchemaComputed = false; + System.err.println("LOConst: " + e.getMessage()); + e.printStackTrace(); + throw new FrontendException(e.getMessage()); } } return mFieldSchema; Modified: incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt?rev=698082&r1=698081&r2=698082&view=diff ============================================================================== --- incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt (original) +++ incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt Mon Sep 22 20:34:10 2008 @@ -2807,9 +2807,9 @@ fs = FieldSchema() {log.debug("Adding " + fs.alias + " to the list: " + list);list.add(fs);} ( "," fs = FieldSchema() {log.debug("Adding " + fs.alias + " to the list: " + list);list.add(fs);})* ) -| {} +| {} {list = null;} ) - {log.debug("Printing Aliases in TupleSchema"); list.printAliases();log.trace("Exiting TupleSchema");return list;} + {log.debug("Printing list in TupleSchema" + list); log.trace("Exiting TupleSchema");return list;} } @@ -2927,9 +2927,9 @@ fs = TypeFieldSchema() {log.debug("Adding " + fs.alias + " to the list: " + list);list.add(fs);} ( "," fs = TypeFieldSchema() {log.debug("Adding " + fs.alias + " to the list: " + list);list.add(fs);})* ) -| {} +| {} {list = null;} ) - {log.debug("Printing Aliases in TypeTupleSchema"); list.printAliases();log.trace("Exiting TypeTupleSchema");return list;} + {log.debug("Printing list in TypeTupleSchema: " + list); log.trace("Exiting TypeTupleSchema");return list;} } // These the simple non-terminals that are shared across many @@ -3050,7 +3050,6 @@ obj = Datum() {log.debug("Adding " + obj + " to the list: " + objList); objList.add(obj);} ( LOOKAHEAD(2) "," obj = Datum() {log.debug("Adding " + obj + " to the list: " + objList); objList.add(obj);})* ) - | {} ) ) { Modified: incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/validators/TypeCheckingVisitor.java URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/validators/TypeCheckingVisitor.java?rev=698082&r1=698081&r2=698082&view=diff ============================================================================== --- incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/validators/TypeCheckingVisitor.java (original) +++ incubator/pig/branches/types/src/org/apache/pig/impl/logicalLayer/validators/TypeCheckingVisitor.java Mon Sep 22 20:34:10 2008 @@ -944,6 +944,13 @@ insertRightCastForBinaryOp(binOp, DataType.LONG) ; } } + else if ( (rhsType == DataType.LONG) && + ( (lhsType == DataType.INTEGER) || (lhsType == DataType.LONG) ) + ) { + if (lhsType == DataType.INTEGER) { + insertLeftCastForBinaryOp(binOp, DataType.LONG) ; + } + } else if ( (lhsType == DataType.BYTEARRAY) && ( (rhsType == DataType.INTEGER) || (rhsType == DataType.LONG) ) ) { @@ -1206,7 +1213,7 @@ } try { - func.regenerateSchema(); + func.regenerateFieldSchema(); } catch (FrontendException fee) { String msg = "Could not set LOUserFunc field schema"; msgCollector.collect(msg, MessageType.Error); @@ -1288,6 +1295,16 @@ throw new VisitorException(msg) ; } + try { + binCond.regenerateFieldSchema(); + } catch (FrontendException fee) { + String msg = "Could not set LOBinCond field schema"; + msgCollector.collect(msg, MessageType.Error); + VisitorException vse = new VisitorException(msg) ; + vse.initCause(fee) ; + throw new VisitorException(msg) ; + } + } private void insertLeftCastForBinCond(LOBinCond binCond, byte toType) { @@ -1304,7 +1321,6 @@ try { currentPlan.connect(binCond.getLhsOp(), cast) ; currentPlan.connect(cast, binCond) ; - binCond.setLhsOp(cast); } catch (PlanException ioe) { AssertionError err = new AssertionError("Explicit casting insertion") ; @@ -1329,7 +1345,6 @@ try { currentPlan.connect(binCond.getRhsOp(), cast) ; currentPlan.connect(cast, binCond) ; - binCond.setRhsOp(cast); } catch (PlanException ioe) { AssertionError err = new AssertionError("Explicit casting insertion") ; Modified: incubator/pig/branches/types/test/org/apache/pig/test/TestGrunt.java URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/test/org/apache/pig/test/TestGrunt.java?rev=698082&r1=698081&r2=698082&view=diff ============================================================================== --- incubator/pig/branches/types/test/org/apache/pig/test/TestGrunt.java (original) +++ incubator/pig/branches/types/test/org/apache/pig/test/TestGrunt.java Mon Sep 22 20:34:10 2008 @@ -107,7 +107,7 @@ PigServer server = new PigServer("MAPREDUCE"); PigContext context = server.getPigContext(); - String strCmd = "a = load 'input1'; b = foreach a generate {(1, '1', 0.4f),(2, '2', 0.45)} as b: bag{t(i: int, c:chararray, f: float)};\n"; + String strCmd = "a = load 'input1'; b = foreach a generate {(1, '1', 0.4f),(2, '2', 0.45)} as b: bag{t(i: int, c:chararray, d: double)};\n"; ByteArrayInputStream cmd = new ByteArrayInputStream(strCmd.getBytes()); InputStreamReader reader = new InputStreamReader(cmd); @@ -137,7 +137,7 @@ PigServer server = new PigServer("MAPREDUCE"); PigContext context = server.getPigContext(); - String strCmd = "a = load 'input1'; b = foreach a {generate {(1, '1', 0.4f),(2, '2', 0.45)} as b: bag{t(i: int, c:chararray, f: float)};};\n"; + String strCmd = "a = load 'input1'; b = foreach a {generate {(1, '1', 0.4f),(2, '2', 0.45)} as b: bag{t(i: int, c:chararray, d: double)};};\n"; ByteArrayInputStream cmd = new ByteArrayInputStream(strCmd.getBytes()); InputStreamReader reader = new InputStreamReader(cmd); 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=698082&r1=698081&r2=698082&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 Mon Sep 22 20:34:10 2008 @@ -171,7 +171,7 @@ public void testQuery102() { // test basic store buildPlan("a = load 'a';"); - printPlan(buildPlan("store a into 'out';")); + buildPlan("store a into 'out';"); } @Test @@ -864,13 +864,13 @@ @Test public void testQuery68() { buildPlan(" a = load 'input1';"); - buildPlan(" b = foreach a generate 10, {(16, 4.0e-2, 'hello'), (0.5f, 'another tuple', 12l, {()})};"); + buildPlan(" b = foreach a generate 10, {(16, 4.0e-2, 'hello'), (0.5f, 12l, 'another tuple')};"); } @Test public void testQuery69() { buildPlan(" a = load 'input1';"); - buildPlan(" b = foreach a generate {(16, 4.0e-2, 'hello'), (0.5f, 'another tuple', 12L, (1), ())};"); + buildPlan(" b = foreach a generate {(16, 4.0e-2, 'hello'), (0.5f, 'another tuple', 12L, (1))};"); } @Test @@ -1191,7 +1191,7 @@ //the schema of group is unchanged lp = buildPlan("c = foreach b generate flatten(group) as (), COUNT(a) as mycount;"); foreach = (LOForEach) lp.getLeaves().get(0); - assertTrue(foreach.getSchema().equals(getSchemaFromString("name: chararray, age: int, mycount: long"))); + assertTrue(foreach.getSchema().equals(getSchemaFromString("group::name: chararray, group::age: int, mycount: long"))); //the first element in group, i.e., name is renamed as myname lp = buildPlan("c = foreach b generate flatten(group) as myname, COUNT(a) as mycount;"); @@ -1407,6 +1407,116 @@ assertTrue(null == comparisonPlan.getPredecessors(filterProject)); } + @Test + public void testQuery97() throws FrontendException, ParseException { + LogicalPlan lp; + LOForEach foreach; + + buildPlan("a = load 'one' as (name, age, gpa);"); + + lp = buildPlan("b = foreach a generate 1;"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("x: int"), false, true)); + + lp = buildPlan("b = foreach a generate 1L;"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("x: long"), false, true)); + + lp = buildPlan("b = foreach a generate 1.0;"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("x: double"), false, true)); + + lp = buildPlan("b = foreach a generate 1.0f;"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("x: float"), false, true)); + + lp = buildPlan("b = foreach a generate 'hello';"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("x: chararray"), false, true)); + } + + @Test + public void testQuery98() throws FrontendException, ParseException { + LogicalPlan lp; + LOForEach foreach; + + buildPlan("a = load 'one' as (name, age, gpa);"); + + lp = buildPlan("b = foreach a generate (1);"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("t:(x: int)"), false, true)); + + lp = buildPlan("b = foreach a generate (1L);"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("t:(x: long)"), false, true)); + + lp = buildPlan("b = foreach a generate (1.0);"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("t:(x: double)"), false, true)); + + lp = buildPlan("b = foreach a generate (1.0f);"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("t:(x: float)"), false, true)); + + lp = buildPlan("b = foreach a generate ('hello');"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("t:(x: chararray)"), false, true)); + + lp = buildPlan("b = foreach a generate ('hello', 1, 1L, 1.0f, 1.0);"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("t:(x: chararray, y: int, z: long, a: float, b: double)"), false, true)); + + lp = buildPlan("b = foreach a generate ('hello', {(1), (1.0)});"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("t:(x: chararray, ib:{it:(d: double)})"), false, true)); + + } + + @Test + public void testQuery99() throws FrontendException, ParseException { + LogicalPlan lp; + LOForEach foreach; + + buildPlan("a = load 'one' as (name, age, gpa);"); + + lp = buildPlan("b = foreach a generate {(1, 'hello'), (2, 'world')};"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("b:{t:(x: int, y: chararray)}"), false, true)); + + lp = buildPlan("b = foreach a generate {(1, 'hello'), (1L, 'world')};"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("b:{t:(x: long, y: chararray)}"), false, true)); + + lp = buildPlan("b = foreach a generate {(1, 'hello'), (1.0f, 'world')};"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("b:{t:(x: float, y: chararray)}"), false, true)); + + lp = buildPlan("b = foreach a generate {(1, 'hello'), (1.0, 'world')};"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("b:{t:(x: double, y: chararray)}"), false, true)); + + lp = buildPlan("b = foreach a generate {(1L, 'hello'), (1.0f, 'world')};"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("b:{t:(x: float, y: chararray)}"), false, true)); + + lp = buildPlan("b = foreach a generate {(1L, 'hello'), (1.0, 'world')};"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("b:{t:(x: double, y: chararray)}"), false, true)); + + lp = buildPlan("b = foreach a generate {(1.0f, 'hello'), (1.0, 'world')};"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("b:{t:(x: double, y: chararray)}"), false, true)); + + lp = buildPlan("b = foreach a generate {(1.0, 'hello'), (1.0f, 'world')};"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("b:{t:(x: double, y: chararray)}"), false, true)); + + lp = buildPlan("b = foreach a generate {(1.0, 'hello', 3.14), (1.0f, 'world')};"); + foreach = (LOForEach) lp.getLeaves().get(0); + assertTrue(Schema.equals(foreach.getSchema(), getSchemaFromString("b:{t:()}"), false, true)); + + } + private Schema getSchemaFromString(String schemaString) throws ParseException { return getSchemaFromString(schemaString, DataType.BYTEARRAY); } Modified: incubator/pig/branches/types/test/org/apache/pig/test/TestTypeCheckingValidator.java URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/test/org/apache/pig/test/TestTypeCheckingValidator.java?rev=698082&r1=698081&r2=698082&view=diff ============================================================================== --- incubator/pig/branches/types/test/org/apache/pig/test/TestTypeCheckingValidator.java (original) +++ incubator/pig/branches/types/test/org/apache/pig/test/TestTypeCheckingValidator.java Mon Sep 22 20:34:10 2008 @@ -136,7 +136,7 @@ LogicalPlan plan = new LogicalPlan() ; LOConst constant1 = new LOConst(plan, genNewOperatorKey(), 10) ; constant1.setType(DataType.INTEGER) ; - LOConst constant2 = new LOConst(plan, genNewOperatorKey(), 20D) ; + LOConst constant2 = new LOConst(plan, genNewOperatorKey(), new DataByteArray()) ; constant2.setType(DataType.BYTEARRAY) ; LOConst constant3 = new LOConst(plan, genNewOperatorKey(), 123L) ; constant3.setType(DataType.LONG) ; @@ -193,7 +193,7 @@ public void testExpressionTypeChecking3() throws Throwable { LogicalPlan plan = new LogicalPlan() ; LOConst constant1 = new LOConst(plan, genNewOperatorKey(), 10) ; - constant1.setType(DataType.BYTEARRAY) ; + constant1.setType(DataType.INTEGER) ; LOConst constant2 = new LOConst(plan, genNewOperatorKey(), 20L) ; constant2.setType(DataType.LONG) ; LOConst constant3 = new LOConst(plan, genNewOperatorKey(), 123) ; @@ -212,7 +212,7 @@ plan.connect(constant2, mod1) ; plan.connect(mod1, equal1) ; plan.connect(constant3, equal1) ; - + CompilationMessageCollector collector = new CompilationMessageCollector() ; TypeCheckingValidator typeValidator = new TypeCheckingValidator() ; typeValidator.validate(plan, collector) ; @@ -329,9 +329,9 @@ @Test public void testExpressionTypeChecking5() throws Throwable { LogicalPlan plan = new LogicalPlan() ; - LOConst constant1 = new LOConst(plan, genNewOperatorKey(), 10) ; + LOConst constant1 = new LOConst(plan, genNewOperatorKey(), 10F) ; constant1.setType(DataType.FLOAT) ; - LOConst constant2 = new LOConst(plan, genNewOperatorKey(), 20) ; + LOConst constant2 = new LOConst(plan, genNewOperatorKey(), 20L) ; constant2.setType(DataType.LONG) ; LOConst constant3 = new LOConst(plan, genNewOperatorKey(), 123F) ; constant3.setType(DataType.FLOAT) ; @@ -354,7 +354,7 @@ plan.connect(constant3, bincond1) ; plan.connect(constant4, bincond1) ; - + CompilationMessageCollector collector = new CompilationMessageCollector() ; TypeCheckingValidator typeValidator = new TypeCheckingValidator() ; typeValidator.validate(plan, collector) ; @@ -380,9 +380,9 @@ @Test public void testExpressionTypeChecking6() throws Throwable { LogicalPlan plan = new LogicalPlan() ; - LOConst constant1 = new LOConst(plan, genNewOperatorKey(), 10) ; + LOConst constant1 = new LOConst(plan, genNewOperatorKey(), "10") ; constant1.setType(DataType.CHARARRAY) ; - LOConst constant2 = new LOConst(plan, genNewOperatorKey(), 20) ; + LOConst constant2 = new LOConst(plan, genNewOperatorKey(), 20L) ; constant2.setType(DataType.LONG) ; LOAdd add1 = new LOAdd(plan, genNewOperatorKey(), constant1, constant2) ; @@ -741,7 +741,7 @@ @Test public void testRegexTypeChecking1() throws Throwable { LogicalPlan plan = new LogicalPlan() ; - LOConst constant1 = new LOConst(plan, genNewOperatorKey(), 10) ; + LOConst constant1 = new LOConst(plan, genNewOperatorKey(), "10") ; constant1.setType(DataType.CHARARRAY) ; LORegexp regex = new LORegexp(plan, genNewOperatorKey(), constant1, @@ -768,7 +768,7 @@ @Test public void testRegexTypeChecking2() throws Throwable { LogicalPlan plan = new LogicalPlan() ; - LOConst constant1 = new LOConst(plan, genNewOperatorKey(), 10) ; + LOConst constant1 = new LOConst(plan, genNewOperatorKey(), new DataByteArray()) ; constant1.setType(DataType.BYTEARRAY) ; LORegexp regex = new LORegexp(plan, genNewOperatorKey(), constant1, @@ -1514,7 +1514,7 @@ LogicalPlan innerPlan2 = new LogicalPlan() ; LOProject project21 = new LOProject(innerPlan2, genNewOperatorKey(), load1, 0) ; project21.setSentinel(true); - LOConst const21 = new LOConst(innerPlan2, genNewOperatorKey(), 26) ; + LOConst const21 = new LOConst(innerPlan2, genNewOperatorKey(), 26L) ; const21.setType(DataType.LONG); LOMod mod21 = new LOMod(innerPlan2, genNewOperatorKey(), project21, const21) ; @@ -1612,8 +1612,8 @@ LogicalPlan innerPlan2 = new LogicalPlan() ; LOProject project21 = new LOProject(innerPlan2, genNewOperatorKey(), load1, 0) ; project21.setSentinel(true); - LOConst const21 = new LOConst(innerPlan2, genNewOperatorKey(), 26) ; - const21.setType(DataType.BYTEARRAY); + LOConst const21 = new LOConst(innerPlan2, genNewOperatorKey(), "26") ; + const21.setType(DataType.CHARARRAY); LOMod mod21 = new LOMod(innerPlan2, genNewOperatorKey(), project21, const21) ; innerPlan2.add(project21) ; @@ -2448,7 +2448,7 @@ LogicalPlan innerPlan1 = new LogicalPlan() ; LOProject project11 = new LOProject(innerPlan1, genNewOperatorKey(), load1, 0) ; project11.setSentinel(true); - LOConst const11 = new LOConst(innerPlan1, genNewOperatorKey(), 26F) ; + LOConst const11 = new LOConst(innerPlan1, genNewOperatorKey(), "26F") ; const11.setType(DataType.CHARARRAY); LOSubtract subtract11 = new LOSubtract(innerPlan1, genNewOperatorKey(), @@ -2793,4 +2793,14 @@ } + private void printPlan(LogicalPlan lp, String title) { + try { + System.err.println(title); + LOPrinter lv = new LOPrinter(System.err, lp); + lv.visit(); + System.err.println(); + } catch (Exception e) { + } + } + } Modified: incubator/pig/branches/types/test/org/apache/pig/test/TestTypeCheckingValidatorNoSchema.java URL: http://svn.apache.org/viewvc/incubator/pig/branches/types/test/org/apache/pig/test/TestTypeCheckingValidatorNoSchema.java?rev=698082&r1=698081&r2=698082&view=diff ============================================================================== --- incubator/pig/branches/types/test/org/apache/pig/test/TestTypeCheckingValidatorNoSchema.java (original) +++ incubator/pig/branches/types/test/org/apache/pig/test/TestTypeCheckingValidatorNoSchema.java Mon Sep 22 20:34:10 2008 @@ -523,7 +523,7 @@ LOProject project2 = new LOProject(innerPlan, genNewOperatorKey(), load1, 1) ; project2.setSentinel(true); LOAdd add1 = new LOAdd(innerPlan, genNewOperatorKey(), project1, project2) ; - LOConst const1 = new LOConst(innerPlan, genNewOperatorKey(), 10) ; + LOConst const1 = new LOConst(innerPlan, genNewOperatorKey(), "10") ; const1.setType(DataType.CHARARRAY); LOGreaterThan gt1 = new LOGreaterThan(innerPlan,