Bug 123840 Incorrect use of static fields in NEvaluator and FilterPassController
Data Engine classes org.eclipse.birt.data.engine.script.NEvaluator and FilterPassController (used for top-n and bottom-n filter process) use static class fields to store proessing data. This is not multi-thread safe. If there are concurrent requests running in the same JVM (even if they use different instances of DataEngine), data corruption will occur since multiple requests may get/set the static fields at the same time. These classes should keep all per-request data in instance fields. Each report query need to have its own instance.
data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/script/ScriptEvalUtil.java
*/
		private static boolean isFormatNeeded( Object obj, int operator,
				ExprTextAndValue op1, ExprTextAndValue op2 )
		{
			
			if ( operator == IConditionalExpression.OP_LIKE
					|| operator == IConditionalExpression.OP_TOP_N
					|| operator == IConditionalExpression.OP_TOP_PERCENT
					|| operator == IConditionalExpression.OP_BOTTOM_N
					|| operator == IConditionalExpression.OP_BOTTOM_PERCENT
					|| obj == null || op1.value == null )
				return false;
			
			else if ( ( operator == IConditionalExpression.OP_BETWEEN || operator == IConditionalExpression.OP_NOT_BETWEEN )
					&& op2.value == null )
				return false;
			
			return true;
		}
		
		/**
		 * To ease the methods compare and between. Exception with specific
		 * explanation will be thrown if anything goes wrong.
		 * 
		 * @param obj
		 * @param op1
		 * @param op2
		 * @return
		 * @throws DataException
		 */