You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/10/19 08:30:25 UTC
[02/11] ignite git commit: IGNITE-6637: SQL: add statements cache
clear on cache destroy. This closes #2860.
IGNITE-6637: SQL: add statements cache clear on cache destroy. This closes #2860.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ca6662bc
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ca6662bc
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ca6662bc
Branch: refs/heads/ignite-3478
Commit: ca6662bcb4eecc62493e2e25a572ed0b982c046c
Parents: f8824c8
Author: Alexander Paschenko <al...@gmail.com>
Authored: Mon Oct 16 16:41:36 2017 +0300
Committer: devozerov <vo...@gridgain.com>
Committed: Mon Oct 16 16:41:36 2017 +0300
----------------------------------------------------------------------
.../processors/query/h2/IgniteH2Indexing.java | 8 ++--
.../cache/index/H2DynamicTableSelfTest.java | 43 ++++++++++++++++++++
2 files changed, 48 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ca6662bc/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 0fdc2e4..541b80f 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
@@ -59,7 +59,6 @@ import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.GridTopic;
import org.apache.ignite.internal.IgniteInternalFuture;
-import org.apache.ignite.internal.processors.cache.query.SqlFieldsQueryEx;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheEntryImpl;
import org.apache.ignite.internal.processors.cache.CacheObject;
@@ -79,6 +78,7 @@ import org.apache.ignite.internal.processors.cache.query.GridCacheQueryMarshalla
import org.apache.ignite.internal.processors.cache.query.GridCacheTwoStepQuery;
import org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode;
import org.apache.ignite.internal.processors.cache.query.QueryTable;
+import org.apache.ignite.internal.processors.cache.query.SqlFieldsQueryEx;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.processors.query.CacheQueryObjectValueContext;
import org.apache.ignite.internal.processors.query.GridQueryCacheObjectsIterator;
@@ -103,10 +103,10 @@ import org.apache.ignite.internal.processors.query.h2.ddl.DdlStatementsProcessor
import org.apache.ignite.internal.processors.query.h2.opt.DistributedJoinMode;
import org.apache.ignite.internal.processors.query.h2.opt.GridH2DefaultTableEngine;
import org.apache.ignite.internal.processors.query.h2.opt.GridH2IndexBase;
+import org.apache.ignite.internal.processors.query.h2.opt.GridH2PlainRowFactory;
import org.apache.ignite.internal.processors.query.h2.opt.GridH2QueryContext;
import org.apache.ignite.internal.processors.query.h2.opt.GridH2Row;
import org.apache.ignite.internal.processors.query.h2.opt.GridH2RowDescriptor;
-import org.apache.ignite.internal.processors.query.h2.opt.GridH2PlainRowFactory;
import org.apache.ignite.internal.processors.query.h2.opt.GridH2Table;
import org.apache.ignite.internal.processors.query.h2.sql.GridSqlQueryParser;
import org.apache.ignite.internal.processors.query.h2.sql.GridSqlQuerySplitter;
@@ -2342,6 +2342,8 @@ public class IgniteH2Indexing implements GridQueryIndexing {
}
}
+ stmtCache.clear();
+
for (H2TableDescriptor tbl : rmvTbls) {
for (Index idx : tbl.table().getIndexes())
idx.close(null);
@@ -2364,7 +2366,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
/**
* Remove all cached queries from cached two-steps queries.
*/
- public void clearCachedQueries() {
+ private void clearCachedQueries() {
twoStepCache.clear();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/ca6662bc/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/H2DynamicTableSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/H2DynamicTableSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/H2DynamicTableSelfTest.java
index b108bb3..c56db84 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/H2DynamicTableSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/H2DynamicTableSelfTest.java
@@ -48,6 +48,7 @@ import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor;
+import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
import org.apache.ignite.internal.processors.query.GridQueryProperty;
import org.apache.ignite.internal.processors.query.GridQueryTypeDescriptor;
@@ -997,6 +998,39 @@ public class H2DynamicTableSelfTest extends AbstractSchemaSelfTest {
}
/**
+ * @throws Exception If test failed.
+ */
+ public void testQueryLocalWithRecreate() throws Exception {
+ execute("CREATE TABLE A(id int primary key, name varchar, surname varchar) WITH \"cache_name=cache," +
+ "template=replicated\"");
+
+ // In order for local queries to work, let's use non client node.
+ IgniteInternalCache cache = grid(0).cachex("cache");
+
+ assertNotNull(cache);
+
+ executeLocal(cache.context(), "INSERT INTO A(id, name, surname) values (1, 'X', 'Y')");
+
+ assertEqualsCollections(Collections.singletonList(Arrays.asList(1, "X", "Y")),
+ executeLocal(cache.context(), "SELECT id, name, surname FROM A"));
+
+ execute("DROP TABLE A");
+
+ execute("CREATE TABLE A(id int primary key, name varchar, surname varchar) WITH \"cache_name=cache\"");
+
+ cache = grid(0).cachex("cache");
+
+ assertNotNull(cache);
+
+ try {
+ executeLocal(cache.context(), "INSERT INTO A(id, name, surname) values (1, 'X', 'Y')");
+ }
+ finally {
+ execute("DROP TABLE A");
+ }
+ }
+
+ /**
* Test that it's impossible to create tables with same name regardless of key/value wrapping settings.
*/
public void testWrappedAndUnwrappedKeyTablesInteroperability() {
@@ -1443,6 +1477,15 @@ public class H2DynamicTableSelfTest extends AbstractSchemaSelfTest {
}
/**
+ * Execute DDL statement on given node.
+ *
+ * @param sql Statement.
+ */
+ private List<List<?>> executeLocal(GridCacheContext cctx, String sql) {
+ return queryProcessor(cctx.grid()).querySqlFields(cctx, new SqlFieldsQuery(sql).setLocal(true), true).getAll();
+ }
+
+ /**
* @return Client node.
*/
private IgniteEx client() {