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/11/15 08:49:11 UTC

ignite git commit: IGNITE-6295: SQL: Deprecated "replicatedOnly" flag. This closes #4164. This closes #5373.

Repository: ignite
Updated Branches:
  refs/heads/master bf2f05e32 -> 0b067af67


IGNITE-6295: SQL: Deprecated "replicatedOnly" flag. This closes #4164. This closes #5373.


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

Branch: refs/heads/master
Commit: 0b067af679fe53993960df2fda0dc36c4ae3ed45
Parents: bf2f05e
Author: devozerov <vo...@gridgain.com>
Authored: Thu Nov 15 11:49:03 2018 +0300
Committer: devozerov <vo...@gridgain.com>
Committed: Thu Nov 15 11:49:03 2018 +0300

----------------------------------------------------------------------
 .../ignite/cache/query/SqlFieldsQuery.java      |  4 ++++
 .../org/apache/ignite/cache/query/SqlQuery.java |  4 ++++
 .../processors/query/GridQueryProcessor.java    |  3 ---
 .../cache/mvcc/CacheMvccAbstractTest.java       |  7 +++---
 .../processors/query/h2/IgniteH2Indexing.java   |  2 +-
 .../query/h2/sql/GridSqlQueryParser.java        | 25 +++++++++++---------
 .../query/h2/sql/GridSqlQuerySplitter.java      | 11 +++++++--
 .../IgniteCacheAbstractFieldsQuerySelfTest.java |  2 +-
 .../cache/IgniteCacheAbstractQuerySelfTest.java |  2 ++
 .../IgniteCacheReplicatedQuerySelfTest.java     |  9 +++++++
 .../query/IgniteCachelessQueriesSelfTest.java   |  2 +-
 .../h2/twostep/RetryCauseMessageSelfTest.java   |  3 +++
 .../Cache/Query/CacheQueriesTest.cs             |  4 ++++
 .../Query/Linq/CacheLinqTest.Introspection.cs   |  4 ++++
 .../Cache/Query/Linq/CacheLinqTest.Misc.cs      |  3 ++-
 .../Cache/Query/SqlFieldsQuery.cs               |  3 +++
 .../Apache.Ignite.Core/Cache/Query/SqlQuery.cs  |  5 ++++
 .../Apache.Ignite.Core/Impl/Cache/CacheImpl.cs  |  2 ++
 .../Impl/Client/Cache/CacheClient.cs            |  4 ++++
 .../Impl/CacheFieldsQueryExecutor.cs            |  2 ++
 .../dotnet/Apache.Ignite.Linq/QueryOptions.cs   |  1 +
 21 files changed, 78 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java b/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java
index 4e12b8c..6945f25 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java
@@ -273,7 +273,9 @@ public class SqlFieldsQuery extends Query<List<?>> {
      *
      * @param replicatedOnly The query contains only replicated tables.
      * @return {@code this} For chaining.
+     * @deprecated No longer used as of Apache Ignite 2.8.
      */
+    @Deprecated
     public SqlFieldsQuery setReplicatedOnly(boolean replicatedOnly) {
         this.replicatedOnly = replicatedOnly;
 
@@ -284,7 +286,9 @@ public class SqlFieldsQuery extends Query<List<?>> {
      * Check is the query contains only replicated tables.
      *
      * @return {@code true} If the query contains only replicated tables.
+     * @deprecated No longer used as of Apache Ignite 2.8.
      */
+    @Deprecated
     public boolean isReplicatedOnly() {
         return replicatedOnly;
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java b/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java
index a5994b9..5b0667c 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java
@@ -238,7 +238,9 @@ public final class SqlQuery<K, V> extends Query<Cache.Entry<K, V>> {
      *
      * @param replicatedOnly The query contains only replicated tables.
      * @return {@code this} For chaining.
+     * @deprecated No longer used as of Apache Ignite 2.8.
      */
+    @Deprecated
     public SqlQuery<K, V> setReplicatedOnly(boolean replicatedOnly) {
         this.replicatedOnly = replicatedOnly;
 
@@ -249,7 +251,9 @@ public final class SqlQuery<K, V> extends Query<Cache.Entry<K, V>> {
      * Check is the query contains only replicated tables.
      *
      * @return {@code true} If the query contains only replicated tables.
+     * @deprecated No longer used as of Apache Ignite 2.8.
      */
+    @Deprecated
     public boolean isReplicatedOnly() {
         return replicatedOnly;
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
index 24f79fc..957d3ae 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
@@ -2157,9 +2157,6 @@ public class GridQueryProcessor extends GridProcessorAdapter {
      */
     private static void validateSqlFieldsQuery(SqlFieldsQuery qry, GridKernalContext ctx,
         @Nullable GridCacheContext<?, ?> cctx) {
-        if (qry.isReplicatedOnly() && qry.getPartitions() != null)
-            throw new CacheException("Partitions are not supported in replicated only mode.");
-
         if (qry.isDistributedJoins() && qry.getPartitions() != null)
             throw new CacheException("Using both partitions and distributed JOINs is not supported for the same query");
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccAbstractTest.java
index 5b32347..7869e13 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/mvcc/CacheMvccAbstractTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.internal.processors.cache.mvcc;
 
-import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -687,19 +686,19 @@ public abstract class CacheMvccAbstractTest extends GridCommonAbstractTest {
                                 }
 
                                 case SQL_SUM: {
-                                    BigDecimal sum;
+                                    Long sum;
 
                                     if (rnd.nextBoolean()) {
                                         List<List<?>> res =  cache.cache.query(sumQry).getAll();
 
                                         assertEquals(1, res.size());
 
-                                        sum = (BigDecimal)res.get(0).get(0);
+                                        sum = (Long)res.get(0).get(0);
                                     }
                                     else {
                                         Map res = readAllByMode(cache.cache, keys, readMode, ACCOUNT_CODEC);
 
-                                        sum = (BigDecimal)((Map.Entry)res.entrySet().iterator().next()).getValue();
+                                        sum = (Long)((Map.Entry)res.entrySet().iterator().next()).getValue();
                                     }
 
                                     assertEquals(ACCOUNT_START_VAL * ACCOUNTS, sum.intValue());

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index b5fa6b4..e2dba50 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@ -2443,7 +2443,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
                 // Legit assertion - we have H2 query flag above.
                 assert parsedStmt instanceof GridSqlQuery;
 
-                loc = parser.isLocalQuery(qry.isReplicatedOnly());
+                loc = parser.isLocalQuery();
             }
 
             if (loc) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
index ddca0d6..1208f6a 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
@@ -35,7 +35,6 @@ import org.apache.ignite.cache.CacheAtomicityMode;
 import org.apache.ignite.cache.CacheWriteSynchronizationMode;
 import org.apache.ignite.cache.QueryIndex;
 import org.apache.ignite.cache.QueryIndexType;
-import org.apache.ignite.cache.query.SqlFieldsQuery;
 import org.apache.ignite.internal.processors.cache.GridCacheContext;
 import org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode;
 import org.apache.ignite.internal.processors.query.IgniteSQLException;
@@ -529,6 +528,9 @@ public class GridSqlQueryParser {
      */
     private int parsingSubQryExpression;
 
+    /** Whether this is SELECT FOR UPDATE. */
+    private boolean selectForUpdate;
+
     /**
      * @param useOptimizedSubqry If we have to find correct order for table filters in FROM clause.
      *                           Relies on uniqueness of table filter aliases.
@@ -1710,13 +1712,13 @@ public class GridSqlQueryParser {
 
     /**
      * Check if query may be run locally on all caches mentioned in the query.
-     * @param replicatedOnlyQry replicated-only query flag from original {@link SqlFieldsQuery}.
+     *
      * @return {@code true} if query may be run locally on all caches mentioned in the query, i.e. there's no need
      *     to run distributed query.
-     * @see SqlFieldsQuery#isReplicatedOnly()
      */
-    public boolean isLocalQuery(boolean replicatedOnlyQry) {
-        boolean hasCaches = false;
+    public boolean isLocalQuery() {
+        if (selectForUpdate)
+            return false;
 
         for (Object o : h2ObjToGridObj.values()) {
             if (o instanceof GridSqlAlias)
@@ -1726,19 +1728,18 @@ public class GridSqlQueryParser {
                 GridH2Table tbl = ((GridSqlTable)o).dataTable();
 
                 if (tbl != null) {
-                    hasCaches = true;
-
                     GridCacheContext cctx = tbl.cache();
 
-                    if (!cctx.isLocal() && !(replicatedOnlyQry && cctx.isReplicatedAffinityNode()))
+                    if (cctx.isPartitioned())
+                        return false;
+
+                    if (cctx.isReplicated() && !cctx.isReplicatedAffinityNode())
                         return false;
                 }
             }
         }
 
-        // For consistency with old logic, let's not force locality in absence of caches -
-        // if there are no caches, original SqlFieldsQuery's isLocal flag will be used.
-        return hasCaches;
+        return true;
     }
 
     /**
@@ -1793,6 +1794,8 @@ public class GridSqlQueryParser {
             if (optimizedTableFilterOrder != null)
                 collectOptimizedTableFiltersOrder((Query)stmt);
 
+            selectForUpdate = isForUpdateQuery(stmt);
+
             return parseQuery((Query)stmt);
         }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index 84ada0f..7592d4b 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -2138,16 +2138,23 @@ public class GridSqlQuerySplitter {
             case SUM: // SUM( SUM(x) ) or SUM(DISTINCT x)
             case MAX: // MAX( MAX(x) ) or MAX(DISTINCT x)
             case MIN: // MIN( MIN(x) ) or MIN(DISTINCT x)
+                GridSqlElement rdcAgg0;
+
                 if (hasDistinctAggregate) /* and has no collocated group by */ {
                     mapAgg = agg.child();
 
-                    rdcAgg = aggregate(agg.distinct(), agg.type()).addChild(column(mapAggAlias.alias()));
+                    rdcAgg0 = aggregate(agg.distinct(), agg.type()).addChild(column(mapAggAlias.alias()));
                 }
                 else {
                     mapAgg = aggregate(agg.distinct(), agg.type()).resultType(agg.resultType()).addChild(agg.child());
-                    rdcAgg = aggregate(agg.distinct(), agg.type()).addChild(column(mapAggAlias.alias()));
+
+                    rdcAgg0 = function(CAST).resultType(agg.resultType())
+                        .addChild(aggregate(agg.distinct(), agg.type()).addChild(column(mapAggAlias.alias())));
                 }
 
+                // Avoid second type upcast on reducer (e.g. Int -> (map) -> Long -> (reduce) -> BigDecimal).
+                rdcAgg = function(CAST).resultType(agg.resultType()).addChild(rdcAgg0);
+
                 break;
 
             case COUNT_ALL: // CAST(SUM( COUNT(*) ) AS BIGINT)

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
index 3b15e81..dbae093 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
@@ -373,7 +373,7 @@ public abstract class IgniteCacheAbstractFieldsQuerySelfTest extends GridCommonA
         for (List<?> row : res)
             X.println("____ : " + row);
 
-        if (cacheMode() == PARTITIONED || (cacheMode() == REPLICATED && !isReplicatedOnly())) {
+        if (cacheMode() == PARTITIONED) {
             assertEquals(2, res.size());
 
             assertTrue(((String)res.get(1).get(0)).contains(GridSqlQuerySplitter.mergeTableIdentifier(0)));

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractQuerySelfTest.java
index 0f7fe3a..a00cc83 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractQuerySelfTest.java
@@ -1478,6 +1478,8 @@ public abstract class IgniteCacheAbstractQuerySelfTest extends GridCommonAbstrac
                 @Override public boolean apply(Event evt) {
                     assert evt instanceof CacheQueryExecutedEvent;
 
+                    System.out.println(">>> EVENT");
+
                     if (evtsDisabled)
                         fail("Cache events are disabled");
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/IgniteCacheReplicatedQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/IgniteCacheReplicatedQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/IgniteCacheReplicatedQuerySelfTest.java
index 13942c2..b9af3b6 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/IgniteCacheReplicatedQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/distributed/replicated/IgniteCacheReplicatedQuerySelfTest.java
@@ -435,6 +435,15 @@ public class IgniteCacheReplicatedQuerySelfTest extends IgniteCacheAbstractQuery
     }
 
     /**
+     * @throws Exception If failed.
+     */
+    @Override public void testSqlQueryEvents() throws Exception {
+        fail("https://issues.apache.org/jira/browse/IGNITE-8765");
+
+        super.testSqlQueryEvents();
+    }
+
+    /**
      * Cache key.
      */
     public static class CacheKey implements Externalizable {

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCachelessQueriesSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCachelessQueriesSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCachelessQueriesSelfTest.java
index b8fc61b..47ec1dd 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCachelessQueriesSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteCachelessQueriesSelfTest.java
@@ -130,7 +130,7 @@ public class IgniteCachelessQueriesSelfTest extends GridCommonAbstractTest {
     public void testDistributedQueryOnReplicatedCaches() {
         createCachesAndExecuteQuery(TestCacheMode.REPLICATED, TestCacheMode.REPLICATED, false, false);
 
-        assertDistributedQuery();
+        assertLocalQuery();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/RetryCauseMessageSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/RetryCauseMessageSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/RetryCauseMessageSelfTest.java
index dbb2c59..f748693 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/RetryCauseMessageSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/twostep/RetryCauseMessageSelfTest.java
@@ -167,6 +167,8 @@ public class RetryCauseMessageSelfTest extends GridCommonAbstractTest {
      * Failed to reserve partitions for query (partition of REPLICATED cache is not in OWNING state)
      */
     public void testReplicatedCacheReserveFailureMessage() {
+        fail("https://issues.apache.org/jira/browse/IGNITE-7039");
+
         GridMapQueryExecutor mapQryExec = GridTestUtils.getFieldValue(h2Idx, IgniteH2Indexing.class, "mapQryExec");
 
         final GridKernalContext ctx = GridTestUtils.getFieldValue(mapQryExec, GridMapQueryExecutor.class, "ctx");
@@ -197,6 +199,7 @@ public class RetryCauseMessageSelfTest extends GridCommonAbstractTest {
         SqlQuery<String, Organization> qry = new SqlQuery<>(Organization.class, ORG_SQL);
 
         qry.setDistributedJoins(true);
+
         try {
             orgCache.query(qry).getAll();
         }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/CacheQueriesTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/CacheQueriesTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/CacheQueriesTest.cs
index ceeeb37..ef5623e 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/CacheQueriesTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/CacheQueriesTest.cs
@@ -350,7 +350,9 @@ namespace Apache.Ignite.Core.Tests.Cache.Query
             var qry = new SqlQuery(typeof(QueryPerson), "age < 50", loc)
             {
                 EnableDistributedJoins = distrJoin,
+#pragma warning disable 618
                 ReplicatedOnly = false,
+#pragma warning restore 618
                 Timeout = TimeSpan.FromSeconds(3)
             };
 
@@ -381,7 +383,9 @@ namespace Apache.Ignite.Core.Tests.Cache.Query
                 EnableDistributedJoins = distrJoin,
                 EnforceJoinOrder = enforceJoinOrder,
                 Colocated = !distrJoin,
+#pragma warning disable 618
                 ReplicatedOnly = false,
+#pragma warning restore 618
                 Local = loc,
                 Timeout = TimeSpan.FromSeconds(2),
                 Lazy = lazy

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Linq/CacheLinqTest.Introspection.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Linq/CacheLinqTest.Introspection.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Linq/CacheLinqTest.Introspection.cs
index f5b5baa..77f79f4 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Linq/CacheLinqTest.Introspection.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Linq/CacheLinqTest.Introspection.cs
@@ -52,7 +52,9 @@ namespace Apache.Ignite.Core.Tests.Cache.Query.Linq
                 PageSize = 999,
                 EnforceJoinOrder = true,
                 Timeout = TimeSpan.FromSeconds(2.5),
+#pragma warning disable 618
                 ReplicatedOnly = true,
+#pragma warning restore 618
                 Colocated = true,
                 Lazy = true
             }).Where(x => x.Key > 10).ToCacheQueryable();
@@ -76,7 +78,9 @@ namespace Apache.Ignite.Core.Tests.Cache.Query.Linq
             Assert.AreEqual(999, fq.PageSize);
             Assert.IsFalse(fq.EnableDistributedJoins);
             Assert.IsTrue(fq.EnforceJoinOrder);
+#pragma warning disable 618
             Assert.IsTrue(fq.ReplicatedOnly);
+#pragma warning restore 618
             Assert.IsTrue(fq.Colocated);
             Assert.AreEqual(TimeSpan.FromSeconds(2.5), fq.Timeout);
             Assert.IsTrue(fq.Lazy);

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Linq/CacheLinqTest.Misc.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Linq/CacheLinqTest.Misc.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Linq/CacheLinqTest.Misc.cs
index 8aaa7b8..0cc6e5d 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Linq/CacheLinqTest.Misc.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Linq/CacheLinqTest.Misc.cs
@@ -30,6 +30,7 @@ namespace Apache.Ignite.Core.Tests.Cache.Query.Linq
     using System.Linq;
     using Apache.Ignite.Core.Cache;
     using Apache.Ignite.Core.Cache.Configuration;
+    using Apache.Ignite.Core.Common;
     using Apache.Ignite.Linq;
     using NUnit.Framework;
 
@@ -342,7 +343,7 @@ namespace Apache.Ignite.Core.Tests.Cache.Query.Linq
             });
 
             // ReSharper disable once ReturnValueOfPureMethodIsNotUsed
-            var ex = Assert.Throws<CacheException>(() =>
+            var ex = Assert.Throws<IgniteException>(() =>
                 persons.SelectMany(p => GetRoleCache().AsCacheQueryable()).ToArray());
 
             Assert.IsTrue(ex.ToString().Contains("QueryCancelledException: The query was cancelled while executing."));

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/SqlFieldsQuery.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/SqlFieldsQuery.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/SqlFieldsQuery.cs
index a93e00d..060321b 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/SqlFieldsQuery.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/SqlFieldsQuery.cs
@@ -115,6 +115,7 @@ namespace Apache.Ignite.Core.Cache.Query
         /// Gets or sets a value indicating whether this query contains only replicated tables.
         /// This is a hint for potentially more effective execution.
         /// </summary>
+        [Obsolete("No longer used as of Apache Ignite 2.8.")]
         public bool ReplicatedOnly { get; set; }
 
         /// <summary>
@@ -161,7 +162,9 @@ namespace Apache.Ignite.Core.Cache.Query
             return string.Format("SqlFieldsQuery [Sql={0}, Arguments=[{1}], Local={2}, PageSize={3}, " +
                                  "EnableDistributedJoins={4}, EnforceJoinOrder={5}, Timeout={6}, ReplicatedOnly={7}" +
                                  ", Colocated={8}, Schema={9}, Lazy={10}]", Sql, args, Local,
+#pragma warning disable 618
                                  PageSize, EnableDistributedJoins, EnforceJoinOrder, Timeout, ReplicatedOnly,
+#pragma warning restore 618
                                  Colocated, Schema, Lazy);
         }
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/SqlQuery.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/SqlQuery.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/SqlQuery.cs
index 7d8e8fb..4c979ed 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/SqlQuery.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Query/SqlQuery.cs
@@ -119,6 +119,7 @@ namespace Apache.Ignite.Core.Cache.Query
         /// Gets or sets a value indicating whether this query contains only replicated tables.
         /// This is a hint for potentially more effective execution.
         /// </summary>
+        [Obsolete("No longer used as of Apache Ignite 2.8.")]
         public bool ReplicatedOnly { get; set; }
 
         /** <inheritDoc /> */
@@ -140,7 +141,9 @@ namespace Apache.Ignite.Core.Cache.Query
 
             writer.WriteBoolean(EnableDistributedJoins);
             writer.WriteInt((int) Timeout.TotalMilliseconds);
+#pragma warning disable 618
             writer.WriteBoolean(ReplicatedOnly);
+#pragma warning restore 618
         }
 
         /** <inheritDoc /> */
@@ -161,7 +164,9 @@ namespace Apache.Ignite.Core.Cache.Query
 
             return string.Format("SqlQuery [Sql={0}, Arguments=[{1}], Local={2}, PageSize={3}, " +
                                  "EnableDistributedJoins={4}, Timeout={5}, ReplicatedOnly={6}]", Sql, args, Local,
+#pragma warning disable 618
                 PageSize, EnableDistributedJoins, Timeout, ReplicatedOnly);
+#pragma warning restore 618
         }
 
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheImpl.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheImpl.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheImpl.cs
index 9e99967..ab16f67 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheImpl.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheImpl.cs
@@ -1129,7 +1129,9 @@ namespace Apache.Ignite.Core.Impl.Cache
                 writer.WriteBoolean(qry.EnforceJoinOrder);
                 writer.WriteBoolean(qry.Lazy); // Lazy flag.
                 writer.WriteInt((int) qry.Timeout.TotalMilliseconds);
+#pragma warning disable 618
                 writer.WriteBoolean(qry.ReplicatedOnly);
+#pragma warning restore 618
                 writer.WriteBoolean(qry.Colocated);
                 writer.WriteString(qry.Schema); // Schema
             });

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Client/Cache/CacheClient.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Client/Cache/CacheClient.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Client/Cache/CacheClient.cs
index 8cc2741..d930b51 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Client/Cache/CacheClient.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Client/Cache/CacheClient.cs
@@ -680,7 +680,9 @@ namespace Apache.Ignite.Core.Impl.Client.Cache
             QueryBase.WriteQueryArgs(writer, qry.Arguments);
             writer.WriteBoolean(qry.EnableDistributedJoins);
             writer.WriteBoolean(qry.Local);
+#pragma warning disable 618
             writer.WriteBoolean(qry.ReplicatedOnly);
+#pragma warning restore 618
             writer.WriteInt(qry.PageSize);
             writer.WriteTimeSpanAsLong(qry.Timeout);
         }
@@ -705,7 +707,9 @@ namespace Apache.Ignite.Core.Impl.Client.Cache
 
             writer.WriteBoolean(qry.EnableDistributedJoins);
             writer.WriteBoolean(qry.Local);
+#pragma warning disable 618
             writer.WriteBoolean(qry.ReplicatedOnly);
+#pragma warning restore 618
             writer.WriteBoolean(qry.EnforceJoinOrder);
             writer.WriteBoolean(qry.Colocated);
             writer.WriteBoolean(qry.Lazy);

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/platforms/dotnet/Apache.Ignite.Linq/Impl/CacheFieldsQueryExecutor.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Linq/Impl/CacheFieldsQueryExecutor.cs b/modules/platforms/dotnet/Apache.Ignite.Linq/Impl/CacheFieldsQueryExecutor.cs
index 9d0edd7..866edff 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Linq/Impl/CacheFieldsQueryExecutor.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Linq/Impl/CacheFieldsQueryExecutor.cs
@@ -204,7 +204,9 @@ namespace Apache.Ignite.Linq.Impl
                 PageSize = _options.PageSize,
                 EnforceJoinOrder = _options.EnforceJoinOrder,
                 Timeout = _options.Timeout,
+#pragma warning disable 618
                 ReplicatedOnly = _options.ReplicatedOnly,
+#pragma warning restore 618
                 Colocated = _options.Colocated,
                 Local = _options.Local,
                 Arguments = args,

http://git-wip-us.apache.org/repos/asf/ignite/blob/0b067af6/modules/platforms/dotnet/Apache.Ignite.Linq/QueryOptions.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Linq/QueryOptions.cs b/modules/platforms/dotnet/Apache.Ignite.Linq/QueryOptions.cs
index c727e1c..994baf2 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Linq/QueryOptions.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Linq/QueryOptions.cs
@@ -99,6 +99,7 @@ namespace Apache.Ignite.Linq
         /// Gets or sets a value indicating whether this query contains only replicated tables.
         /// This is a hint for potentially more effective execution.
         /// </summary>
+        [Obsolete("No longer used as of Apache Ignite 2.8.")]
         public bool ReplicatedOnly { get; set; }
 
         /// <summary>