Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IGNITE-22732 Transaction aware SQL #11438

Merged
merged 127 commits into from
Sep 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
32b5e00
WIP
nizhikov Jul 3, 2024
543daa8
IGNITE-22732 WIP
nizhikov Jul 15, 2024
012f92b
Merge branch 'master' into IGNITE-22732
nizhikov Jul 15, 2024
70c9919
IGNITE-22732 ModifyNode support
nizhikov Jul 15, 2024
bea4c49
IGNITE-22732 ModifyNode support
nizhikov Jul 17, 2024
c4e0fe8
IGNITE-22767 WIP
nizhikov Jul 17, 2024
e2c8c36
IGNITE-22767 WIP
nizhikov Jul 17, 2024
7c080ea
IGNITE-22767 Remove MarshallingMessage
nizhikov Jul 18, 2024
9b2a321
Merge branch 'IGNITE-22767' into IGNITE-22732
nizhikov Jul 18, 2024
011167b
IGNITE-22767 Remove MarshallingMessage
nizhikov Jul 18, 2024
74b19cb
Merge branch 'IGNITE-22767' into IGNITE-22732
nizhikov Jul 18, 2024
0c29609
IGNITE-22767 Remove MarshallingMessage
nizhikov Jul 19, 2024
4338705
Merge branch 'master' into IGNITE-22732
nizhikov Jul 19, 2024
55794a6
IGNITE-22767 Working in Index and Table scan
nizhikov Jul 23, 2024
1a21a3a
IGNITE-22767 Working in Index and Table scan
nizhikov Jul 25, 2024
dfe4e9a
Merge branch 'master' into IGNITE-22732
nizhikov Jul 25, 2024
c82fe55
IGNITE-22767 Working in Index and Table scan
nizhikov Jul 28, 2024
928defa
Merge branch 'master' into IGNITE-22732
nizhikov Jul 28, 2024
f4b59db
IGNITE-22767 Working in Index and Table scan
nizhikov Jul 28, 2024
75e7d87
IGNITE-22767 Working in Index and Table scan
nizhikov Jul 29, 2024
1276223
IGNITE-22767 Working in Index and Table scan
nizhikov Jul 29, 2024
f87e1a9
IGNITE-22767 Fix index scan
nizhikov Jul 30, 2024
6d93176
IGNITE-22767 Fix index scan
nizhikov Jul 31, 2024
81f3d17
IGNITE-22767 Fix index scan
nizhikov Jul 31, 2024
5f9289c
IGNITE-22767 Fix index scan
nizhikov Aug 1, 2024
03ae2ac
IGNITE-22767 Fix index scan
nizhikov Aug 2, 2024
d8efb0a
IGNITE-22767 Fix modification through Ignite nodes.
nizhikov Aug 13, 2024
c857d7c
IGNITE-22767 Fix modification through Ignite nodes.
nizhikov Aug 13, 2024
96991ab
IGNITE-22767 Fix modification through Ignite nodes.
nizhikov Aug 13, 2024
72a6d54
IGNITE-22767 TODO Fixes.
nizhikov Aug 13, 2024
9627b4f
IGNITE-22767 TODO Fixes.
nizhikov Aug 13, 2024
e481ee1
Merge branch 'master' into IGNITE-22732
nizhikov Aug 13, 2024
636ad8b
IGNITE-22767 TODO Fixes.
nizhikov Aug 14, 2024
feebf59
IGNITE-22767 TODO Fixes.
nizhikov Aug 15, 2024
dc0b13d
IGNITE-22767 TODO Fixes.
nizhikov Aug 15, 2024
6a5cfa0
IGNITE-22767 TODO Fixes.
nizhikov Aug 15, 2024
09fadf2
IGNITE-22767 TODO Fixes.
nizhikov Aug 15, 2024
b294c7b
IGNITE-22767 TODO fixes.
nizhikov Aug 15, 2024
bfbe421
IGNITE-22767 Fix bounded scan.
nizhikov Aug 15, 2024
28be126
IGNITE-22767 Fix bounded scan.
nizhikov Aug 15, 2024
ec6b943
Merge branch 'master' into IGNITE-22732
nizhikov Aug 19, 2024
cc0b3dc
IGNITE-22767 Exception for unsupported modes.
nizhikov Aug 19, 2024
d2aae6a
IGNITE-22767 Exception for unsupported modes.
nizhikov Aug 19, 2024
3199710
IGNITE-22767 Exception for unsupported modes.
nizhikov Aug 19, 2024
82c7783
IGNITE-22767 Tests for joins added
nizhikov Aug 19, 2024
1250adb
IGNITE-22767 Tests for joins added
nizhikov Aug 19, 2024
d5ccf11
IGNITE-22767 Prepare for code review
nizhikov Aug 20, 2024
4fb5a91
IGNITE-22767 Prepare for code review
nizhikov Aug 20, 2024
bb47210
IGNITE-22767 Test fixes
nizhikov Aug 20, 2024
b5e42dd
IGNITE-22767 Test fixes
nizhikov Aug 20, 2024
251d68a
Merge branch 'master' into IGNITE-22732
nizhikov Aug 21, 2024
c042e57
IGNITE-22767 Test fixes
nizhikov Aug 21, 2024
2e6e208
IGNITE-22767 Move flag to TransactionConfiguration
nizhikov Aug 21, 2024
c94c00e
IGNITE-22767 Don't join if flags have different values.
nizhikov Aug 21, 2024
62ea002
IGNITE-22767 Don't join if flags have different values.
nizhikov Aug 21, 2024
823ad08
IGNITE-22874 Support Transaction aware SQL in thin client
nizhikov Aug 22, 2024
422b174
IGNITE-22874 Code review fixes
nizhikov Aug 22, 2024
51b3009
IGNITE-22732 Test fix
nizhikov Aug 23, 2024
b065ef1
Merge branch 'master' into IGNITE-22732
nizhikov Aug 23, 2024
ab082ba
IGNITE-22732 Test updates
nizhikov Aug 28, 2024
dbc229a
IGNITE-22732 Test updates
nizhikov Aug 28, 2024
0de765d
IGNITE-22732 Test updates
nizhikov Aug 28, 2024
d1dfd90
IGNITE-22732 Test updates
nizhikov Aug 28, 2024
651ba5b
IGNITE-22732 Test updates
nizhikov Aug 29, 2024
d5d0caa
IGNITE-22732 Test updates
nizhikov Aug 29, 2024
1188e45
IGNITE-22732 Test updates
nizhikov Aug 29, 2024
8cd1c86
IGNITE-22732 Test updates
nizhikov Aug 29, 2024
5f73636
IGNITE-22732 Test updates
nizhikov Aug 29, 2024
5751647
IGNITE-22732 Test updates
nizhikov Aug 29, 2024
9019f4e
IGNITE-22732 Test updates
nizhikov Aug 30, 2024
ed8913f
IGNITE-22732 Test updates
nizhikov Aug 30, 2024
215687c
IGNITE-22732 Test updates
nizhikov Aug 30, 2024
059cdab
IGNITE-22732 Test updates
nizhikov Aug 30, 2024
8e55dc5
IGNITE-22732 Test updates
nizhikov Aug 30, 2024
c91b9a7
IGNITE-22732 Test updates
nizhikov Aug 30, 2024
c8a1fc9
IGNITE-22732 Test updates
nizhikov Aug 30, 2024
cc0f262
IGNITE-22732 Test updates
nizhikov Aug 30, 2024
ff950ef
IGNITE-22732 Test updates
nizhikov Aug 31, 2024
78929fc
IGNITE-22732 Test updates
nizhikov Sep 2, 2024
1a3400c
IGNITE-22732 Test updates
nizhikov Sep 2, 2024
5159812
IGNITE-22732 Test updates
nizhikov Sep 2, 2024
e955528
IGNITE-22732 Test updates
nizhikov Sep 2, 2024
317c98c
IGNITE-22732 Test updates
nizhikov Sep 2, 2024
04bd2c3
IGNITE-22732 Test updates
nizhikov Sep 2, 2024
1081bb6
IGNITE-22732 Test updates
nizhikov Sep 2, 2024
ddc8347
IGNITE-22732 Test updates
nizhikov Sep 2, 2024
951b9d9
IGNITE-22732 Test updates
nizhikov Sep 2, 2024
b035466
IGNITE-22732 Test updates
nizhikov Sep 2, 2024
84e11a4
IGNITE-22732 Test updates
nizhikov Sep 2, 2024
43afec7
IGNITE-22732 Test updates
nizhikov Sep 2, 2024
1d6088d
Merge branch 'master' into IGNITE-22732
nizhikov Sep 3, 2024
3422d97
IGNITE-22874 Code review fixes.
nizhikov Sep 6, 2024
5d4fddd
IGNITE-22874 Code review changes
nizhikov Sep 7, 2024
d675d9e
IGNITE-22874 Code review changes
nizhikov Sep 7, 2024
4bad677
IGNITE-22732 TreeRowClosure#lastRow optimization
nizhikov Sep 8, 2024
f42d0f2
IGNITE-22732 TreeRowClosure#lastRow optimization
nizhikov Sep 8, 2024
05f2457
Merge branch 'master' into IGNITE-22732
nizhikov Sep 13, 2024
4e7a0c7
IGNITE-22732 Code review changes
nizhikov Sep 13, 2024
bf55eb6
IGNITE-22732 Code review changes
nizhikov Sep 13, 2024
5205a07
IGNITE-22732 Code review changes
nizhikov Sep 13, 2024
67ccd22
Merge branch 'master' into IGNITE-22732
nizhikov Sep 14, 2024
145e41d
IGNITE-22732 Force single distribution for receiver
nizhikov Sep 14, 2024
142c009
IGNITE-22732 Code review changes
nizhikov Sep 14, 2024
1917825
IGNITE-22732 Failed test added
nizhikov Sep 15, 2024
9ff04d0
IGNITE-22732 Failed test added
nizhikov Sep 16, 2024
d5a412f
IGNITE-22732 Support for entryProcessor transaction modification
nizhikov Sep 16, 2024
f4cf727
IGNITE-22732 Force exchagne single distribution
nizhikov Sep 16, 2024
1409bd9
IGNITE-22732 Revert test changes
nizhikov Sep 16, 2024
9321a21
IGNITE-22732 Simplify test changes
nizhikov Sep 16, 2024
d0ac43f
IGNITE-22732 Fix entry processor
nizhikov Sep 17, 2024
739f130
Merge branch 'master' into IGNITE-22732
nizhikov Sep 18, 2024
d898f82
IGNITE-22732 Code review changes
nizhikov Sep 19, 2024
33f5f80
IGNITE-22732 Code review changes
nizhikov Sep 19, 2024
91cacee
IGNITE-22732 Code review changes
nizhikov Sep 19, 2024
4ceb906
IGNITE-22732 Code review changes
nizhikov Sep 19, 2024
fd57337
IGNITE-22732 Code review changes
nizhikov Sep 19, 2024
bbea3df
IGNITE-22732 Code review changes
nizhikov Sep 19, 2024
6cc0867
IGNITE-22732 Code review changes
nizhikov Sep 19, 2024
930dc40
IGNITE-22732 Code review changes
nizhikov Sep 19, 2024
2953e74
IGNITE-22732 Code review changes
nizhikov Sep 19, 2024
ddad4ea
IGNITE-22732 Code review changes
nizhikov Sep 19, 2024
2a75c7b
IGNITE-22732 Code review changes
nizhikov Sep 19, 2024
6bc1b15
IGNITE-22732 Code review changes
nizhikov Sep 19, 2024
2d2bdc9
Merge branch 'master' into IGNITE-22732
nizhikov Sep 19, 2024
c6a373b
IGNITE-22732 Code review changes
nizhikov Sep 19, 2024
8afcc09
IGNITE-22732 Code review changes
nizhikov Sep 19, 2024
dd52a00
IGNITE-22732 Code review changes
nizhikov Sep 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,9 @@
import org.apache.ignite.events.SqlQueryExecutionEvent;
import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.processors.GridProcessorAdapter;
import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal;
import org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.processors.failure.FailureProcessor;
import org.apache.ignite.internal.processors.query.GridQueryFieldMetadata;
import org.apache.ignite.internal.processors.query.IgniteSQLException;
Expand Down Expand Up @@ -120,6 +122,7 @@
import org.jetbrains.annotations.Nullable;

import static org.apache.ignite.IgniteSystemProperties.getLong;
import static org.apache.ignite.configuration.TransactionConfiguration.TX_AWARE_QUERIES_SUPPORTED_MODES;
import static org.apache.ignite.events.EventType.EVT_SQL_QUERY_EXECUTION;

/** */
Expand Down Expand Up @@ -486,6 +489,8 @@ private <T> List<T> parseAndProcessQuery(
String sql,
Object... params
) throws IgniteSQLException {
ensureTransactionModeSupported(qryCtx);

SchemaPlus schema = schemaHolder.schema(schemaName);

assert schema != null : "Schema not found: " + schemaName;
Expand Down Expand Up @@ -588,7 +593,32 @@ private Object contextKey(QueryContext qryCtx) {

SqlFieldsQuery sqlFieldsQry = qryCtx.unwrap(SqlFieldsQuery.class);

return sqlFieldsQry != null ? F.asList(sqlFieldsQry.isLocal(), sqlFieldsQry.isEnforceJoinOrder()) : null;
return sqlFieldsQry != null
? F.asList(sqlFieldsQry.isLocal(), sqlFieldsQry.isEnforceJoinOrder(), queryTransactionVersion(qryCtx) == null)
: null;
}

/** */
private static GridCacheVersion queryTransactionVersion(@Nullable QueryContext qryCtx) {
return qryCtx == null ? null : qryCtx.unwrap(GridCacheVersion.class);
}

/** */
private void ensureTransactionModeSupported(@Nullable QueryContext qryCtx) {
if (!ctx.config().getTransactionConfiguration().isTxAwareQueriesEnabled())
return;

GridCacheVersion ver = queryTransactionVersion(qryCtx);

if (ver == null)
return;

final GridNearTxLocal userTx = ctx.cache().context().tm().tx(ver);

if (TX_AWARE_QUERIES_SUPPORTED_MODES.contains(userTx.isolation()))
return;

throw new IllegalStateException("Transaction isolation mode not supported for SQL queries: " + userTx.isolation());
}

/** */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,14 @@ protected AbstractIndexScan(
/** {@inheritDoc} */
@Override public synchronized Iterator<Row> iterator() {
if (ranges == null)
return new IteratorImpl(idx.find(null, null, true, true, indexQueryContext()));
return new IteratorImpl(indexCursor(null, null, true, true));

IgniteClosure<RangeCondition<Row>, IteratorImpl> clo = range -> {
IdxRow lower = range.lower() == null ? null : row2indexRow(range.lower());
IdxRow upper = range.upper() == null ? null : row2indexRow(range.upper());

return new IteratorImpl(
idx.find(lower, upper, range.lowerInclude(), range.upperInclude(), indexQueryContext()));
indexCursor(lower, upper, range.lowerInclude(), range.upperInclude()));
};

if (!ranges.multiBounds()) {
Expand All @@ -88,6 +88,11 @@ protected AbstractIndexScan(
return F.flat(F.iterator(ranges, clo, true));
}

/** */
protected GridCursor<IdxRow> indexCursor(IdxRow lower, IdxRow upper, boolean lowerInclude, boolean upperInclude) {
return idx.find(lower, upper, lowerInclude, upperInclude, indexQueryContext());
}

/** */
protected abstract IdxRow row2indexRow(Row bound);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,7 @@ private ExecutionContext<?> baseInboxContext(UUID nodeId, UUID qryId, long fragm
NoOpMemoryTracker.INSTANCE,
NoOpIoTracker.INSTANCE,
0,
ImmutableMap.of());
ImmutableMap.of(),
null);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,24 +18,37 @@
package org.apache.ignite.internal.processors.query.calcite.exec;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
import java.util.function.Function;
import org.apache.calcite.DataContext;
import org.apache.calcite.linq4j.QueryProvider;
import org.apache.calcite.schema.SchemaPlus;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
import org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry;
import org.apache.ignite.internal.processors.query.calcite.exec.exp.ExpressionFactory;
import org.apache.ignite.internal.processors.query.calcite.exec.exp.ExpressionFactoryImpl;
import org.apache.ignite.internal.processors.query.calcite.exec.tracker.ExecutionNodeMemoryTracker;
import org.apache.ignite.internal.processors.query.calcite.exec.tracker.IoTracker;
import org.apache.ignite.internal.processors.query.calcite.exec.tracker.MemoryTracker;
import org.apache.ignite.internal.processors.query.calcite.exec.tracker.RowTracker;
import org.apache.ignite.internal.processors.query.calcite.message.QueryTxEntry;
import org.apache.ignite.internal.processors.query.calcite.metadata.ColocationGroup;
import org.apache.ignite.internal.processors.query.calcite.metadata.FragmentDescription;
import org.apache.ignite.internal.processors.query.calcite.prepare.AbstractQueryContext;
Expand All @@ -45,8 +58,12 @@
import org.apache.ignite.internal.processors.query.calcite.util.Commons;
import org.apache.ignite.internal.processors.query.calcite.util.TypeUtils;
import org.apache.ignite.internal.util.lang.RunnableX;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.CU;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiTuple;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import static org.apache.ignite.internal.processors.query.calcite.util.Commons.checkRange;

Expand Down Expand Up @@ -102,6 +119,9 @@ public class ExecutionContext<Row> extends AbstractQueryContext implements DataC
/** */
private final long timeout;

/** */
private final Collection<QueryTxEntry> qryTxEntries;

/** */
private final long startTs;

Expand All @@ -127,7 +147,8 @@ public ExecutionContext(
MemoryTracker qryMemoryTracker,
IoTracker ioTracker,
long timeout,
Map<String, Object> params
Map<String, Object> params,
@Nullable Collection<QueryTxEntry> qryTxEntries
) {
super(qctx);

Expand All @@ -142,6 +163,7 @@ public ExecutionContext(
this.ioTracker = ioTracker;
this.params = params;
this.timeout = timeout;
this.qryTxEntries = qryTxEntries;

startTs = U.currentTimeMillis();

Expand Down Expand Up @@ -289,6 +311,84 @@ public void setCorrelated(@NotNull Object value, int id) {
correlations[id] = value;
}

/**
* @return Transaction write map.
*/
public Collection<QueryTxEntry> getQryTxEntries() {
return qryTxEntries;
}

/** */
public static Collection<QueryTxEntry> transactionChanges(
Collection<IgniteTxEntry> writeEntries
) {
if (F.isEmpty(writeEntries))
return null;

Collection<QueryTxEntry> res = new ArrayList<>();

for (IgniteTxEntry e : writeEntries) {
CacheObject val = e.value();

if (!F.isEmpty(e.entryProcessors()))
val = e.applyEntryProcessors(val);

res.add(new QueryTxEntry(e.cacheId(), e.key(), val, e.explicitVersion()));
}

return res;
}

/**
* @param cacheId Cache id.
* @param parts Partitions set.
* @param mapper Mapper to specific data type.
* @return First, set of object changed in transaction, second, list of transaction data in required format.
* @param <R> Required type.
*/
public <R> IgniteBiTuple<Set<KeyCacheObject>, List<R>> transactionChanges(
int cacheId,
int[] parts,
Function<CacheDataRow, R> mapper
) {
if (F.isEmpty(qryTxEntries))
return F.t(Collections.emptySet(), Collections.emptyList());

// Expecting parts are sorted or almost sorted and amount of transaction entries are relatively small.
if (parts != null && !F.isSorted(parts))
Arrays.sort(parts);

Set<KeyCacheObject> changedKeys = new HashSet<>(qryTxEntries.size());
List<R> newAndUpdatedRows = new ArrayList<>(qryTxEntries.size());

for (QueryTxEntry e : qryTxEntries) {
int part = e.key().partition();

assert part != -1;

if (e.cacheId() != cacheId)
continue;

if (parts != null && Arrays.binarySearch(parts, part) < 0)
continue;

changedKeys.add(e.key());

CacheObject val = e.value();

if (val != null) { // Mix only updated or inserted entries. In case val == null entry removed.
newAndUpdatedRows.add(mapper.apply(new CacheDataRowAdapter(
e.key(),
val,
e.version(),
CU.EXPIRE_TIME_ETERNAL // Expire time calculated on commit, can use eternal here.
)));
}
}

return F.t(changedKeys, newAndUpdatedRows);
}

/**
* Executes a query task.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager;
import org.apache.ignite.internal.processors.cache.QueryCursorImpl;
import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal;
import org.apache.ignite.internal.processors.cache.query.CacheQueryType;
import org.apache.ignite.internal.processors.cache.query.GridCacheQueryType;
import org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode;
Expand Down Expand Up @@ -608,6 +609,8 @@ private ListFieldsQueryCursor<?> mapAndExecutePlan(

MemoryTracker qryMemoryTracker = qry.createMemoryTracker(memoryTracker, cfg.getQueryMemoryQuota());

final GridNearTxLocal userTx = Commons.queryTransaction(qry.context(), ctx.cache().context());

ExecutionContext<Row> ectx = new ExecutionContext<>(
qry.context(),
taskExecutor(),
Expand All @@ -620,7 +623,8 @@ private ListFieldsQueryCursor<?> mapAndExecutePlan(
qryMemoryTracker,
createIoTracker(locNodeId, qry.localQueryId()),
timeout,
qryParams);
qryParams,
userTx == null ? null : ExecutionContext.transactionChanges(userTx.writeEntries()));

Node<Row> node = new LogicalRelImplementor<>(ectx, partitionService(), mailboxRegistry(),
exchangeService(), failureProcessor()).go(fragment.root());
Expand Down Expand Up @@ -659,7 +663,8 @@ private ListFieldsQueryCursor<?> mapAndExecutePlan(
fragmentsPerNode.get(nodeId).intValue(),
qry.parameters(),
parametersMarshalled,
timeout
timeout,
ectx.getQryTxEntries()
);

messageService().send(nodeId, req);
Expand Down Expand Up @@ -867,7 +872,8 @@ private void onMessage(UUID nodeId, final QueryStartRequest msg) {
qry.createMemoryTracker(memoryTracker, cfg.getQueryMemoryQuota()),
createIoTracker(nodeId, msg.originatingQryId()),
msg.timeout(),
Commons.parametersMap(msg.parameters())
Commons.parametersMap(msg.parameters()),
msg.queryTransactionEntries()
);

executeFragment(qry, (FragmentPlan)qryPlan, ectx);
Expand Down
Loading