/** * 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); }
doCommit(tx); txStart(ctx, qry.getTimeout()); txStart(ctx, qry.getTimeout());
/** 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 }
/** {@inheritDoc} */ @Override public FieldsQueryCursor<List<?>> queryLocalSqlFields(String schemaName, SqlFieldsQuery qry, final boolean keepBinary, IndexingQueryFilter filter, GridQueryCancel cancel, Long qryId) throws IgniteCheckedException { String sql = qry.getSql(); List<Object> params = F.asList(qry.getArgs()); boolean enforceJoinOrder = qry.isEnforceJoinOrder(), startTx = autoStartTx(qry); int timeout = qry.getTimeout(); final GridQueryFieldsResult res = queryLocalSqlFields(schemaName, sql, params, filter, enforceJoinOrder, startTx, timeout, cancel, qry.isDataPageScanEnabled()); Iterable<List<?>> iter = () -> { try { return new GridQueryCacheObjectsIterator(res.iterator(), objectContext(), keepBinary); } catch (IgniteCheckedException e) { throw new IgniteException(e); } }; QueryCursorImpl<List<?>> cursor = qryId != null ? new RegisteredQueryCursor<>(iter, cancel, runningQueryManager(), qryId) : new QueryCursorImpl<>(iter, cancel); cursor.fieldsMeta(res.metaData()); return cursor; }
.setLocal(qry.isLocal()) .setPageSize(qry.getPageSize()) .setTimeout(qry.getTimeout(), TimeUnit.MILLISECONDS) .setDataPageScanEnabled(qry.isDataPageScanEnabled()); F.asList(qry.getArgs()), filter, qry.isEnforceJoinOrder(), false, qry.getTimeout(), cancel, new StaticMvccQueryTracker(cctx, mvccSnapshot), null);
qry.isEnforceJoinOrder(), startTx, qry.getTimeout(), cancel, qry.getArgs(),
tx = txStart(cctx, fieldsQry.getTimeout()); long timeout = implicit ? tx.remainingTime() : IgniteH2Indexing.operationTimeout(fieldsQry.getTimeout(), tx); .setLocal(fieldsQry.isLocal()) .setPageSize(fieldsQry.getPageSize()) .setTimeout(fieldsQry.getTimeout(), TimeUnit.MILLISECONDS) .setDataPageScanEnabled(fieldsQry.isDataPageScanEnabled()); else { final GridQueryFieldsResult res = idx.queryLocalSqlFields(schemaName, plan.selectQuery(), F.asList(fieldsQry.getArgs()), filters, fieldsQry.isEnforceJoinOrder(), false, fieldsQry.getTimeout(), cancel, null);
/** * 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); }
/** {@inheritDoc} */ @Override public FieldsQueryCursor<List<?>> queryLocalSqlFields(String schemaName, SqlFieldsQuery qry, final boolean keepBinary, IndexingQueryFilter filter, GridQueryCancel cancel) throws IgniteCheckedException { String sql = qry.getSql(); List<Object> params = F.asList(qry.getArgs()); boolean enforceJoinOrder = qry.isEnforceJoinOrder(), startTx = autoStartTx(qry); int timeout = qry.getTimeout(); final GridQueryFieldsResult res = queryLocalSqlFields(schemaName, sql, params, filter, enforceJoinOrder, startTx, timeout, cancel); QueryCursorImpl<List<?>> cursor = new QueryCursorImpl<>(new Iterable<List<?>>() { @SuppressWarnings("NullableProblems") @Override public Iterator<List<?>> iterator() { try { return new GridQueryCacheObjectsIterator(res.iterator(), objectContext(), keepBinary); } catch (IgniteCheckedException e) { throw new IgniteException(e); } } }, cancel); cursor.fieldsMeta(res.metaData()); return cursor; }
doCommit(tx); txStart(ctx, qry.getTimeout()); txStart(ctx, qry.getTimeout());
/** 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 }
runQueryTwoStep(schemaName, twoStepQry, keepBinary, qry.isEnforceJoinOrder(), startTx, qry.getTimeout(), cancel, qry.getArgs(), partitions, qry.isLazy(), mvccTracker), cancel);
.setLocal(qry.isLocal()) .setPageSize(qry.getPageSize()) .setTimeout(qry.getTimeout(), TimeUnit.MILLISECONDS); F.asList(qry.getArgs()), filter, qry.isEnforceJoinOrder(), false, qry.getTimeout(), cancel, new StaticMvccQueryTracker(cctx, mvccSnapshot));
tx = txStart(cctx, fieldsQry.getTimeout()); long timeout = implicit ? tx.remainingTime() : IgniteH2Indexing.operationTimeout(fieldsQry.getTimeout(), tx); .setLocal(fieldsQry.isLocal()) .setPageSize(fieldsQry.getPageSize()) .setTimeout(fieldsQry.getTimeout(), TimeUnit.MILLISECONDS); else { final GridQueryFieldsResult res = idx.queryLocalSqlFields(schemaName, plan.selectQuery(), F.asList(fieldsQry.getArgs()), filters, fieldsQry.isEnforceJoinOrder(), false, fieldsQry.getTimeout(), cancel);