List temporaryComputedColumns, List result )
List temporaryComputedColumns, List result ) throws DataException
	private void prepareFilter( Context cx, List dataSetFilters,			List temporaryComputedColumns, List result )	{		if ( dataSetFilters != null && !dataSetFilters.isEmpty( ) )		{			Iterator it = dataSetFilters.iterator( );			for ( int i = 0; it.hasNext( ); i++ )			{				IFilterDefinition src = (IFilterDefinition) it.next( );				IBaseExpression expr = src.getExpression( );				if ( isGroupFilter( src ) )				{					ConditionalExpression ce = ( (ConditionalExpression) expr );					String exprText = ce.getExpression( ).getText( );					ColumnInfo columnInfo = QueryExecutorUtil.getColInfoFromJSExpr( cx,							exprText );					int index = columnInfo.getColumnIndex( );					String name = columnInfo.getColumnName( );					if ( name == null && index < 0 )					{						// If failed to treate filter key as a column reference						// expression						// then treat it as a computed column expression						temporaryComputedColumns.add( new ComputedColumn( "_{$TEMP_FILTER_"								+ i + "$}_",								exprText,								DataType.ANY_TYPE ) );						it.remove( );						result.add( new FilterDefinition( new ConditionalExpression( new ScriptExpression( String.valueOf( "dataSetRow[\"_{$TEMP_FILTER_"								+ i + "$}_\"]" ) ),								ce.getOperator( ),								ce.getOperand1( ),								ce.getOperand2( ) ) ) );					}				}			}		}	}