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-22733 Support transactions in Scan query #11580

Merged
merged 222 commits into from
Nov 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
222 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
c853d82
IGNITE-22874 Support Transaction aware SQL in thin client
nizhikov Aug 22, 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
1fc05d2
Merge branch 'IGNITE-22732' into IGNITE-22874
nizhikov Sep 4, 2024
44012f2
IGNITE-22732 Test updates
nizhikov Sep 4, 2024
41d4a63
IGNITE-23090 WIP
nizhikov Sep 5, 2024
93279de
IGNITE-23090 WIP
nizhikov Sep 5, 2024
0c2a180
IGNITE-23090 WIP
nizhikov Sep 5, 2024
6bfae61
IGNITE-22874 WIP
nizhikov Sep 5, 2024
c233938
IGNITE-22874 Code review fixes.
nizhikov Sep 6, 2024
bc33357
IGNITE-22874 Code review fixes.
nizhikov Sep 7, 2024
c2f048e
IGNITE-22874 X
nizhikov Sep 7, 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
0fd488d
Merge branch 'master' into IGNITE-22874
nizhikov Sep 9, 2024
e36ff43
Merge branch 'IGNITE-22732' into IGNITE-22874
nizhikov Sep 9, 2024
3d2f529
Merge branch 'IGNITE-22874' into IGNITE-23090
nizhikov Sep 9, 2024
e9f2330
IGNITE-23090 WIP
nizhikov Sep 10, 2024
de7bc87
IGNITE-23090 WIP
nizhikov Sep 11, 2024
59b19ba
IGNITE-23090 WIP
nizhikov Sep 11, 2024
c8ac814
IGNITE-23090 WIP
nizhikov Sep 13, 2024
00a0d40
IGNITE-22732 Transaction aware SQL (#11438)
nizhikov Sep 20, 2024
90f4aba
IGNITE-22874 Support Transaction aware SQL in thin client (#11493)
nizhikov Sep 20, 2024
1dd7d37
Merge branch 'txsql' into IGNITE-23090
nizhikov Sep 20, 2024
2d42bbc
IGNITE-23090 WIP
nizhikov Sep 24, 2024
eb15b6b
IGNITE-23090 WIP
nizhikov Sep 24, 2024
7e266dd
IGNITE-23090 Support transactions in Thin JDBC
nizhikov Sep 24, 2024
71b86cf
IGNITE-23090 Support transactions in Thin JDBC
nizhikov Sep 25, 2024
7d6ba5a
IGNITE-23090 Support transactions in Thin JDBC
nizhikov Sep 25, 2024
b4437da
IGNITE-23090 Support transactions in Thin JDBC
nizhikov Sep 25, 2024
23db693
IGNITE-23090 Support transactions in Thin JDBC
nizhikov Sep 27, 2024
fa3d6ff
IGNITE-23090 Support transactions in Thin JDBC
nizhikov Sep 27, 2024
f79a818
IGNITE-23090 Support transactions in Thin JDBC
nizhikov Sep 27, 2024
d4ce371
IGNITE-23090 Support transactions in Thin JDBC
nizhikov Sep 27, 2024
70ffbf1
IGNITE-23090 Support transactions in Thin JDBC
nizhikov Sep 27, 2024
b1618a3
IGNITE-23090 Test fixes
nizhikov Sep 28, 2024
cb9db1b
merge to master (#11561)
nizhikov Sep 30, 2024
43aa1cb
Fix compilation (#11562)
nizhikov Sep 30, 2024
3391f0b
Merge branch 'txsql' into IGNITE-23090
nizhikov Sep 30, 2024
448965b
IGNITE-23090 Code review fixes.
nizhikov Oct 1, 2024
c634a34
IGNITE-23090 Code review fixes.
nizhikov Oct 1, 2024
f0c23bd
IGNITE-23090 Code review fixes.
nizhikov Oct 1, 2024
e4620a4
IGNITE-23090 Code review fixes.
nizhikov Oct 1, 2024
212ffb3
IGNITE-23090 Code review fixes.
nizhikov Oct 1, 2024
f82c8ae
IGNITE-23090 Code review fixes.
nizhikov Oct 1, 2024
2744ec9
IGNITE-23090 Code review fixes.
nizhikov Oct 1, 2024
89fa964
IGNITE-23090 Code review fixes.
nizhikov Oct 4, 2024
e026d9e
IGNITE-23090 Code review fixes.
nizhikov Oct 4, 2024
5441666
IGNITE-23090 Remove support for multiple transaction via thin JDBC
nizhikov Oct 5, 2024
f1bb463
IGNITE-23090 Remove support for multiple transaction via thin JDBC
nizhikov Oct 5, 2024
d6cfa04
IGNITE-23090 Start transaction on the first query
nizhikov Oct 5, 2024
939e88b
IGNITE-23090 Start transaction on the first query
nizhikov Oct 5, 2024
ea5a626
IGNITE-23090 Start transaction on the first query
nizhikov Oct 6, 2024
1e86f46
IGNITE-23090 Start transaction on the first query
nizhikov Oct 6, 2024
9ba5f91
IGNITE-23090 Start transaction on the first query
nizhikov Oct 6, 2024
ff498ae
IGNITE-22733 Transaction aware Scan queries
nizhikov Oct 9, 2024
4133097
IGNITE-22733 Transaction aware Scan queries
nizhikov Oct 9, 2024
cd57af3
IGNITE-22733 Transaction aware Scan queries
nizhikov Oct 9, 2024
19b5143
IGNITE-23090 Code review fixes.
nizhikov Oct 9, 2024
6e7d6bf
Merge branch 'IGNITE-23090' into IGNITE-22733
nizhikov Oct 9, 2024
d2c0a00
IGNITE-22733 Transaction aware Scan queries
nizhikov Oct 10, 2024
2f82f76
IGNITE-22733 Transaction aware Scan queries
nizhikov Oct 10, 2024
876aeeb
IGNITE-22733 Transaction aware Scan queries
nizhikov Oct 10, 2024
82cfe74
IGNITE-23090 Code review fixes.
nizhikov Oct 11, 2024
3a124f6
IGNITE-22732 Transaction aware SQL (#11438)
nizhikov Sep 20, 2024
963c2a5
IGNITE-22874 Support Transaction aware SQL in thin client (#11493)
nizhikov Sep 20, 2024
8a4bc8a
IGNITE-23090 Support SQL transactions in thin JDBC (#11528)
nizhikov Oct 11, 2024
f08b35c
revert unnecessary changes.
nizhikov Oct 11, 2024
3bc26b7
Fix merge errors
nizhikov Oct 11, 2024
6256a40
Test fixes
nizhikov Oct 14, 2024
e13491b
Fix sonar warning
nizhikov Oct 14, 2024
db4930e
Test fixes
nizhikov Oct 15, 2024
b1b61db
Merge branch 'txsql' into IGNITE-22733
nizhikov Oct 15, 2024
7dbddaa
Fix merge errors
nizhikov Oct 15, 2024
6f457b0
Fix merge errors
nizhikov Oct 15, 2024
efbe79f
Merge branch 'master' into IGNITE-22733
nizhikov Oct 16, 2024
c92befa
IGNITE-22733 merge fixes
nizhikov Oct 16, 2024
02007a2
Merge branch 'master' into IGNITE-22733
nizhikov Oct 25, 2024
3ac4e6f
IGNITE-22733 Merge fixes
nizhikov Oct 25, 2024
caf4942
Merge branch 'master' into IGNITE-22733
nizhikov Oct 28, 2024
3c9b0bb
IGNITE-22733 WIP
nizhikov Oct 28, 2024
ba514ef
MINOR: Some cleanup during development
nizhikov Oct 28, 2024
9816540
MINOR: Some cleanup during development
nizhikov Oct 28, 2024
228da72
WIP
nizhikov Oct 29, 2024
0c87fa8
WIP
nizhikov Oct 29, 2024
e40cccb
IGNITE-22733 Test works
nizhikov Oct 29, 2024
f3e1bac
IGNITE-22733 Test works
nizhikov Oct 30, 2024
72198c7
IGNITE-22733 Test works
nizhikov Oct 30, 2024
fdd34a5
Merge branch 'master' into IGNITE-22733
nizhikov Oct 30, 2024
d742d0d
Merge branch 'master' into IGNITE-22733
nizhikov Oct 30, 2024
a9d1fa3
IGNITE-22733 Test works
nizhikov Oct 30, 2024
a828d9c
IGNITE-22733 Test works
nizhikov Oct 30, 2024
3fa45ca
IGNITE-22733 Test works
nizhikov Oct 30, 2024
2eb92b8
IGNITE-22733 Test works
nizhikov Nov 1, 2024
a3c3319
IGNITE-22733 Code review fix
nizhikov Nov 2, 2024
6b8e457
IGNITE-22733 Code review fix
nizhikov Nov 2, 2024
c28c5b8
IGNITE-23593 User CacheQuery instead of GridCacheQueryAdapter
nizhikov Nov 2, 2024
56ae20d
IGNITE-23593 Use CacheQuery instead of GridCacheQueryAdapter
nizhikov Nov 2, 2024
f93a96d
IGNITE-23593 Use CacheQuery instead of GridCacheQueryAdapter
nizhikov Nov 2, 2024
b5ba771
IGNITE-23593 Use CacheQuery instead of GridCacheQueryAdapter
nizhikov Nov 2, 2024
39d5401
IGNITE-23554 ScanQuery code cleanup
nizhikov Nov 2, 2024
615fae5
IGNITE-23554 ScanQuery code cleanup
nizhikov Nov 2, 2024
4992656
IGNITE-23554 ScanQuery code cleanup
nizhikov Nov 2, 2024
7c2cec5
IGNITE-23554 ScanQuery code cleanup
nizhikov Nov 2, 2024
2112e49
Merge branch 'IGNITE-23554' into IGNITE-22733
nizhikov Nov 2, 2024
3a2efbb
IGNITE-23554 ScanQuery code cleanup
nizhikov Nov 2, 2024
83dfeab
Merge branch 'master' into IGNITE-22733
nizhikov Nov 3, 2024
c708053
IGNITE-23554 ScanQuery code cleanup
nizhikov Nov 5, 2024
356aa7d
IGNITE-23554 ScanQuery code cleanup
nizhikov Nov 5, 2024
aa75b69
IGNITE-23554 ScanQuery code cleanup
nizhikov Nov 5, 2024
1df8120
IGNITE-23554 ScanQuery code cleanup
nizhikov Nov 5, 2024
66d0b08
IGNITE-23554 Improve test coverage
nizhikov Nov 6, 2024
a4739f0
IGNITE-23554 Improve test coverage
nizhikov Nov 6, 2024
7a51429
IGNITE-23554 Code review fixes.
nizhikov Nov 7, 2024
86b26e5
Merge branch 'master' into IGNITE-22733
nizhikov Nov 7, 2024
0964dc9
IGNITE-22733 Merge fixes
nizhikov Nov 7, 2024
48946ec
IGNITE-22733 Prepare for code review
nizhikov Nov 7, 2024
d35d7e0
IGNITE-22733 Prepare for code review
nizhikov Nov 7, 2024
1415d53
Merge branch 'master' into IGNITE-22733
nizhikov Nov 8, 2024
fd24c63
IGNITE-22733 Test fix
nizhikov Nov 8, 2024
611ba8c
IGNITE-22733 Test fix
nizhikov Nov 8, 2024
f062e3b
IGNITE-22733 Test fix
nizhikov Nov 8, 2024
60f114c
Merge branch 'master' into IGNITE-22733
nizhikov Nov 19, 2024
85db802
Merge branch 'master' into IGNITE-22733
nizhikov Nov 21, 2024
c88a4b4
IGNITE-22733 Code review fixes.
nizhikov Nov 21, 2024
8556317
IGNITE-22733 Code review fixes.
nizhikov Nov 21, 2024
09d5aef
Merge branch 'master' into IGNITE-22733
nizhikov Nov 25, 2024
b5fddc1
IGNITE-22733 Code review changes
nizhikov Nov 25, 2024
5812f76
IGNITE-22733 Code review changes
nizhikov Nov 25, 2024
d53c538
IGNITE-22733 Code review changes
nizhikov Nov 25, 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
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
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.GridCacheContext;
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;
Expand Down Expand Up @@ -346,6 +347,7 @@ public static Collection<QueryTxEntry> transactionChanges(
* @param cmp Comparator to sort new and updated entries.
* @return First, set of object changed in transaction, second, list of transaction data in required format.
* @param <R> Required type.
* @see GridCacheContext#transactionChanges(Integer)
*/
public <R> TransactionChanges<R> transactionChanges(
int cacheId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1137,7 +1137,12 @@ public IgniteClientFuture<Void> removeAllConflictAsync(Map<? extends K, GridCach
/** Handle scan query. */
private QueryCursor<Cache.Entry<K, V>> scanQuery(ScanQuery<K, V> qry) {
Consumer<PayloadOutputChannel> qryWriter = payloadCh -> {
writeCacheInfo(payloadCh);
writeCacheInfo(
payloadCh,
payloadCh.clientChannel().protocolCtx().isFeatureSupported(ProtocolBitmaskFeature.TX_AWARE_QUERIES)
? transactions.tx()
: null
);

BinaryOutputStream out = payloadCh.out();

Expand All @@ -1155,7 +1160,7 @@ private QueryCursor<Cache.Entry<K, V>> scanQuery(ScanQuery<K, V> qry) {

return new ClientQueryCursor<>(new ClientQueryPager<>(
ch,
null,
transactions.tx(),
ClientOperation.QUERY_SCAN,
ClientOperation.QUERY_SCAN_CURSOR_GET_PAGE,
qryWriter,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalEx;
import org.apache.ignite.internal.processors.cache.transactions.TransactionChanges;
import org.apache.ignite.internal.processors.cache.version.GridCacheRawVersionedEntry;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.processors.datastreamer.DataStreamerEntry;
Expand Down Expand Up @@ -3536,8 +3537,17 @@ private Iterator<Cache.Entry<K, V>> igniteIterator(boolean keepBinary,

final CacheOperationContext opCtx = ctx.operationContextPerCall();

final GridCloseableIterator<Map.Entry<K, V>> iter = ctx0.queries().createScanQuery(p, null, keepBinary, null)
.executeScanQuery();
final TransactionChanges<Object> txChanges = ctx.transactionChanges(null);

final GridCloseableIterator<Map.Entry<K, V>> iter = ctx0.queries().createScanQuery(
p,
null,
null,
keepBinary,
false,
null,
txChanges.changedKeys()
).executeScanQuery(txChanges.newAndUpdatedEntries());

return ctx.itHolder().iterator(iter, new CacheIteratorConverter<Cache.Entry<K, V>, Map.Entry<K, V>>() {
@Override protected Cache.Entry<K, V> convert(Map.Entry<K, V> e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
Expand All @@ -36,6 +37,7 @@
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import javax.cache.Cache;
import javax.cache.configuration.Factory;
import javax.cache.expiry.EternalExpiryPolicy;
Expand Down Expand Up @@ -83,9 +85,11 @@
import org.apache.ignite.internal.processors.cache.query.GridCacheQueryManager;
import org.apache.ignite.internal.processors.cache.query.continuous.CacheContinuousQueryManager;
import org.apache.ignite.internal.processors.cache.store.CacheStoreManager;
import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager;
import org.apache.ignite.internal.processors.cache.transactions.TransactionChanges;
import org.apache.ignite.internal.processors.cache.version.CacheVersionConflictResolver;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersionConflictContext;
Expand Down Expand Up @@ -2350,6 +2354,53 @@ public void dumpListener(DumpEntryChangeListener dumpEntryChangeLsnr) {
this.dumpLsnr = dumpEntryChangeLsnr;
}

/**
* @param part Partition.
* @return First, set of object changed in transaction, second, list of transaction data in required format.
* @see ExecutionContext#transactionChanges(int, int[], Function)
*/
public TransactionChanges<Object> transactionChanges(Integer part) {
if (!U.isTxAwareQueriesEnabled(ctx))
return TransactionChanges.empty();

IgniteInternalTx tx = tm().tx();

if (tx == null)
return TransactionChanges.empty();

IgniteTxManager.ensureTransactionModeSupported(tx.isolation());

Set<KeyCacheObject> changedKeys = new HashSet<>();
List<Object> newAndUpdatedRows = new ArrayList<>();

for (IgniteTxEntry e : tx.writeEntries()) {
if (e.cacheId() != cacheId)
continue;

int epart = e.key().partition();

assert epart != -1;

if (part != null && epart != part)
continue;

changedKeys.add(e.key());

CacheObject val = e.value();

boolean hasEntryProcessors = !F.isEmpty(e.entryProcessors());

if (hasEntryProcessors)
val = e.applyEntryProcessors(val);

// Mix only updated or inserted entries. In case val == null entry removed.
if (val != null)
newAndUpdatedRows.add(hasEntryProcessors ? F.t(e.key(), val) : e);
}

return new TransactionChanges<>(changedKeys, newAndUpdatedRows);
}

/** {@inheritDoc} */
@Override public void writeExternal(ObjectOutput out) throws IOException {
U.writeString(out, igniteInstanceName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
import org.apache.ignite.internal.processors.cache.query.CacheQueryFuture;
import org.apache.ignite.internal.processors.cache.query.GridCacheQueryType;
import org.apache.ignite.internal.processors.cache.query.QueryCursorEx;
import org.apache.ignite.internal.processors.cache.transactions.TransactionChanges;
import org.apache.ignite.internal.processors.query.GridQueryFieldMetadata;
import org.apache.ignite.internal.processors.query.QueryUtils;
import org.apache.ignite.internal.util.GridCloseableIteratorAdapter;
Expand Down Expand Up @@ -464,9 +465,9 @@ public IgniteCacheProxy<K, V> gatewayWrapper() {
* @throws IgniteCheckedException If failed.
*/
@SuppressWarnings("unchecked")
private <T, R> QueryCursor<R> query(
final ScanQuery scanQry,
@Nullable final IgniteClosure<T, R> transformer,
private <R> QueryCursor<R> query(
final ScanQuery<K, V> scanQry,
@Nullable final IgniteClosure<Cache.Entry<K, V>, R> transformer,
@Nullable ClusterGroup grp
) throws IgniteCheckedException {
GridCacheContext<K, V> ctx = getContextSafe();
Expand All @@ -477,8 +478,10 @@ private <T, R> QueryCursor<R> query(

IgniteBiPredicate<K, V> p = scanQry.getFilter();

TransactionChanges<Object> txChanges = ctx.transactionChanges(scanQry.getPartition());

final CacheQuery<R> qry = ctx.queries().createScanQuery(
p, transformer, scanQry.getPartition(), isKeepBinary, scanQry.isLocal(), null);
p, transformer, scanQry.getPartition(), isKeepBinary, scanQry.isLocal(), null, txChanges.changedKeys());

if (scanQry.getPageSize() > 0)
qry.pageSize(scanQry.getPageSize());
Expand All @@ -489,7 +492,7 @@ private <T, R> QueryCursor<R> query(
final GridCloseableIterator<R> iter = ctx.kernalContext().query().executeQuery(GridCacheQueryType.SCAN,
cacheName, ctx, new IgniteOutClosureX<GridCloseableIterator<R>>() {
@Override public GridCloseableIterator<R> applyx() throws IgniteCheckedException {
return qry.executeScanQuery();
return qry.executeScanQuery(txChanges.newAndUpdatedEntries());
}
}, true);

Expand Down Expand Up @@ -830,7 +833,7 @@ private QueryCursor<Cache.Entry<K, V>> queryContinuous(AbstractContinuousQuery q
null, keepBinary, true).get(0);

if (qry instanceof ScanQuery)
return query((ScanQuery)qry, null, projection(qry.isLocal()));
return query((ScanQuery<K, V>)qry, null, projection(qry.isLocal()));

return (QueryCursor<R>)query(qry, projection(qry.isLocal()));
}
Expand Down Expand Up @@ -860,7 +863,7 @@ private QueryCursor<Cache.Entry<K, V>> queryContinuous(AbstractContinuousQuery q

validate(qry);

return query((ScanQuery<K, V>)qry, transformer, projection(qry.isLocal()));
return query((ScanQuery<K, V>)qry, (IgniteClosure<Cache.Entry<K, V>, R>)transformer, projection(qry.isLocal()));
}
catch (Exception e) {
if (e instanceof CacheException)
Expand Down
Loading