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/ResultIterator.java
populateDataSetRowMapping( metaMap, odiResult.getResultClass() );
		( (ResultClass) (odiResult.getResultClass()) ).doSave( metaOutputStream, metaMap );
		if(metaOutputStream!=null)
		{
			metaOutputStream.close( );
			metaOutputStream = null;
		}
	}
	
	/**
	 * Populate the new rsClass object instance
	 * 
	 * @param metaMap
	 * @throws DataException
	 */
	private static void populateDataSetRowMapping( Map metaMap, IResultClass rsClass )
			throws DataException
	{
		for ( int i = 0; i < rsClass.getFieldCount( ); i++ )
		{
			IBinding binding = new Binding( rsClass.getFieldName( i + 1 ) );
			binding.setExpression( new ScriptExpression( ExpressionUtil.createJSDataSetRowExpression( rsClass.getFieldName( i + 1 ) ) ) );
			metaMap.put( rsClass.getFieldName( i + 1 ), binding );
		}
	}
	/**
	 * Test if there are column bindings that refer to inexist data set columns.
	 * 
	 * @param exprs
	 * @throws DataException