IGNITE-5448 - Fixed IgniteH2Indexing::tables implementation - Fixes #2254. Signed-off-by: Alexey Goncharuk <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/99584fed Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/99584fed Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/99584fed Branch: refs/heads/ignite-5578 Commit: 99584fedfa79edaced02625a92e84362fc436f1c Parents: 1ea2da9 Author: Alexander Paschenko <[email protected]> Authored: Fri Jul 28 14:44:34 2017 +0300 Committer: Alexey Goncharuk <[email protected]> Committed: Fri Jul 28 14:44:34 2017 +0300 ---------------------------------------------------------------------- .../processors/query/h2/IgniteH2Indexing.java | 21 ++++++++----- .../cache/index/H2DynamicTableSelfTest.java | 32 ++++++++++++++++++++ 2 files changed, 46 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/99584fed/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 40eae17..007eeb1 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 @@ -66,14 +66,14 @@ import org.apache.ignite.internal.processors.cache.CacheObjectValueContext; import org.apache.ignite.internal.processors.cache.GridCacheAdapter; import org.apache.ignite.internal.processors.cache.GridCacheAffinityManager; import org.apache.ignite.internal.processors.cache.GridCacheContext; +import org.apache.ignite.internal.processors.cache.GridCacheEntryEx; +import org.apache.ignite.internal.processors.cache.GridCacheEntryRemovedException; import org.apache.ignite.internal.processors.cache.GridCacheSharedContext; import org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManager; import org.apache.ignite.internal.processors.cache.KeyCacheObject; -import org.apache.ignite.internal.processors.cache.GridCacheEntryEx; -import org.apache.ignite.internal.processors.cache.GridCacheEntryRemovedException; import org.apache.ignite.internal.processors.cache.QueryCursorImpl; -import org.apache.ignite.internal.processors.cache.persistence.tree.io.PageIO; import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtInvalidPartitionException; +import org.apache.ignite.internal.processors.cache.persistence.tree.io.PageIO; import org.apache.ignite.internal.processors.cache.query.CacheQueryPartitionInfo; import org.apache.ignite.internal.processors.cache.query.GridCacheQueryMarshallable; import org.apache.ignite.internal.processors.cache.query.GridCacheTwoStepQuery; @@ -92,14 +92,14 @@ import org.apache.ignite.internal.processors.query.GridRunningQueryInfo; import org.apache.ignite.internal.processors.query.IgniteSQLException; import org.apache.ignite.internal.processors.query.QueryIndexDescriptorImpl; import org.apache.ignite.internal.processors.query.QueryUtils; -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.database.H2RowFactory; import org.apache.ignite.internal.processors.query.h2.database.H2TreeIndex; import org.apache.ignite.internal.processors.query.h2.database.io.H2ExtrasInnerIO; import org.apache.ignite.internal.processors.query.h2.database.io.H2ExtrasLeafIO; import org.apache.ignite.internal.processors.query.h2.database.io.H2InnerIO; import org.apache.ignite.internal.processors.query.h2.database.io.H2LeafIO; +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.GridH2QueryContext; @@ -1687,7 +1687,7 @@ public class IgniteH2Indexing implements GridQueryIndexing { } /** {@inheritDoc} */ - @Override public String schema(String cacheName) { + @Override public String schema(String cacheName) { String res = cacheName2schema.get(cacheName); if (res == null) @@ -1708,7 +1708,14 @@ public class IgniteH2Indexing implements GridQueryIndexing { if (s == null) return Collections.emptySet(); - return s.tables(); + List<H2TableDescriptor> tbls = new ArrayList<>(); + + for (H2TableDescriptor tbl : s.tables()) { + if (F.eq(tbl.cache().name(), cacheName)) + tbls.add(tbl); + } + + return tbls; } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/99584fed/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 b0e69f1..d737a0f 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 @@ -47,6 +47,7 @@ import org.apache.ignite.internal.processors.query.GridQueryTypeDescriptor; import org.apache.ignite.internal.processors.query.IgniteSQLException; import org.apache.ignite.internal.processors.query.QueryTypeDescriptorImpl; import org.apache.ignite.internal.processors.query.QueryUtils; +import org.apache.ignite.internal.processors.query.h2.H2TableDescriptor; import org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing; import org.apache.ignite.internal.processors.query.h2.ddl.DdlStatementsProcessor; import org.apache.ignite.internal.processors.query.h2.opt.GridH2Table; @@ -834,6 +835,37 @@ public class H2DynamicTableSelfTest extends AbstractSchemaSelfTest { } /** + * Test that {@link IgniteH2Indexing#tables(String)} method + * only returns tables belonging to given cache. + * + * @throws Exception if failed. + */ + public void testGetTablesForCache() throws Exception { + try { + execute("create table t1(id int primary key, name varchar)"); + execute("create table t2(id int primary key, name varchar)"); + + IgniteH2Indexing h2Idx = (IgniteH2Indexing)grid(0).context().query().getIndexing(); + + String cacheName = cacheName("T1"); + + Collection<H2TableDescriptor> col = GridTestUtils.invoke(h2Idx, "tables", cacheName); + + assertNotNull(col); + + H2TableDescriptor[] tables = col.toArray(new H2TableDescriptor[col.size()]); + + assertEquals(1, tables.length); + + assertEquals(tables[0].table().getName(), "T1"); + } + finally { + execute("drop table t1 if exists"); + execute("drop table t2 if exists"); + } + } + + /** * Execute DDL statement on client node. * * @param sql Statement.
