@Override public String getJDOQLForExpression(org.datanucleus.query.expression.Expression expr) { if (expr instanceof VariableExpression) { VariableExpression varExpr = (VariableExpression)expr; if (subqueries != null) { for (JDOQLTypedSubqueryImpl subq : subqueries) { if (varExpr.getId().equals(subq.getAlias())) { // This variable represents a subquery so return the subquery text, so we form a single-string including subqueries return "(" + subq.toString() + ")"; } } } } return super.getJDOQLForExpression(expr); }
private AbstractClassMetaData getJoinClassMetaData(Expression expr, List<String> tuples, QueryData qd) { if (expr instanceof VariableExpression) { // Change the class meta data to the meta-data for the joined class if (qd.joinVariableExpression == null) { throw new NucleusFatalUserException( query.getSingleStringQuery() + ": Encountered a variable expression that isn't part of a join. Maybe you're " + "referencing a non-existent field of an embedded class."); } if (!((VariableExpression) expr).getId().equals(qd.joinVariableExpression.getId())) { throw new NucleusFatalUserException( query.getSingleStringQuery() + ": Encountered a variable (" + ((VariableExpression) expr).getId() + ") that doesn't match the join variable (" + qd.joinVariableExpression.getId() + ")"); } Class<?> joinedClass = getSymbolTable().getSymbol(qd.joinVariableExpression.getId()).getValueType(); return getMetaDataManager().getMetaDataForClass(joinedClass, getClassLoaderResolver()); } Symbol sym = getSymbolTable().getSymbol(tuples.get(0)); tuples.remove(0); return getMetaDataManager().getMetaDataForClass(sym.getValueType(), getClassLoaderResolver()); }
public <Y> Expression<Y> any(Subquery<Y> sub) { ExpressionImpl<Y> allExpr = new ExpressionImpl<Y>((Class<Y>) sub.getJavaType()); org.datanucleus.query.expression.Expression subExpr = ((SubqueryImpl<Y>)sub).getQueryExpression(); String varName = null; if (subExpr instanceof VariableExpression) { varName = ((VariableExpression)subExpr).getId(); } else { varName = "SUB" + SubqueryImpl.random.nextInt(); } allExpr.queryExpr = new SubqueryExpression("ANY", new VariableExpression(varName)); return allExpr; }
public <Y> Expression<Y> all(Subquery<Y> sub) { ExpressionImpl<Y> allExpr = new ExpressionImpl<Y>((Class<Y>) sub.getJavaType()); org.datanucleus.query.expression.Expression subExpr = ((SubqueryImpl<Y>)sub).getQueryExpression(); String varName = null; if (subExpr instanceof VariableExpression) { varName = ((VariableExpression)subExpr).getId(); } else { varName = "SUB" + SubqueryImpl.random.nextInt(); } allExpr.queryExpr = new SubqueryExpression("ALL", new VariableExpression(varName)); return allExpr; }
public <Y> Expression<Y> some(Subquery<Y> sub) { ExpressionImpl<Y> allExpr = new ExpressionImpl<Y>((Class<Y>) sub.getJavaType()); org.datanucleus.query.expression.Expression subExpr = ((SubqueryImpl<Y>)sub).getQueryExpression(); String varName = null; if (subExpr instanceof VariableExpression) { varName = ((VariableExpression)subExpr).getId(); } else { varName = "SUB" + SubqueryImpl.random.nextInt(); } allExpr.queryExpr = new SubqueryExpression("SOME", new VariableExpression(varName)); return allExpr; }
return varExpr.getId();
return varExpr.getId();
QueryCompilation subCompilation = subDelegate.getCompilation(mmgr, clr); subCompilation.setQueryLanguage("JPQL"); compilation.addSubqueryCompilation(subqueryVar.getId(), subCompilation); QueryCompilation subCompilation = subDelegate.getCompilation(mmgr, clr); subCompilation.setQueryLanguage("JPQL"); compilation.addSubqueryCompilation(subVarExpr.getId(), subCompilation);
"Unexpected expression type while parsing query. Variables not supported by GAE (" + varExpr.getId() + ")"); } else { throw new UnsupportedDatastoreFeatureException(
throw new NucleusUserException( "Unexpected expression type while parsing query. Are you certain that a field named " + varExpr.getId() + " exists on your object?");
throw new NucleusUserException( "Unexpected expression type while parsing query. Are you certain that a field named " + varExpr.getId() + " exists on your object?");
exprCastName = "CAST_" + ((VariableExpression)expr.getLeft().getLeft()).getId(); SQLTableMapping varTblMapping = getSQLTableMappingForAlias(varExpr.getId()); if (varTblMapping == null) throw new NucleusUserException("Variable " + varExpr.getId() + " is not yet bound, so cannot get field " + expr.getId()); throw new NucleusUserException("Variable " + varExpr.getId() + " of type " + varType.getName() + " cannot evaluate " + expr.getId()); SQLTableMapping sqlMapping = getSQLTableMappingForPrimaryExpression(varSqlExpr.getSQLStatement(), varExpr.getId(), expr, Boolean.FALSE); sqlExpr = exprFactory.newExpression(sqlMapping.table.getSQLStatement(), sqlMapping.table, sqlMapping.mapping); stack.push(sqlExpr);
@Override protected Object processVariableExpression(VariableExpression expr) String varName = expr.getId(); Symbol varSym = expr.getSymbol(); if (varSym != null)