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; } /** */