/** * Make a copy of {@link SqlFieldsQuery} with all flags and preserving type. * @param oldQry Query to copy. * @return Query copy. */ private SqlFieldsQuery cloneFieldsQuery(SqlFieldsQuery oldQry) { return oldQry.copy().setLocal(oldQry.isLocal()).setPageSize(oldQry.getPageSize()); }
/** * Run DML on remote nodes. * * @param schemaName Schema name. * @param fieldsQry Initial update query. * @param cacheIds Cache identifiers. * @param isReplicatedOnly Whether query uses only replicated caches. * @param cancel Cancel state. * @return Update result. */ UpdateResult runDistributedUpdate( String schemaName, SqlFieldsQuery fieldsQry, List<Integer> cacheIds, boolean isReplicatedOnly, GridQueryCancel cancel) { return rdcQryExec.update(schemaName, cacheIds, fieldsQry.getSql(), fieldsQry.getArgs(), fieldsQry.isEnforceJoinOrder(), fieldsQry.getPageSize(), fieldsQry.getTimeout(), fieldsQry.getPartitions(), isReplicatedOnly, cancel); }
cur, qry.getPageSize(), ctx);
/** * @param cache Cache. * @param qry Query. * @return Query plan. */ protected final String queryPlan(IgniteCache<?, ?> cache, SqlFieldsQuery qry) { return (String)cache.query(new SqlFieldsQuery("explain " + qry.getSql()) .setArgs(qry.getArgs()) .setLocal(qry.isLocal()) .setCollocated(qry.isCollocated()) .setPageSize(qry.getPageSize()) .setDistributedJoins(qry.isDistributedJoins()) .setEnforceJoinOrder(qry.isEnforceJoinOrder())) .getAll().get(0).get(0); }
/** Serialize SQL field query to stream. */ void write(SqlFieldsQuery qry, BinaryOutputStream out) { writeObject(out, qry.getSchema()); out.writeInt(qry.getPageSize()); out.writeInt(-1); // do not limit writeObject(out, qry.getSql()); ClientUtils.collection(qry.getArgs() == null ? null : Arrays.asList(qry.getArgs()), out, this::writeObject); out.writeByte((byte)0); // statement type ANY out.writeBoolean(qry.isDistributedJoins()); out.writeBoolean(qry.isLocal()); out.writeBoolean(qry.isReplicatedOnly()); out.writeBoolean(qry.isEnforceJoinOrder()); out.writeBoolean(qry.isCollocated()); out.writeBoolean(qry.isLazy()); out.writeLong(qry.getTimeout()); out.writeBoolean(true); // include column names }
res.pageSize(qry.getPageSize());
.setEnforceJoinOrder(fieldsQry.isEnforceJoinOrder()) .setLocal(fieldsQry.isLocal()) .setPageSize(fieldsQry.getPageSize()) .setTimeout((int)timeout, TimeUnit.MILLISECONDS) .setDataPageScanEnabled(fieldsQry.isDataPageScanEnabled()); fieldsQry.getPageSize(), timeout, sequential); fieldsQry.getArgs(), flags, fieldsQry.getPageSize(), timeout); .setEnforceJoinOrder(fieldsQry.isEnforceJoinOrder()) .setLocal(fieldsQry.isLocal()) .setPageSize(fieldsQry.getPageSize()) .setTimeout(fieldsQry.getTimeout(), TimeUnit.MILLISECONDS) .setDataPageScanEnabled(fieldsQry.isDataPageScanEnabled()); int pageSize = loc ? 0 : fieldsQry.getPageSize();
log.debug("Parsed query: `" + qry.getSql() + "` into two step query: " + twoStepQry); twoStepQry.pageSize(qry.getPageSize());
.setEnforceJoinOrder(qry.isEnforceJoinOrder()) .setLocal(qry.isLocal()) .setPageSize(qry.getPageSize()) .setTimeout(qry.getTimeout(), TimeUnit.MILLISECONDS) .setDataPageScanEnabled(qry.isDataPageScanEnabled());
/** * Make a copy of {@link SqlFieldsQuery} with all flags and preserving type. * @param oldQry Query to copy. * @return Query copy. */ private SqlFieldsQuery cloneFieldsQuery(SqlFieldsQuery oldQry) { return oldQry.copy().setLocal(oldQry.isLocal()).setPageSize(oldQry.getPageSize()); }
/** * Run DML on remote nodes. * * @param schemaName Schema name. * @param fieldsQry Initial update query. * @param cacheIds Cache identifiers. * @param isReplicatedOnly Whether query uses only replicated caches. * @param cancel Cancel state. * @return Update result. */ UpdateResult runDistributedUpdate( String schemaName, SqlFieldsQuery fieldsQry, List<Integer> cacheIds, boolean isReplicatedOnly, GridQueryCancel cancel) { return rdcQryExec.update(schemaName, cacheIds, fieldsQry.getSql(), fieldsQry.getArgs(), fieldsQry.isEnforceJoinOrder(), fieldsQry.getPageSize(), fieldsQry.getTimeout(), fieldsQry.getPartitions(), isReplicatedOnly, cancel); }
cur, qry.getPageSize(), ctx);
/** Serialize SQL field query to stream. */ void write(SqlFieldsQuery qry, BinaryOutputStream out) { writeObject(out, qry.getSchema()); out.writeInt(qry.getPageSize()); out.writeInt(-1); // do not limit writeObject(out, qry.getSql()); ClientUtils.collection(qry.getArgs() == null ? null : Arrays.asList(qry.getArgs()), out, this::writeObject); out.writeByte((byte)0); // statement type ANY out.writeBoolean(qry.isDistributedJoins()); out.writeBoolean(qry.isLocal()); out.writeBoolean(qry.isReplicatedOnly()); out.writeBoolean(qry.isEnforceJoinOrder()); out.writeBoolean(qry.isCollocated()); out.writeBoolean(qry.isLazy()); out.writeLong(qry.getTimeout()); out.writeBoolean(true); // include column names }
log.debug("Parsed query: `" + qry.getSql() + "` into two step query: " + twoStepQry); twoStepQry.pageSize(qry.getPageSize());
/** * Split query into two-step query. * @param prepared JDBC prepared statement. * @param qry Original fields query. * @return Two-step query. * @throws IgniteCheckedException in case of error inside {@link GridSqlQuerySplitter}. * @throws SQLException in case of error inside {@link GridSqlQuerySplitter}. */ private GridCacheTwoStepQuery split(Prepared prepared, SqlFieldsQuery qry) throws IgniteCheckedException, SQLException { GridCacheTwoStepQuery res = GridSqlQuerySplitter.split(connectionForThread(qry.getSchema()), prepared, qry.getArgs(), qry.isCollocated(), qry.isDistributedJoins(), qry.isEnforceJoinOrder(), this); List<Integer> cacheIds = collectCacheIds(null, res); if (!F.isEmpty(cacheIds) && hasSystemViews(res)) { throw new IgniteSQLException("Normal tables and system views cannot be used in the same query.", IgniteQueryErrorCode.UNSUPPORTED_OPERATION); } if (F.isEmpty(cacheIds)) res.local(true); else { res.cacheIds(cacheIds); res.local(qry.isLocal()); } res.pageSize(qry.getPageSize()); return res; }
.setEnforceJoinOrder(fieldsQry.isEnforceJoinOrder()) .setLocal(fieldsQry.isLocal()) .setPageSize(fieldsQry.getPageSize()) .setTimeout((int)timeout, TimeUnit.MILLISECONDS); fieldsQry.getPageSize(), timeout, sequential); fieldsQry.getArgs(), flags, fieldsQry.getPageSize(), timeout); .setEnforceJoinOrder(fieldsQry.isEnforceJoinOrder()) .setLocal(fieldsQry.isLocal()) .setPageSize(fieldsQry.getPageSize()) .setTimeout(fieldsQry.getTimeout(), TimeUnit.MILLISECONDS); int pageSize = loc ? 0 : fieldsQry.getPageSize();
.setEnforceJoinOrder(qry.isEnforceJoinOrder()) .setLocal(qry.isLocal()) .setPageSize(qry.getPageSize()) .setTimeout(qry.getTimeout(), TimeUnit.MILLISECONDS);