Bug 195970 Two issues when evaluate a query inlcuding a subquery[07]
Description: Currently, when evaluating a query which includes a subquery, the query will be evaluated twice. The binding of query will pass to subquery twice. If user write a java script such as new Date() and i++. The result of query will be incorrect. Another issue: when write the report document, the binding of query will be written twice and the performance is not good to evalulate it twice.
data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/impl/ExprManagerUtil.java
if(!ExpressionCompilerUtil.hasColumnRow( map.get( level ).toString( ), exprManager ))
			{
				exprManager.setEntryGroupLevel( ExprManager.OVERALL_GROUP );
				if( !isColumnBindingExist(map.get( level ).toString( ) ))
				{
					throw new DataException( ResourceConstants.COLUMN_BINDING_NOT_EXIST, map.get( level ).toString( ));
				}
				throw new DataException( ResourceConstants.INVALID_GROUP_KEY_COLUMN, new Object[]{ map.get( level ).toString( ), level});
			}
		}
		exprManager.setEntryGroupLevel( ExprManager.OVERALL_GROUP );
	}
	
	/**
	 * 
	 * @param columnName
	 * @return
	 * @throws DataException 
	 */
	private boolean isColumnBindingExist( String columnName ) throws DataException
	{
		List bindings = exprManager.getBindingExprs( );
		
		for( int i = 0; i < bindings.size( ); i++ )
		{
			GroupBindingColumn gbc = (GroupBindingColumn)bindings.get( i );
			if(gbc.getExpression( columnName) != null)
				return true;
		}