throw new IllegalArgumentException("Null \"query\" parameter"); if (query.getVariableList().size() != 3) { throw new QueryException( "Invalid select clause in insert/select. Exactly 3 terms required");
private Tuples projectSelectClause(Query query, Tuples result) throws TuplesException { if (result.getRowCardinality() > Cursor.ZERO) { Tuples tmp = result; try { List variables = new ArrayList(); /* * Note that this code need not concern itself with the order of the select-list, * only the contents. The mapping is handled by the subsequent Answer object, * and only becomes important if the row-order is important and is therefore * deferred to order-by resolution. */ Variable[] vars = result.getVariables(); for (int i = 0; i < vars.length; i++) { if (query.getVariableList().contains(vars[i])) { variables.add(vars[i]); } } result = TuplesOperations.project(result, variables); } finally { tmp.close(); } } return result; }
private Tuples appendAggregates(Query query, Tuples result) throws TuplesException { if (result.getRowCardinality() != Tuples.ZERO) { Tuples tmp = result; result = new AppendAggregateTuples(resolverSession, this, result, filterSubqueries(query.getVariableList())); tmp.close(); } return result; }
public Answer doQuery(Query query) throws Exception { TransactionalAnswer result; query = transform(query); LocalQueryResolver localQuery = new LocalQueryResolver(this, systemResolver); // Complete the numerical phase of resolution Tuples tuples = localQuery.resolveE(query); result = new TransactionalAnswer(transaction, new SubqueryAnswer(this, systemResolver, tuples, query.getVariableList())); answers.put(result, null); tuples.close(); return result; }
Tuples resolveMap(Query query, Map outerBindings) throws QueryException { try { Query newQuery = new Query( query.getVariableList(), query.getModelExpression(), new ConstraintConjunction( ConstraintOperations.bindVariables(outerBindings, query.getConstraintExpression()), constrainBindings(outerBindings)), query.getHavingExpression(), query.getOrderList(), query.getLimit(), query.getOffset(), (Answer)query.getGiven().clone()); return operationContext.innerCount(newQuery); } catch (LocalizeException el) { throw new QueryException("Failed to resolve inner local query", el); } }