* @param id Variable name that the subquery replaces.
* @return Expression for the subquery
*/
protected ScalarExpression compileSubqueryVariable(String id)
{
SubqueryDefinition subqueryDef = query.getSubqueryForVariable(id);
// Compile the subquery to get our statement
JDOQLQueryCompiler subCompiler = new JDOQLQueryCompiler((AbstractJDOQLQuery)subqueryDef.getQuery(),
imports, subqueryDef.getParameterMap());
subCompiler.processAsSubquery(qs, subqueryDef.getCandidateExpression(), subqueryDef.getParameterMap());
QueryExpression subqueryExpr = (QueryExpression)subCompiler.compile(QueryCompiler.COMPILE_EXECUTION);
// Make sure the result clause is added - this should be refactored into the Compiler from newROF()
subCompiler.getCandidates().newResultObjectFactory(subqueryExpr, false, subCompiler.getResultClass(), true);