IGNITE-5312: Changed cache name to schema name in H2TwoStepCachedQueryKey. This closes #2020.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/858e5b72 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/858e5b72 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/858e5b72 Branch: refs/heads/ignite-5075 Commit: 858e5b729b621efef057c1919273463ebdcb133d Parents: e59d389 Author: devozerov <[email protected]> Authored: Sat May 27 21:07:54 2017 +0300 Committer: devozerov <[email protected]> Committed: Sat May 27 21:07:54 2017 +0300 ---------------------------------------------------------------------- .../query/h2/H2TwoStepCachedQuery.java | 18 ++++++++++++++++-- .../query/h2/H2TwoStepCachedQueryKey.java | 19 ++++++------------- .../processors/query/h2/IgniteH2Indexing.java | 19 +++++++++++-------- 3 files changed, 33 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/858e5b72/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2TwoStepCachedQuery.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2TwoStepCachedQuery.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2TwoStepCachedQuery.java index dd1b44c..6139869 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2TwoStepCachedQuery.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2TwoStepCachedQuery.java @@ -28,10 +28,10 @@ import java.util.List; */ public class H2TwoStepCachedQuery { /** */ - final List<GridQueryFieldMetadata> meta; + private final List<GridQueryFieldMetadata> meta; /** */ - final GridCacheTwoStepQuery twoStepQry; + private final GridCacheTwoStepQuery twoStepQry; /** * @param meta Fields metadata. @@ -42,6 +42,20 @@ public class H2TwoStepCachedQuery { this.twoStepQry = twoStepQry; } + /** + * @return Fields metadata. + */ + public List<GridQueryFieldMetadata> meta() { + return meta; + } + + /** + * @return Query. + */ + public GridCacheTwoStepQuery query() { + return twoStepQry; + } + /** {@inheritDoc} */ @Override public String toString() { return S.toString(H2TwoStepCachedQuery.class, this); http://git-wip-us.apache.org/repos/asf/ignite/blob/858e5b72/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2TwoStepCachedQueryKey.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2TwoStepCachedQueryKey.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2TwoStepCachedQueryKey.java index 1452a83..cc14abd 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2TwoStepCachedQueryKey.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2TwoStepCachedQueryKey.java @@ -22,7 +22,7 @@ package org.apache.ignite.internal.processors.query.h2; */ public class H2TwoStepCachedQueryKey { /** */ - private final String cacheName; + private final String schemaName; /** */ private final String sql; @@ -40,20 +40,20 @@ public class H2TwoStepCachedQueryKey { private final boolean isLocal; /** - * @param cacheName Cache name. + * @param schemaName Schema name. * @param sql Sql. * @param grpByCollocated Collocated GROUP BY. * @param distributedJoins Distributed joins enabled. * @param enforceJoinOrder Enforce join order of tables. * @param isLocal Query is local flag. */ - H2TwoStepCachedQueryKey(String cacheName, + H2TwoStepCachedQueryKey(String schemaName, String sql, boolean grpByCollocated, boolean distributedJoins, boolean enforceJoinOrder, boolean isLocal) { - this.cacheName = cacheName; + this.schemaName = schemaName; this.sql = sql; this.grpByCollocated = grpByCollocated; this.distributedJoins = distributedJoins; @@ -61,13 +61,6 @@ public class H2TwoStepCachedQueryKey { this.isLocal = isLocal; } - /** - * @return Cache name. - */ - public String cacheName() { - return cacheName; - } - /** {@inheritDoc} */ @Override public boolean equals(Object o) { if (this == o) @@ -87,7 +80,7 @@ public class H2TwoStepCachedQueryKey { if (enforceJoinOrder != that.enforceJoinOrder) return false; - if (cacheName != null ? !cacheName.equals(that.cacheName) : that.cacheName != null) + if (schemaName != null ? !schemaName.equals(that.schemaName) : that.schemaName != null) return false; return isLocal == that.isLocal && sql.equals(that.sql); @@ -95,7 +88,7 @@ public class H2TwoStepCachedQueryKey { /** {@inheritDoc} */ @Override public int hashCode() { - int res = cacheName != null ? cacheName.hashCode() : 0; + int res = schemaName != null ? schemaName.hashCode() : 0; res = 31 * res + sql.hashCode(); res = 31 * res + (grpByCollocated ? 1 : 0); res = res + (distributedJoins ? 2 : 0); http://git-wip-us.apache.org/repos/asf/ignite/blob/858e5b72/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 0291b0a..c94c215 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 @@ -1324,12 +1324,11 @@ public class IgniteH2Indexing implements GridQueryIndexing { /** {@inheritDoc} */ @Override public FieldsQueryCursor<List<?>> queryDistributedSqlFields(GridCacheContext<?, ?> cctx, SqlFieldsQuery qry, boolean keepBinary, GridQueryCancel cancel) { - final String cacheName = cctx.name(); final String sqlQry = qry.getSql(); - String schema = schema(cctx.name()); + String schemaName = schema(cctx.name()); - Connection c = connectionForSchema(schema); + Connection c = connectionForSchema(schemaName); final boolean enforceJoinOrder = qry.isEnforceJoinOrder(); final boolean distributedJoins = qry.isDistributedJoins(); @@ -1340,13 +1339,13 @@ public class IgniteH2Indexing implements GridQueryIndexing { GridCacheTwoStepQuery twoStepQry = null; List<GridQueryFieldMetadata> meta; - final H2TwoStepCachedQueryKey cachedQryKey = new H2TwoStepCachedQueryKey(cacheName, sqlQry, grpByCollocated, + final H2TwoStepCachedQueryKey cachedQryKey = new H2TwoStepCachedQueryKey(schemaName, sqlQry, grpByCollocated, distributedJoins, enforceJoinOrder, qry.isLocal()); H2TwoStepCachedQuery cachedQry = twoStepCache.get(cachedQryKey); if (cachedQry != null) { - twoStepQry = cachedQry.twoStepQry.copy(); - meta = cachedQry.meta; + twoStepQry = cachedQry.query().copy(); + meta = cachedQry.meta(); } else { final UUID locNodeId = ctx.localNodeId(); @@ -1415,7 +1414,7 @@ public class IgniteH2Indexing implements GridQueryIndexing { if (twoStepQry == null) { if (DmlStatementsProcessor.isDmlStatement(prepared)) { try { - return dmlProc.updateSqlFieldsDistributed(schema, stmt, qry, cancel); + return dmlProc.updateSqlFieldsDistributed(schemaName, stmt, qry, cancel); } catch (IgniteCheckedException e) { throw new IgniteSQLException("Failed to execute DML statement [stmt=" + sqlQry + @@ -2249,11 +2248,15 @@ public class IgniteH2Indexing implements GridQueryIndexing { for (Index idx : tblDesc.table().getIndexes()) idx.close(null); + int cacheId = CU.cacheId(cacheName); + for (Iterator<Map.Entry<H2TwoStepCachedQueryKey, H2TwoStepCachedQuery>> it = twoStepCache.entrySet().iterator(); it.hasNext();) { Map.Entry<H2TwoStepCachedQueryKey, H2TwoStepCachedQuery> e = it.next(); - if (F.eq(e.getKey().cacheName(), cacheName)) + GridCacheTwoStepQuery qry = e.getValue().query(); + + if (!F.isEmpty(qry.cacheIds()) && qry.cacheIds().contains(cacheId)) it.remove(); } }
