ignite-sql-tests - wip

Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/e19aa7ce
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/e19aa7ce
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/e19aa7ce

Branch: refs/heads/ignite-sql-tests
Commit: e19aa7ce004ad0e5e5b02fe7fd5468a691be40ae
Parents: de2b5d3
Author: S.Vladykin <svlady...@gridgain.com>
Authored: Fri Feb 13 18:04:39 2015 +0300
Committer: S.Vladykin <svlady...@gridgain.com>
Committed: Fri Feb 13 18:04:39 2015 +0300

----------------------------------------------------------------------
 .../processors/query/h2/IgniteH2Indexing.java   | 37 +++++---------------
 .../query/h2/opt/GridH2AbstractKeyValueRow.java | 11 +++---
 .../query/h2/opt/GridH2RowDescriptor.java       | 16 ++-------
 .../query/h2/opt/GridLuceneIndex.java           |  8 +----
 .../h2/GridIndexingSpiAbstractSelfTest.java     | 22 +++++++-----
 5 files changed, 30 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e19aa7ce/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 8f98064..faeed4c 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
@@ -78,7 +78,7 @@ import static org.h2.result.SortOrder.*;
  * <p>
  * For each registered {@link GridQueryTypeDescriptor} this SPI will create 
respective SQL table with
  * {@code '_key'} and {@code '_val'} fields for key and value, and fields from
- * {@link GridQueryTypeDescriptor#keyFields()} and {@link 
GridQueryTypeDescriptor#valueFields()}.
+ * {@link GridQueryTypeDescriptor#fields()}.
  * For each table it will create indexes declared in {@link 
GridQueryTypeDescriptor#indexes()}.
  * <h1 class="header">Some important defaults.</h1>
  * <ul>
@@ -952,16 +952,14 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
 
         // Do not register if value is not primitive and
         // there are no indexes or fields defined.
-        if (!type.valueTextIndex() && type.indexes().isEmpty() &&
-            type.keyFields().isEmpty() && type.valueFields().isEmpty())
+        if (!type.valueTextIndex() && type.indexes().isEmpty() && 
type.fields().isEmpty())
             return keyPrimitive && isIndexPrimitiveKey(spaceName) || 
valPrimitive && isIndexPrimitiveValue(spaceName);
 
         Collection<String> names = new HashSet<>();
 
-        names.addAll(type.keyFields().keySet());
-        names.addAll(type.valueFields().keySet());
+        names.addAll(type.fields().keySet());
 
-        if (names.size() < type.keyFields().size() + type.valueFields().size())
+        if (names.size() < type.fields().size())
             throw new IgniteCheckedException("Found duplicated properties with 
the same name [keyType=" +
                 type.keyClass().getName() + ", valueType=" + 
type.valueClass().getName() + "]");
 
@@ -1039,10 +1037,7 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
 
         sql.a(',').a(VAL_FIELD_NAME).a(' ').a(valTypeStr);
 
-        for (Map.Entry<String, Class<?>> e: tbl.type().keyFields().entrySet())
-            sql.a(',').a(escapeName(e.getKey(), escapeAll)).a(' 
').a(dbTypeFromClass(e.getValue()));
-
-        for (Map.Entry<String, Class<?>> e: 
tbl.type().valueFields().entrySet())
+        for (Map.Entry<String, Class<?>> e: tbl.type().fields().entrySet())
             sql.a(',').a(escapeName(e.getKey(), escapeAll)).a(' 
').a(dbTypeFromClass(e.getValue()));
 
         sql.a(')');
@@ -1951,9 +1946,6 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
         private final Schema schema;
 
         /** */
-        private final int keyCols;
-
-        /** */
         private final GridUnsafeGuard guard = offheap == null ? null : new 
GridUnsafeGuard();
 
         /**
@@ -1968,12 +1960,9 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
             this.type = type;
             this.schema = schema;
 
-            keyCols = type.keyFields().size();
-
             Map<String, Class<?>> allFields = new LinkedHashMap<>();
 
-            allFields.putAll(type.keyFields());
-            allFields.putAll(type.valueFields());
+            allFields.putAll(type.fields());
 
             fields = allFields.keySet().toArray(new String[allFields.size()]);
 
@@ -2063,9 +2052,9 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
         }
 
         /** {@inheritDoc} */
-        @Override public Object columnValue(Object obj, int col) {
+        @Override public Object columnValue(Object key, Object val, int col) {
             try {
-                return type.value(obj, fields[col]);
+                return type.value(fields[col], key, val);
             }
             catch (IgniteCheckedException e) {
                 throw DbException.convert(e);
@@ -2073,16 +2062,6 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
         }
 
         /** {@inheritDoc} */
-        @Override public boolean isKeyColumn(int col) {
-            return keyCols > col;
-        }
-
-        /** {@inheritDoc} */
-        @Override public boolean valueToString() {
-            return type.valueTextIndex();
-        }
-
-        /** {@inheritDoc} */
         @Override public GridH2KeyValueRowOffheap createPointer(long ptr) {
             GridH2KeyValueRowOffheap row = rowCache.get(ptr);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e19aa7ce/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2AbstractKeyValueRow.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2AbstractKeyValueRow.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2AbstractKeyValueRow.java
index 698f3c5..ef4c3a8 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2AbstractKeyValueRow.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2AbstractKeyValueRow.java
@@ -271,14 +271,13 @@ public abstract class GridH2AbstractKeyValueRow extends 
GridH2Row {
 
         assert col >= 0;
 
-        Value v = getValue(desc.isKeyColumn(col) ? KEY_COL : VAL_COL);
+        Value key = getValue(KEY_COL);
+        Value val = getValue(VAL_COL);
 
-        if (v == null)
-            return null;
+        assert key != null;
+        assert val != null;
 
-        Object obj = v.getObject();
-
-        Object res = desc.columnValue(obj, col);
+        Object res = desc.columnValue(key.getObject(), val.getObject(), col);
 
         if (res == null)
             return ValueNull.INSTANCE;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e19aa7ce/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 830180c..b79d897 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
@@ -56,11 +56,6 @@ public interface GridH2RowDescriptor extends 
GridOffHeapSmartPointerFactory<Grid
     public int valueType();
 
     /**
-     * @return {@code true} If we need to store {@code toString()} of value.
-     */
-    public boolean valueToString();
-
-    /**
      * @return Total fields count.
      */
     public int fieldsCount();
@@ -76,17 +71,12 @@ public interface GridH2RowDescriptor extends 
GridOffHeapSmartPointerFactory<Grid
     /**
      * Gets column value by column index.
      *
-     * @param obj Object to extract value from.
+     * @param key Key.
+     * @param val Value.
      * @param col Column index.
      * @return  Column value.
      */
-    public Object columnValue(Object obj, int col);
-
-    /**
-     * @param col Column index.
-     * @return {@code True} if column relates to key, false if it relates to 
value.
-     */
-    public boolean isKeyColumn(int col);
+    public Object columnValue(Object key, Object val, int col);
 
     /**
      * @return Unsafe memory.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e19aa7ce/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
index 559f18e..c86b537 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridLuceneIndex.java
@@ -73,9 +73,6 @@ public class GridLuceneIndex implements Closeable {
     private final boolean storeVal;
 
     /** */
-    private final BitSet keyFields = new BitSet();
-
-    /** */
     private final AtomicLong updateCntr = new GridAtomicLong();
 
     /** */
@@ -124,9 +121,6 @@ public class GridLuceneIndex implements Closeable {
             idxdFields = new String[fields.size() + 1];
 
             fields.toArray(idxdFields);
-
-            for (int i = 0, len = fields.size() ; i < len; i++)
-                keyFields.set(i, type.keyFields().containsKey(idxdFields[i]));
         }
         else {
             assert type.valueTextIndex() || type.valueClass() == String.class;
@@ -158,7 +152,7 @@ public class GridLuceneIndex implements Closeable {
         }
 
         for (int i = 0, last = idxdFields.length - 1; i < last; i++) {
-            Object fieldVal = type.value(keyFields.get(i) ? key : val, 
idxdFields[i]);
+            Object fieldVal = type.value(idxdFields[i], key, val);
 
             if (fieldVal != null) {
                 doc.add(new Field(idxdFields[i], fieldVal.toString(), 
Field.Store.YES, Field.Index.ANALYZED));

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e19aa7ce/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexingSpiAbstractSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexingSpiAbstractSelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexingSpiAbstractSelfTest.java
index c1f5ece..97efc94 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexingSpiAbstractSelfTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/GridIndexingSpiAbstractSelfTest.java
@@ -518,21 +518,25 @@ public abstract class GridIndexingSpiAbstractSelfTest 
extends GridCommonAbstract
         }
 
         /** {@inheritDoc} */
-        @Override public Map<String, Class<?>> valueFields() {
+        @Override public Map<String, Class<?>> fields() {
             return valFields;
         }
 
         /** {@inheritDoc} */
-        @Override public Map<String, Class<?>> keyFields() {
-            return Collections.emptyMap();
-        }
-
-        /** {@inheritDoc} */
-        @Override public <T> T value(Object obj, String field) throws 
IgniteSpiException {
-            assert obj != null;
+        @Override public <T> T value(String field, Object key, Object val) 
throws IgniteSpiException {
             assert !F.isEmpty(field);
 
-            return (T)((Map<String, Object>) obj).get(field);
+            Map m = (Map)key;
+
+            if (m.containsKey(field))
+                return (T)m.get(field);
+
+            m = (Map)val;
+
+            if (m.containsKey(field))
+                return (T)m.get(field);
+
+            return null;
         }
 
         /** */

Reply via email to