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/17 09:42:41 UTC
ignite git commit: idx minor
Repository: ignite
Updated Branches:
refs/heads/ignite-3478-idx [created] bc831a751
idx minor
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/bc831a75
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/bc831a75
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/bc831a75
Branch: refs/heads/ignite-3478-idx
Commit: bc831a75144ca0f75bdc6dd8e1fe7aeccf00e49b
Parents: ec12824
Author: sboikov <sb...@gridgain.com>
Authored: Tue Oct 17 11:46:52 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Tue Oct 17 12:41:53 2017 +0300
----------------------------------------------------------------------
.../processors/cache/GridCacheEntryEx.java | 3 +-
.../processors/cache/GridCacheMapEntry.java | 8 +--
.../cache/IgniteCacheOffheapManagerImpl.java | 42 ++----------
.../cache/query/GridCacheQueryManager.java | 53 ++++-----------
.../processors/query/GridQueryIndexing.java | 25 +++----
.../processors/query/GridQueryProcessor.java | 68 ++++++++++----------
.../schema/SchemaIndexCacheVisitorClosure.java | 14 +---
.../schema/SchemaIndexCacheVisitorImpl.java | 29 ++++-----
.../processors/cache/GridCacheTestEntryEx.java | 2 +-
...IgniteClientCacheInitializationFailTest.java | 12 ++--
.../processors/query/h2/IgniteH2Indexing.java | 60 ++++++++---------
.../query/h2/database/H2PkHashIndex.java | 5 +-
.../query/h2/database/H2RowFactory.java | 6 +-
.../query/h2/opt/GridH2KeyRowOnheap.java | 6 +-
.../query/h2/opt/GridH2KeyValueRowOnheap.java | 35 ++++------
.../processors/query/h2/opt/GridH2Row.java | 59 ++++++-----------
.../query/h2/opt/GridH2RowDescriptor.java | 24 ++-----
.../processors/query/h2/opt/GridH2Table.java | 28 +++-----
.../cache/IgniteCacheAbstractQuerySelfTest.java | 13 ++--
19 files changed, 176 insertions(+), 316 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
index b2cabac..6da7bc7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
@@ -870,11 +870,10 @@ public interface GridCacheEntryEx {
* Update index from within entry lock, passing key, value, and expiration time to provided closure.
*
* @param clo Closure to apply to key, value, and expiration time.
- * @param link Link.
* @throws IgniteCheckedException If failed.
* @throws GridCacheEntryRemovedException If entry was removed.
*/
- public void updateIndex(SchemaIndexCacheVisitorClosure clo, long link) throws IgniteCheckedException,
+ public void updateIndex(SchemaIndexCacheVisitorClosure clo) throws IgniteCheckedException,
GridCacheEntryRemovedException;
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
index 54b8dc3..5c3fe1f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
@@ -3300,7 +3300,7 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
}
/** {@inheritDoc} */
- @Override public void updateIndex(SchemaIndexCacheVisitorClosure clo, long link) throws IgniteCheckedException,
+ @Override public void updateIndex(SchemaIndexCacheVisitorClosure clo) throws IgniteCheckedException,
GridCacheEntryRemovedException {
synchronized (this) {
if (isInternal())
@@ -3308,10 +3308,10 @@ public abstract class GridCacheMapEntry extends GridMetadataAwareAdapter impleme
checkObsolete();
- unswap(false);
+ CacheDataRow row = cctx.offheap().read(this);
- if (val != null)
- clo.apply(key, partition(), val, ver, expireTimeUnlocked(), link);
+ if (row != null)
+ clo.apply(row);
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
index ba6f7d0..4844686 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
@@ -1339,27 +1339,8 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager
int cacheId = grp.sharedGroup() ? cctx.cacheId() : CU.UNDEFINED_CACHE_ID;
- if (qryMgr.enabled()) {
- if (oldRow != null) {
- qryMgr.store(key,
- partId,
- oldRow.value(),
- oldRow.version(),
- newRow.value(),
- newRow.version(),
- expireTime,
- newRow.link());
- }
- else {
- qryMgr.store(key,
- partId,
- null, null,
- newRow.value(),
- newRow.version(),
- expireTime,
- newRow.link());
- }
- }
+ if (qryMgr.enabled())
+ qryMgr.store(newRow, oldRow);
if (oldRow != null) {
assert oldRow.link() != 0 : oldRow;
@@ -1391,15 +1372,7 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager
GridCacheQueryManager qryMgr = cctx.queries();
- qryMgr.store(
- key,
- partId,
- null,
- null,
- row.value(),
- row.version(),
- row.expireTime(),
- row.link());
+ qryMgr.store(row, null);
}
}
@@ -1427,9 +1400,6 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager
* @throws IgniteCheckedException If failed.
*/
private void finishRemove(GridCacheContext cctx, KeyCacheObject key, @Nullable CacheDataRow oldRow) throws IgniteCheckedException {
- CacheObject val = null;
- GridCacheVersion ver = null;
-
if (oldRow != null) {
int cacheId = grp.sharedGroup() ? cctx.cacheId() : CU.UNDEFINED_CACHE_ID;
@@ -1441,16 +1411,12 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager
pendingEntries.removex(new PendingRow(cacheId, oldRow.expireTime(), oldRow.link()));
decrementSize(cctx.cacheId());
-
- val = oldRow.value();
-
- ver = oldRow.version();
}
GridCacheQueryManager qryMgr = cctx.queries();
if (qryMgr.enabled())
- qryMgr.remove(key, partId, val, ver);
+ qryMgr.remove(key, oldRow);
if (oldRow != null)
rowStore.removeRow(oldRow.link());
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
index 392b19f..dc4d7e0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java
@@ -379,33 +379,14 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
}
/**
- * Writes key-value pair to index.
- *
- * @param key Key.
- * @param partId Partition.
- * @param prevVal Previous value.
- * @param prevVer Previous version.
- * @param val Value.
- * @param ver Cache entry version.
- * @param expirationTime Expiration time or 0 if never expires.
- * @param link Link.
+ * @param newRow New row.
+ * @param prevRow Previous row.
* @throws IgniteCheckedException In case of error.
*/
- public void store(KeyCacheObject key,
- int partId,
- @Nullable CacheObject prevVal,
- @Nullable GridCacheVersion prevVer,
- CacheObject val,
- GridCacheVersion ver,
- long expirationTime,
- long link)
+ public void store(CacheDataRow newRow, @Nullable CacheDataRow prevRow)
throws IgniteCheckedException {
- assert key != null;
- assert val != null;
assert enabled();
-
- if (key instanceof GridCacheInternal)
- return; // No-op.
+ assert newRow != null && newRow.value() != null && newRow.link() != 0 : newRow;
if (!enterBusy())
throw new NodeStoppingException("Operation has been cancelled (node is stopping).");
@@ -414,15 +395,15 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
if (isIndexingSpiEnabled()) {
CacheObjectContext coctx = cctx.cacheObjectContext();
- Object key0 = unwrapIfNeeded(key, coctx);
+ Object key0 = unwrapIfNeeded(newRow.key(), coctx);
- Object val0 = unwrapIfNeeded(val, coctx);
+ Object val0 = unwrapIfNeeded(newRow.value(), coctx);
- cctx.kernalContext().indexing().store(cacheName, key0, val0, expirationTime);
+ cctx.kernalContext().indexing().store(cacheName, key0, val0, newRow.expireTime());
}
if (qryProcEnabled)
- qryProc.store(cacheName, key, partId, prevVal, prevVer, val, ver, expirationTime, link);
+ qryProc.store(cctx, newRow, prevRow);
}
finally {
invalidateResultCache();
@@ -433,17 +414,11 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
/**
* @param key Key.
- * @param partId Partition.
- * @param val Value.
- * @param ver Version.
+ * @param prevRow Previous row.
* @throws IgniteCheckedException Thrown in case of any errors.
*/
- @SuppressWarnings("SimplifiableIfStatement")
- public void remove(KeyCacheObject key, int partId, CacheObject val,
- GridCacheVersion ver) throws IgniteCheckedException {
- assert key != null;
-
- if (!QueryUtils.isEnabled(cctx.config()) && !(key instanceof GridCacheInternal))
+ public void remove(KeyCacheObject key, @Nullable CacheDataRow prevRow) throws IgniteCheckedException {
+ if (!QueryUtils.isEnabled(cctx.config()))
return; // No-op.
if (!enterBusy())
@@ -457,8 +432,8 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
}
// val may be null if we have no previous value. We should not call processor in this case.
- if (qryProcEnabled && val != null)
- qryProc.remove(cacheName, key, partId, val, ver);
+ if (qryProcEnabled && prevRow != null)
+ qryProc.remove(cctx, prevRow);
}
finally {
invalidateResultCache();
@@ -474,7 +449,7 @@ public abstract class GridCacheQueryManager<K, V> extends GridCacheManagerAdapte
* @return Query future.
*/
@SuppressWarnings("unchecked")
- public CacheQueryFuture<?> queryLocal(GridCacheQueryBean qry) {
+ CacheQueryFuture<?> queryLocal(GridCacheQueryBean qry) {
assert qry.query().type() != GridCacheQueryType.SCAN : qry;
if (log.isDebugEnabled())
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java
index 93d541d..b0a3831 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java
@@ -30,10 +30,8 @@ import org.apache.ignite.cache.query.SqlFieldsQuery;
import org.apache.ignite.cache.query.SqlQuery;
import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
-import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
-import org.apache.ignite.internal.processors.cache.KeyCacheObject;
-import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
import org.apache.ignite.internal.processors.query.schema.SchemaIndexCacheVisitor;
import org.apache.ignite.internal.util.GridSpinBusyLock;
import org.apache.ignite.internal.util.lang.GridCloseableIterator;
@@ -216,27 +214,24 @@ public interface GridQueryIndexing {
* Updates index. Note that key is unique for cache, so if cache contains multiple indexes
* the key should be removed from indexes other than one being updated.
*
- * @param cacheName Cache name.
+ * @param cctx Cache context.
* @param type Type descriptor.
- * @param key Key.
- * @param val Value.
- * @param ver Version.
- * @param expirationTime Expiration time or 0 if never expires.
+ * @param row New row.
* @throws IgniteCheckedException If failed.
*/
- public void store(String cacheName, GridQueryTypeDescriptor type, KeyCacheObject key, int partId, CacheObject val,
- GridCacheVersion ver, long expirationTime, long link) throws IgniteCheckedException;
+ public void store(GridCacheContext cctx, GridQueryTypeDescriptor type, CacheDataRow row)
+ throws IgniteCheckedException;
/**
* Removes index entry by key.
*
- * @param cacheName Cache name.
- * @param key Key.
- * @param val Value.
+ * @param cctx Cache context.
+ * @param type Type descriptor.
+ * @param row Row.
* @throws IgniteCheckedException If failed.
*/
- public void remove(String cacheName, GridQueryTypeDescriptor type, KeyCacheObject key, int partId, CacheObject val,
- GridCacheVersion ver) throws IgniteCheckedException;
+ public void remove(GridCacheContext cctx, GridQueryTypeDescriptor type, CacheDataRow row)
+ throws IgniteCheckedException;
/**
* Rebuilds all indexes of given type from hash index.
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/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 3a1cdb7..1095e5f 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
@@ -67,6 +67,7 @@ import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
import org.apache.ignite.internal.processors.cache.StoredCacheData;
+import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
import org.apache.ignite.internal.processors.cache.query.CacheQueryFuture;
import org.apache.ignite.internal.processors.cache.query.CacheQueryType;
import org.apache.ignite.internal.processors.cache.query.GridCacheQueryType;
@@ -1694,30 +1695,21 @@ public class GridQueryProcessor extends GridProcessorAdapter {
}
/**
- * Writes key-value pair to index.
- *
- * @param cacheName Cache name.
- * @param key Key.
- * @param val Value.
- * @param ver Cache entry version.
- * @param expirationTime Expiration time or 0 if never expires.
+ * @param cctx Cache context.
+ * @param newRow New row.
+ * @param prevRow Previous row.
* @throws IgniteCheckedException In case of error.
*/
@SuppressWarnings({"unchecked", "ConstantConditions"})
- public void store(final String cacheName,
- final KeyCacheObject key,
- int partId,
- @Nullable CacheObject prevVal,
- @Nullable GridCacheVersion prevVer,
- final CacheObject val,
- GridCacheVersion ver,
- long expirationTime,
- long link) throws IgniteCheckedException {
- assert key != null;
- assert val != null;
+ public void store(GridCacheContext cctx, CacheDataRow newRow, @Nullable CacheDataRow prevRow)
+ throws IgniteCheckedException {
+ assert cctx != null;
+ assert newRow != null;
+
+ KeyCacheObject key = newRow.key();
if (log.isDebugEnabled())
- log.debug("Store [cache=" + cacheName + ", key=" + key + ", val=" + val + "]");
+ log.debug("Store [cache=" + cctx.name() + ", key=" + key + ", val=" + newRow.value() + "]");
if (idx == null)
return;
@@ -1726,21 +1718,27 @@ public class GridQueryProcessor extends GridProcessorAdapter {
throw new NodeStoppingException("Operation has been cancelled (node is stopping).");
try {
- CacheObjectContext coctx = cacheObjectContext(cacheName);
+ String cacheName = cctx.name();
+
+ CacheObjectContext coctx = cctx.cacheObjectContext();
- QueryTypeDescriptorImpl desc = typeByValue(cacheName, coctx, key, val, true);
+ QueryTypeDescriptorImpl desc = typeByValue(cacheName, coctx, key, newRow.value(), true);
- if (prevVal != null) {
- QueryTypeDescriptorImpl prevValDesc = typeByValue(cacheName, coctx, key, prevVal, false);
+ if (prevRow != null) {
+ QueryTypeDescriptorImpl prevValDesc = typeByValue(cacheName,
+ coctx,
+ key,
+ prevRow.value(),
+ false);
if (prevValDesc != null && prevValDesc != desc)
- idx.remove(cacheName, prevValDesc, key, partId, prevVal, prevVer);
+ idx.remove(cctx, prevValDesc, prevRow);
}
if (desc == null)
return;
- idx.store(cacheName, desc, key, partId, val, ver, expirationTime, link);
+ idx.store(cctx, desc, newRow);
}
finally {
busyLock.leaveBusy();
@@ -2302,16 +2300,16 @@ public class GridQueryProcessor extends GridProcessorAdapter {
}
/**
- * @param cacheName Cache name.
- * @param key Key.
+ * @param cctx Cache context.
+ * @param val Row.
* @throws IgniteCheckedException Thrown in case of any errors.
*/
- public void remove(String cacheName, KeyCacheObject key, int partId, CacheObject val, GridCacheVersion ver)
+ public void remove(GridCacheContext cctx, CacheDataRow val)
throws IgniteCheckedException {
- assert key != null;
+ assert val != null;
if (log.isDebugEnabled())
- log.debug("Remove [cacheName=" + cacheName + ", key=" + key + ", val=" + val + "]");
+ log.debug("Remove [cacheName=" + cctx.name() + ", key=" + val.key()+ ", val=" + val.value() + "]");
if (idx == null)
return;
@@ -2320,14 +2318,16 @@ public class GridQueryProcessor extends GridProcessorAdapter {
throw new IllegalStateException("Failed to remove from index (grid is stopping).");
try {
- CacheObjectContext coctx = cacheObjectContext(cacheName);
-
- QueryTypeDescriptorImpl desc = typeByValue(cacheName, coctx, key, val, false);
+ QueryTypeDescriptorImpl desc = typeByValue(cctx.name(),
+ cctx.cacheObjectContext(),
+ val.key(),
+ val.value(),
+ false);
if (desc == null)
return;
- idx.remove(cacheName, desc, key, partId, val, ver);
+ idx.remove(cctx, desc, val);
}
finally {
busyLock.leaveBusy();
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaIndexCacheVisitorClosure.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaIndexCacheVisitorClosure.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaIndexCacheVisitorClosure.java
index 7f50089..a934d69 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaIndexCacheVisitorClosure.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaIndexCacheVisitorClosure.java
@@ -18,9 +18,7 @@
package org.apache.ignite.internal.processors.query.schema;
import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.processors.cache.CacheObject;
-import org.apache.ignite.internal.processors.cache.KeyCacheObject;
-import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
/**
* Index closure accepting current entry state.
@@ -29,14 +27,8 @@ public interface SchemaIndexCacheVisitorClosure {
/**
* Apply closure.
*
- * @param key Key.
- * @param part Partition.
- * @param val Value.
- * @param ver Version.
- * @param expiration Expiration.
- * @param link Link.
+ * @param row Row.
* @throws IgniteCheckedException If failed.
*/
- public void apply(KeyCacheObject key, int part, CacheObject val, GridCacheVersion ver, long expiration, long link)
- throws IgniteCheckedException;
+ public void apply(CacheDataRow row) throws IgniteCheckedException;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaIndexCacheVisitorImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaIndexCacheVisitorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaIndexCacheVisitorImpl.java
index 4e50f64..fda7d1d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaIndexCacheVisitorImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaIndexCacheVisitorImpl.java
@@ -17,24 +17,22 @@
package org.apache.ignite.internal.processors.query.schema;
+import java.util.Collection;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
-import org.apache.ignite.internal.processors.cache.CacheObject;
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.KeyCacheObject;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtInvalidPartitionException;
-import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLocalPartition;
import org.apache.ignite.internal.processors.cache.distributed.near.GridNearCacheAdapter;
-import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
+import org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter;
import org.apache.ignite.internal.processors.query.GridQueryProcessor;
import org.apache.ignite.internal.util.lang.GridCursor;
import org.apache.ignite.internal.util.typedef.internal.S;
-import java.util.Collection;
-
import static org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtPartitionState.EVICTED;
import static org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtPartitionState.OWNING;
import static org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtPartitionState.RENTING;
@@ -111,14 +109,17 @@ public class SchemaIndexCacheVisitorImpl implements SchemaIndexCacheVisitor {
return;
try {
- GridCursor<? extends CacheDataRow> cursor = part.dataStore().cursor();
+ GridCursor<? extends CacheDataRow> cursor = part.dataStore().cursor(cctx.cacheId(),
+ null,
+ null,
+ CacheDataRowAdapter.RowData.KEY_ONLY);
while (cursor.next()) {
CacheDataRow row = cursor.get();
KeyCacheObject key = row.key();
- processKey(key, row.link(), clo);
+ processKey(key, clo);
if (part.state() == RENTING)
break;
@@ -133,11 +134,10 @@ public class SchemaIndexCacheVisitorImpl implements SchemaIndexCacheVisitor {
* Process single key.
*
* @param key Key.
- * @param link Link.
* @param clo Closure.
* @throws IgniteCheckedException If failed.
*/
- private void processKey(KeyCacheObject key, long link, FilteringVisitorClosure clo) throws IgniteCheckedException {
+ private void processKey(KeyCacheObject key, FilteringVisitorClosure clo) throws IgniteCheckedException {
while (true) {
try {
checkCancelled();
@@ -145,7 +145,7 @@ public class SchemaIndexCacheVisitorImpl implements SchemaIndexCacheVisitor {
GridCacheEntryEx entry = cctx.cache().entryEx(key);
try {
- entry.updateIndex(clo, link);
+ entry.updateIndex(clo);
}
finally {
cctx.evicts().touch(entry, AffinityTopologyVersion.NONE);
@@ -190,15 +190,14 @@ public class SchemaIndexCacheVisitorImpl implements SchemaIndexCacheVisitor {
*
* @param target Target.
*/
- public FilteringVisitorClosure(SchemaIndexCacheVisitorClosure target) {
+ FilteringVisitorClosure(SchemaIndexCacheVisitorClosure target) {
this.target = target;
}
/** {@inheritDoc} */
- @Override public void apply(KeyCacheObject key, int part, CacheObject val, GridCacheVersion ver,
- long expiration, long link) throws IgniteCheckedException {
- if (qryProc.belongsToTable(cctx, cacheName, tblName, key, val))
- target.apply(key, part, val, ver, expiration, link);
+ @Override public void apply(CacheDataRow row) throws IgniteCheckedException {
+ if (qryProc.belongsToTable(cctx, cacheName, tblName, row.key(), row.value()))
+ target.apply(row);
}
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
index 6712b5b..2ba8fd8 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
@@ -842,7 +842,7 @@ public class GridCacheTestEntryEx extends GridMetadataAwareAdapter implements Gr
}
/** {@inheritDoc} */
- @Override public void updateIndex(SchemaIndexCacheVisitorClosure clo, long link) throws IgniteCheckedException,
+ @Override public void updateIndex(SchemaIndexCacheVisitorClosure clo) throws IgniteCheckedException,
GridCacheEntryRemovedException {
// No-op.
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheInitializationFailTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheInitializationFailTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheInitializationFailTest.java
index 83dd9c9..b0b758a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheInitializationFailTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteClientCacheInitializationFailTest.java
@@ -43,7 +43,7 @@ import org.apache.ignite.configuration.NearCacheConfiguration;
import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.IgniteKernal;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
-import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
import org.apache.ignite.internal.processors.query.GridQueryCancel;
import org.apache.ignite.internal.processors.query.GridQueryIndexing;
import org.apache.ignite.internal.processors.query.GridQueryProcessor;
@@ -310,15 +310,13 @@ public class IgniteClientCacheInitializationFailTest extends GridCommonAbstractT
}
/** {@inheritDoc} */
- @Override public void store(String cacheName, GridQueryTypeDescriptor type, KeyCacheObject key, int partId,
- CacheObject val, GridCacheVersion ver, long expirationTime, long link) throws IgniteCheckedException {
- // No-op
+ @Override public void store(GridCacheContext cctx, GridQueryTypeDescriptor type, CacheDataRow val) {
+ // No-op.
}
/** {@inheritDoc} */
- @Override public void remove(String spaceName, GridQueryTypeDescriptor type, KeyCacheObject key, int partId,
- CacheObject val, GridCacheVersion ver) throws IgniteCheckedException {
- // No-op
+ @Override public void remove(GridCacheContext cctx, GridQueryTypeDescriptor type, CacheDataRow val) {
+ // No-op.
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/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 541b80f..95f24ef 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
@@ -61,7 +61,6 @@ import org.apache.ignite.internal.GridTopic;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheEntryImpl;
-import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.CacheObjectUtils;
import org.apache.ignite.internal.processors.cache.CacheObjectValueContext;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
@@ -72,6 +71,7 @@ import org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManager;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
import org.apache.ignite.internal.processors.cache.QueryCursorImpl;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtInvalidPartitionException;
+import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
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;
@@ -79,7 +79,6 @@ 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;
import org.apache.ignite.internal.processors.query.GridQueryCancel;
@@ -538,46 +537,47 @@ public class IgniteH2Indexing implements GridQueryIndexing {
}
/** {@inheritDoc} */
- @Override public void store(String cacheName,
- GridQueryTypeDescriptor type,
- KeyCacheObject k,
- int partId,
- CacheObject v,
- GridCacheVersion ver,
- long expirationTime,
- long link) throws IgniteCheckedException {
+ @Override public void store(GridCacheContext cctx, GridQueryTypeDescriptor type, CacheDataRow row)
+ throws IgniteCheckedException {
+ String cacheName = cctx.name();
+
H2TableDescriptor tbl = tableDescriptor(schema(cacheName), cacheName, type.name());
if (tbl == null)
return; // Type was rejected.
- if (expirationTime == 0)
- expirationTime = Long.MAX_VALUE;
+ tbl.table().update(row, false);
- tbl.table().update(k, partId, v, ver, expirationTime, false, link);
+ if (tbl.luceneIndex() != null) {
+ long expireTime = row.expireTime();
- if (tbl.luceneIndex() != null)
- tbl.luceneIndex().store(k, v, ver, expirationTime);
+ if (expireTime == 0L)
+ expireTime = Long.MAX_VALUE;
+
+ tbl.luceneIndex().store(row.key(), row.value(), row.version(), expireTime);
+ }
}
/** {@inheritDoc} */
- @Override public void remove(String cacheName,
- GridQueryTypeDescriptor type,
- KeyCacheObject key,
- int partId,
- CacheObject val,
- GridCacheVersion ver) throws IgniteCheckedException {
- if (log.isDebugEnabled())
- log.debug("Removing key from cache query index [locId=" + nodeId + ", key=" + key + ", val=" + val + ']');
+ @Override public void remove(GridCacheContext cctx, GridQueryTypeDescriptor type, CacheDataRow row)
+ throws IgniteCheckedException
+ {
+ if (log.isDebugEnabled()) {
+ log.debug("Removing key from cache query index [locId=" + nodeId +
+ ", key=" + row.key() +
+ ", val=" + row.value() + ']');
+ }
+
+ String cacheName = cctx.name();
H2TableDescriptor tbl = tableDescriptor(schema(cacheName), cacheName, type.name());
if (tbl == null)
return;
- if (tbl.table().update(key, partId, val, ver, 0, true, 0)) {
+ if (tbl.table().update(row, true)) {
if (tbl.luceneIndex() != null)
- tbl.luceneIndex().remove(key);
+ tbl.luceneIndex().remove(row.key());
}
}
@@ -670,14 +670,10 @@ public class IgniteH2Indexing implements GridQueryIndexing {
final GridH2RowDescriptor rowDesc = h2Tbl.rowDescriptor();
SchemaIndexCacheVisitorClosure clo = new SchemaIndexCacheVisitorClosure() {
- @Override public void apply(KeyCacheObject key, int part, CacheObject val, GridCacheVersion ver,
- long expTime, long link) throws IgniteCheckedException {
- if (expTime == 0L)
- expTime = Long.MAX_VALUE;
-
- GridH2Row row = rowDesc.createRow(key, part, val, ver, expTime, link);
+ @Override public void apply(CacheDataRow row) throws IgniteCheckedException {
+ GridH2Row h2Row = rowDesc.createRow(row);
- h2Idx.put(row);
+ h2Idx.put(h2Row);
}
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
index 891e59f..59bf153 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
@@ -31,8 +31,8 @@ import org.apache.ignite.internal.processors.query.h2.opt.GridH2IndexBase;
import org.apache.ignite.internal.processors.query.h2.opt.GridH2Row;
import org.apache.ignite.internal.processors.query.h2.opt.GridH2Table;
import org.apache.ignite.internal.util.lang.GridCursor;
-import org.apache.ignite.spi.indexing.IndexingQueryFilter;
import org.apache.ignite.spi.indexing.IndexingQueryCacheFilter;
+import org.apache.ignite.spi.indexing.IndexingQueryFilter;
import org.h2.engine.Session;
import org.h2.index.Cursor;
import org.h2.index.IndexType;
@@ -197,8 +197,7 @@ public class H2PkHashIndex extends GridH2IndexBase {
try {
CacheDataRow dataRow = cursor.get();
- return tbl.rowDescriptor().createRow(dataRow.key(), dataRow.partition(), dataRow.value(),
- dataRow.version(), 0, dataRow.link());
+ return tbl.rowDescriptor().createRow(dataRow);
}
catch (IgniteCheckedException e) {
throw DbException.convert(e);
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2RowFactory.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2RowFactory.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2RowFactory.java
index 7116fe7..40b9b0a 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2RowFactory.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2RowFactory.java
@@ -19,11 +19,10 @@ package org.apache.ignite.internal.processors.query.h2.database;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
-import org.apache.ignite.internal.pagemem.PageIdUtils;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.persistence.CacheDataRowAdapter;
-import org.apache.ignite.internal.processors.query.h2.opt.GridH2RowDescriptor;
import org.apache.ignite.internal.processors.query.h2.opt.GridH2Row;
+import org.apache.ignite.internal.processors.query.h2.opt.GridH2RowDescriptor;
/**
* Data store for H2 rows.
@@ -64,8 +63,7 @@ public class H2RowFactory {
GridH2Row row;
try {
- row = rowDesc.createRow(rowBuilder.key(),
- PageIdUtils.partId(link), rowBuilder.value(), rowBuilder.version(), rowBuilder.expireTime(), link);
+ row = rowDesc.createRow(rowBuilder);
}
catch (IgniteCheckedException e) {
throw new IgniteException(e);
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2KeyRowOnheap.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2KeyRowOnheap.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2KeyRowOnheap.java
index a0716c9..291f8c8 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2KeyRowOnheap.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2KeyRowOnheap.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.processors.query.h2.opt;
+import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
import org.h2.value.Value;
/**
@@ -27,9 +28,12 @@ public class GridH2KeyRowOnheap extends GridH2Row {
private Value key;
/**
+ * @param row Row.
* @param key Key.
*/
- public GridH2KeyRowOnheap(Value key) {
+ public GridH2KeyRowOnheap(CacheDataRow row, Value key) {
+ super(row);
+
this.key = key;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2KeyValueRowOnheap.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2KeyValueRowOnheap.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2KeyValueRowOnheap.java
index ad93fec..e855536 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2KeyValueRowOnheap.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2KeyValueRowOnheap.java
@@ -18,15 +18,12 @@
package org.apache.ignite.internal.processors.query.h2.opt;
import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
import org.apache.ignite.internal.processors.query.GridQueryTypeDescriptor;
import org.apache.ignite.internal.util.typedef.internal.SB;
import org.h2.message.DbException;
-import org.h2.result.Row;
-import org.h2.result.SearchRow;
import org.h2.value.Value;
import org.h2.value.ValueNull;
-import org.jetbrains.annotations.Nullable;
/**
* Table row implementation based on {@link GridQueryTypeDescriptor}.
@@ -48,10 +45,6 @@ public class GridH2KeyValueRowOnheap extends GridH2Row {
protected final GridH2RowDescriptor desc;
/** */
- @SuppressWarnings("FieldAccessedSynchronizedAndUnsynchronized")
- protected long expirationTime;
-
- /** */
private Value key;
/** */
@@ -67,30 +60,24 @@ public class GridH2KeyValueRowOnheap extends GridH2Row {
* Constructor.
*
* @param desc Row descriptor.
- * @param key Key.
+ * @param row Row.
* @param keyType Key type.
- * @param val Value.
* @param valType Value type.
- * @param expirationTime Expiration time.
* @throws IgniteCheckedException If failed.
*/
- public GridH2KeyValueRowOnheap(GridH2RowDescriptor desc, Object key, int keyType, @Nullable Object val,
- int valType, GridCacheVersion ver, long expirationTime) throws IgniteCheckedException {
- this.desc = desc;
- this.expirationTime = expirationTime;
+ public GridH2KeyValueRowOnheap(GridH2RowDescriptor desc, CacheDataRow row, int keyType, int valType)
+ throws IgniteCheckedException {
+ super(row);
- this.key = desc.wrap(key, keyType);
+ this.desc = desc;
- if (val != null)
- this.val = desc.wrap(val, valType);
+ this.key = desc.wrap(row.key(), keyType);
- if (ver != null)
- this.ver = desc.wrap(ver, Value.JAVA_OBJECT);
- }
+ if (row.value() != null)
+ this.val = desc.wrap(row.value(), valType);
- /** {@inheritDoc} */
- @Override public long expireTime() {
- return expirationTime;
+ if (row.version() != null)
+ this.ver = desc.wrap(row.version(), Value.JAVA_OBJECT);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Row.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Row.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Row.java
index 4cb603b..8b1b711 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Row.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Row.java
@@ -26,75 +26,54 @@ import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
* Row with locking support needed for unique key conflicts resolution.
*/
public abstract class GridH2Row extends GridH2SearchRowAdapter implements CacheDataRow {
- /** Link. */
- private long link;
+ /** Row. */
+ private CacheDataRow row;
- /** Key. */
- private KeyCacheObject key;
-
- /** Value. */
- private CacheObject val;
-
- /** Version. */
- private GridCacheVersion ver;
-
- /** Partition. */
- private int partId;
+ /**
+ * @param row Row.
+ */
+ GridH2Row(CacheDataRow row) {
+ this.row = row;
+ }
/** {@inheritDoc} */
@Override public KeyCacheObject key() {
- return key;
+ return row.key();
}
/** {@inheritDoc} */
@Override public void key(KeyCacheObject key) {
- this.key = key;
+ row.key(key);
}
/** {@inheritDoc} */
@Override public CacheObject value() {
- return val;
- }
-
- /**
- * @param val Value.
- */
- public void value(CacheObject val) {
- this.val = val;
+ return row.value();
}
/** {@inheritDoc} */
@Override public GridCacheVersion version() {
- return ver;
- }
-
- /**
- * @param ver Version.
- */
- public void version(GridCacheVersion ver) {
- this.ver = ver;
+ return row.version();
}
/** {@inheritDoc} */
@Override public int partition() {
- return partId;
+ return row.partition();
}
- /**
- * @param partId Partition.
- */
- public void partition(int partId) {
- this.partId = partId;
+ /** {@inheritDoc} */
+ @Override public long expireTime() {
+ return row.expireTime();
}
/** {@inheritDoc} */
@Override public long link() {
- return link;
+ return row.link();
}
/** {@inheritDoc} */
@Override public void link(long link) {
- this.link = link;
+ row.link(link);
}
/** {@inheritDoc} */
@@ -104,6 +83,6 @@ public abstract class GridH2Row extends GridH2SearchRowAdapter implements CacheD
/** {@inheritDoc} */
@Override public int cacheId() {
- return 0;
+ return row.cacheId();
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2RowDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2RowDescriptor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2RowDescriptor.java
index 503e487..1d915e5 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2RowDescriptor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2RowDescriptor.java
@@ -29,8 +29,7 @@ import java.util.UUID;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
-import org.apache.ignite.internal.processors.cache.KeyCacheObject;
-import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
import org.apache.ignite.internal.processors.query.GridQueryProperty;
import org.apache.ignite.internal.processors.query.GridQueryTypeDescriptor;
import org.apache.ignite.internal.processors.query.h2.H2TableDescriptor;
@@ -59,7 +58,6 @@ import org.h2.value.ValueString;
import org.h2.value.ValueTime;
import org.h2.value.ValueTimestamp;
import org.h2.value.ValueUuid;
-import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.internal.processors.query.h2.opt.GridH2KeyValueRowOnheap.DEFAULT_COLUMNS_COUNT;
import static org.apache.ignite.internal.processors.query.h2.opt.GridH2KeyValueRowOnheap.KEY_COL;
@@ -274,22 +272,18 @@ public class GridH2RowDescriptor {
/**
* Creates new row.
*
- * @param key Key.
- * @param val Value.
- * @param ver Version.
- * @param expirationTime Expiration time in millis.
+ * @param dataRow Data row.
* @return Row.
* @throws IgniteCheckedException If failed.
*/
- public GridH2Row createRow(KeyCacheObject key, int partId, @Nullable CacheObject val, GridCacheVersion ver,
- long expirationTime, long link) throws IgniteCheckedException {
+ public GridH2Row createRow(CacheDataRow dataRow) throws IgniteCheckedException {
GridH2Row row;
try {
- if (val == null) // Only can happen for remove operation, can create simple search row.
- row = new GridH2KeyRowOnheap(wrap(key, keyType));
+ if (dataRow.value() == null) // Only can happen for remove operation, can create simple search row.
+ row = new GridH2KeyRowOnheap(dataRow, wrap(dataRow.key(), keyType));
else
- row = new GridH2KeyValueRowOnheap(this, key, keyType, val, valType, ver, expirationTime);
+ row = new GridH2KeyValueRowOnheap(this, dataRow, keyType, valType);
}
catch (ClassCastException e) {
throw new IgniteCheckedException("Failed to convert key to SQL type. " +
@@ -297,12 +291,6 @@ public class GridH2RowDescriptor {
"or configure key type as common super class for all actual keys for this value type.", e);
}
- row.version(ver);
- row.key(key);
- row.value(val);
- row.partition(partId);
- row.link(link);
-
return row;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
index add2488..3de06f8 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
@@ -27,11 +27,9 @@ import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteInterruptedException;
-import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
-import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
import org.apache.ignite.internal.processors.cache.query.QueryTable;
-import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.processors.query.IgniteSQLException;
import org.apache.ignite.internal.processors.query.QueryField;
import org.apache.ignite.internal.processors.query.h2.database.H2RowFactory;
@@ -389,37 +387,29 @@ public class GridH2Table extends TableBase {
* Updates table for given key. If value is null then row with given key will be removed from table,
* otherwise value and expiration time will be updated or new row will be added.
*
- * @param key Key.
- * @param val Value.
- * @param expirationTime Expiration time.
+ * @param row Row.
* @param rmv If {@code true} then remove, else update row.
* @return {@code true} If operation succeeded.
* @throws IgniteCheckedException If failed.
*/
- public boolean update(KeyCacheObject key,
- int partId,
- CacheObject val,
- GridCacheVersion ver,
- long expirationTime,
- boolean rmv,
- long link)
+ public boolean update(CacheDataRow row, boolean rmv)
throws IgniteCheckedException {
assert desc != null;
- GridH2Row row = desc.createRow(key, partId, val, ver, expirationTime, link);
+ GridH2Row h2Row = desc.createRow(row);
if (rmv)
- return doUpdate(row, true);
+ return doUpdate(h2Row, true);
else {
- GridH2KeyValueRowOnheap row0 = (GridH2KeyValueRowOnheap)row;
+ GridH2KeyValueRowOnheap h2Row0 = (GridH2KeyValueRowOnheap)h2Row;
- row0.prepareValuesCache();
+ h2Row0.prepareValuesCache();
try {
- return doUpdate(row, false);
+ return doUpdate(h2Row0, false);
}
finally {
- row0.clearValuesCache();
+ h2Row0.clearValuesCache();
}
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/bc831a75/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 e58f983..97ef8e5 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
@@ -69,13 +69,9 @@ import org.apache.ignite.configuration.NearCacheConfiguration;
import org.apache.ignite.events.CacheQueryExecutedEvent;
import org.apache.ignite.events.CacheQueryReadEvent;
import org.apache.ignite.events.Event;
-import org.apache.ignite.internal.IgniteEx;
-import org.apache.ignite.internal.IgniteKernal;
-import org.apache.ignite.internal.IgnitionEx;
import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.processors.cache.query.QueryCursorEx;
import org.apache.ignite.internal.processors.query.GridQueryFieldMetadata;
-import org.apache.ignite.internal.processors.query.GridQueryProcessor;
import org.apache.ignite.internal.util.lang.GridPlainCallable;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.F;
@@ -1069,16 +1065,15 @@ public abstract class IgniteCacheAbstractQuerySelfTest extends GridCommonAbstrac
Collection<Cache.Entry<Integer, ObjectValue>> res = qry.getAll();
- assert res != null;
-
- assert res.size() == 2;
+ assertNotNull(res);
+ assertEquals(2, res.size());
qry = cache.query(new TextQuery<Integer, ObjectValue>(ObjectValue.class, "full"));
res = qry.getAll();
- assert res != null;
- assert res.size() == 2;
+ assertNotNull(res);
+ assertEquals(2, res.size());
}
/**