You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by se...@apache.org on 2014/12/10 16:59:21 UTC
[12/17] incubator-ignite git commit: ignite-qry - merged
ignite-qry - merged
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/922a2bab
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/922a2bab
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/922a2bab
Branch: refs/heads/master
Commit: 922a2bab07206f930cab3eb4d930425757bb50b7
Parents: 984373d
Author: S.Vladykin <sv...@gridgain.com>
Authored: Tue Dec 9 19:32:11 2014 +0300
Committer: S.Vladykin <sv...@gridgain.com>
Committed: Tue Dec 9 19:32:11 2014 +0300
----------------------------------------------------------------------
.../MemcacheRestExampleNodeStartup.java | 16 +-
.../jdbc/GridJdbcLocalCachesSelfTest.java | 10 +-
.../configuration/GridQueryConfiguration.java | 194 ++
.../configuration/IgniteConfiguration.java | 28 +-
.../events/IgniteCacheQueryReadEvent.java | 6 +-
.../spi/indexing/GridIndexingQueryFilter.java | 26 +
.../ignite/spi/indexing/GridIndexingSpi.java | 104 +
.../spi/indexing/GridNoopIndexingSpi.java | 58 +
.../ignite/spi/indexing/IndexDescriptor.java | 42 -
.../apache/ignite/spi/indexing/IndexType.java | 24 -
.../ignite/spi/indexing/IndexingEntity.java | 50 -
.../spi/indexing/IndexingEntityAdapter.java | 57 -
.../spi/indexing/IndexingFieldMetadata.java | 46 -
.../spi/indexing/IndexingFieldsResult.java | 35 -
.../indexing/IndexingFieldsResultAdapter.java | 49 -
.../spi/indexing/IndexingKeyValueRow.java | 42 -
.../indexing/IndexingKeyValueRowAdapter.java | 82 -
.../ignite/spi/indexing/IndexingMarshaller.java | 38 -
.../spi/indexing/IndexingQueryFilter.java | 27 -
.../apache/ignite/spi/indexing/IndexingSpi.java | 188 --
.../spi/indexing/IndexingTypeDescriptor.java | 84 -
.../ignite/spi/indexing/NoopIndexingSpi.java | 119 -
.../query/GridCacheQueryConfiguration.java | 117 +
.../grid/cache/query/GridCacheQueryType.java | 5 +-
.../gridgain/grid/kernal/GridComponentType.java | 8 +-
.../org/gridgain/grid/kernal/GridGainEx.java | 5 +-
.../org/gridgain/grid/kernal/GridKernal.java | 2 +
.../gridgain/grid/kernal/GridKernalContext.java | 8 +
.../grid/kernal/GridKernalContextImpl.java | 12 +
.../managers/indexing/GridIndexingManager.java | 1778 +------------
.../GridCacheDistributedFieldsQueryFuture.java | 8 +-
.../query/GridCacheDistributedQueryManager.java | 6 +-
.../query/GridCacheFieldsQueryErrorFuture.java | 6 +-
.../query/GridCacheLocalFieldsQueryFuture.java | 8 +-
.../cache/query/GridCacheLocalQueryManager.java | 6 +-
.../cache/query/GridCacheQueriesEx.java | 7 +
.../cache/query/GridCacheQueriesImpl.java | 21 +-
.../cache/query/GridCacheQueriesProxy.java | 12 +
.../cache/query/GridCacheQueryAdapter.java | 4 +-
.../cache/query/GridCacheQueryManager.java | 396 +--
.../query/GridCacheQueryMetadataAware.java | 4 +-
.../cache/query/GridCacheQueryRequest.java | 4 +-
.../cache/query/GridCacheQueryResponse.java | 135 +-
.../cache/query/GridCacheQueryType.java | 5 +
.../cache/query/GridCacheSqlMetadata.java | 3 +-
.../query/jdbc/GridCacheQueryJdbcTask.java | 6 +-
.../query/GridQueryFieldMetadata.java | 46 +
.../processors/query/GridQueryFieldsResult.java | 34 +
.../query/GridQueryFieldsResultAdapter.java | 49 +
.../query/GridQueryIndexDescriptor.java | 42 +
.../processors/query/GridQueryIndexType.java | 24 +
.../processors/query/GridQueryIndexing.java | 162 ++
.../processors/query/GridQueryProcessor.java | 1672 ++++++++++++
.../query/GridQueryTypeDescriptor.java | 79 +
.../visor/node/VisorSpisConfiguration.java | 2 +-
.../grid/kernal/visor/query/VisorQueryTask.java | 6 +-
.../java/org/gridgain/grid/util/GridUtils.java | 20 +
.../GridCacheTxExceptionAbstractSelfTest.java | 66 +-
.../processors/query/h2/GridH2Indexing.java | 1998 +++++++++++++++
.../query/h2/GridH2ResultSetIterator.java | 122 +
.../query/h2/opt/GridH2AbstractKeyValueRow.java | 447 ++++
.../processors/query/h2/opt/GridH2Cursor.java | 62 +
.../query/h2/opt/GridH2IndexBase.java | 198 ++
.../query/h2/opt/GridH2KeyValueRowOffheap.java | 346 +++
.../query/h2/opt/GridH2KeyValueRowOnheap.java | 46 +
.../processors/query/h2/opt/GridH2Row.java | 40 +
.../query/h2/opt/GridH2RowDescriptor.java | 102 +
.../query/h2/opt/GridH2SpatialIndex.java | 318 +++
.../processors/query/h2/opt/GridH2Table.java | 889 +++++++
.../query/h2/opt/GridH2TreeIndex.java | 469 ++++
.../processors/query/h2/opt/GridH2Utils.java | 125 +
.../query/h2/opt/GridLuceneDirectory.java | 189 ++
.../processors/query/h2/opt/GridLuceneFile.java | 186 ++
.../query/h2/opt/GridLuceneIndex.java | 384 +++
.../query/h2/opt/GridLuceneInputStream.java | 220 ++
.../query/h2/opt/GridLuceneLockFactory.java | 64 +
.../query/h2/opt/GridLuceneOutputStream.java | 230 ++
.../query/h2/opt/GridSearchRowPointer.java | 20 +
.../kernal/processors/query/h2/package.html | 15 +
.../h2/GridH2IndexingSpaceConfiguration.java | 156 --
.../grid/spi/indexing/h2/GridH2IndexingSpi.java | 2398 ------------------
.../spi/indexing/h2/GridH2IndexingSpiMBean.java | 222 --
.../indexing/h2/GridH2ResultSetIterator.java | 122 -
.../h2/opt/GridH2AbstractKeyValueRow.java | 446 ----
.../grid/spi/indexing/h2/opt/GridH2Cursor.java | 62 -
.../spi/indexing/h2/opt/GridH2IndexBase.java | 204 --
.../h2/opt/GridH2KeyValueRowOffheap.java | 346 ---
.../h2/opt/GridH2KeyValueRowOnheap.java | 46 -
.../grid/spi/indexing/h2/opt/GridH2Row.java | 40 -
.../indexing/h2/opt/GridH2RowDescriptor.java | 103 -
.../spi/indexing/h2/opt/GridH2SpatialIndex.java | 318 ---
.../grid/spi/indexing/h2/opt/GridH2Table.java | 893 -------
.../spi/indexing/h2/opt/GridH2TreeIndex.java | 480 ----
.../grid/spi/indexing/h2/opt/GridH2Utils.java | 125 -
.../indexing/h2/opt/GridLuceneDirectory.java | 189 --
.../spi/indexing/h2/opt/GridLuceneFile.java | 186 --
.../spi/indexing/h2/opt/GridLuceneIndex.java | 391 ---
.../indexing/h2/opt/GridLuceneInputStream.java | 220 --
.../indexing/h2/opt/GridLuceneLockFactory.java | 64 -
.../indexing/h2/opt/GridLuceneOutputStream.java | 230 --
.../indexing/h2/opt/GridSearchRowPointer.java | 20 -
.../gridgain/grid/spi/indexing/h2/package.html | 15 -
.../GridCacheAbstractFieldsQuerySelfTest.java | 78 +-
.../cache/GridCacheAbstractQuerySelfTest.java | 27 +-
.../cache/GridCacheCrossCacheQuerySelfTest.java | 9 +-
.../cache/GridCacheOffHeapAndSwapSelfTest.java | 28 +-
.../cache/GridCacheQueryLoadSelfTest.java | 6 +-
.../cache/GridCacheQueryMetricsSelfTest.java | 17 +-
.../GridCacheQueryMultiThreadedSelfTest.java | 57 +-
.../GridCacheQueryUserResourceSelfTest.java | 4 +-
...idCacheReduceQueryMultithreadedSelfTest.java | 13 +-
.../GridCacheSqlQueryMultiThreadedSelfTest.java | 9 +-
.../processors/cache/GridCacheSwapSelfTest.java | 6 +-
.../cache/GridIndexingWithNoopSwapSelfTest.java | 21 +-
...GridCachePartitionedFieldsQuerySelfTest.java | 2 +-
...idCachePartitionedHitsAndMissesSelfTest.java | 20 +-
.../near/GridCacheQueryNodeRestartSelfTest.java | 17 +-
.../GridCacheReplicatedFieldsQuerySelfTest.java | 8 +-
.../GridCacheReplicatedQuerySelfTest.java | 16 +-
.../query/h2/GridH2IndexRebuildTest.java | 241 ++
.../query/h2/GridH2IndexingGeoSelfTest.java | 240 ++
.../query/h2/GridH2IndexingInMemSelfTest.java | 17 +
.../query/h2/GridH2IndexingOffheapSelfTest.java | 36 +
.../h2/GridIndexingSpiAbstractSelfTest.java | 553 ++++
.../query/h2/opt/GridH2TableSelfTest.java | 613 +++++
.../GridIndexingSpiAbstractSelfTest.java | 594 -----
.../spi/indexing/h2/GridH2IndexRebuildTest.java | 236 --
.../h2/GridH2IndexingSpiGeoSelfTest.java | 240 --
.../h2/GridH2IndexingSpiInMemSelfTest.java | 21 -
...GridH2IndexingSpiInMemStartStopSelfTest.java | 21 -
.../h2/GridH2IndexingSpiOffheapSelfTest.java | 40 -
...idH2IndexingSpiOffheapStartStopSelfTest.java | 40 -
.../indexing/h2/opt/GridH2TableSelfTest.java | 613 -----
.../h2/opt/GridLuceneIndexLoadTest.java | 162 --
.../h2indexing/GridH2IndexingSpiLoadTest.java | 288 ---
.../bamboo/GridH2IndexingSpiTestSuite.java | 12 +-
136 files changed, 11394 insertions(+), 12750 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/examples/src/main/java/org/gridgain/examples/misc/client/memcache/MemcacheRestExampleNodeStartup.java
----------------------------------------------------------------------
diff --git a/examples/src/main/java/org/gridgain/examples/misc/client/memcache/MemcacheRestExampleNodeStartup.java b/examples/src/main/java/org/gridgain/examples/misc/client/memcache/MemcacheRestExampleNodeStartup.java
index dc5d4a2..616567a 100644
--- a/examples/src/main/java/org/gridgain/examples/misc/client/memcache/MemcacheRestExampleNodeStartup.java
+++ b/examples/src/main/java/org/gridgain/examples/misc/client/memcache/MemcacheRestExampleNodeStartup.java
@@ -16,7 +16,7 @@ import org.gridgain.grid.*;
import org.gridgain.grid.cache.*;
import org.apache.ignite.spi.discovery.tcp.*;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
-import org.gridgain.grid.spi.indexing.h2.*;
+import org.gridgain.grid.cache.query.*;
import java.util.*;
@@ -61,13 +61,6 @@ public class MemcacheRestExampleNodeStartup {
cfg.setMarshaller(marsh);
- GridH2IndexingSpi indexSpi = new GridH2IndexingSpi();
-
- indexSpi.setDefaultIndexPrimitiveKey(true);
- indexSpi.setDefaultIndexFixedTyping(false);
-
- cfg.setIndexingSpi(indexSpi);
-
GridCacheConfiguration cacheCfg = new GridCacheConfiguration();
cacheCfg.setAtomicityMode(TRANSACTIONAL);
@@ -75,6 +68,13 @@ public class MemcacheRestExampleNodeStartup {
cacheCfg.setPreloadMode(SYNC);
cacheCfg.setAtomicityMode(TRANSACTIONAL);
+ GridCacheQueryConfiguration qryCfg = new GridCacheQueryConfiguration();
+
+ qryCfg.setIndexPrimitiveKey(true);
+ qryCfg.setIndexFixedTyping(false);
+
+ cacheCfg.setQueryConfiguration(qryCfg);
+
cfg.setCacheConfiguration(cacheCfg);
TcpDiscoverySpi discoSpi = new TcpDiscoverySpi();
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/clients/src/test/java/org/gridgain/jdbc/GridJdbcLocalCachesSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/gridgain/jdbc/GridJdbcLocalCachesSelfTest.java b/modules/clients/src/test/java/org/gridgain/jdbc/GridJdbcLocalCachesSelfTest.java
index 2b217ef..8287bff 100644
--- a/modules/clients/src/test/java/org/gridgain/jdbc/GridJdbcLocalCachesSelfTest.java
+++ b/modules/clients/src/test/java/org/gridgain/jdbc/GridJdbcLocalCachesSelfTest.java
@@ -14,7 +14,7 @@ import org.gridgain.grid.cache.*;
import org.apache.ignite.spi.discovery.tcp.*;
import org.apache.ignite.spi.discovery.tcp.ipfinder.*;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
-import org.gridgain.grid.spi.indexing.h2.*;
+import org.gridgain.grid.cache.query.*;
import org.gridgain.testframework.junits.common.*;
import java.sql.*;
@@ -47,13 +47,13 @@ public class GridJdbcLocalCachesSelfTest extends GridCommonAbstractTest {
cache.setCacheMode(LOCAL);
cache.setWriteSynchronizationMode(FULL_SYNC);
- cfg.setCacheConfiguration(cache);
+ GridCacheQueryConfiguration qryCfg = new GridCacheQueryConfiguration();
- GridH2IndexingSpi idx = new GridH2IndexingSpi();
+ qryCfg.setIndexPrimitiveKey(true);
- idx.setDefaultIndexPrimitiveKey(true);
+ cache.setQueryConfiguration(qryCfg);
- cfg.setIndexingSpi(idx);
+ cfg.setCacheConfiguration(cache);
TcpDiscoverySpi disco = new TcpDiscoverySpi();
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/configuration/GridQueryConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/GridQueryConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/GridQueryConfiguration.java
new file mode 100644
index 0000000..4e3b57a
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/GridQueryConfiguration.java
@@ -0,0 +1,194 @@
+/* @java.file.header */
+
+/* _________ _____ __________________ _____
+ * __ ____/___________(_)______ /__ ____/______ ____(_)_______
+ * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
+ * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
+ * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
+ */
+
+package org.apache.ignite.configuration;
+
+import org.gridgain.grid.cache.query.*;
+import org.gridgain.grid.util.typedef.internal.*;
+import org.jetbrains.annotations.*;
+
+/**
+ * Configuration for embedded indexing facilities.
+ */
+public class GridQueryConfiguration {
+ /** Default query execution time interpreted as long query (3 seconds). */
+ public static final long DFLT_LONG_QRY_EXEC_TIMEOUT = 3000;
+
+ /** Default value for {@link #setUseOptimizedSerializer(boolean)} flag. */
+ public static final boolean DFLT_USE_OPTIMIZED_SERIALIZER = true;
+
+ /** */
+ private Class<?>[] idxCustomFuncClss;
+
+ /** */
+ private String[] searchPath;
+
+ /** */
+ private String initScriptPath;
+
+ /** */
+ private long maxOffHeapMemory = -1;
+
+ /** */
+ private long longQryExecTimeout = DFLT_LONG_QRY_EXEC_TIMEOUT;
+
+ /** */
+ private boolean longQryExplain;
+
+ /** */
+ private boolean useOptimizedSerializer = DFLT_USE_OPTIMIZED_SERIALIZER;
+
+ /**
+ * Sets maximum amount of memory available to off-heap storage. Possible values are
+ * <ul>
+ * <li>{@code -1} - Means that off-heap storage is disabled.</li>
+ * <li>
+ * {@code 0} - GridGain will not limit off-heap storage (it's up to user to properly
+ * add and remove entries from cache to ensure that off-heap storage does not grow
+ * indefinitely.
+ * </li>
+ * <li>Any positive value specifies the limit of off-heap storage in bytes.</li>
+ * </ul>
+ * Default value is {@code -1}, which means that off-heap storage is disabled by default.
+ * <p>
+ * Use off-heap storage to load gigabytes of data in memory without slowing down
+ * Garbage Collection. Essentially in this case you should allocate very small amount
+ * of memory to JVM and GridGain will cache most of the data in off-heap space
+ * without affecting JVM performance at all.
+ *
+ * @param maxOffHeapMemory Maximum memory in bytes available to off-heap memory space.
+ */
+ public void setMaxOffHeapMemory(long maxOffHeapMemory) {
+ this.maxOffHeapMemory = maxOffHeapMemory;
+ }
+
+ /** {@inheritDoc} */
+ public long getMaxOffHeapMemory() {
+ return maxOffHeapMemory;
+ }
+
+ /**
+ * Specifies max allowed size of cache for deserialized offheap rows to avoid deserialization costs for most
+ * frequently used ones. In general performance is better with greater cache size. Must be more than 128 items.
+ *
+ * @param size Cache size in items.
+ */
+ public void setMaxOffheapRowsCacheSize(int size) {
+ A.ensure(size >= 128, "Offheap rows cache size must be not less than 128.");
+
+// rowCache = new CacheLongKeyLIRS<>(size, 1, 128, 256); TODO
+ }
+
+ /**
+ * Sets the optional search path consisting of space names to search SQL schema objects. Useful for cross cache
+ * queries to avoid writing fully qualified table names.
+ *
+ * @param searchPath Search path.
+ */
+ public void setSearchPath(String... searchPath) {
+ this.searchPath = searchPath;
+ }
+
+ /** {@inheritDoc} */
+ @Nullable public String[] getSearchPath() {
+ return searchPath;
+ }
+
+ /** {@inheritDoc} */
+ @Nullable public String getInitialScriptPath() {
+ return initScriptPath;
+ }
+
+ /**
+ * Sets script path to be ran against H2 database after opening.
+ * The script must be UTF-8 encoded file.
+ *
+ * @param initScriptPath Script path.
+ */
+ public void setInitialScriptPath(String initScriptPath) {
+ this.initScriptPath = initScriptPath;
+ }
+
+ /**
+ * Sets classes with methods annotated by {@link GridCacheQuerySqlFunction}
+ * to be used as user-defined functions from SQL queries.
+ *
+ * @param idxCustomFuncClss List of classes.
+ */
+ public void setIndexCustomFunctionClasses(Class<?>... idxCustomFuncClss) {
+ this.idxCustomFuncClss = idxCustomFuncClss;
+ }
+
+ /** {@inheritDoc} */
+ @Nullable public Class<?>[] getIndexCustomFunctionClasses() {
+ return idxCustomFuncClss;
+ }
+
+ /** {@inheritDoc} */
+ public long getLongQueryExecutionTimeout() {
+ return longQryExecTimeout;
+ }
+
+ /**
+ * Set query execution time threshold. If queries exceed this threshold,
+ * then a warning will be printed out. If {@link #setLongQueryExplain(boolean)} is
+ * set to {@code true}, then execution plan will be printed out as well.
+ * <p>
+ * If not provided, default value is defined by {@link #DFLT_LONG_QRY_EXEC_TIMEOUT}.
+ *
+ * @param longQryExecTimeout Long query execution timeout.
+ * @see #setLongQueryExplain(boolean)
+ */
+ public void setLongQueryExecutionTimeout(long longQryExecTimeout) {
+ this.longQryExecTimeout = longQryExecTimeout;
+ }
+
+ /** {@inheritDoc} */
+ public boolean isLongQueryExplain() {
+ return longQryExplain;
+ }
+
+ /**
+ * If {@code true}, SPI will print SQL execution plan for long queries (explain SQL query).
+ * The time threshold of long queries is controlled via {@link #setLongQueryExecutionTimeout(long)}
+ * parameter.
+ * <p>
+ * If not provided, default value is {@code false}.
+ *
+ * @param longQryExplain Flag marking SPI should print SQL execution plan for long queries (explain SQL query).
+ * @see #setLongQueryExecutionTimeout(long)
+ */
+ public void setLongQueryExplain(boolean longQryExplain) {
+ this.longQryExplain = longQryExplain;
+ }
+
+ /**
+ * The flag indicating that serializer for H2 database will be set to GridGain's marshaller.
+ * This setting usually makes sense for offheap indexing only.
+ * <p>
+ * Default is {@link #DFLT_USE_OPTIMIZED_SERIALIZER}.
+ *
+ * @param useOptimizedSerializer Flag value.
+ */
+ public void setUseOptimizedSerializer(boolean useOptimizedSerializer) {
+ this.useOptimizedSerializer = useOptimizedSerializer;
+ }
+
+ /**
+ * The flag indicating that serializer for H2 database will be set to GridGain's marshaller.
+ * This setting usually makes sense for offheap indexing only.
+ * <p>
+ * Default is {@link #DFLT_USE_OPTIMIZED_SERIALIZER}.
+ *
+ * @return Flag value.
+ */
+ public boolean isUseOptimizedSerializer() {
+ return useOptimizedSerializer;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
index 92bcdab..b955549 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/IgniteConfiguration.java
@@ -370,7 +370,7 @@ public class IgniteConfiguration {
private SwapSpaceSpi swapSpaceSpi;
/** Indexing SPI. */
- private IndexingSpi[] indexingSpi;
+ private GridIndexingSpi indexingSpi;
/** Address resolver. */
private IgniteAddressResolver addrRslvr;
@@ -517,6 +517,9 @@ public class IgniteConfiguration {
/** Warmup closure. Will be invoked before actual grid start. */
private IgniteInClosure<IgniteConfiguration> warmupClos;
+ /** */
+ private GridQueryConfiguration qryCfg;
+
/**
* Creates valid grid configuration with all default values.
*/
@@ -599,6 +602,7 @@ public class IgniteConfiguration {
p2pSvcShutdown = cfg.getPeerClassLoadingExecutorServiceShutdown();
pluginCfgs = cfg.getPluginConfigurations();
portableCfg = cfg.getPortableConfiguration();
+ qryCfg = cfg.getQueryConfiguration();
restAccessibleFolders = cfg.getRestAccessibleFolders();
restEnabled = cfg.isRestEnabled();
restIdleTimeout = cfg.getRestIdleTimeout();
@@ -2147,12 +2151,12 @@ public class IgniteConfiguration {
}
/**
- * Sets fully configured instances of {@link org.apache.ignite.spi.indexing.IndexingSpi}.
+ * Sets fully configured instances of {@link org.apache.ignite.spi.indexing.GridIndexingSpi}.
*
- * @param indexingSpi Fully configured instances of {@link org.apache.ignite.spi.indexing.IndexingSpi}.
+ * @param indexingSpi Fully configured instances of {@link org.apache.ignite.spi.indexing.GridIndexingSpi}.
* @see IgniteConfiguration#getIndexingSpi()
*/
- public void setIndexingSpi(IndexingSpi... indexingSpi) {
+ public void setIndexingSpi(GridIndexingSpi indexingSpi) {
this.indexingSpi = indexingSpi;
}
@@ -2165,7 +2169,7 @@ public class IgniteConfiguration {
*
* @return Indexing SPI implementation or <tt>null</tt> to use default implementation.
*/
- public IndexingSpi[] getIndexingSpi() {
+ public GridIndexingSpi getIndexingSpi() {
return indexingSpi;
}
@@ -3157,6 +3161,20 @@ public class IgniteConfiguration {
this.pluginCfgs = pluginCfgs;
}
+ /**
+ * @return Query configuration.
+ */
+ public GridQueryConfiguration getQueryConfiguration() {
+ return qryCfg;
+ }
+
+ /**
+ * @param qryCfg Query configuration.
+ */
+ public void setQueryConfiguration(GridQueryConfiguration qryCfg) {
+ this.qryCfg = qryCfg;
+ }
+
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(IgniteConfiguration.class, this);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/events/IgniteCacheQueryReadEvent.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/events/IgniteCacheQueryReadEvent.java b/modules/core/src/main/java/org/apache/ignite/events/IgniteCacheQueryReadEvent.java
index e53bb00..cd10d99 100644
--- a/modules/core/src/main/java/org/apache/ignite/events/IgniteCacheQueryReadEvent.java
+++ b/modules/core/src/main/java/org/apache/ignite/events/IgniteCacheQueryReadEvent.java
@@ -101,7 +101,7 @@ public class IgniteCacheQueryReadEvent<K, V> extends IgniteEventAdapter {
/** Result row. */
@GridToStringInclude
- private final List<?> row;
+ private final Object row;
/**
* @param node Node where event was fired.
@@ -133,7 +133,7 @@ public class IgniteCacheQueryReadEvent<K, V> extends IgniteEventAdapter {
@Nullable K key,
@Nullable V val,
@Nullable V oldVal,
- @Nullable List<?> row) {
+ @Nullable Object row) {
super(node, msg, type);
assert qryType != null;
@@ -276,7 +276,7 @@ public class IgniteCacheQueryReadEvent<K, V> extends IgniteEventAdapter {
*
* @return Result row.
*/
- @Nullable public List<?> row() {
+ @Nullable public Object row() {
return row;
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/GridIndexingQueryFilter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/GridIndexingQueryFilter.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/GridIndexingQueryFilter.java
new file mode 100644
index 0000000..f91f414
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/spi/indexing/GridIndexingQueryFilter.java
@@ -0,0 +1,26 @@
+/* @java.file.header */
+
+/* _________ _____ __________________ _____
+ * __ ____/___________(_)______ /__ ____/______ ____(_)_______
+ * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
+ * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
+ * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
+ */
+
+package org.apache.ignite.spi.indexing;
+
+import org.apache.ignite.lang.*;
+import org.jetbrains.annotations.*;
+
+/**
+ * Cache entry filter.
+ */
+public interface GridIndexingQueryFilter {
+ /**
+ * Creates optional predicate for space.
+ *
+ * @param spaceName Space name.
+ * @return Predicate or {@code null} if no filtering is needed.
+ */
+ @Nullable public <K, V> IgniteBiPredicate<K, V> forSpace(String spaceName);
+}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/GridIndexingSpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/GridIndexingSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/GridIndexingSpi.java
new file mode 100644
index 0000000..71cced8
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/spi/indexing/GridIndexingSpi.java
@@ -0,0 +1,104 @@
+/* @java.file.header */
+
+/* _________ _____ __________________ _____
+ * __ ____/___________(_)______ /__ ____/______ ____(_)_______
+ * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
+ * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
+ * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
+ */
+
+package org.apache.ignite.spi.indexing;
+
+import org.apache.ignite.spi.*;
+import org.jetbrains.annotations.*;
+
+import java.util.*;
+
+/**
+ * Indexing SPI allows user to index cache content. Using indexing SPI user can index data in cache and run
+ * Usually cache name will be used as space name, so multiple caches can write to single indexing SPI instance.
+ * <p>
+ * <b>NOTE:</b> this SPI (i.e. methods in this interface) should never be used directly. SPIs provide
+ * internal view on the subsystem and is used internally by GridGain kernal. In rare use cases when
+ * access to a specific implementation of this SPI is required - an instance of this SPI can be obtained
+ * via {@link org.apache.ignite.Ignite#configuration()} method to check its configuration properties or call other non-SPI
+ * methods. Note again that calling methods from this interface on the obtained instance can lead
+ * to undefined behavior and explicitly not supported.
+ *
+ * * Here is a Java example on how to configure grid with {@code GridH2IndexingSpi}.
+ * <pre name="code" class="java">
+ * GridIndexingSpi spi = new MyIndexingSpi();
+ *
+ * GridConfiguration cfg = new GridConfiguration();
+ *
+ * // Overrides default indexing SPI.
+ * cfg.setIndexingSpi(spi);
+ *
+ * // Starts grid.
+ * G.start(cfg);
+ * </pre>
+ * Here is an example of how to configure {@code GridH2IndexingSpi} from Spring XML configuration file.
+ * <pre name="code" class="xml">
+ * <property name="indexingSpi">
+ * <bean class="com.example.MyIndexingSpi">
+ * </bean>
+ * </property>
+ * </pre>
+ * <p>
+ * <img src="http://www.gridgain.com/images/spring-small.png">
+ * <br>
+ * For information about Spring framework visit <a href="http://www.springframework.org/">www.springframework.org</a>
+ */
+public interface GridIndexingSpi extends IgniteSpi {
+ /**
+ * Executes query.
+ *
+ * @param spaceName Space name.
+ * @param params Query parameters.
+ * @param filters System filters.
+ * @return Query result.
+ * @throws IgniteSpiException If failed.
+ */
+ public Iterator<?> query(@Nullable String spaceName, Collection<Object> params,
+ @Nullable GridIndexingQueryFilter filters) throws IgniteSpiException;
+
+ /**
+ * Updates index. Note that key is unique for space, so if space contains multiple indexes
+ * the key should be removed from indexes other than one being updated.
+ *
+ * @param spaceName Space name.
+ * @param key Key.
+ * @param val Value.
+ * @param expirationTime Expiration time or 0 if never expires.
+ * @throws IgniteSpiException If failed.
+ */
+ public void store(@Nullable String spaceName, Object key, Object val, long expirationTime) throws IgniteSpiException;
+
+ /**
+ * Removes index entry by key.
+ *
+ * @param spaceName Space name.
+ * @param key Key.
+ * @throws IgniteSpiException If failed.
+ */
+ public void remove(@Nullable String spaceName, Object key) throws IgniteSpiException;
+
+ /**
+ * Will be called when entry with given key is swapped.
+ *
+ * @param spaceName Space name.
+ * @param key Key.
+ * @throws IgniteSpiException If failed.
+ */
+ public void onSwap(@Nullable String spaceName, Object key) throws IgniteSpiException;
+
+ /**
+ * Will be called when entry with given key is unswapped.
+ *
+ * @param spaceName Space name.
+ * @param key Key.
+ * @param val Value.
+ * @throws IgniteSpiException If failed.
+ */
+ public void onUnswap(@Nullable String spaceName, Object key, Object val) throws IgniteSpiException;
+}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/GridNoopIndexingSpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/GridNoopIndexingSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/GridNoopIndexingSpi.java
new file mode 100644
index 0000000..7883625
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/spi/indexing/GridNoopIndexingSpi.java
@@ -0,0 +1,58 @@
+/* @java.file.header */
+
+/* _________ _____ __________________ _____
+ * __ ____/___________(_)______ /__ ____/______ ____(_)_______
+ * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
+ * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
+ * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
+ */
+
+package org.apache.ignite.spi.indexing;
+
+import org.apache.ignite.spi.*;
+import org.jetbrains.annotations.*;
+
+import java.util.*;
+
+/**
+ * Default implementation of {@link GridIndexingSpi} which does not index cache.
+ */
+@IgniteSpiNoop
+public class GridNoopIndexingSpi extends IgniteSpiAdapter implements GridIndexingSpi {
+ /** {@inheritDoc} */
+ @Override public Iterator<?> query(@Nullable String spaceName, Collection<Object> params,
+ @Nullable GridIndexingQueryFilter filters) throws IgniteSpiException {
+ throw new IgniteSpiException("You have to configure custom GridIndexingSpi implementation.");
+ }
+
+ /** {@inheritDoc} */
+ @Override public void store(@Nullable String spaceName, Object key, Object val, long expirationTime)
+ throws IgniteSpiException {
+ assert false;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void remove(@Nullable String spaceName, Object key) throws IgniteSpiException {
+ assert false;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void onSwap(@Nullable String spaceName, Object key) throws IgniteSpiException {
+ assert false;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void onUnswap(@Nullable String spaceName, Object key, Object val) throws IgniteSpiException {
+ assert false;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void spiStart(@Nullable String gridName) throws IgniteSpiException {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public void spiStop() throws IgniteSpiException {
+ // No-op.
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexDescriptor.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexDescriptor.java
deleted file mode 100644
index ada2cc1..0000000
--- a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexDescriptor.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/* @java.file.header */
-
-/* _________ _____ __________________ _____
- * __ ____/___________(_)______ /__ ____/______ ____(_)_______
- * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
- * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
- * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
- */
-
-package org.apache.ignite.spi.indexing;
-
-import java.util.*;
-
-/**
- * Describes an index to be created for a certain type. It contains all necessary
- * information about fields, order, uniqueness, and specified
- * whether this is SQL or Text index.
- * See also {@link IndexingTypeDescriptor#indexes()}.
- */
-public interface IndexDescriptor {
- /**
- * Gets all fields to be indexed.
- *
- * @return Fields to be indexed.
- */
- public Collection<String> fields();
-
- /**
- * Specifies order of the index for each indexed field.
- *
- * @param field Field name.
- * @return {@code True} if given field should be indexed in descending order.
- */
- public boolean descending(String field);
-
- /**
- * Gets index type.
- *
- * @return Type.
- */
- public IndexType type();
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexType.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexType.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexType.java
deleted file mode 100644
index dcab0a7..0000000
--- a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexType.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/* @java.file.header */
-
-/* _________ _____ __________________ _____
- * __ ____/___________(_)______ /__ ____/______ ____(_)_______
- * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
- * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
- * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
- */
-
-package org.apache.ignite.spi.indexing;
-
-/**
- * Index types.
- */
-public enum IndexType {
- /** Sorted SQL index. */
- SORTED,
-
- /** Spatial SQL index. */
- GEO_SPATIAL,
-
- /** Fulltext index. */
- FULLTEXT
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingEntity.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingEntity.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingEntity.java
deleted file mode 100644
index 0208b75..0000000
--- a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingEntity.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/* @java.file.header */
-
-/* _________ _____ __________________ _____
- * __ ____/___________(_)______ /__ ____/______ ____(_)_______
- * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
- * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
- * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
- */
-
-package org.apache.ignite.spi.indexing;
-
-import org.apache.ignite.spi.*;
-import org.jetbrains.annotations.*;
-
-import java.util.*;
-
-/**
- * Wrapper around indexed key or value which also may contain the value in
- * unmarshalled form. It exists to avoid unnecessary unmarshalling whenever
- * it is not needed.
- * See also {@link IndexingSpi#queryFields(String, String, Collection, IndexingQueryFilter[])}.
- */
-public interface IndexingEntity<T> {
- /**
- * Gets indexed value. This method may return {@code null} only
- * if actual value is {@code null}. Otherwise, it will unmarshal
- * the {@link #bytes()} and return the actual value.
- *
- * @return Indexed value.
- * @throws org.apache.ignite.spi.IgniteSpiException If value de-serialization failed.
- */
- @Nullable public T value() throws IgniteSpiException;
-
- /**
- * Optional bytes for marshaled indexed value. Certain SPI implementations
- * may keep objects in unmarshalled form and therefore will not provide
- * marshaled bytes for them.
- *
- * @return Optional marshaled value.
- */
- @Nullable public byte[] bytes();
-
- /**
- * Flag indicating whether this entity contains unmarshalled value.
- *
- * @return {@code True} if entity contains unmarshalled value, {@code false}
- * otherwise.
- */
- public boolean hasValue();
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingEntityAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingEntityAdapter.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingEntityAdapter.java
deleted file mode 100644
index d0ca976..0000000
--- a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingEntityAdapter.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/* @java.file.header */
-
-/* _________ _____ __________________ _____
- * __ ____/___________(_)______ /__ ____/______ ____(_)_______
- * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
- * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
- * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
- */
-
-package org.apache.ignite.spi.indexing;
-
-import org.gridgain.grid.util.typedef.internal.*;
-import org.gridgain.grid.util.tostring.*;
-import org.jetbrains.annotations.*;
-
-/**
- * Convenience adapter for {@link IndexingEntity}.
- */
-public class IndexingEntityAdapter<T> implements IndexingEntity<T> {
- /** */
- @GridToStringInclude
- private final T val;
-
- /** */
- @GridToStringExclude
- private final byte[] bytes;
-
- /**
- * @param val Value.
- * @param bytes Value marshalled by {@link org.apache.ignite.marshaller.IgniteMarshaller}.
- */
- public IndexingEntityAdapter(T val, @Nullable byte[] bytes) {
- this.val = val;
- this.bytes = bytes;
- }
-
- /** {@inheritDoc} */
- @Override public T value() {
- return val;
- }
-
- /** {@inheritDoc} */
- @Override public byte[] bytes() {
- return bytes;
- }
-
- /** {@inheritDoc} */
- @Override public boolean hasValue() {
- return val != null || (val == null && bytes == null);
- }
-
- /** {@inheritDoc} */
- @Override public String toString() {
- return S.toString(IndexingEntityAdapter.class, this,
- "bytesLength", (bytes == null ? 0 : bytes.length));
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingFieldMetadata.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingFieldMetadata.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingFieldMetadata.java
deleted file mode 100644
index 8b25c84..0000000
--- a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingFieldMetadata.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/* @java.file.header */
-
-/* _________ _____ __________________ _____
- * __ ____/___________(_)______ /__ ____/______ ____(_)_______
- * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
- * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
- * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
- */
-
-package org.apache.ignite.spi.indexing;
-
-import java.io.*;
-
-/**
- * Query field descriptor. This descriptor is used to provide metadata
- * about fields returned in query result.
- */
-public interface IndexingFieldMetadata extends Externalizable {
- /**
- * Gets schema name.
- *
- * @return Schema name.
- */
- public String schemaName();
-
- /**
- * Gets name of type to which this field belongs.
- *
- * @return Gets type name.
- */
- public String typeName();
-
- /**
- * Gets field name.
- *
- * @return Field name.
- */
- public String fieldName();
-
- /**
- * Gets field type name.
- *
- * @return Field type name.
- */
- public String fieldTypeName();
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingFieldsResult.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingFieldsResult.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingFieldsResult.java
deleted file mode 100644
index 62e6ce1..0000000
--- a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingFieldsResult.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/* @java.file.header */
-
-/* _________ _____ __________________ _____
- * __ ____/___________(_)______ /__ ____/______ ____(_)_______
- * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
- * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
- * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
- */
-
-package org.apache.ignite.spi.indexing;
-
-import org.apache.ignite.spi.*;
-
-import java.util.*;
-
-/**
- * Field query result. It is composed of
- * fields metadata and iterator over queried fields.
- * See also {@link IndexingSpi#queryFields(String, String, Collection, IndexingQueryFilter)}.
- */
-public interface IndexingFieldsResult {
- /**
- * Gets metadata for queried fields.
- *
- * @return Meta data for queried fields.
- */
- List<IndexingFieldMetadata> metaData();
-
- /**
- * Gets iterator over queried fields.
- *
- * @return Iterator over queried fields.
- */
- IgniteSpiCloseableIterator<List<IndexingEntity<?>>> iterator();
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingFieldsResultAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingFieldsResultAdapter.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingFieldsResultAdapter.java
deleted file mode 100644
index c583b76..0000000
--- a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingFieldsResultAdapter.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/* @java.file.header */
-
-/* _________ _____ __________________ _____
- * __ ____/___________(_)______ /__ ____/______ ____(_)_______
- * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
- * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
- * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
- */
-
-package org.apache.ignite.spi.indexing;
-
-import org.apache.ignite.spi.*;
-import org.jetbrains.annotations.*;
-
-import java.util.*;
-
-/**
- * Convenience adapter for {@link IndexingFieldsResult}.
- */
-public class IndexingFieldsResultAdapter implements IndexingFieldsResult {
- /** Meta data. */
- private final List<IndexingFieldMetadata> metaData;
-
- /** Result iterator. */
- private final IgniteSpiCloseableIterator<List<IndexingEntity<?>>> it;
-
- /**
- * Creates query field result composed of field metadata and iterator
- * over queried fields.
- *
- * @param metaData Meta data.
- * @param it Result iterator.
- */
- public IndexingFieldsResultAdapter(@Nullable List<IndexingFieldMetadata> metaData,
- IgniteSpiCloseableIterator<List<IndexingEntity<?>>> it) {
- this.metaData = metaData != null ? Collections.unmodifiableList(metaData) : null;
- this.it = it;
- }
-
- /** {@inheritDoc} */
- @Override public List<IndexingFieldMetadata> metaData() {
- return metaData;
- }
-
- /** {@inheritDoc} */
- @Override public IgniteSpiCloseableIterator<List<IndexingEntity<?>>> iterator() {
- return it;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingKeyValueRow.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingKeyValueRow.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingKeyValueRow.java
deleted file mode 100644
index 7b075ed..0000000
--- a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingKeyValueRow.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/* @java.file.header */
-
-/* _________ _____ __________________ _____
- * __ ____/___________(_)______ /__ ____/______ ____(_)_______
- * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
- * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
- * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
- */
-
-package org.apache.ignite.spi.indexing;
-
-import java.util.*;
-
-/**
- * This class represents a single row returned by key-value query. For example, it is returned
- * by query such as {@link IndexingSpi#query(String, String, Collection, IndexingTypeDescriptor, IndexingQueryFilter[])}
- * method. Key-value queries are different from fields query in a way that they
- * return the whole cached value, not its individual fields.
- * See also {@link IndexingSpi#query(String, String, Collection, IndexingTypeDescriptor, IndexingQueryFilter[])}.
- */
-public interface IndexingKeyValueRow<K, V> {
- /**
- * Gets cache key.
- *
- * @return Cache key.
- */
- public IndexingEntity<K> key();
-
- /**
- * Gets cache value.
- *
- * @return Cache value.
- */
- public IndexingEntity<V> value();
-
- /**
- * Gets version of cache value.
- *
- * @return Version of cache value.
- */
- public byte[] version();
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingKeyValueRowAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingKeyValueRowAdapter.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingKeyValueRowAdapter.java
deleted file mode 100644
index f703c51..0000000
--- a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingKeyValueRowAdapter.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/* @java.file.header */
-
-/* _________ _____ __________________ _____
-* __ ____/___________(_)______ /__ ____/______ ____(_)_______
-* _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
-* / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
-* \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
-*/
-
-package org.apache.ignite.spi.indexing;
-
-import org.gridgain.grid.kernal.processors.cache.query.*;
-import org.gridgain.grid.util.typedef.internal.*;
-import org.gridgain.grid.util.tostring.*;
-import org.jetbrains.annotations.*;
-
-/**
- * Convenience adapter for {@link IndexingKeyValueRow}.
- */
-public class IndexingKeyValueRowAdapter<K, V> implements IndexingKeyValueRow<K, V> {
- /** Key. */
- @GridToStringInclude
- private IndexingEntity<K> key;
-
- /** Value. */
- @GridToStringInclude
- private IndexingEntity<V> val;
-
- /** Version. */
- @GridToStringInclude
- private byte[] ver;
-
- /**
- * Constructor.
- *
- * @param key Key.
- * @param val Value.
- */
- public IndexingKeyValueRowAdapter(K key, V val) {
- assert key != null;
- assert val != null;
-
- this.key = new IndexingEntityAdapter<>(key, null);
- this.val = new IndexingEntityAdapter<>(val, null);
- }
-
- /**
- * Constructs query index row.
- *
- * @param key Key.
- * @param val Value.
- * @param ver Version. It is {@code null} in case of {@link GridCacheQueryType#SCAN} query.
- */
- public IndexingKeyValueRowAdapter(IndexingEntity<K> key, @Nullable IndexingEntity<V> val,
- @Nullable byte[] ver) {
- assert key != null;
-
- this.key = key;
- this.val = val;
- this.ver = ver;
- }
-
- /** {@inheritDoc} */
- @Override public IndexingEntity<K> key() {
- return key;
- }
-
- /** {@inheritDoc} */
- @Override public IndexingEntity<V> value() {
- return val;
- }
-
- /** {@inheritDoc} */
- @Override public byte[] version() {
- return ver;
- }
-
- /** {@inheritDoc} */
- @Override public String toString() {
- return S.toString(IndexingKeyValueRowAdapter.class, this);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingMarshaller.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingMarshaller.java
deleted file mode 100644
index e04c6a1..0000000
--- a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingMarshaller.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/* @java.file.header */
-
-/* _________ _____ __________________ _____
- * __ ____/___________(_)______ /__ ____/______ ____(_)_______
- * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
- * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
- * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
- */
-
-package org.apache.ignite.spi.indexing;
-
-import org.apache.ignite.spi.*;
-
-/**
- * Marshaller to be used in indexing SPI. This marshaller automatically
- * takes care of class loading of unmarshalled classes.
- * See also {@link IndexingSpi#registerMarshaller(IndexingMarshaller)}.
- */
-public interface IndexingMarshaller {
- /**
- * Unmarshalls bytes to object.
- *
- * @param bytes Bytes.
- * @param <T> Value type.
- * @return Value.
- * @throws org.apache.ignite.spi.IgniteSpiException If failed.
- */
- public <T> IndexingEntity<T> unmarshal(byte[] bytes) throws IgniteSpiException;
-
- /**
- * Marshals object to bytes.
- *
- * @param entity Entity.
- * @return Bytes.
- * @throws org.apache.ignite.spi.IgniteSpiException If failed.
- */
- public byte[] marshal(IndexingEntity<?> entity) throws IgniteSpiException;
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingQueryFilter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingQueryFilter.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingQueryFilter.java
deleted file mode 100644
index bbdcdf6..0000000
--- a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingQueryFilter.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/* @java.file.header */
-
-/* _________ _____ __________________ _____
- * __ ____/___________(_)______ /__ ____/______ ____(_)_______
- * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
- * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
- * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
- */
-
-package org.apache.ignite.spi.indexing;
-
-import org.apache.ignite.lang.*;
-import org.gridgain.grid.*;
-import org.jetbrains.annotations.*;
-
-/**
- * Space name and key filter.
- */
-public interface IndexingQueryFilter {
- /**
- * Creates optional predicate for space.
- *
- * @param spaceName Space name.
- * @return Predicate or {@code null} if no filtering is needed.
- */
- @Nullable public <K, V> IgniteBiPredicate<K, V> forSpace(String spaceName) throws GridException;
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingSpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingSpi.java
deleted file mode 100644
index 74de3dd..0000000
--- a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingSpi.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/* @java.file.header */
-
-/* _________ _____ __________________ _____
- * __ ____/___________(_)______ /__ ____/______ ____(_)_______
- * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
- * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
- * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
- */
-
-package org.apache.ignite.spi.indexing;
-
-import org.apache.ignite.spi.*;
-import org.gridgain.grid.cache.*;
-import org.gridgain.grid.cache.query.*;
-import org.jetbrains.annotations.*;
-
-import java.util.*;
-
-/**
- * Indexing SPI allows user to index cache content. Using indexing SPI user can index data in cache and run SQL,
- * TEXT or individual field queries against these indexes. Usually indexing SPI is used by caches by name
- * (see {@link GridCacheConfiguration#getIndexingSpiName()}). Logically storage is organized into separate spaces.
- * Usually cache name will be used as space name, so multiple caches can write to single indexing SPI instance.
- * <p>
- * Functionality of this SPI is exposed to {@link GridCacheQueries} interface:
- * <ul>
- * <li>{@link GridCacheQueries#createSqlQuery(Class, String)}</li>
- * <li>{@link GridCacheQueries#createSqlFieldsQuery(String)}</li>
- * <li>{@link GridCacheQueries#createFullTextQuery(Class, String)}</li>
- * </ul>
- * <p>
- * The default indexing SPI implementation is
- * {@gglink org.gridgain.grid.spi.indexing.h2.GridH2IndexingSpi} which uses H2 database engine
- * for data indexing and querying. User can implement his own indexing SPI and use his own data structures
- * and query language instead of SQL. SPI can be configured for grid using {@link org.apache.ignite.configuration.IgniteConfiguration#getIndexingSpi()}.
- * <p>
- * GridGain comes with following built-in indexing SPI implementations:
- * <ul>
- * <li>{@gglink org.gridgain.grid.spi.indexing.h2.GridH2IndexingSpi}</li>
- * </ul>
- * <p>
- * <b>NOTE:</b> this SPI (i.e. methods in this interface) should never be used directly. SPIs provide
- * internal view on the subsystem and is used internally by GridGain kernal. In rare use cases when
- * access to a specific implementation of this SPI is required - an instance of this SPI can be obtained
- * via {@link org.apache.ignite.Ignite#configuration()} method to check its configuration properties or call other non-SPI
- * methods. Note again that calling methods from this interface on the obtained instance can lead
- * to undefined behavior and explicitly not supported.
- */
-public interface IndexingSpi extends IgniteSpi {
- /**
- * Queries individual fields (generally used by JDBC drivers).
- *
- * @param spaceName Space name.
- * @param qry Query.
- * @param params Query parameters.
- * @param filters Space name and key filters.
- * @return Query result.
- * @throws org.apache.ignite.spi.IgniteSpiException If failed.
- */
- public <K, V> IndexingFieldsResult queryFields(@Nullable String spaceName, String qry,
- Collection<Object> params, IndexingQueryFilter filters) throws IgniteSpiException;
-
- /**
- * Executes regular query.
- *
- * @param spaceName Space name.
- * @param qry Query.
- * @param params Query parameters.
- * @param type Query return type.
- * @param filters Space name and key filters.
- * @return Queried rows.
- * @throws org.apache.ignite.spi.IgniteSpiException If failed.
- */
- public <K, V> IgniteSpiCloseableIterator<IndexingKeyValueRow<K, V>> query(@Nullable String spaceName, String qry,
- Collection<Object> params, IndexingTypeDescriptor type, IndexingQueryFilter filters)
- throws IgniteSpiException;
-
- /**
- * Executes text query.
- *
- * @param spaceName Space name.
- * @param qry Text query.
- * @param type Query return type.
- * @param filters Space name and key filter.
- * @return Queried rows.
- * @throws org.apache.ignite.spi.IgniteSpiException If failed.
- */
- public <K, V> IgniteSpiCloseableIterator<IndexingKeyValueRow<K, V>> queryText(@Nullable String spaceName, String qry,
- IndexingTypeDescriptor type, IndexingQueryFilter filters) throws IgniteSpiException;
-
- /**
- * Gets size of index for given type or -1 if it is a unknown type.
- *
- * @param spaceName Space name.
- * @param desc Type descriptor.
- * @return Objects number.
- * @throws org.apache.ignite.spi.IgniteSpiException If failed.
- */
- public long size(@Nullable String spaceName, IndexingTypeDescriptor desc) throws IgniteSpiException;
-
- /**
- * Registers type if it was not known before or updates it otherwise.
- *
- * @param spaceName Space name.
- * @param desc Type descriptor.
- * @throws org.apache.ignite.spi.IgniteSpiException If failed.
- * @return {@code True} if type was registered, {@code false} if for some reason it was rejected.
- */
- public boolean registerType(@Nullable String spaceName, IndexingTypeDescriptor desc) throws IgniteSpiException;
-
- /**
- * Unregisters type and removes all corresponding data.
- *
- * @param spaceName Space name.
- * @param type Type descriptor.
- * @throws org.apache.ignite.spi.IgniteSpiException If failed.
- */
- public void unregisterType(@Nullable String spaceName, IndexingTypeDescriptor type) throws IgniteSpiException;
-
- /**
- * Updates index. Note that key is unique for space, so if space contains multiple indexes
- * the key should be removed from indexes other than one being updated.
- *
- * @param spaceName Space name.
- * @param type Value type.
- * @param key Key.
- * @param val Value.
- * @param ver Version.
- * @param expirationTime Expiration time or 0 if never expires.
- * @throws org.apache.ignite.spi.IgniteSpiException If failed.
- */
- public <K, V> void store(@Nullable String spaceName, IndexingTypeDescriptor type, IndexingEntity<K> key,
- IndexingEntity<V> val, byte[] ver, long expirationTime) throws IgniteSpiException;
-
- /**
- * Removes index entry by key.
- *
- * @param spaceName Space name.
- * @param key Key.
- * @return {@code True} if removed by this operation, {@code false} otherwise.
- * @throws org.apache.ignite.spi.IgniteSpiException If failed.
- */
- public <K> boolean remove(@Nullable String spaceName, IndexingEntity<K> key) throws IgniteSpiException;
-
- /**
- * Will be called when entry with given key is swapped.
- *
- * @param spaceName Space name.
- * @param swapSpaceName Swap space name.
- * @param key Key.
- * @throws org.apache.ignite.spi.IgniteSpiException If failed.
- */
- public <K> void onSwap(@Nullable String spaceName, String swapSpaceName, K key) throws IgniteSpiException;
-
- /**
- * Will be called when entry with given key is unswapped.
- *
- * @param spaceName Space name.
- * @param key Key.
- * @param val Value.
- * @param valBytes Value bytes.
- * @throws org.apache.ignite.spi.IgniteSpiException If failed.
- */
- public <K, V> void onUnswap(@Nullable String spaceName, K key, V val, byte[] valBytes) throws IgniteSpiException;
-
- /**
- * Marshaller to be used by SPI.
- *
- * @param marshaller Marshaller.
- */
- public void registerMarshaller(IndexingMarshaller marshaller);
-
- /**
- * Registers space in this SPI.
- *
- * @param spaceName Space name.
- * @throws org.apache.ignite.spi.IgniteSpiException If failed.
- */
- public void registerSpace(String spaceName) throws IgniteSpiException;
-
- /**
- * Rebuilds all indexes of given type.
- *
- * @param spaceName Space name.
- * @param type Type descriptor.
- */
- public void rebuildIndexes(@Nullable String spaceName, IndexingTypeDescriptor type);
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingTypeDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingTypeDescriptor.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingTypeDescriptor.java
deleted file mode 100644
index 3f96b1c..0000000
--- a/modules/core/src/main/java/org/apache/ignite/spi/indexing/IndexingTypeDescriptor.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/* @java.file.header */
-
-/* _________ _____ __________________ _____
- * __ ____/___________(_)______ /__ ____/______ ____(_)_______
- * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
- * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
- * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
- */
-
-package org.apache.ignite.spi.indexing;
-
-
-import org.apache.ignite.spi.*;
-
-import java.util.*;
-
-/**
- * Value descriptor which allows to extract fields from value object of given type.
- * See also {@link IndexingSpi#registerType(String, IndexingTypeDescriptor)}.
- */
-public interface IndexingTypeDescriptor {
- /**
- * Gets type name which uniquely identifies this type.
- *
- * @return Type name which uniquely identifies this type.
- */
- public String name();
-
- /**
- * Gets mapping from values field name to its type.
- *
- * @return Fields that can be indexed, participate in queries and can be queried using
- * {@link IndexingSpi#queryFields(String, String, Collection, IndexingQueryFilter[])}
- * method.
- */
- public Map<String, Class<?>> valueFields();
-
- /**
- * Gets mapping from keys field name to its type.
- *
- * @return Fields that can be indexed, participate in queries and can be queried using
- * {@link IndexingSpi#queryFields(String, String, Collection, IndexingQueryFilter[])}
- * method.
- */
- public Map<String, Class<?>> keyFields();
-
- /**
- * Gets field value for given object.
- *
- * @param obj Object to get field value from.
- * @param field Field name.
- * @return Value for given field.
- * @throws org.apache.ignite.spi.IgniteSpiException If failed.
- */
- public <T> T value(Object obj, String field) throws IgniteSpiException;
-
- /**
- * Gets indexes for this type.
- *
- * @return Indexes for this type.
- */
- public Map<String, IndexDescriptor> indexes();
-
- /**
- * Gets value class.
- *
- * @return Value class.
- */
- public Class<?> valueClass();
-
- /**
- * Gets key class.
- *
- * @return Key class.
- */
- public Class<?> keyClass();
-
- /**
- * Returns {@code true} if string representation of value should be indexed as text.
- *
- * @return If string representation of value should be full-text indexed.
- */
- public boolean valueTextIndex();
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/apache/ignite/spi/indexing/NoopIndexingSpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/indexing/NoopIndexingSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/indexing/NoopIndexingSpi.java
deleted file mode 100644
index 9fba743..0000000
--- a/modules/core/src/main/java/org/apache/ignite/spi/indexing/NoopIndexingSpi.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/* @java.file.header */
-
-/* _________ _____ __________________ _____
- * __ ____/___________(_)______ /__ ____/______ ____(_)_______
- * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \
- * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / /
- * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/
- */
-
-package org.apache.ignite.spi.indexing;
-
-import org.apache.ignite.*;
-import org.apache.ignite.resources.*;
-import org.apache.ignite.spi.*;
-import org.jetbrains.annotations.*;
-
-import java.util.*;
-
-/**
- * No-op implementation of {@link IndexingSpi}, throws exception on query attempt.
- */
-@IgniteSpiNoop
-public class NoopIndexingSpi extends IgniteSpiAdapter implements IndexingSpi {
- /** */
- @IgniteLoggerResource
- private IgniteLogger log;
-
- /** {@inheritDoc} */
- @Override public <K, V> IndexingFieldsResult queryFields(@Nullable String spaceName, String qry,
- Collection<Object> params, IndexingQueryFilter filters) throws IgniteSpiException {
- throw spiException();
- }
-
- /** {@inheritDoc} */
- @Override public <K, V> IgniteSpiCloseableIterator<IndexingKeyValueRow<K, V>> query(@Nullable String spaceName,
- String qry, Collection<Object> params, IndexingTypeDescriptor type,
- IndexingQueryFilter filters) throws IgniteSpiException {
- throw spiException();
- }
-
- /** {@inheritDoc} */
- @Override public <K, V> IgniteSpiCloseableIterator<IndexingKeyValueRow<K, V>> queryText(@Nullable
- String spaceName, String qry, IndexingTypeDescriptor type, IndexingQueryFilter filters)
- throws IgniteSpiException {
- throw spiException();
- }
-
- /** {@inheritDoc} */
- @Override public long size(@Nullable String spaceName, IndexingTypeDescriptor desc) throws IgniteSpiException {
- throw spiException();
- }
-
- /** {@inheritDoc} */
- @Override public boolean registerType(@Nullable String spaceName, IndexingTypeDescriptor desc)
- throws IgniteSpiException {
- return false;
- }
-
- /** {@inheritDoc} */
- @Override public void unregisterType(@Nullable String spaceName, IndexingTypeDescriptor type)
- throws IgniteSpiException {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public <K, V> void store(@Nullable String spaceName, IndexingTypeDescriptor type,
- IndexingEntity<K> key, IndexingEntity<V> val, byte[] ver, long expirationTime) throws IgniteSpiException {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public <K> boolean remove(@Nullable String spaceName, IndexingEntity<K> key) throws IgniteSpiException {
- return false;
- }
-
- /** {@inheritDoc} */
- @Override public <K> void onSwap(@Nullable String spaceName, String swapSpaceName, K key) throws IgniteSpiException {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public <K, V> void onUnswap(@Nullable String spaceName, K key, V val, byte[] valBytes)
- throws IgniteSpiException {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public void registerMarshaller(IndexingMarshaller marshaller) {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public void registerSpace(String spaceName) throws IgniteSpiException {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public void rebuildIndexes(@Nullable String spaceName, IndexingTypeDescriptor type) {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public void spiStart(@Nullable String gridName) throws IgniteSpiException {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public void spiStop() throws IgniteSpiException {
- // No-op.
- }
-
- /**
- * @return No-op SPI usage exception.
- */
- private IgniteSpiException spiException() {
- return new IgniteSpiException("Current grid configuration does not support queries " +
- "(please configure GridH2IndexingSpi).");
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/gridgain/grid/cache/query/GridCacheQueryConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/cache/query/GridCacheQueryConfiguration.java b/modules/core/src/main/java/org/gridgain/grid/cache/query/GridCacheQueryConfiguration.java
index 625a1ad..ce53d18 100644
--- a/modules/core/src/main/java/org/gridgain/grid/cache/query/GridCacheQueryConfiguration.java
+++ b/modules/core/src/main/java/org/gridgain/grid/cache/query/GridCacheQueryConfiguration.java
@@ -25,6 +25,18 @@ public class GridCacheQueryConfiguration implements Serializable {
/** Query type resolver. */
private GridCacheQueryTypeResolver typeRslvr;
+ /** */
+ private boolean idxPrimitiveKey;
+
+ /** */
+ private boolean idxPrimitiveVal;
+
+ /** */
+ private boolean idxFixedTyping;
+
+ /** */
+ private boolean escapeAll;
+
/**
* Default constructor.
*/
@@ -38,6 +50,10 @@ public class GridCacheQueryConfiguration implements Serializable {
public GridCacheQueryConfiguration(GridCacheQueryConfiguration cfg) {
typeMeta = cfg.getTypeMetadata();
typeRslvr = cfg.getTypeResolver();
+ idxPrimitiveKey = cfg.isIndexPrimitiveKey();
+ idxPrimitiveVal = cfg.isIndexPrimitiveValue();
+ idxFixedTyping = cfg.isIndexFixedTyping();
+ escapeAll = cfg.isEscapeAll();
}
/**
@@ -75,4 +91,105 @@ public class GridCacheQueryConfiguration implements Serializable {
public void setTypeResolver(GridCacheQueryTypeResolver typeRslvr) {
this.typeRslvr = typeRslvr;
}
+
+ /**
+ * Gets flag indicating whether SQL engine should index by key in cases
+ * where key is primitive type
+ *
+ * @return {@code True} if primitive keys should be indexed.
+ */
+ public boolean isIndexPrimitiveKey() {
+ return idxPrimitiveKey;
+ }
+
+ /**
+ * Sets flag indicating whether SQL engine should index by key in cases
+ * where key is primitive type.
+ *
+ * @param idxPrimitiveKey {@code True} if primitive keys should be indexed.
+ */
+ public void setIndexPrimitiveKey(boolean idxPrimitiveKey) {
+ this.idxPrimitiveKey = idxPrimitiveKey;
+ }
+
+ /**
+ * Gets flag indicating whether SQL engine should index by value in cases
+ * where value is primitive type
+ *
+ * @return {@code True} if primitive values should be indexed.
+ */
+ public boolean isIndexPrimitiveValue() {
+ return idxPrimitiveVal;
+ }
+
+ /**
+ * Sets flag indexing whether SQL engine should index by value in cases
+ * where value is primitive type.
+ *
+ * @param idxPrimitiveVal {@code True} if primitive values should be indexed.
+ */
+ public void setIndexPrimitiveValue(boolean idxPrimitiveVal) {
+ this.idxPrimitiveVal = idxPrimitiveVal;
+ }
+
+ /**
+ * This flag essentially controls whether all values of the same type have
+ * identical key type.
+ * <p>
+ * If {@code false}, SQL engine will store all keys in BINARY form to make it possible to store
+ * the same value type with different key types. If {@code true}, key type will be converted
+ * to respective SQL type if it is possible, hence, improving performance of queries.
+ * <p>
+ * Setting this value to {@code false} also means that {@code '_key'} column cannot be indexed and
+ * cannot participate in query where clauses. The behavior of using '_key' column in where
+ * clauses with this flag set to {@code false} is undefined.
+ *
+ * @return {@code True} if SQL engine should try to convert values to their respective SQL
+ * types for better performance.
+ */
+ public boolean isIndexFixedTyping() {
+ return idxFixedTyping;
+ }
+
+ /**
+ * This flag essentially controls whether key type is going to be identical
+ * for all values of the same type.
+ * <p>
+ * If false, SQL engine will store all keys in BINARY form to make it possible to store
+ * the same value type with different key types. If true, key type will be converted
+ * to respective SQL type if it is possible, which may provide significant performance
+ * boost.
+ *
+ * @param idxFixedTyping {@code True} if SQL engine should try to convert values to their respective SQL
+ * types for better performance.
+ */
+ public void setIndexFixedTyping(boolean idxFixedTyping) {
+ this.idxFixedTyping = idxFixedTyping;
+ }
+
+ /**
+ * If {@code true}, then table name and all column names in 'create table' SQL
+ * generated for SQL engine are escaped with double quotes. This flag should be set if table name of
+ * column name is H2 reserved word or is not valid H2 identifier (e.g. contains space or hyphen).
+ * <p>
+ * Note if this flag is set then table and column name in SQL queries also must be escaped with double quotes.
+
+ * @return Flag value.
+ */
+ public boolean isEscapeAll() {
+ return escapeAll;
+ }
+
+ /**
+ * If {@code true}, then table name and all column names in 'create table' SQL
+ * generated for SQL engine are escaped with double quotes. This flag should be set if table name of
+ * column name is H2 reserved word or is not valid H2 identifier (e.g. contains space or hyphen).
+ * <p>
+ * Note if this flag is set then table and column name in SQL queries also must be escaped with double quotes.
+
+ * @param escapeAll Flag value.
+ */
+ public void setEscapeAll(boolean escapeAll) {
+ this.escapeAll = escapeAll;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/gridgain/grid/cache/query/GridCacheQueryType.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/cache/query/GridCacheQueryType.java b/modules/core/src/main/java/org/gridgain/grid/cache/query/GridCacheQueryType.java
index 5d45d87..85d348a 100644
--- a/modules/core/src/main/java/org/gridgain/grid/cache/query/GridCacheQueryType.java
+++ b/modules/core/src/main/java/org/gridgain/grid/cache/query/GridCacheQueryType.java
@@ -32,5 +32,8 @@ public enum GridCacheQueryType {
SCAN,
/** Continuous query. */
- CONTINUOUS
+ CONTINUOUS,
+
+ /** SPI query. */
+ SPI
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/gridgain/grid/kernal/GridComponentType.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/GridComponentType.java b/modules/core/src/main/java/org/gridgain/grid/kernal/GridComponentType.java
index 59ce18f..032c489 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/GridComponentType.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/GridComponentType.java
@@ -46,10 +46,10 @@ public enum GridComponentType {
"gridgain-spring"
),
- /** H2 indexing SPI. */
- H2_INDEXING(
- "org.apache.ignite.spi.indexing.NoopIndexingSpi",
- "org.gridgain.grid.spi.indexing.h2.GridH2IndexingSpi",
+ /** Indexing. */
+ INDEXING(
+ null,
+ "org.gridgain.grid.kernal.processors.query.h2.GridH2Indexing",
"gridgain-indexing"
),
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/gridgain/grid/kernal/GridGainEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/GridGainEx.java b/modules/core/src/main/java/org/gridgain/grid/kernal/GridGainEx.java
index 9d72e65..1b622c5 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/GridGainEx.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/GridGainEx.java
@@ -1382,6 +1382,7 @@ public class GridGainEx {
myCfg.setDotNetConfiguration(cfg.getDotNetConfiguration());
myCfg.setPluginConfigurations(cfg.getPluginConfigurations());
myCfg.setTransactionsConfiguration(new GridTransactionsConfiguration(cfg.getTransactionsConfiguration()));
+ myCfg.setQueryConfiguration(cfg.getQueryConfiguration());
ClientConnectionConfiguration clientCfg = cfg.getClientConnectionConfiguration();
@@ -1474,7 +1475,7 @@ public class GridGainEx {
FailoverSpi[] failSpi = cfg.getFailoverSpi();
LoadBalancingSpi[] loadBalancingSpi = cfg.getLoadBalancingSpi();
SwapSpaceSpi swapspaceSpi = cfg.getSwapSpaceSpi();
- IndexingSpi[] indexingSpi = cfg.getIndexingSpi();
+ GridIndexingSpi indexingSpi = cfg.getIndexingSpi();
execSvc = cfg.getExecutorService();
sysExecSvc = cfg.getSystemExecutorService();
@@ -1722,7 +1723,7 @@ public class GridGainEx {
}
if (indexingSpi == null)
- indexingSpi = new IndexingSpi[] {(IndexingSpi)H2_INDEXING.createOptional()};
+ indexingSpi = new GridNoopIndexingSpi();
myCfg.setCommunicationSpi(commSpi);
myCfg.setDiscoverySpi(discoSpi);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernal.java b/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernal.java
index d913605..2ec852b 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernal.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernal.java
@@ -54,6 +54,7 @@ import org.gridgain.grid.kernal.processors.offheap.*;
import org.gridgain.grid.kernal.processors.plugin.*;
import org.gridgain.grid.kernal.processors.port.*;
import org.gridgain.grid.kernal.processors.portable.*;
+import org.gridgain.grid.kernal.processors.query.*;
import org.gridgain.grid.kernal.processors.resource.*;
import org.gridgain.grid.kernal.processors.rest.*;
import org.gridgain.grid.kernal.processors.segmentation.*;
@@ -724,6 +725,7 @@ public class GridKernal extends ClusterGroupAdapter implements GridEx, IgniteMBe
startProcessor(ctx, createComponent(GridLicenseProcessor.class, ctx), attrs);
startProcessor(ctx, new GridAffinityProcessor(ctx), attrs);
startProcessor(ctx, createComponent(GridSegmentationProcessor.class, ctx), attrs);
+ startProcessor(ctx, new GridQueryProcessor(ctx), attrs);
startProcessor(ctx, new GridCacheProcessor(ctx), attrs);
startProcessor(ctx, new GridTaskSessionProcessor(ctx), attrs);
startProcessor(ctx, new GridJobProcessor(ctx), attrs);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernalContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernalContext.java b/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernalContext.java
index 0cf12e3..7b161a4 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernalContext.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernalContext.java
@@ -43,6 +43,7 @@ import org.gridgain.grid.kernal.processors.offheap.*;
import org.gridgain.grid.kernal.processors.plugin.*;
import org.gridgain.grid.kernal.processors.port.*;
import org.gridgain.grid.kernal.processors.portable.*;
+import org.gridgain.grid.kernal.processors.query.*;
import org.gridgain.grid.kernal.processors.resource.*;
import org.gridgain.grid.kernal.processors.rest.*;
import org.gridgain.grid.kernal.processors.schedule.*;
@@ -329,6 +330,13 @@ public interface GridKernalContext extends GridMetadataAware, Iterable<GridCompo
public GridInteropProcessor interop();
/**
+ * Gets query processor.
+ *
+ * @return Query processor.
+ */
+ public GridQueryProcessor query();
+
+ /**
* @return Plugin processor.
*/
public IgnitePluginProcessor plugins();
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/922a2bab/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernalContextImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernalContextImpl.java b/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernalContextImpl.java
index 4af386f..41e435e 100644
--- a/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernalContextImpl.java
+++ b/modules/core/src/main/java/org/gridgain/grid/kernal/GridKernalContextImpl.java
@@ -45,6 +45,7 @@ import org.gridgain.grid.kernal.processors.offheap.*;
import org.gridgain.grid.kernal.processors.plugin.*;
import org.gridgain.grid.kernal.processors.port.*;
import org.gridgain.grid.kernal.processors.portable.*;
+import org.gridgain.grid.kernal.processors.query.*;
import org.gridgain.grid.kernal.processors.resource.*;
import org.gridgain.grid.kernal.processors.rest.*;
import org.gridgain.grid.kernal.processors.schedule.*;
@@ -141,6 +142,10 @@ public class GridKernalContextImpl extends GridMetadataAwareAdapter implements G
/** */
@GridToStringInclude
+ private GridQueryProcessor qryProc;
+
+ /** */
+ @GridToStringInclude
private GridTaskProcessor taskProc;
/** */
@@ -438,6 +443,8 @@ public class GridKernalContextImpl extends GridMetadataAwareAdapter implements G
interopProc = (GridInteropProcessor)comp;
else if (comp instanceof IgnitePluginProcessor)
pluginProc = (IgnitePluginProcessor)comp;
+ else if (comp instanceof GridQueryProcessor)
+ qryProc = (GridQueryProcessor)comp;
else
assert (comp instanceof GridPluginComponent) : "Unknown manager class: " + comp.getClass();
@@ -690,6 +697,11 @@ public class GridKernalContextImpl extends GridMetadataAwareAdapter implements G
}
/** {@inheritDoc} */
+ @Override public GridQueryProcessor query() {
+ return qryProc;
+ }
+
+ /** {@inheritDoc} */
@Override public IgniteLogger log() {
return config().getGridLogger();
}