You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2018/08/30 11:54:00 UTC

[38/38] ignite git commit: IGNITE-4191: MVCC and transactional SQL support. Joint multi-man-years efforts of Semen Boikov, Igor Seliverstov, Alexander Paschenko, Igor Sapego, Sergey Kalashnikov, Roman Kondakov, Pavel Kuznetsov, Ivan Pavlukhin, Andrey Mas

IGNITE-4191: MVCC and transactional SQL support. Joint multi-man-years efforts of Semen Boikov, Igor Seliverstov, Alexander Paschenko, Igor Sapego, Sergey Kalashnikov, Roman Kondakov, Pavel Kuznetsov, Ivan Pavlukhin, Andrey Mashenkov, and many others. Special thanks for design ideas and review to Alexey Goncharuk and Sergi Vladykin. This closes #3220.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/00bb4d4d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/00bb4d4d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/00bb4d4d

Branch: refs/heads/master
Commit: 00bb4d4def3391bfe22e0a6042ab18bd95ef9ecf
Parents: 4ea23b0
Author: Igor Seliverstov <gv...@gmail.com>
Authored: Thu Aug 30 14:52:49 2018 +0300
Committer: devozerov <vo...@gridgain.com>
Committed: Thu Aug 30 14:52:55 2018 +0300

----------------------------------------------------------------------
 .../benchmarks/jmh/tree/BPlusTreeBenchmark.java |    2 +-
 .../internal/jdbc2/JdbcStreamingSelfTest.java   |    3 +-
 .../jdbc/suite/IgniteJdbcDriverTestSuite.java   |   14 +
 .../jdbc/thin/JdbcThinAbstractSelfTest.java     |    4 +-
 .../JdbcThinConnectionMvccEnabledSelfTest.java  |  378 ++
 .../jdbc/thin/JdbcThinConnectionSelfTest.java   |  188 +-
 .../thin/JdbcThinStreamingAbstractSelfTest.java |   19 +-
 .../JdbcThinStreamingNotOrderedSelfTest.java    |    2 +-
 .../thin/JdbcThinStreamingOrderedSelfTest.java  |    2 +-
 ...ThinTransactionsAbstractComplexSelfTest.java | 1058 +++++
 ...sactionsClientAutoCommitComplexSelfTest.java |   33 +
 ...ctionsClientNoAutoCommitComplexSelfTest.java |   33 +
 .../jdbc/thin/JdbcThinTransactionsSelfTest.java |  447 +++
 ...sactionsServerAutoCommitComplexSelfTest.java |   33 +
 ...ctionsServerNoAutoCommitComplexSelfTest.java |   33 +
 .../ignite/codegen/MessageCodeGenerator.java    |    6 +-
 .../configuration/CacheConfiguration.java       |    1 +
 .../configuration/IgniteConfiguration.java      |   84 +-
 .../apache/ignite/internal/GridComponent.java   |    5 +-
 .../ignite/internal/GridKernalContext.java      |    6 +
 .../ignite/internal/GridKernalContextImpl.java  |   14 +-
 .../org/apache/ignite/internal/GridTopic.java   |    5 +-
 .../apache/ignite/internal/IgniteKernal.java    |   22 +-
 .../ignite/internal/IgniteNodeAttributes.java   |    3 +
 .../org/apache/ignite/internal/IgnitionEx.java  |    8 +-
 .../jdbc/thin/ConnectionProperties.java         |   10 +
 .../jdbc/thin/ConnectionPropertiesImpl.java     |   37 +-
 .../internal/jdbc/thin/JdbcThinConnection.java  |   33 +-
 .../jdbc/thin/JdbcThinDatabaseMetadata.java     |    9 +-
 .../internal/jdbc/thin/JdbcThinStatement.java   |    7 +-
 .../internal/jdbc/thin/JdbcThinTcpIo.java       |   10 +-
 .../managers/communication/GridIoManager.java   |   16 +
 .../communication/GridIoMessageFactory.java     |  134 +-
 .../internal/managers/discovery/DiscoCache.java |   17 +-
 .../discovery/GridDiscoveryManager.java         |   21 +
 .../pagemem/store/IgnitePageStoreManager.java   |   13 +
 .../internal/pagemem/wal/record/WALRecord.java  |   11 +-
 .../delta/DataPageMvccMarkUpdatedRecord.java    |  103 +
 .../DataPageMvccUpdateNewTxStateHintRecord.java |   79 +
 .../DataPageMvccUpdateTxStateHintRecord.java    |   79 +
 .../processors/affinity/AffinityAssignment.java |    9 +-
 .../affinity/GridAffinityAssignment.java        |   15 +-
 .../affinity/GridAffinityAssignmentCache.java   |   21 +-
 .../affinity/GridAffinityProcessor.java         |    2 +-
 .../processors/affinity/GridAffinityUtils.java  |    2 +-
 .../affinity/HistoryAffinityAssignment.java     |   12 +-
 .../cache/CacheAffinitySharedManager.java       |   33 +-
 .../cache/CacheEntryInfoCollection.java         |   12 +
 .../processors/cache/CacheGroupContext.java     |   34 +
 .../processors/cache/CacheOperationContext.java |    2 +-
 .../processors/cache/ClusterCachesInfo.java     |   17 +-
 .../processors/cache/ExchangeContext.java       |   43 +-
 .../cache/GatewayProtectedCacheProxy.java       |    3 +
 .../processors/cache/GridCacheAdapter.java      |   65 +-
 .../cache/GridCacheAffinityManager.java         |    5 +
 .../processors/cache/GridCacheContext.java      |    7 +
 .../processors/cache/GridCacheEntryEx.java      |  135 +-
 .../processors/cache/GridCacheEntryInfo.java    |    6 +-
 .../processors/cache/GridCacheMapEntry.java     | 1149 +++++-
 .../cache/GridCacheMvccEntryInfo.java           |  257 ++
 .../processors/cache/GridCacheOperation.java    |    2 +-
 .../GridCachePartitionExchangeManager.java      |   76 +-
 .../processors/cache/GridCacheProcessor.java    |   28 +-
 .../cache/GridCacheSharedContext.java           |   11 +-
 .../cache/GridCacheUpdateTxResult.java          |   98 +-
 .../processors/cache/GridCacheUtils.java        |  113 +-
 .../cache/IgniteCacheOffheapManager.java        |  481 ++-
 .../cache/IgniteCacheOffheapManagerImpl.java    | 1679 +++++++-
 .../processors/cache/IgniteCacheProxyImpl.java  |    4 +
 .../distributed/GridCacheTxFinishSync.java      |    2 +-
 .../distributed/GridCacheTxRecoveryFuture.java  |   11 +
 .../distributed/GridDistributedTxMapping.java   |   17 +
 .../GridDistributedTxPrepareRequest.java        |   22 +
 .../GridDistributedTxRemoteAdapter.java         |   75 +-
 .../distributed/dht/CompoundLockFuture.java     |  112 +
 .../cache/distributed/dht/DhtLockFuture.java    |   30 +
 .../cache/distributed/dht/ExceptionAware.java   |   30 +
 .../dht/GridClientPartitionTopology.java        |    7 +
 .../distributed/dht/GridDhtCacheAdapter.java    |   62 +-
 .../distributed/dht/GridDhtCacheEntry.java      |   10 +-
 .../cache/distributed/dht/GridDhtGetFuture.java |   15 +-
 .../distributed/dht/GridDhtGetSingleFuture.java |   15 +-
 .../distributed/dht/GridDhtLocalPartition.java  |   23 +
 .../distributed/dht/GridDhtLockFuture.java      |   15 +-
 .../dht/GridDhtPartitionTopology.java           |    4 +
 .../dht/GridDhtPartitionTopologyImpl.java       |   11 +
 .../dht/GridDhtPartitionsStateValidator.java    |   11 +-
 .../dht/GridDhtPartitionsUpdateCountersMap.java |  119 +
 .../dht/GridDhtTransactionalCacheAdapter.java   |  465 ++-
 .../dht/GridDhtTxAbstractEnlistFuture.java      | 1139 ++++++
 .../distributed/dht/GridDhtTxFinishFuture.java  |  111 +-
 .../distributed/dht/GridDhtTxFinishRequest.java |   77 +-
 .../cache/distributed/dht/GridDhtTxLocal.java   |   11 +-
 .../distributed/dht/GridDhtTxLocalAdapter.java  |   45 +-
 .../distributed/dht/GridDhtTxPrepareFuture.java |  106 +-
 .../dht/GridDhtTxPrepareRequest.java            |   67 +-
 .../dht/GridDhtTxQueryEnlistFuture.java         |  140 +
 .../dht/GridDhtTxQueryEnlistRequest.java        |  404 ++
 .../dht/GridDhtTxQueryEnlistResponse.java       |  205 +
 .../dht/GridDhtTxQueryFirstEnlistRequest.java   |  370 ++
 .../dht/GridDhtTxQueryResultsEnlistFuture.java  |  130 +
 .../cache/distributed/dht/GridDhtTxRemote.java  |  144 +
 .../dht/GridPartitionedGetFuture.java           |   90 +-
 .../dht/GridPartitionedSingleGetFuture.java     |   22 +-
 .../dht/NearTxQueryEnlistResultHandler.java     |  169 +
 .../dht/atomic/GridDhtAtomicCache.java          |   21 +-
 .../dht/colocated/GridDhtColocatedCache.java    |   30 +-
 .../dht/preloader/GridDhtForceKeysFuture.java   |    7 +
 .../dht/preloader/GridDhtPartitionDemander.java |    7 +
 .../dht/preloader/GridDhtPartitionSupplier.java |   38 +-
 .../GridDhtPartitionsExchangeFuture.java        |   48 +-
 .../GridDhtPartitionsSingleMessage.java         |   76 +-
 .../near/AckCoordinatorOnRollback.java          |   54 +
 .../distributed/near/GridNearGetFuture.java     |   18 +-
 .../distributed/near/GridNearGetRequest.java    |   49 +-
 ...arOptimisticSerializableTxPrepareFuture.java |   75 +-
 .../near/GridNearOptimisticTxPrepareFuture.java |   68 +-
 ...ridNearOptimisticTxPrepareFutureAdapter.java |  133 +-
 .../GridNearPessimisticTxPrepareFuture.java     |  194 +-
 .../near/GridNearSingleGetRequest.java          |   41 +-
 .../near/GridNearTxAbstractEnlistFuture.java    |  499 +++
 .../near/GridNearTxFastFinishFuture.java        |   13 +-
 .../near/GridNearTxFinishAndAckFuture.java      |  144 +
 .../near/GridNearTxFinishFuture.java            |   66 +-
 .../near/GridNearTxFinishRequest.java           |   30 +-
 .../cache/distributed/near/GridNearTxLocal.java |  407 +-
 .../near/GridNearTxPrepareFutureAdapter.java    |   12 +-
 .../near/GridNearTxPrepareRequest.java          |   17 +
 .../near/GridNearTxPrepareResponse.java         |   50 +-
 .../near/GridNearTxQueryEnlistFuture.java       |  382 ++
 .../near/GridNearTxQueryEnlistRequest.java      |  616 +++
 .../near/GridNearTxQueryEnlistResponse.java     |  298 ++
 .../GridNearTxQueryResultsEnlistFuture.java     |  670 ++++
 .../GridNearTxQueryResultsEnlistRequest.java    |  578 +++
 .../GridNearTxQueryResultsEnlistResponse.java   |  202 +
 .../distributed/near/GridNearTxRemote.java      |    9 +-
 .../near/GridNearTxSelectForUpdateFuture.java   |  462 +++
 .../distributed/near/NearTxFinishFuture.java    |   21 +-
 .../near/TxTopologyVersionFuture.java           |  155 +
 .../processors/cache/dr/GridCacheDrManager.java |   31 +
 .../cache/dr/GridOsCacheDrManager.java          |   13 +
 .../local/atomic/GridLocalAtomicCache.java      |   15 +-
 .../processors/cache/mvcc/MvccCoordinator.java  |  104 +
 .../cache/mvcc/MvccDiscoveryData.java           |   52 +
 .../cache/mvcc/MvccEmptyLongList.java           |   53 +
 .../processors/cache/mvcc/MvccFuture.java       |   66 +
 .../processors/cache/mvcc/MvccLongList.java     |   29 +
 .../mvcc/MvccPreviousCoordinatorQueries.java    |  222 ++
 .../processors/cache/mvcc/MvccProcessor.java    |  250 ++
 .../cache/mvcc/MvccProcessorImpl.java           | 2187 +++++++++++
 .../processors/cache/mvcc/MvccQueryTracker.java |  102 +
 .../cache/mvcc/MvccQueryTrackerImpl.java        |  348 ++
 .../processors/cache/mvcc/MvccSnapshot.java     |   48 +
 .../cache/mvcc/MvccSnapshotFuture.java          |   43 +
 .../mvcc/MvccSnapshotResponseListener.java      |   35 +
 .../cache/mvcc/MvccSnapshotWithoutTxs.java      |  204 +
 .../cache/mvcc/MvccUpdateVersionAware.java      |   76 +
 .../processors/cache/mvcc/MvccUtils.java        |  882 +++++
 .../processors/cache/mvcc/MvccVersion.java      |   48 +
 .../processors/cache/mvcc/MvccVersionAware.java |   76 +
 .../processors/cache/mvcc/MvccVersionImpl.java  |  193 +
 .../cache/mvcc/NoOpMvccProcessor.java           |  215 +
 .../cache/mvcc/StaticMvccQueryTracker.java      |   96 +
 .../processors/cache/mvcc/VacuumMetrics.java    |  102 +
 .../cache/mvcc/VacuumMetricsReducer.java        |   49 +
 .../processors/cache/mvcc/VacuumTask.java       |   63 +
 .../cache/mvcc/msg/MvccAckRequestQueryCntr.java |  130 +
 .../cache/mvcc/msg/MvccAckRequestQueryId.java   |  130 +
 .../cache/mvcc/msg/MvccAckRequestTx.java        |  210 +
 .../mvcc/msg/MvccAckRequestTxAndQueryCntr.java  |  123 +
 .../mvcc/msg/MvccAckRequestTxAndQueryId.java    |  122 +
 .../mvcc/msg/MvccActiveQueriesMessage.java      |  132 +
 .../cache/mvcc/msg/MvccFutureResponse.java      |  130 +
 .../processors/cache/mvcc/msg/MvccMessage.java  |   35 +
 .../mvcc/msg/MvccQuerySnapshotRequest.java      |  130 +
 .../cache/mvcc/msg/MvccSnapshotResponse.java    |  320 ++
 .../cache/mvcc/msg/MvccTxSnapshotRequest.java   |  128 +
 .../cache/mvcc/msg/MvccWaitTxsRequest.java      |  159 +
 .../processors/cache/mvcc/txlog/TxKey.java      |   76 +
 .../processors/cache/mvcc/txlog/TxLog.java      |  584 +++
 .../processors/cache/mvcc/txlog/TxLogIO.java    |   73 +
 .../cache/mvcc/txlog/TxLogInnerIO.java          |  105 +
 .../cache/mvcc/txlog/TxLogLeafIO.java           |  105 +
 .../processors/cache/mvcc/txlog/TxLogTree.java  |   62 +
 .../processors/cache/mvcc/txlog/TxRow.java      |   44 +
 .../processors/cache/mvcc/txlog/TxState.java    |   37 +
 .../cache/persistence/CacheDataRow.java         |    3 +-
 .../cache/persistence/CacheDataRowAdapter.java  |  114 +-
 .../cache/persistence/CacheSearchRow.java       |    3 +-
 .../persistence/DatabaseLifecycleListener.java  |   54 +
 .../GridCacheDatabaseSharedManager.java         |   39 +-
 .../persistence/GridCacheOffheapManager.java    |  304 +-
 .../IgniteCacheDatabaseSharedManager.java       |   32 +-
 .../cache/persistence/IndexStorageImpl.java     |    2 +-
 .../processors/cache/persistence/RowStore.java  |   28 +-
 .../processors/cache/persistence/Storable.java  |   14 +
 .../persistence/file/FilePageStoreManager.java  |   27 +-
 .../persistence/freelist/AbstractFreeList.java  |   20 +-
 .../cache/persistence/freelist/FreeList.java    |   12 +
 .../metastorage/MetastorageDataRow.java         |   11 +
 .../metastorage/MetastorageTree.java            |    2 +-
 .../cache/persistence/tree/BPlusTree.java       | 1219 +++++-
 .../persistence/tree/io/AbstractDataPageIO.java |   35 +-
 .../cache/persistence/tree/io/DataPageIO.java   |  484 ++-
 .../cache/persistence/tree/io/IOVersions.java   |    7 +
 .../cache/persistence/tree/io/PageIO.java       |  133 +-
 .../persistence/tree/io/SimpleDataPageIO.java   |    6 -
 .../wal/reader/StandaloneGridKernalContext.java |    6 +
 .../persistence/wal/record/RecordTypes.java     |    3 +
 .../wal/serializer/RecordDataV1Serializer.java  |   82 +
 .../query/GridCacheDistributedQueryManager.java |   14 +-
 .../cache/query/GridCacheQueryAdapter.java      |  132 +-
 .../cache/query/GridCacheQueryManager.java      |   18 +-
 .../cache/query/GridCacheQueryRequest.java      |   59 +-
 .../cache/query/IgniteQueryErrorCode.java       |   20 +
 .../cache/query/SqlFieldsQueryEx.java           |   39 +
 .../continuous/CacheContinuousQueryManager.java |   10 +-
 .../cache/transactions/IgniteInternalTx.java    |   16 +
 .../transactions/IgniteTransactionsImpl.java    |    4 +-
 .../cache/transactions/IgniteTxAdapter.java     |  149 +-
 .../cache/transactions/IgniteTxHandler.java     |   26 +-
 .../IgniteTxImplicitSingleStateImpl.java        |   16 +-
 .../transactions/IgniteTxLocalAdapter.java      |  311 +-
 .../cache/transactions/IgniteTxManager.java     |   13 +
 .../cache/transactions/IgniteTxRemoteEx.java    |   12 +
 .../IgniteTxRemoteSingleStateImpl.java          |    5 +
 .../IgniteTxRemoteStateAdapter.java             |   21 +-
 .../transactions/IgniteTxRemoteStateImpl.java   |   10 +
 .../cache/transactions/IgniteTxState.java       |   16 +-
 .../cache/transactions/IgniteTxStateImpl.java   |   26 +-
 .../cache/tree/AbstractDataInnerIO.java         |  112 +-
 .../cache/tree/AbstractDataLeafIO.java          |  125 +-
 .../cache/tree/CacheDataRowStore.java           |   35 +-
 .../processors/cache/tree/CacheDataTree.java    |   82 +-
 .../cache/tree/CacheIdAwareDataInnerIO.java     |    8 +-
 .../cache/tree/CacheIdAwareDataLeafIO.java      |    8 +-
 .../processors/cache/tree/DataInnerIO.java      |   11 -
 .../processors/cache/tree/DataLeafIO.java       |   11 -
 .../internal/processors/cache/tree/DataRow.java |   28 +-
 .../cache/tree/PendingEntriesTree.java          |    2 +-
 .../processors/cache/tree/PendingRow.java       |    3 +-
 .../processors/cache/tree/RowLinkIO.java        |   67 +-
 .../processors/cache/tree/SearchRow.java        |   31 +
 .../mvcc/data/MvccCacheIdAwareDataInnerIO.java  |   68 +
 .../mvcc/data/MvccCacheIdAwareDataLeafIO.java   |   89 +
 .../cache/tree/mvcc/data/MvccDataInnerIO.java   |   71 +
 .../cache/tree/mvcc/data/MvccDataLeafIO.java    |   89 +
 .../cache/tree/mvcc/data/MvccDataRow.java       |  263 ++
 .../cache/tree/mvcc/data/MvccUpdateDataRow.java |  485 +++
 .../tree/mvcc/data/MvccUpdateDataRowNative.java |  240 ++
 .../cache/tree/mvcc/data/MvccUpdateResult.java  |   43 +
 .../cache/tree/mvcc/data/ResultType.java        |   34 +
 .../mvcc/search/MvccFirstRowTreeClosure.java    |   76 +
 .../mvcc/search/MvccLinkAwareSearchRow.java     |   48 +
 .../tree/mvcc/search/MvccMaxSearchRow.java      |   55 +
 .../tree/mvcc/search/MvccMinSearchRow.java      |   55 +
 .../cache/tree/mvcc/search/MvccSearchRow.java   |   70 +
 .../tree/mvcc/search/MvccSnapshotSearchRow.java |  113 +
 .../cache/tree/mvcc/search/MvccTreeClosure.java |   29 +
 .../internal/processors/odbc/SqlStateCode.java  |    3 +
 .../odbc/jdbc/JdbcBatchExecuteRequest.java      |   27 +-
 .../odbc/jdbc/JdbcConnectionContext.java        |   47 +-
 .../jdbc/JdbcOrderedBatchExecuteRequest.java    |    5 +-
 .../odbc/jdbc/JdbcQueryExecuteRequest.java      |   27 +-
 .../odbc/jdbc/JdbcRequestHandler.java           |   65 +-
 .../odbc/jdbc/JdbcRequestHandlerWorker.java     |  131 +
 .../odbc/odbc/OdbcConnectionContext.java        |   21 +-
 .../processors/odbc/odbc/OdbcMessageParser.java |   16 +-
 .../odbc/odbc/OdbcQueryExecuteBatchRequest.java |   15 +-
 .../odbc/odbc/OdbcQueryExecuteRequest.java      |   14 +-
 .../odbc/odbc/OdbcRequestHandler.java           |   73 +-
 .../odbc/odbc/OdbcRequestHandlerWorker.java     |  131 +
 .../processors/query/EnlistOperation.java       |   91 +
 .../processors/query/GridQueryIndexing.java     |   41 +-
 .../processors/query/GridQueryProcessor.java    |   52 +-
 .../internal/processors/query/NestedTxMode.java |   60 +
 .../processors/query/UpdateSourceIterator.java  |   89 +
 .../messages/GridQueryNextPageResponse.java     |   32 +-
 .../GridInternalSubscriptionProcessor.java      |   18 +
 .../apache/ignite/internal/sql/SqlKeyword.java  |   20 +
 .../apache/ignite/internal/sql/SqlParser.java   |   85 +-
 .../ignite/internal/sql/SqlParserUtils.java     |   14 +
 .../sql/command/SqlBeginTransactionCommand.java |   46 +
 .../command/SqlCommitTransactionCommand.java    |   46 +
 .../command/SqlRollbackTransactionCommand.java  |   46 +
 .../IgniteTxMvccVersionCheckedException.java    |   47 +
 .../util/future/GridCompoundFuture.java         |    4 +-
 .../internal/TestRecordingCommunicationSpi.java |   26 +-
 .../processors/cache/GridCacheTestEntryEx.java  |   73 +-
 ...IgniteClientCacheInitializationFailTest.java |   20 +-
 ...vccAbstractBasicCoordinatorFailoverTest.java |  685 ++++
 ...acheMvccAbstractCoordinatorFailoverTest.java |  148 +
 .../mvcc/CacheMvccAbstractFeatureTest.java      |  294 ++
 .../cache/mvcc/CacheMvccAbstractTest.java       | 2291 +++++++++++
 .../cache/mvcc/CacheMvccClusterRestartTest.java |  178 +
 .../CacheMvccConfigurationValidationTest.java   |  191 +
 ...ccIteratorWithConcurrentTransactionTest.java |   64 +
 ...calEntriesWithConcurrentTransactionTest.java |   65 +
 .../mvcc/CacheMvccOperationChecksTest.java      |  201 +
 ...eMvccPartitionedCoordinatorFailoverTest.java |  144 +
 .../cache/mvcc/CacheMvccProcessorTest.java      |   97 +
 ...heMvccReplicatedCoordinatorFailoverTest.java |   30 +
 ...cScanQueryWithConcurrentTransactionTest.java |   76 +
 ...heMvccSizeWithConcurrentTransactionTest.java |   52 +
 .../cache/mvcc/CacheMvccTransactionsTest.java   | 3674 ++++++++++++++++++
 .../cache/mvcc/CacheMvccVacuumTest.java         |  158 +
 .../MemoryPolicyInitializationTest.java         |   12 +-
 .../pagemem/NoOpPageStoreManager.java           |    7 +
 .../processors/database/BPlusTreeSelfTest.java  |  377 +-
 .../database/CacheFreeListImplSelfTest.java     |   55 +
 .../DataStreamProcessorMvccSeflTest.java        |   68 +
 .../DataStreamProcessorSelfTest.java            |   24 +-
 .../SqlParserTransactionalKeywordsSelfTest.java |   96 +
 .../testframework/junits/GridAbstractTest.java  |    8 +
 .../testsuites/IgniteCacheMvccTestSuite.java    |   61 +
 .../development/utils/IgniteWalConverter.java   |    5 +-
 .../query/h2/opt/GridH2SpatialIndex.java        |   11 +-
 .../cache/query/GridCacheTwoStepQuery.java      |   36 +
 .../query/h2/DhtResultSetEnlistFuture.java      |   63 +
 .../query/h2/DmlStatementsProcessor.java        |  352 +-
 .../query/h2/H2ConnectionWrapper.java           |   52 +-
 .../processors/query/h2/H2FieldsIterator.java   |   29 +-
 .../processors/query/h2/H2KeyValueIterator.java |    2 +-
 .../query/h2/H2ResultSetIterator.java           |    7 +-
 .../processors/query/h2/H2StatementCache.java   |   78 +-
 .../processors/query/h2/IgniteH2Indexing.java   |  983 +++--
 .../query/h2/NearResultSetEnlistFuture.java     |   62 +
 .../query/h2/PreparedStatementEx.java           |   45 +
 .../query/h2/PreparedStatementExImpl.java       |  648 +++
 .../query/h2/RebuildIndexFromHashClosure.java   |   47 +
 .../query/h2/ResultSetEnlistFuture.java         |  136 +
 .../query/h2/ThreadLocalObjectPool.java         |  103 +
 .../query/h2/database/H2PkHashIndex.java        |  108 +-
 .../query/h2/database/H2RowFactory.java         |   25 +-
 .../processors/query/h2/database/H2Tree.java    |  112 +-
 .../query/h2/database/H2TreeFilterClosure.java  |  109 +
 .../query/h2/database/H2TreeIndex.java          |  160 +-
 .../h2/database/io/AbstractH2ExtrasInnerIO.java |  164 +
 .../h2/database/io/AbstractH2ExtrasLeafIO.java  |  161 +
 .../query/h2/database/io/AbstractH2InnerIO.java |   74 +
 .../query/h2/database/io/AbstractH2LeafIO.java  |   76 +
 .../query/h2/database/io/H2ExtrasInnerIO.java   |  111 +-
 .../query/h2/database/io/H2ExtrasLeafIO.java    |  107 +-
 .../query/h2/database/io/H2IOUtils.java         |   94 +
 .../query/h2/database/io/H2InnerIO.java         |   41 +-
 .../query/h2/database/io/H2LeafIO.java          |   41 +-
 .../h2/database/io/H2MvccExtrasInnerIO.java     |   55 +
 .../h2/database/io/H2MvccExtrasLeafIO.java      |   54 +
 .../query/h2/database/io/H2MvccInnerIO.java     |   58 +
 .../query/h2/database/io/H2MvccLeafIO.java      |   58 +
 .../query/h2/database/io/H2RowLinkIO.java       |   34 +
 .../query/h2/ddl/DdlStatementsProcessor.java    |   27 +
 .../processors/query/h2/dml/DmlAstUtils.java    |   12 +-
 .../processors/query/h2/dml/FastUpdate.java     |   17 +
 .../processors/query/h2/dml/UpdatePlan.java     |  233 ++
 .../query/h2/dml/UpdatePlanBuilder.java         |  118 +-
 .../query/h2/opt/GridH2IndexBase.java           |   36 +-
 .../query/h2/opt/GridH2KeyRowOnheap.java        |   11 +
 .../query/h2/opt/GridH2KeyValueRowOnheap.java   |   21 +-
 .../query/h2/opt/GridH2MetaTable.java           |    5 +
 .../query/h2/opt/GridH2PlainRowFactory.java     |   17 +-
 .../query/h2/opt/GridH2QueryContext.java        |   27 +-
 .../processors/query/h2/opt/GridH2Row.java      |   50 +-
 .../query/h2/opt/GridH2RowDescriptor.java       |    9 +-
 .../query/h2/opt/GridH2SearchRow.java           |   32 +
 .../query/h2/opt/GridH2SearchRowAdapter.java    |   27 +-
 .../processors/query/h2/opt/GridH2Table.java    |    8 +-
 .../query/h2/sql/GridSqlQueryParser.java        |  164 +-
 .../query/h2/sql/GridSqlQuerySplitter.java      |   18 +-
 .../processors/query/h2/sql/GridSqlSelect.java  |   20 +
 .../query/h2/twostep/GridMapQueryExecutor.java  |  334 +-
 .../h2/twostep/GridMergeIndexIterator.java      |   17 +-
 .../h2/twostep/GridReduceQueryExecutor.java     |  183 +-
 .../query/h2/twostep/GridResultPage.java        |   22 +-
 .../query/h2/twostep/MapQueryResults.java       |   18 +-
 .../query/h2/twostep/ReduceQueryRun.java        |   35 +-
 .../h2/twostep/msg/GridH2QueryRequest.java      |  115 +-
 .../msg/GridH2SelectForUpdateTxDetails.java     |  299 ++
 .../twostep/msg/GridH2ValueMessageFactory.java  |   12 +-
 .../cache/DdlTransactionSelfTest.java           |  335 ++
 .../IgniteCacheQueryH2IndexingLeakTest.java     |   10 +-
 .../cache/index/AbstractSchemaSelfTest.java     |  102 +-
 ...ynamicColumnsAbstractConcurrentSelfTest.java |   13 +-
 .../index/DynamicIndexAbstractSelfTest.java     |    7 +
 .../cache/index/H2ConnectionLeaksSelfTest.java  |    8 +-
 .../index/H2DynamicIndexAbstractSelfTest.java   |   49 -
 .../cache/index/H2DynamicTableSelfTest.java     |   16 +-
 ...sactionsComandsWithMvccDisabledSelfTest.java |   83 +
 .../cache/index/SqlTransactionsSelfTest.java    |  421 ++
 ...eMvccAbstractSqlCoordinatorFailoverTest.java |  138 +
 .../mvcc/CacheMvccBackupsAbstractTest.java      |  808 ++++
 .../cache/mvcc/CacheMvccBulkLoadTest.java       |  123 +
 .../cache/mvcc/CacheMvccDmlSimpleTest.java      |  200 +
 ...eratorWithConcurrentJdbcTransactionTest.java |   28 +
 ...ntriesWithConcurrentJdbcTransactionTest.java |   29 +
 .../mvcc/CacheMvccPartitionedBackupsTest.java   |   30 +
 ...MvccPartitionedSelectForUpdateQueryTest.java |   44 +
 ...ccPartitionedSqlCoordinatorFailoverTest.java |  143 +
 .../CacheMvccPartitionedSqlQueriesTest.java     |   30 +
 .../CacheMvccPartitionedSqlTxQueriesTest.java   |   30 +
 ...cPartitionedSqlTxQueriesWithReducerTest.java |   30 +
 .../mvcc/CacheMvccReplicatedBackupsTest.java    |   30 +
 ...eMvccReplicatedSelectForUpdateQueryTest.java |   30 +
 ...vccReplicatedSqlCoordinatorFailoverTest.java |   30 +
 .../mvcc/CacheMvccReplicatedSqlQueriesTest.java |   30 +
 .../CacheMvccReplicatedSqlTxQueriesTest.java    |  242 ++
 ...ccReplicatedSqlTxQueriesWithReducerTest.java |   30 +
 ...nQueryWithConcurrentJdbcTransactionTest.java |   29 +
 ...cheMvccSelectForUpdateQueryAbstractTest.java |  374 ++
 ...ccSizeWithConcurrentJdbcTransactionTest.java |   28 +
 .../mvcc/CacheMvccSqlQueriesAbstractTest.java   | 1611 ++++++++
 .../mvcc/CacheMvccSqlTxQueriesAbstractTest.java | 1832 +++++++++
 ...MvccSqlTxQueriesWithReducerAbstractTest.java |  829 ++++
 .../mvcc/CacheMvccStreamingInsertTest.java      |  122 +
 .../query/h2/GridIndexRebuildSelfTest.java      |  350 ++
 .../h2/GridIndexingSpiAbstractSelfTest.java     |    4 +-
 .../query/h2/H2StatementCacheSelfTest.java      |   83 +
 .../query/h2/PreparedStatementExSelfTest.java   |   61 +
 .../query/h2/ThreadLocalObjectPoolSelfTest.java |  113 +
 .../query/h2/sql/GridQueryParsingTest.java      |    1 +
 .../testsuites/IgniteCacheMvccSqlTestSuite.java |   73 +
 .../IgniteCacheQuerySelfTestSuite.java          |   20 +
 .../processors/cache/mvcc/mvcc_person.csv       |    2 +
 .../cache/mvcc/mvcc_person_broken.csv           |    2 +
 .../processors/cache/jta/CacheJtaManager.java   |    1 +
 modules/platforms/cpp/odbc-test/Makefile.am     |    4 +-
 .../odbc-test/config/queries-transaction-32.xml |   50 +
 .../odbc-test/config/queries-transaction.xml    |   32 +
 .../cpp/odbc-test/project/vs/odbc-test.vcxproj  |    4 +
 .../project/vs/odbc-test.vcxproj.filters        |   12 +
 .../cpp/odbc-test/src/sql_get_info_test.cpp     |    8 +-
 .../cpp/odbc-test/src/transaction_test.cpp      |  738 ++++
 modules/platforms/cpp/odbc/Makefile.am          |    1 +
 .../include/ignite/odbc/config/configuration.h  |   32 +
 .../odbc/config/connection_string_parser.h      |    3 +
 .../cpp/odbc/include/ignite/odbc/connection.h   |   21 +-
 .../ignite/odbc/diagnostic/diagnosable.h        |    7 +
 .../odbc/diagnostic/diagnosable_adapter.h       |   11 +-
 .../cpp/odbc/include/ignite/odbc/environment.h  |   15 +
 .../cpp/odbc/include/ignite/odbc/message.h      |   13 +-
 .../odbc/include/ignite/odbc/nested_tx_mode.h   |   81 +
 .../odbc/include/ignite/odbc/protocol_version.h |    2 +-
 .../odbc/system/ui/dsn_configuration_window.h   |    8 +
 .../src/system/ui/dsn_configuration_window.cpp  |   56 +-
 .../platforms/cpp/odbc/project/vs/odbc.vcxproj  |    2 +
 .../cpp/odbc/project/vs/odbc.vcxproj.filters    |    6 +
 .../cpp/odbc/src/config/configuration.cpp       |   29 +-
 .../cpp/odbc/src/config/connection_info.cpp     |    8 +-
 .../src/config/connection_string_parser.cpp     |   19 +
 modules/platforms/cpp/odbc/src/connection.cpp   |   96 +-
 .../odbc/src/diagnostic/diagnosable_adapter.cpp |    5 +
 modules/platforms/cpp/odbc/src/dsn_config.cpp   |    5 +
 modules/platforms/cpp/odbc/src/environment.cpp  |   53 +-
 modules/platforms/cpp/odbc/src/message.cpp      |   18 +-
 .../platforms/cpp/odbc/src/nested_tx_mode.cpp   |   80 +
 modules/platforms/cpp/odbc/src/odbc.cpp         |    2 +
 .../cpp/odbc/src/query/batch_query.cpp          |    4 +-
 .../platforms/cpp/odbc/src/query/data_query.cpp |    2 +-
 .../config/mvcc/benchmark-mvcc-messages.sh      |   98 +
 .../config/mvcc/benchmark-mvcc-processor.sh     |   95 +
 .../mvcc/benchmark-mvcc-updates-contention.sh   |   96 +
 .../mvcc/benchmark-thin-native.properties       |  124 +
 ...benchmark-jdbc-thin-inmemory-mvcc.properties |  105 +
 .../yardstick/IgniteBenchmarkArguments.java     |   38 +
 .../org/apache/ignite/yardstick/IgniteNode.java |    2 +
 .../yardstick/jdbc/AbstractJdbcBenchmark.java   |    2 +-
 .../yardstick/jdbc/AbstractNativeBenchmark.java |    2 +-
 .../apache/ignite/yardstick/jdbc/JdbcUtils.java |   11 +-
 .../jdbc/NativeJavaApiPutRemoveBenchmark.java   |   52 +
 .../mvcc/AbstractDistributedMvccBenchmark.java  |  101 +
 .../jdbc/mvcc/MvccProcessorBenchmark.java       |   61 +
 .../mvcc/MvccUpdateContentionBenchmark.java     |   77 +
 .../upload/AbstractNativeBenchmark.java         |   14 +-
 .../upload/AbstractUploadBenchmark.java         |    9 +-
 .../yardstick/upload/model/QueryFactory.java    |   30 +-
 475 files changed, 56322 insertions(+), 2679 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/00bb4d4d/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/tree/BPlusTreeBenchmark.java
----------------------------------------------------------------------
diff --git a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/tree/BPlusTreeBenchmark.java b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/tree/BPlusTreeBenchmark.java
index 7ed84cb..e80e13d 100644
--- a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/tree/BPlusTreeBenchmark.java
+++ b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/tree/BPlusTreeBenchmark.java
@@ -192,7 +192,7 @@ public class BPlusTreeBenchmark extends JmhAbstractBenchmark {
         }
 
         /** {@inheritDoc} */
-        @Override protected Long getRow(BPlusIO<Long> io, long pageAddr, int idx, Object ignore)
+        @Override public Long getRow(BPlusIO<Long> io, long pageAddr, int idx, Object ignore)
             throws IgniteCheckedException {
             assert io.canGetRow() : io;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/00bb4d4d/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcStreamingSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcStreamingSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcStreamingSelfTest.java
index 9e11efc..bc545ac 100644
--- a/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcStreamingSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcStreamingSelfTest.java
@@ -34,6 +34,7 @@ import org.apache.ignite.configuration.ConnectorConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.processors.query.QueryUtils;
 import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.jdbc.thin.JdbcThinAbstractSelfTest;
 import org.apache.ignite.lang.IgniteCallable;
 import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
@@ -47,7 +48,7 @@ import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
 /**
  * Data streaming test.
  */
-public class JdbcStreamingSelfTest extends GridCommonAbstractTest {
+public class JdbcStreamingSelfTest extends JdbcThinAbstractSelfTest {
     /** JDBC URL. */
     private static final String BASE_URL = CFG_URL_PREFIX +
         "cache=default@modules/clients/src/test/config/jdbc-config.xml";

http://git-wip-us.apache.org/repos/asf/ignite/blob/00bb4d4d/modules/clients/src/test/java/org/apache/ignite/jdbc/suite/IgniteJdbcDriverTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/jdbc/suite/IgniteJdbcDriverTestSuite.java b/modules/clients/src/test/java/org/apache/ignite/jdbc/suite/IgniteJdbcDriverTestSuite.java
index 889a551..275040f 100644
--- a/modules/clients/src/test/java/org/apache/ignite/jdbc/suite/IgniteJdbcDriverTestSuite.java
+++ b/modules/clients/src/test/java/org/apache/ignite/jdbc/suite/IgniteJdbcDriverTestSuite.java
@@ -48,6 +48,7 @@ import org.apache.ignite.jdbc.thin.JdbcThinComplexDmlDdlSelfTest;
 import org.apache.ignite.jdbc.thin.JdbcThinComplexDmlDdlSkipReducerOnUpdateSelfTest;
 import org.apache.ignite.jdbc.thin.JdbcThinComplexQuerySelfTest;
 import org.apache.ignite.jdbc.thin.JdbcThinConnectionMultipleAddressesTest;
+import org.apache.ignite.jdbc.thin.JdbcThinConnectionMvccEnabledSelfTest;
 import org.apache.ignite.jdbc.thin.JdbcThinConnectionSSLTest;
 import org.apache.ignite.jdbc.thin.JdbcThinConnectionSelfTest;
 import org.apache.ignite.jdbc.thin.JdbcThinDataSourceSelfTest;
@@ -76,6 +77,11 @@ import org.apache.ignite.jdbc.thin.JdbcThinStatementSelfTest;
 import org.apache.ignite.jdbc.thin.JdbcThinStreamingNotOrderedSelfTest;
 import org.apache.ignite.jdbc.thin.JdbcThinStreamingOrderedSelfTest;
 import org.apache.ignite.jdbc.thin.JdbcThinTcpIoTest;
+import org.apache.ignite.jdbc.thin.JdbcThinTransactionsClientAutoCommitComplexSelfTest;
+import org.apache.ignite.jdbc.thin.JdbcThinTransactionsClientNoAutoCommitComplexSelfTest;
+import org.apache.ignite.jdbc.thin.JdbcThinTransactionsSelfTest;
+import org.apache.ignite.jdbc.thin.JdbcThinTransactionsServerAutoCommitComplexSelfTest;
+import org.apache.ignite.jdbc.thin.JdbcThinTransactionsServerNoAutoCommitComplexSelfTest;
 import org.apache.ignite.jdbc.thin.JdbcThinUpdateStatementSelfTest;
 import org.apache.ignite.jdbc.thin.JdbcThinUpdateStatementSkipReducerOnUpdateSelfTest;
 import org.apache.ignite.jdbc.thin.JdbcThinWalModeChangeSelfTest;
@@ -146,6 +152,7 @@ public class IgniteJdbcDriverTestSuite extends TestSuite {
 
         // New thin JDBC
         suite.addTest(new TestSuite(JdbcThinConnectionSelfTest.class));
+        suite.addTest(new TestSuite(JdbcThinConnectionMvccEnabledSelfTest.class));
         suite.addTest(new TestSuite(JdbcThinConnectionMultipleAddressesTest.class));
         suite.addTest(new TestSuite(JdbcThinTcpIoTest.class));
         suite.addTest(new TestSuite(JdbcThinConnectionSSLTest.class));
@@ -197,6 +204,13 @@ public class IgniteJdbcDriverTestSuite extends TestSuite {
         suite.addTest(new TestSuite(JdbcThinComplexDmlDdlSkipReducerOnUpdateSelfTest.class));
         suite.addTest(new TestSuite(JdbcThinComplexDmlDdlCustomSchemaSelfTest.class));
 
+        // Transactions
+        suite.addTest(new TestSuite(JdbcThinTransactionsSelfTest.class));
+        suite.addTest(new TestSuite(JdbcThinTransactionsClientAutoCommitComplexSelfTest.class));
+        suite.addTest(new TestSuite(JdbcThinTransactionsServerAutoCommitComplexSelfTest.class));
+        suite.addTest(new TestSuite(JdbcThinTransactionsClientNoAutoCommitComplexSelfTest.class));
+        suite.addTest(new TestSuite(JdbcThinTransactionsServerNoAutoCommitComplexSelfTest.class));
+
         suite.addTest(new TestSuite(JdbcThinLocalQueriesSelfTest.class));
 
         // Various commands.

http://git-wip-us.apache.org/repos/asf/ignite/blob/00bb4d4d/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinAbstractSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinAbstractSelfTest.java
index 2ba36c3..6d5f59a 100644
--- a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinAbstractSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinAbstractSelfTest.java
@@ -112,7 +112,7 @@ public class JdbcThinAbstractSelfTest extends GridCommonAbstractTest {
      * @param params Connection parameters.
      * @return Thin JDBC connection to specified node.
      */
-    static Connection connect(IgniteEx node, String params) throws SQLException {
+    protected Connection connect(IgniteEx node, String params) throws SQLException {
         Collection<GridPortRecord> recs = node.context().ports().records();
 
         GridPortRecord cliLsnrRec = null;
@@ -141,7 +141,7 @@ public class JdbcThinAbstractSelfTest extends GridCommonAbstractTest {
      * @return Result set.
      * @throws RuntimeException if failed.
      */
-    static List<List<?>> execute(Connection conn, String sql, Object... args) throws SQLException {
+    protected List<List<?>> execute(Connection conn, String sql, Object... args) throws SQLException {
         try (PreparedStatement s = conn.prepareStatement(sql)) {
             for (int i = 0; i < args.length; i++)
                 s.setObject(i + 1, args[i]);

http://git-wip-us.apache.org/repos/asf/ignite/blob/00bb4d4d/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinConnectionMvccEnabledSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinConnectionMvccEnabledSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinConnectionMvccEnabledSelfTest.java
new file mode 100644
index 0000000..051d1d2
--- /dev/null
+++ b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinConnectionMvccEnabledSelfTest.java
@@ -0,0 +1,378 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.jdbc.thin;
+
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.Savepoint;
+import java.util.concurrent.Callable;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.binary.BinaryMarshaller;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+import org.apache.ignite.testframework.GridStringLogger;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.jetbrains.annotations.NotNull;
+
+import static java.sql.Connection.TRANSACTION_NONE;
+import static java.sql.Connection.TRANSACTION_READ_COMMITTED;
+import static java.sql.Connection.TRANSACTION_READ_UNCOMMITTED;
+import static java.sql.Connection.TRANSACTION_REPEATABLE_READ;
+import static java.sql.Connection.TRANSACTION_SERIALIZABLE;
+
+/**
+ * Connection test.
+ */
+@SuppressWarnings("ThrowableNotThrown")
+public class JdbcThinConnectionMvccEnabledSelfTest extends JdbcThinAbstractSelfTest {
+    /** IP finder. */
+    private static final TcpDiscoveryIpFinder IP_FINDER = new TcpDiscoveryVmIpFinder(true);
+
+    /** */
+    private static final String URL = "jdbc:ignite:thin://127.0.0.1";
+
+    /** {@inheritDoc} */
+    @SuppressWarnings("deprecation")
+    @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+        IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+        cfg.setCacheConfiguration(cacheConfiguration(DEFAULT_CACHE_NAME));
+
+        TcpDiscoverySpi disco = new TcpDiscoverySpi();
+
+        disco.setIpFinder(IP_FINDER);
+
+        cfg.setDiscoverySpi(disco);
+
+        cfg.setMarshaller(new BinaryMarshaller());
+
+        cfg.setGridLogger(new GridStringLogger());
+
+        cfg.setMvccEnabled(true);
+
+        return cfg;
+    }
+
+    /**
+     * @param name Cache name.
+     * @return Cache configuration.
+     * @throws Exception In case of error.
+     */
+    private CacheConfiguration cacheConfiguration(@NotNull String name) throws Exception {
+        CacheConfiguration cfg = defaultCacheConfiguration();
+
+        cfg.setName(name);
+
+        return cfg;
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void beforeTestsStarted() throws Exception {
+        super.beforeTestsStarted();
+
+        startGridsMultiThreaded(2);
+    }
+
+    /** {@inheritDoc} */
+    @Override protected void afterTestsStopped() throws Exception {
+        stopAllGrids();
+    }
+
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testMetadataDefaults() throws Exception {
+        try (Connection conn = DriverManager.getConnection(URL)) {
+            DatabaseMetaData meta = conn.getMetaData();
+
+            assertEquals(TRANSACTION_REPEATABLE_READ, meta.getDefaultTransactionIsolation());
+            assertTrue(meta.supportsTransactions());
+
+            assertFalse(meta.supportsTransactionIsolationLevel(TRANSACTION_NONE));
+            assertFalse(meta.supportsTransactionIsolationLevel(TRANSACTION_READ_UNCOMMITTED));
+            assertFalse(meta.supportsTransactionIsolationLevel(TRANSACTION_READ_COMMITTED));
+            assertTrue(meta.supportsTransactionIsolationLevel(TRANSACTION_REPEATABLE_READ));
+            assertFalse(meta.supportsTransactionIsolationLevel(TRANSACTION_SERIALIZABLE));
+        }
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testGetSetAutoCommit() throws Exception {
+        try (Connection conn = DriverManager.getConnection(URL)) {
+            assertTrue(conn.getMetaData().supportsTransactions());
+
+            assertTrue(conn.getAutoCommit());
+
+            conn.setAutoCommit(false);
+
+            assertFalse(conn.getAutoCommit());
+
+            conn.setAutoCommit(true);
+
+            assertTrue(conn.getAutoCommit());
+
+            conn.close();
+
+            // Exception when called on closed connection
+            checkConnectionClosed(new RunnableX() {
+                @Override public void run() throws Exception {
+                    conn.setAutoCommit(true);
+                }
+            });
+        }
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testCommit() throws Exception {
+        try (Connection conn = DriverManager.getConnection(URL)) {
+            assertTrue(conn.getMetaData().supportsTransactions());
+
+            // Should not be called in auto-commit mode
+            GridTestUtils.assertThrows(log,
+                new Callable<Object>() {
+                    @Override public Object call() throws Exception {
+                        conn.commit();
+
+                        return null;
+                    }
+                },
+                SQLException.class,
+                "Transaction cannot be committed explicitly in auto-commit mode"
+            );
+
+            conn.setAutoCommit(false);
+
+            conn.commit();
+
+            conn.close();
+
+            // Exception when called on closed connection
+            checkConnectionClosed(new RunnableX() {
+                @Override public void run() throws Exception {
+                    conn.commit();
+                }
+            });
+        }
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testRollback() throws Exception {
+        try (Connection conn = DriverManager.getConnection(URL)) {
+            assertTrue(conn.getMetaData().supportsTransactions());
+
+            // Should not be called in auto-commit mode
+            GridTestUtils.assertThrows(log,
+                new Callable<Object>() {
+                    @Override public Object call() throws Exception {
+                        conn.rollback();
+
+                        return null;
+                    }
+                },
+                SQLException.class,
+                "Transaction cannot be rolled back explicitly in auto-commit mode."
+            );
+
+            conn.setAutoCommit(false);
+
+            conn.rollback();
+
+            conn.close();
+
+            // Exception when called on closed connection
+            checkConnectionClosed(new RunnableX() {
+                @Override public void run() throws Exception {
+                    conn.rollback();
+                }
+            });
+        }
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testSetSavepoint() throws Exception {
+        try (Connection conn = DriverManager.getConnection(URL)) {
+            assert !conn.getMetaData().supportsSavepoints();
+
+            // Disallowed in auto-commit mode
+            GridTestUtils.assertThrows(log,
+                new Callable<Object>() {
+                    @Override public Object call() throws Exception {
+                        conn.setSavepoint();
+
+                        return null;
+                    }
+                },
+                SQLException.class,
+                "Savepoint cannot be set in auto-commit mode"
+            );
+
+            conn.setAutoCommit(false);
+
+            // Unsupported
+            checkNotSupported(new RunnableX() {
+                @Override public void run() throws Exception {
+                    conn.setSavepoint();
+                }
+            });
+
+            conn.close();
+
+            checkConnectionClosed(new RunnableX() {
+                @Override public void run() throws Exception {
+                    conn.setSavepoint();
+                }
+            });
+        }
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testSetSavepointName() throws Exception {
+        try (Connection conn = DriverManager.getConnection(URL)) {
+            assert !conn.getMetaData().supportsSavepoints();
+
+            // Invalid arg
+            GridTestUtils.assertThrows(log,
+                new Callable<Object>() {
+                    @Override public Object call() throws Exception {
+                        conn.setSavepoint(null);
+
+                        return null;
+                    }
+                },
+                SQLException.class,
+                "Savepoint name cannot be null"
+            );
+
+            final String name = "savepoint";
+
+            // Disallowed in auto-commit mode
+            GridTestUtils.assertThrows(log,
+                new Callable<Object>() {
+                    @Override public Object call() throws Exception {
+                        conn.setSavepoint(name);
+
+                        return null;
+                    }
+                },
+                SQLException.class,
+                "Savepoint cannot be set in auto-commit mode"
+            );
+
+            conn.setAutoCommit(false);
+
+            // Unsupported
+            checkNotSupported(new RunnableX() {
+                @Override public void run() throws Exception {
+                    conn.setSavepoint(name);
+                }
+            });
+
+            conn.close();
+
+            checkConnectionClosed(new RunnableX() {
+                @Override public void run() throws Exception {
+                    conn.setSavepoint(name);
+                }
+            });
+        }
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testRollbackSavePoint() throws Exception {
+        try (Connection conn = DriverManager.getConnection(URL)) {
+            assert !conn.getMetaData().supportsSavepoints();
+
+            // Invalid arg
+            GridTestUtils.assertThrows(log,
+                new Callable<Object>() {
+                    @Override public Object call() throws Exception {
+                        conn.rollback(null);
+
+                        return null;
+                    }
+                },
+                SQLException.class,
+                "Invalid savepoint"
+            );
+
+            final Savepoint savepoint = getFakeSavepoint();
+
+            // Disallowed in auto-commit mode
+            GridTestUtils.assertThrows(log,
+                new Callable<Object>() {
+                    @Override public Object call() throws Exception {
+                        conn.rollback(savepoint);
+
+                        return null;
+                    }
+                },
+                SQLException.class,
+                "Auto-commit mode"
+            );
+
+            conn.setAutoCommit(false);
+
+            // Unsupported
+            checkNotSupported(new RunnableX() {
+                @Override public void run() throws Exception {
+                    conn.rollback(savepoint);
+                }
+            });
+
+            conn.close();
+
+            checkConnectionClosed(new RunnableX() {
+                @Override public void run() throws Exception {
+                    conn.rollback(savepoint);
+                }
+            });
+        }
+    }
+
+    /**
+     * @return Savepoint.
+     */
+    private Savepoint getFakeSavepoint() {
+        return new Savepoint() {
+            @Override public int getSavepointId() throws SQLException {
+                return 100;
+            }
+
+            @Override public String getSavepointName() {
+                return "savepoint";
+            }
+        };
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/00bb4d4d/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinConnectionSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinConnectionSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinConnectionSelfTest.java
index 38bcab2..80397e6 100644
--- a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinConnectionSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinConnectionSelfTest.java
@@ -17,6 +17,9 @@
 
 package org.apache.ignite.jdbc.thin;
 
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.DriverManager;
@@ -38,12 +41,16 @@ import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.binary.BinaryMarshaller;
+import org.apache.ignite.internal.jdbc.thin.ConnectionProperties;
+import org.apache.ignite.internal.jdbc.thin.ConnectionPropertiesImpl;
 import org.apache.ignite.internal.jdbc.thin.JdbcThinConnection;
 import org.apache.ignite.internal.jdbc.thin.JdbcThinTcpIo;
+import org.apache.ignite.internal.util.HostAndPortRange;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+import org.apache.ignite.testframework.GridStringLogger;
 import org.apache.ignite.testframework.GridTestUtils;
 import org.jetbrains.annotations.NotNull;
 
@@ -58,6 +65,7 @@ import static java.sql.ResultSet.HOLD_CURSORS_OVER_COMMIT;
 import static java.sql.ResultSet.TYPE_FORWARD_ONLY;
 import static java.sql.Statement.NO_GENERATED_KEYS;
 import static java.sql.Statement.RETURN_GENERATED_KEYS;
+import static org.apache.ignite.configuration.ClientConnectorConfiguration.DFLT_PORT;
 
 /**
  * Connection test.
@@ -93,6 +101,8 @@ public class JdbcThinConnectionSelfTest extends JdbcThinAbstractSelfTest {
 
         cfg.setMarshaller(new BinaryMarshaller());
 
+        cfg.setGridLogger(new GridStringLogger());
+
         return cfg;
     }
 
@@ -970,11 +980,18 @@ public class JdbcThinConnectionSelfTest extends JdbcThinAbstractSelfTest {
         try (Connection conn = DriverManager.getConnection(URL)) {
             assertTrue(conn.getAutoCommit());
 
-            conn.setAutoCommit(false);
-
-            assertFalse(conn.getAutoCommit());
+            // Cannot disable autocommit when MVCC is disabled.
+            GridTestUtils.assertThrows(log,
+                new Callable<Object>() {
+                    @Override public Object call() throws Exception {
+                        conn.setAutoCommit(false);
 
-            conn.setAutoCommit(true);
+                        return null;
+                    }
+                },
+                SQLException.class,
+                "MVCC must be enabled in order to invoke transactional operation: COMMIT"
+            );
 
             assertTrue(conn.getAutoCommit());
 
@@ -994,8 +1011,6 @@ public class JdbcThinConnectionSelfTest extends JdbcThinAbstractSelfTest {
      */
     public void testCommit() throws Exception {
         try (Connection conn = DriverManager.getConnection(URL)) {
-            assert !conn.getMetaData().supportsTransactions();
-
             // Should not be called in auto-commit mode
             GridTestUtils.assertThrows(log,
                 new Callable<Object>() {
@@ -1009,9 +1024,33 @@ public class JdbcThinConnectionSelfTest extends JdbcThinAbstractSelfTest {
                 "Transaction cannot be committed explicitly in auto-commit mode"
             );
 
-            conn.setAutoCommit(false);
+            // Cannot disable autocommit when MVCC is disabled.
+            GridTestUtils.assertThrows(log,
+                new Callable<Object>() {
+                    @Override public Object call() throws Exception {
+                        conn.setAutoCommit(false);
+
+                        return null;
+                    }
+                },
+                SQLException.class,
+                "MVCC must be enabled in order to invoke transactional operation: COMMIT"
+            );
+
+            assertTrue(conn.getAutoCommit());
 
-            conn.commit();
+            // Should not be called in auto-commit mode
+            GridTestUtils.assertThrows(log,
+                new Callable<Object>() {
+                    @Override public Object call() throws Exception {
+                        conn.commit();
+
+                        return null;
+                    }
+                },
+                SQLException.class,
+                "Transaction cannot be committed explicitly in auto-commit mode."
+            );
 
             conn.close();
 
@@ -1029,8 +1068,6 @@ public class JdbcThinConnectionSelfTest extends JdbcThinAbstractSelfTest {
      */
     public void testRollback() throws Exception {
         try (Connection conn = DriverManager.getConnection(URL)) {
-            assert !conn.getMetaData().supportsTransactions();
-
             // Should not be called in auto-commit mode
             GridTestUtils.assertThrows(log,
                 new Callable<Object>() {
@@ -1041,12 +1078,23 @@ public class JdbcThinConnectionSelfTest extends JdbcThinAbstractSelfTest {
                     }
                 },
                 SQLException.class,
-                "Transaction cannot rollback in auto-commit mode"
+                "Transaction cannot be rolled back explicitly in auto-commit mode."
             );
 
-            conn.setAutoCommit(false);
+            // Cannot disable autocommit when MVCC is disabled.
+            GridTestUtils.assertThrows(log,
+                new Callable<Object>() {
+                    @Override public Object call() throws Exception {
+                        conn.setAutoCommit(false);
 
-            conn.rollback();
+                        return null;
+                    }
+                },
+                SQLException.class,
+                "MVCC must be enabled in order to invoke transactional operation: COMMIT"
+            );
+
+            assertTrue(conn.getAutoCommit());
 
             conn.close();
 
@@ -1138,8 +1186,6 @@ public class JdbcThinConnectionSelfTest extends JdbcThinAbstractSelfTest {
      */
     public void testGetSetTransactionIsolation() throws Exception {
         try (Connection conn = DriverManager.getConnection(URL)) {
-            assert !conn.getMetaData().supportsTransactions();
-
             // Invalid parameter value
             GridTestUtils.assertThrows(log,
                 new Callable<Object>() {
@@ -1346,14 +1392,20 @@ public class JdbcThinConnectionSelfTest extends JdbcThinAbstractSelfTest {
                 "Savepoint cannot be set in auto-commit mode"
             );
 
-            conn.setAutoCommit(false);
+            // Cannot disable autocommit when MVCC is disabled.
+            GridTestUtils.assertThrows(log,
+                new Callable<Object>() {
+                    @Override public Object call() throws Exception {
+                        conn.setAutoCommit(false);
 
-            // Unsupported
-            checkNotSupported(new RunnableX() {
-                @Override public void run() throws Exception {
-                    conn.setSavepoint();
-                }
-            });
+                        return null;
+                    }
+                },
+                SQLException.class,
+                "MVCC must be enabled in order to invoke transactional operation: COMMIT"
+            );
+
+            assertTrue(conn.getAutoCommit());
 
             conn.close();
 
@@ -1400,14 +1452,20 @@ public class JdbcThinConnectionSelfTest extends JdbcThinAbstractSelfTest {
                 "Savepoint cannot be set in auto-commit mode"
             );
 
-            conn.setAutoCommit(false);
+            // Cannot disable autocommit when MVCC is disabled.
+            GridTestUtils.assertThrows(log,
+                new Callable<Object>() {
+                    @Override public Object call() throws Exception {
+                        conn.setAutoCommit(false);
 
-            // Unsupported
-            checkNotSupported(new RunnableX() {
-                @Override public void run() throws Exception {
-                    conn.setSavepoint(name);
-                }
-            });
+                        return null;
+                    }
+                },
+                SQLException.class,
+                "MVCC must be enabled in order to invoke transactional operation: COMMIT"
+            );
+
+            assertTrue(conn.getAutoCommit());
 
             conn.close();
 
@@ -1454,14 +1512,20 @@ public class JdbcThinConnectionSelfTest extends JdbcThinAbstractSelfTest {
                 "Auto-commit mode"
             );
 
-            conn.setAutoCommit(false);
+            // Cannot disable autocommit when MVCC is disabled.
+            GridTestUtils.assertThrows(log,
+                new Callable<Object>() {
+                    @Override public Object call() throws Exception {
+                        conn.setAutoCommit(false);
 
-            // Unsupported
-            checkNotSupported(new RunnableX() {
-                @Override public void run() throws Exception {
-                    conn.rollback(savepoint);
-                }
-            });
+                        return null;
+                    }
+                },
+                SQLException.class,
+                "MVCC must be enabled in order to invoke transactional operation: COMMIT"
+            );
+
+            assertTrue(conn.getAutoCommit());
 
             conn.close();
 
@@ -1898,6 +1962,58 @@ public class JdbcThinConnectionSelfTest extends JdbcThinAbstractSelfTest {
     }
 
     /**
+     * Test that attempting to supply invalid nested TX mode to driver fails on the client.
+     */
+    @SuppressWarnings("ThrowableResultOfMethodCallIgnored")
+    public void testInvalidNestedTxMode() {
+        GridTestUtils.assertThrows(null, new Callable<Object>() {
+            @Override public Object call() throws Exception {
+                DriverManager.getConnection(URL + "/?nestedTransactionsMode=invalid");
+
+                return null;
+            }
+        }, SQLException.class, "Invalid nested transactions handling mode");
+    }
+
+    /**
+     * Test that attempting to send unexpected name of nested TX mode to server on handshake yields an error.
+     * We have to do this without explicit {@link Connection} as long as there's no other way to bypass validation and
+     * supply a malformed {@link ConnectionProperties} to {@link JdbcThinTcpIo}.
+     */
+    @SuppressWarnings({"ThrowableResultOfMethodCallIgnored", "ThrowFromFinallyBlock"})
+    public void testInvalidNestedTxModeOnServerSide() throws SQLException, NoSuchMethodException,
+        IllegalAccessException, InvocationTargetException, InstantiationException, IOException {
+        ConnectionPropertiesImpl connProps = new ConnectionPropertiesImpl();
+
+        connProps.setAddresses(new HostAndPortRange[]{new HostAndPortRange("127.0.0.1", DFLT_PORT, DFLT_PORT)});
+
+        connProps.nestedTxMode("invalid");
+
+        Constructor ctor = JdbcThinTcpIo.class.getDeclaredConstructor(ConnectionProperties.class);
+
+        boolean acc = ctor.isAccessible();
+
+        ctor.setAccessible(true);
+
+        final JdbcThinTcpIo io = (JdbcThinTcpIo)ctor.newInstance(connProps);
+
+        try {
+            GridTestUtils.assertThrows(null, new Callable<Object>() {
+                @Override public Object call() throws Exception {
+                    io.start();
+
+                    return null;
+                }
+            }, SQLException.class, "err=Invalid nested transactions handling mode: invalid");
+        }
+        finally {
+            io.close();
+
+            ctor.setAccessible(acc);
+        }
+    }
+
+    /**
      */
     public void testSslClientAndPlainServer()  {
         GridTestUtils.assertThrows(log, new Callable<Object>() {

http://git-wip-us.apache.org/repos/asf/ignite/blob/00bb4d4d/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinStreamingAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinStreamingAbstractSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinStreamingAbstractSelfTest.java
index 7004635..c83977c 100644
--- a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinStreamingAbstractSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinStreamingAbstractSelfTest.java
@@ -32,6 +32,7 @@ import org.apache.ignite.cache.CachePeekMode;
 import org.apache.ignite.cache.query.FieldsQueryCursor;
 import org.apache.ignite.cache.query.SqlFieldsQuery;
 import org.apache.ignite.internal.jdbc2.JdbcStreamingSelfTest;
+import org.apache.ignite.internal.processors.cache.mvcc.MvccQueryTracker;
 import org.apache.ignite.internal.processors.query.GridQueryCancel;
 import org.apache.ignite.internal.processors.query.GridQueryProcessor;
 import org.apache.ignite.internal.processors.query.SqlClientContext;
@@ -77,9 +78,19 @@ public abstract class JdbcThinStreamingAbstractSelfTest extends JdbcStreamingSel
         super.afterTest();
     }
 
-        /** {@inheritDoc} */
+    /** {@inheritDoc} */
+    @Override protected Connection createStreamedConnection(boolean allowOverwrite, long flushFreq) throws Exception {
+        Connection c = connect(grid(0), null);
+
+        execute(c, "SET STREAMING 1 BATCH_SIZE " + batchSize + " ALLOW_OVERWRITE " + (allowOverwrite ? 1 : 0) +
+            " PER_NODE_BUFFER_SIZE 1000 FLUSH_FREQUENCY " + flushFreq);
+
+        return c;
+    }
+
+    /** {@inheritDoc} */
     @Override protected Connection createOrdinaryConnection() throws SQLException {
-        return JdbcThinAbstractSelfTest.connect(grid(0), null);
+        return connect(grid(0), null);
     }
 
     /**
@@ -495,11 +506,11 @@ public abstract class JdbcThinStreamingAbstractSelfTest extends JdbcStreamingSel
 
         /** {@inheritDoc} */
         @Override public List<FieldsQueryCursor<List<?>>> querySqlFields(String schemaName, SqlFieldsQuery qry,
-            @Nullable SqlClientContext cliCtx, boolean keepBinary, boolean failOnMultipleStmts,
+            @Nullable SqlClientContext cliCtx, boolean keepBinary, boolean failOnMultipleStmts, MvccQueryTracker tracker,
             GridQueryCancel cancel) {
             IndexingWithContext.cliCtx = cliCtx;
 
-            return super.querySqlFields(schemaName, qry, cliCtx, keepBinary, failOnMultipleStmts, cancel);
+            return super.querySqlFields(schemaName, qry, cliCtx, keepBinary, failOnMultipleStmts, tracker, cancel);
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/00bb4d4d/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinStreamingNotOrderedSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinStreamingNotOrderedSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinStreamingNotOrderedSelfTest.java
index b91258f..b0788e7 100644
--- a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinStreamingNotOrderedSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinStreamingNotOrderedSelfTest.java
@@ -25,7 +25,7 @@ import java.sql.Connection;
 public class JdbcThinStreamingNotOrderedSelfTest extends JdbcThinStreamingAbstractSelfTest {
     /** {@inheritDoc} */
     @Override protected Connection createStreamedConnection(boolean allowOverwrite, long flushFreq) throws Exception {
-        Connection c = JdbcThinAbstractSelfTest.connect(grid(0), null);
+        Connection c = connect(grid(0), null);
 
         execute(c, "SET STREAMING 1 BATCH_SIZE " + batchSize
             + " ALLOW_OVERWRITE " + (allowOverwrite ? 1 : 0)

http://git-wip-us.apache.org/repos/asf/ignite/blob/00bb4d4d/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinStreamingOrderedSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinStreamingOrderedSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinStreamingOrderedSelfTest.java
index b615f8c..c116a7d 100644
--- a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinStreamingOrderedSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinStreamingOrderedSelfTest.java
@@ -25,7 +25,7 @@ import java.sql.Connection;
 public class JdbcThinStreamingOrderedSelfTest extends JdbcThinStreamingAbstractSelfTest {
     /** {@inheritDoc} */
     @Override protected Connection createStreamedConnection(boolean allowOverwrite, long flushFreq) throws Exception {
-        Connection c = JdbcThinAbstractSelfTest.connect(grid(0), null);
+        Connection c = connect(grid(0), null);
 
         execute(c, "SET STREAMING 1 BATCH_SIZE " + batchSize
             + " ALLOW_OVERWRITE " + (allowOverwrite ? 1 : 0)