Repository: ignite Updated Branches: refs/heads/ignite-sql-opt d8bfa2c12 -> b21c62086
ignite-sql-opt - fixed comparator Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/b21c6208 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b21c6208 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b21c6208 Branch: refs/heads/ignite-sql-opt Commit: b21c620865dca807d15d31c0671baea0aabaaea5 Parents: d8bfa2c Author: S.Vladykin <[email protected]> Authored: Fri Nov 20 15:42:53 2015 +0300 Committer: S.Vladykin <[email protected]> Committed: Fri Nov 20 15:42:53 2015 +0300 ---------------------------------------------------------------------- .../query/h2/opt/GridH2TreeIndex.java | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/b21c6208/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java ---------------------------------------------------------------------- diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java index f324224..1597ce8 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java @@ -22,12 +22,10 @@ import java.util.Arrays; import java.util.Comparator; import java.util.Iterator; import java.util.NavigableMap; -import java.util.concurrent.*; +import java.util.concurrent.ConcurrentNavigableMap; import java.util.concurrent.ConcurrentSkipListMap; import org.apache.ignite.internal.util.GridEmptyIterator; -import org.apache.ignite.internal.util.offheap.unsafe.GridOffHeapSnapTreeMap; import org.apache.ignite.internal.util.offheap.unsafe.GridUnsafeGuard; -import org.apache.ignite.internal.util.snaptree.SnapTreeMap; import org.apache.ignite.internal.util.typedef.internal.SB; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.spi.indexing.IndexingQueryFilter; @@ -81,7 +79,19 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS final GridH2RowDescriptor desc = tbl.rowDescriptor(); - tree = new ConcurrentSkipListMap<>(this); + tree = new ConcurrentSkipListMap<>( + new Comparator<GridSearchRowPointer>() { + @Override public int compare(GridSearchRowPointer o1, GridSearchRowPointer o2) { + if (o1 instanceof ComparableRow) + return ((ComparableRow)o1).compareTo(o2); + + if (o2 instanceof ComparableRow) + return -((ComparableRow)o2).compareTo(o1); + + return compareRows(o1, o2); + } + } + ); // tree = desc == null || desc.memory() == null ? new SnapTreeMap<GridSearchRowPointer, GridH2Row>(this) { // @Override protected void afterNodeUpdate_nl(Node<GridSearchRowPointer, GridH2Row> node, Object val) { // if (val != null) @@ -374,7 +384,7 @@ public class GridH2TreeIndex extends GridH2IndexBase implements Comparator<GridS * Comparable row with bias. Will be used for queries to have correct bounds (in case of multicolumn index * and query on few first columns we will multiple equal entries in tree). */ - private class ComparableRow implements GridSearchRowPointer, Comparable<SearchRow> { + private final class ComparableRow implements GridSearchRowPointer, Comparable<SearchRow> { /** */ private final SearchRow row;
