Author: olga Date: Tue Oct 27 20:58:04 2009 New Revision: 830335 URL: http://svn.apache.org/viewvc?rev=830335&view=rev Log: PIG-1051: FINDBUGS: NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE (olgan)
Modified: hadoop/pig/trunk/CHANGES.txt hadoop/pig/trunk/src/org/apache/pig/StandAloneParser.java hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/plans/PhysicalPlan.java hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POFRJoin.java hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POOptimizedForEach.java hadoop/pig/trunk/src/org/apache/pig/builtin/IntSum.java hadoop/pig/trunk/src/org/apache/pig/builtin/MAX.java hadoop/pig/trunk/src/org/apache/pig/builtin/MIN.java hadoop/pig/trunk/src/org/apache/pig/builtin/SUM.java hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/LOProject.java hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/optimizer/OpLimitOptimizer.java hadoop/pig/trunk/test/findbugsExcludeFile.xml Modified: hadoop/pig/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/CHANGES.txt?rev=830335&r1=830334&r2=830335&view=diff ============================================================================== --- hadoop/pig/trunk/CHANGES.txt (original) +++ hadoop/pig/trunk/CHANGES.txt Tue Oct 27 20:58:04 2009 @@ -26,6 +26,8 @@ IMPROVEMENTS +PIG-1051: FINDBUGS: NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE (olgan) + PIG-1050: FINDBUGS: DLS_DEAD_LOCAL_STORE: Dead store to local variable (olgan) PIG-1043: FINDBUGS: SIC_INNER_SHOULD_BE_STATIC: Should be a static inner class Modified: hadoop/pig/trunk/src/org/apache/pig/StandAloneParser.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/StandAloneParser.java?rev=830335&r1=830334&r2=830335&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/StandAloneParser.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/StandAloneParser.java Tue Oct 27 20:58:04 2009 @@ -54,9 +54,11 @@ return; } - if (line.toLowerCase().equals("quit")) break; - if (line.toLowerCase().startsWith("#")) continue; - else tryParse(line); + if (line != null){ + if (line.toLowerCase().equals("quit")) break; + if (line.toLowerCase().startsWith("#")) continue; + else tryParse(line); + } } Modified: hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java?rev=830335&r1=830334&r2=830335&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/mapReduceLayer/Launcher.java Tue Oct 27 20:58:04 2009 @@ -470,7 +470,11 @@ } //could receive a number format exception here but it will be propagated up the stack - int errCode = Integer.parseInt(code); + int errCode; + if (code != null) + errCode = Integer.parseInt(code); + else + errCode = 2998; //create the exception with the message and then set the error code and error source FuncSpec funcSpec = new FuncSpec(exceptionName, exceptionMessage); Modified: hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/plans/PhysicalPlan.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/plans/PhysicalPlan.java?rev=830335&r1=830334&r2=830335&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/plans/PhysicalPlan.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/plans/PhysicalPlan.java Tue Oct 27 20:58:04 2009 @@ -257,13 +257,13 @@ new ArrayList<PhysicalOperator>(inputs.size()); PhysicalOperator cloneOp = matches.get(op); if (cloneOp == null) { - String msg = "Unable to find clone for op " + cloneOp.name(); + String msg = "Unable to find clone for op " + op.name(); throw new CloneNotSupportedException(msg); } for (PhysicalOperator iOp : inputs) { PhysicalOperator cloneIOp = matches.get(iOp); if (cloneIOp == null) { - String msg = "Unable to find clone for op " + cloneIOp.name(); + String msg = "Unable to find clone for op " + iOp.name(); throw new CloneNotSupportedException(msg); } newInputs.add(cloneIOp); Modified: hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POFRJoin.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POFRJoin.java?rev=830335&r1=830334&r2=830335&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POFRJoin.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POFRJoin.java Tue Oct 27 20:58:04 2009 @@ -95,22 +95,6 @@ private transient BagFactory mBagFactory; private boolean setUp; - public POFRJoin(OperatorKey k) throws PlanException, ExecException { - this(k,-1,null, null, null, null, -1); - } - - public POFRJoin(OperatorKey k, int rp) throws PlanException, ExecException { - this(k, rp, null, null, null, null, -1); - } - - public POFRJoin(OperatorKey k, List<PhysicalOperator> inp) throws PlanException, ExecException { - this(k, -1, inp, null, null, null, -1); - } - - public POFRJoin(OperatorKey k, int rp, List<PhysicalOperator> inp) throws PlanException, ExecException { - this(k,rp,inp,null, null, null, -1); - } - public POFRJoin(OperatorKey k, int rp, List<PhysicalOperator> inp, List<List<PhysicalPlan>> ppLists, List<List<Byte>> keyTypes, FileSpec[] replFiles, int fragment) throws ExecException{ super(k,rp,inp); Modified: hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POOptimizedForEach.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POOptimizedForEach.java?rev=830335&r1=830334&r2=830335&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POOptimizedForEach.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/backend/hadoop/executionengine/physicalLayer/relationalOperators/POOptimizedForEach.java Tue Oct 27 20:58:04 2009 @@ -133,7 +133,7 @@ if(lineageTracer != null && res.result != null) { //we check for res.result since that can also be null in the case of flatten - tIn = (ExampleTuple) inp.result; + tIn = (ExampleTuple) input; ExampleTuple tOut = new ExampleTuple((Tuple) res.result); tOut.synthetic = tIn.synthetic; lineageTracer.insert(tOut); Modified: hadoop/pig/trunk/src/org/apache/pig/builtin/IntSum.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/builtin/IntSum.java?rev=830335&r1=830334&r2=830335&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/builtin/IntSum.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/builtin/IntSum.java Tue Oct 27 20:58:04 2009 @@ -81,7 +81,9 @@ Long.valueOf(i) : null); }catch(NumberFormatException nfe){ // treat this particular input as null - return tfact.newTuple(null); + Tuple t = tfact.newTuple(1); + t.set(0, null); + return t; } catch (ExecException e) { throw e; } catch (Exception e) { Modified: hadoop/pig/trunk/src/org/apache/pig/builtin/MAX.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/builtin/MAX.java?rev=830335&r1=830334&r2=830335&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/builtin/MAX.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/builtin/MAX.java Tue Oct 27 20:58:04 2009 @@ -84,7 +84,9 @@ return tfact.newTuple(dba != null ? Double.valueOf(dba.toString()): null); } catch (NumberFormatException e) { - return tfact.newTuple(null); + Tuple t = tfact.newTuple(1); + t.set (0, null); + return t; } catch (ExecException ee) { throw ee; } catch (Exception e) { Modified: hadoop/pig/trunk/src/org/apache/pig/builtin/MIN.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/builtin/MIN.java?rev=830335&r1=830334&r2=830335&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/builtin/MIN.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/builtin/MIN.java Tue Oct 27 20:58:04 2009 @@ -85,7 +85,9 @@ Double.valueOf(dba.toString()) : null); } catch (NumberFormatException e) { // invalid input, send null - return tfact.newTuple(null); + Tuple t = tfact.newTuple(1); + t.set(0, null); + return t; } catch (ExecException ee) { throw ee; } catch (Exception e) { Modified: hadoop/pig/trunk/src/org/apache/pig/builtin/SUM.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/builtin/SUM.java?rev=830335&r1=830334&r2=830335&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/builtin/SUM.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/builtin/SUM.java Tue Oct 27 20:58:04 2009 @@ -86,7 +86,9 @@ Double.valueOf(dba.toString()): null); }catch(NumberFormatException nfe){ // treat this particular input as null - return tfact.newTuple(null); + Tuple t = tfact.newTuple(1); + t.set(0, null); + return t; } catch (ExecException e) { throw e; } catch (Exception e) { Modified: hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/LOProject.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/LOProject.java?rev=830335&r1=830334&r2=830335&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/LOProject.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/LOProject.java Tue Oct 27 20:58:04 2009 @@ -184,6 +184,13 @@ for (int i : mProjection) { log.debug("Column: " + i); } + + if (mExp == null){ + String msg = "The input for a projection operator cannot be null"; + int errCode = 2998; + throw new FrontendException(msg, errCode, PigException.BUG, false, null); + } + LogicalOperator expressionOperator = mExp; log.debug("expressionOperator = " + expressionOperator); log.debug("mIsStar: " + mIsStar); @@ -193,28 +200,22 @@ if (mIsStar) { log.debug("mIsStar is true"); try { - if (null != expressionOperator) { - log.debug("expressionOperator is not null " - + expressionOperator.getClass().getName() + " " + expressionOperator); - if(!mSentinel) { - //we have an expression operator and hence a list of field shcemas - Schema.FieldSchema fs = ((ExpressionOperator)expressionOperator).getFieldSchema(); - mFieldSchema = new Schema.FieldSchema(fs); - mFieldSchema.setParent(fs.canonicalName, expressionOperator); - } else { - //we have a relational operator as input and hence a schema - log.debug("expression operator alias: " + expressionOperator.getAlias()); - log.debug("expression operator schema: " + expressionOperator.getSchema()); - log.debug("expression operator type: " + expressionOperator.getType()); - //TODO - //the type of the operator will be unknown. when type checking is in place - //add the type of the operator as a parameter to the fieldschema creation - mFieldSchema = new Schema.FieldSchema(expressionOperator.getAlias(), expressionOperator.getSchema(), DataType.TUPLE); - mFieldSchema.setParent(null, expressionOperator); - //mFieldSchema = new Schema.FieldSchema(expressionOperator.getAlias(), expressionOperator.getSchema()); - } + if(!mSentinel) { + //we have an expression operator and hence a list of field shcemas + Schema.FieldSchema fs = ((ExpressionOperator)expressionOperator).getFieldSchema(); + mFieldSchema = new Schema.FieldSchema(fs); + mFieldSchema.setParent(fs.canonicalName, expressionOperator); } else { - log.warn("The input for a projection operator cannot be null"); + //we have a relational operator as input and hence a schema + log.debug("expression operator alias: " + expressionOperator.getAlias()); + log.debug("expression operator schema: " + expressionOperator.getSchema()); + log.debug("expression operator type: " + expressionOperator.getType()); + //TODO + //the type of the operator will be unknown. when type checking is in place + //add the type of the operator as a parameter to the fieldschema creation + mFieldSchema = new Schema.FieldSchema(expressionOperator.getAlias(), expressionOperator.getSchema(), DataType.TUPLE); + mFieldSchema.setParent(null, expressionOperator); + //mFieldSchema = new Schema.FieldSchema(expressionOperator.getAlias(), expressionOperator.getSchema()); } mIsFieldSchemaComputed = true; } catch (FrontendException fee) { @@ -226,7 +227,6 @@ //its n list of columns to project including a single column List<Schema.FieldSchema> fss = new ArrayList<Schema.FieldSchema>(mProjection.size()); //try { - if (null != expressionOperator) { log.debug("expressionOperator is not null"); if(mProjection.size() == 1) { //if there is only one element then extract and return the field schema @@ -345,10 +345,6 @@ } } - } else { - log.warn("The input for a projection operator cannot be null"); - //fss.add(new Schema.FieldSchema(null, DataType.BYTEARRAY)); - } //} catch(ParseException pe) { // mFieldSchema = null; // mIsFieldSchemaComputed = false; Modified: hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/optimizer/OpLimitOptimizer.java URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/optimizer/OpLimitOptimizer.java?rev=830335&r1=830334&r2=830335&view=diff ============================================================================== --- hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/optimizer/OpLimitOptimizer.java (original) +++ hadoop/pig/trunk/src/org/apache/pig/impl/logicalLayer/optimizer/OpLimitOptimizer.java Tue Oct 27 20:58:04 2009 @@ -103,7 +103,7 @@ LogicalOperator lo = nodes.get(0); if (lo == null || !(lo instanceof LOLimit)) { int errCode = 2005; - String msg = "Expected " + LOLimit.class.getSimpleName() + ", got " + lo.getClass().getSimpleName(); + String msg = "Expected " + LOLimit.class.getSimpleName() + ", got " + (lo == null ? lo : lo.getClass().getSimpleName()); throw new OptimizerException(msg, errCode, PigException.BUG); } Modified: hadoop/pig/trunk/test/findbugsExcludeFile.xml URL: http://svn.apache.org/viewvc/hadoop/pig/trunk/test/findbugsExcludeFile.xml?rev=830335&r1=830334&r2=830335&view=diff ============================================================================== --- hadoop/pig/trunk/test/findbugsExcludeFile.xml (original) +++ hadoop/pig/trunk/test/findbugsExcludeFile.xml Tue Oct 27 20:58:04 2009 @@ -12,6 +12,16 @@ <Match> <Class name="org.apache.pig.tools.parameters.JavaCharStream" /> </Match> + <!--Ignore PigPen since it is not actively supported --> + <Match> + <Package name="org.apache.pig.pen.util" /> + </Match> + <Match> + <Package name="org.apache.pig.pen" /> + </Match> + <Match> + <Package name="org.apache.pig.data.parser.*" /> + </Match> <!-- Ingnore non-serializable comparators --> <Match> <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE" /> @@ -131,4 +141,47 @@ <Class name="org.apache.pig.data.DistinctDataBag$DistinctDataBagIterator$TContainer" /> <Bug pattern="SIC_INNER_SHOULD_BE_STATIC" /> </Match> + <Match> + <Class name="org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.partitioners.CountingMap" /> + <Method name="put" /> + <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE" /> + </Match> + <Match> + <Class name="org.apache.pig.impl.logicalLayer.optimizer.OpLimitOptimizer" /> + <Method name = "check" /> + <Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE" /> + </Match> + <Match> + <Class name="org.apache.pig.impl.logicalLayer.optimizer.PushDownForeachFlatten" /> + <Method name = "getOperator" /> + <Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE" /> + </Match> + <Match> + <Class name="org.apache.pig.impl.logicalLayer.optimizer.StreamOptimizer" /> + <Method name = "check" /> + <Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE" /> + </Match> + <Match> + <Class name="org.apache.pig.impl.logicalLayer.optimizer.TypeCastInserter" /> + <Method name = "getOperator" /> + <Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE" /> + </Match> + <Match> + <Class name="org.apache.pig.impl.logicalLayer.schema.Schema" /> + <Method name = "mergeSchema" /> + <Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE" /> + </Match> + <Match> + <Class name="org.apache.pig.impl.util.LineageTracer" /> + </Match> + <Match> + <Class name="org.apache.pig.impl.logicalLayer.optimizer.OpLimitOptimizer" /> + <Method name = "transform" /> + <Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE" /> + </Match> + <Match> + <Class name="org.apache.pig.impl.logicalLayer.optimizer.PushUpFilter" /> + <Method name = "getOperator" /> + <Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE" /> + </Match> </FindBugsFilter>