[ignite] branch master updated: IGNITE-7265

2019-02-01 Thread sergi
This is an automated email from the ASF dual-hosted git repository.

sergi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
 new 9e47ee5  IGNITE-7265
9e47ee5 is described below

commit 9e47ee55f30b16083766d0766bacdf10acce8d3e
Author: Sergi Vladykin 
AuthorDate: Sat Feb 2 10:45:42 2019 +0300

IGNITE-7265
---
 .../processors/database/BPlusTreeSelfTest.java | 28 --
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
index 8f620f2..ddd3373 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
@@ -35,8 +35,8 @@ import java.util.concurrent.BrokenBarrierException;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.CyclicBarrier;
+import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -44,8 +44,7 @@ import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.atomic.AtomicLongArray;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.concurrent.locks.Lock;
-
-import com.google.common.base.Predicate;
+import java.util.function.Predicate;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.configuration.DataRegionConfiguration;
 import org.apache.ignite.internal.IgniteInternalFuture;
@@ -55,8 +54,8 @@ import org.apache.ignite.internal.pagemem.PageIdAllocator;
 import org.apache.ignite.internal.pagemem.PageMemory;
 import org.apache.ignite.internal.pagemem.PageUtils;
 import org.apache.ignite.internal.pagemem.impl.PageMemoryNoStoreImpl;
-import org.apache.ignite.internal.processors.cache.persistence.DataStructure;
 import 
org.apache.ignite.internal.processors.cache.persistence.DataRegionMetricsImpl;
+import org.apache.ignite.internal.processors.cache.persistence.DataStructure;
 import org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree;
 import org.apache.ignite.internal.processors.cache.persistence.tree.io.BPlusIO;
 import 
org.apache.ignite.internal.processors.cache.persistence.tree.io.BPlusInnerIO;
@@ -77,7 +76,6 @@ import org.apache.ignite.testframework.GridTestUtils;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.jetbrains.annotations.Nullable;
 import org.jsr166.ConcurrentLinkedHashMap;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.apache.ignite.internal.pagemem.PageIdUtils.effectivePageId;
@@ -1336,7 +1334,7 @@ public class BPlusTreeSelfTest extends 
GridCommonAbstractTest {
 assertEquals(0, goldenMap.size());
 
 final Predicate rowMatcher = new Predicate() {
-@Override public boolean apply(Long row) {
+@Override public boolean test(Long row) {
 return row % 7 == 0;
 }
 };
@@ -1344,7 +1342,7 @@ public class BPlusTreeSelfTest extends 
GridCommonAbstractTest {
 final BPlusTree.TreeRowClosure rowClosure = new 
BPlusTree.TreeRowClosure() {
 @Override public boolean apply(BPlusTree tree, 
BPlusIO io, long pageAddr, int idx)
 throws IgniteCheckedException {
-return rowMatcher.apply(io.getLookupRow(tree, pageAddr, idx));
+return rowMatcher.test(io.getLookupRow(tree, pageAddr, idx));
 }
 };
 
@@ -1361,7 +1359,7 @@ public class BPlusTreeSelfTest extends 
GridCommonAbstractTest {
 assertEquals(goldenMap.put(row, row), testTree.put(row));
 assertEquals(row, testTree.findOne(row));
 
-if (rowMatcher.apply(row))
+if (rowMatcher.test(row))
 ++correctMatchingRows;
 
 assertEquals(correctMatchingRows, testTree.size(rowClosure));
@@ -1386,7 +1384,7 @@ public class BPlusTreeSelfTest extends 
GridCommonAbstractTest {
 assertEquals(row, testTree.remove(row));
 assertNull(testTree.findOne(row));
 
-if (rowMatcher.apply(row))
+if (rowMatcher.test(row))
 --correctMatchingRows;
 
 assertEquals(correctMatchingRows, testTree.size(rowClosure));
@@ -2238,7 +2236,6 @@ public class BPlusTreeSelfTest extends 
GridCommonAbstractTest {
 /**
  * @throws Exception If failed.
  */
-@Ignore("https://issues.apache.org/jira/browse/IGNITE-7265;)
 @Test
 public

ignite git commit: SqlQueryFullScanBenchmark config fixed

2018-12-18 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master b4bfd4c7c -> 32f564cf4


SqlQueryFullScanBenchmark config fixed


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

Branch: refs/heads/master
Commit: 32f564cf4847b9b7493f74b946f9c65ba73bb0c2
Parents: b4bfd4c
Author: Sergi Vladykin 
Authored: Tue Dec 18 15:30:31 2018 +0300
Committer: Sergi Vladykin 
Committed: Tue Dec 18 15:30:31 2018 +0300

--
 modules/yardstick/config/ignite-base-config.xml | 3 +++
 1 file changed, 3 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/32f564cf/modules/yardstick/config/ignite-base-config.xml
--
diff --git a/modules/yardstick/config/ignite-base-config.xml 
b/modules/yardstick/config/ignite-base-config.xml
index 6db8b6e..99f2460 100644
--- a/modules/yardstick/config/ignite-base-config.xml
+++ b/modules/yardstick/config/ignite-base-config.xml
@@ -127,6 +127,9 @@
 
org.apache.ignite.yardstick.cache.model.Person
 
 java.lang.Integer
+
org.apache.ignite.yardstick.cache.model.PersonNoIndex
+
+java.lang.Integer
 
org.apache.ignite.yardstick.cache.model.SampleValue
 
 java.lang.Integer



ignite git commit: SqlQueryFullScanBenchmark

2018-12-18 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master 7c2ce4c74 -> b4bfd4c7c


SqlQueryFullScanBenchmark


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

Branch: refs/heads/master
Commit: b4bfd4c7cd415fa8bb7132a4a8ee58e207500767
Parents: 7c2ce4c
Author: Sergi Vladykin 
Authored: Tue Dec 18 14:17:25 2018 +0300
Committer: Sergi Vladykin 
Committed: Tue Dec 18 14:17:25 2018 +0300

--
 .../cache/IgniteSqlQueryFullScanBenchmark.java  |  97 +
 .../yardstick/cache/model/PersonNoIndex.java| 215 +++
 2 files changed, 312 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/b4bfd4c7/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteSqlQueryFullScanBenchmark.java
--
diff --git 
a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteSqlQueryFullScanBenchmark.java
 
b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteSqlQueryFullScanBenchmark.java
new file mode 100644
index 000..d7cf0a9
--- /dev/null
+++ 
b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteSqlQueryFullScanBenchmark.java
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.yardstick.cache;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.concurrent.ThreadLocalRandom;
+import javax.cache.Cache;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteDataStreamer;
+import org.apache.ignite.cache.query.SqlQuery;
+import org.apache.ignite.yardstick.cache.model.PersonNoIndex;
+import org.yardstickframework.BenchmarkConfiguration;
+
+import static org.yardstickframework.BenchmarkUtils.println;
+
+/**
+ * Ignite benchmark that performs query operations.
+ */
+public class IgniteSqlQueryFullScanBenchmark extends 
IgniteCacheAbstractBenchmark {
+/** {@inheritDoc} */
+@Override public void setUp(BenchmarkConfiguration cfg) throws Exception {
+super.setUp(cfg);
+
+loadCachesData();
+}
+
+/** {@inheritDoc} */
+@Override protected void loadCacheData(String cacheName) {
+try (IgniteDataStreamer dataLdr = 
ignite().dataStreamer(cacheName)) {
+for (int i = 0; i < args.range(); i++) {
+if (i % 100 == 0 && Thread.currentThread().isInterrupted())
+break;
+
+dataLdr.addData(i, new PersonNoIndex(i, "firstName" + i, 
"lastName" + i, i * 1000));
+
+if (i % 10 == 0)
+println(cfg, "Populated persons: " + i);
+}
+}
+}
+
+/** {@inheritDoc} */
+@Override public boolean test(Map ctx) throws Exception {
+double salary = ThreadLocalRandom.current().nextDouble() * 
args.range() * 1000;
+
+double maxSalary = salary + 1000;
+
+Collection> entries = 
executeQuery(salary, maxSalary);
+
+for (Cache.Entry entry : entries) {
+PersonNoIndex p = (PersonNoIndex)entry.getValue();
+
+if (p.getSalary() < salary || p.getSalary() > maxSalary)
+throw new Exception("Invalid person retrieved [min=" + salary 
+ ", max=" + maxSalary +
+", person=" + p + ']');
+}
+
+return true;
+}
+
+/**
+ * @param minSalary Min salary.
+ * @param maxSalary Max salary.
+ * @return Query result.
+ * @throws Exception If failed.
+ */
+private Collection> executeQuery(double 
minSalary, double maxSalary) throws Exception {
+IgniteCache cache = cacheForOperation(true);
+
+SqlQuery qry = new SqlQuery(PersonNoIndex.class, "salary >= ? and 
salary <= ?");
+
+qry.setArgs(minSa

ignite git commit: IGNITE-10488 ClusterCachesInfo.validateCacheGroupConfiguration should check cache compression configuration

2018-12-17 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master 83abf8923 -> 5fb803a2c


IGNITE-10488 ClusterCachesInfo.validateCacheGroupConfiguration should check 
cache compression configuration


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

Branch: refs/heads/master
Commit: 5fb803a2c92f0f0844e88acbcb81f508873bd7f7
Parents: 83abf89
Author: Sergi Vladykin 
Authored: Mon Dec 17 16:15:04 2018 +0300
Committer: Sergi Vladykin 
Committed: Mon Dec 17 16:15:04 2018 +0300

--
 .../compress/CompressionConfigurationTest.java  | 109 +++
 .../IgnitePdsCompressionTestSuite.java  |   2 +
 .../processors/cache/ClusterCachesInfo.java |   8 ++
 3 files changed, 119 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/5fb803a2/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/CompressionConfigurationTest.java
--
diff --git 
a/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/CompressionConfigurationTest.java
 
b/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/CompressionConfigurationTest.java
new file mode 100644
index 000..c2d86fa
--- /dev/null
+++ 
b/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/CompressionConfigurationTest.java
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.compress;
+
+import java.util.Objects;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.DiskPageCompression;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.util.typedef.X;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import static org.apache.ignite.configuration.DiskPageCompression.LZ4;
+import static org.apache.ignite.configuration.DiskPageCompression.ZSTD;
+
+/**
+ */
+@RunWith(JUnit4.class)
+public class CompressionConfigurationTest extends GridCommonAbstractTest {
+/** */
+DiskPageCompression compression1;
+
+/** */
+DiskPageCompression compression2;
+
+/** */
+Integer level1;
+
+/** */
+Integer level2;
+
+/** {@inheritDoc} */
+@Override protected IgniteConfiguration getConfiguration(String 
instanceName) throws Exception {
+CacheConfiguration ccfg1 = new 
CacheConfiguration<>("cache1");
+
+ccfg1.setDiskPageCompression(compression1);
+ccfg1.setDiskPageCompressionLevel(level1);
+ccfg1.setGroupName("myGroup");
+
+CacheConfiguration ccfg2 = new 
CacheConfiguration<>("cache2");
+
+ccfg2.setDiskPageCompression(compression2);
+ccfg2.setDiskPageCompressionLevel(level2);
+ccfg2.setGroupName("myGroup");
+
+return 
super.getConfiguration(instanceName).setCacheConfiguration(ccfg1, ccfg2);
+}
+
+/**
+ * @throws Exception If failed.
+ */
+@Test
+public void testInconsistentCacheGroupCompressionConfig() throws Exception 
{
+doTestConfig(ZSTD, null, null, null);
+doTestConfig(ZSTD, 1, LZ4, 1);
+doTestConfig(ZSTD, null, LZ4, null);
+
+doTestConfig(null, null, null, 2);
+doTestConfig(ZSTD, null, ZSTD, 2);
+doTestConfig(ZSTD, 1, ZSTD, 2);
+}
+
+/**
+ */
+private void doTestConfig(
+DiskPageCompression compression1,
+Integer level1,
+DiskPageCompression compression2,
+Integer level2
+) throws Exception {
+this.compression1 = compression1;
+this.level1 = level1;
+
+this

[1/6] ignite git commit: IGNITE-10330: Disk page compression. - Fixes #5200.

2018-11-26 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master 9137af73e -> e8eeea375


http://git-wip-us.apache.org/repos/asf/ignite/blob/e8eeea37/modules/direct-io/src/test/java/org/apache/ignite/internal/processors/cache/persistence/file/IgniteFileIOTest.java
--
diff --git 
a/modules/direct-io/src/test/java/org/apache/ignite/internal/processors/cache/persistence/file/IgniteFileIOTest.java
 
b/modules/direct-io/src/test/java/org/apache/ignite/internal/processors/cache/persistence/file/IgniteFileIOTest.java
index 9620eb0..640932dc 100644
--- 
a/modules/direct-io/src/test/java/org/apache/ignite/internal/processors/cache/persistence/file/IgniteFileIOTest.java
+++ 
b/modules/direct-io/src/test/java/org/apache/ignite/internal/processors/cache/persistence/file/IgniteFileIOTest.java
@@ -55,6 +55,21 @@ public class IgniteFileIOTest extends TestCase {
 }
 
 /** {@inheritDoc} */
+@Override public int getFileSystemBlockSize() {
+return -1;
+}
+
+/** {@inheritDoc} */
+@Override public long getSparseSize() {
+return -1;
+}
+
+/** {@inheritDoc} */
+@Override public int punchHole(long position, int len) {
+throw new UnsupportedOperationException();
+}
+
+/** {@inheritDoc} */
 @Override public long position() throws IOException {
 return position;
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/e8eeea37/modules/direct-io/src/test/java/org/apache/ignite/testsuites/IgnitePdsNativeIoTestSuite2.java
--
diff --git 
a/modules/direct-io/src/test/java/org/apache/ignite/testsuites/IgnitePdsNativeIoTestSuite2.java
 
b/modules/direct-io/src/test/java/org/apache/ignite/testsuites/IgnitePdsNativeIoTestSuite2.java
index 2ed7450..dab99c9 100644
--- 
a/modules/direct-io/src/test/java/org/apache/ignite/testsuites/IgnitePdsNativeIoTestSuite2.java
+++ 
b/modules/direct-io/src/test/java/org/apache/ignite/testsuites/IgnitePdsNativeIoTestSuite2.java
@@ -19,6 +19,7 @@ package org.apache.ignite.testsuites;
 import junit.framework.TestSuite;
 import 
org.apache.ignite.internal.processors.cache.persistence.IgniteNativeIoLocalWalModeChangeDuringRebalancingSelfTest;
 import 
org.apache.ignite.internal.processors.cache.persistence.IgniteNativeIoPdsRecoveryAfterFileCorruptionTest;
+import 
org.apache.ignite.internal.processors.cache.persistence.DiskPageCompressionIntegrationDirectIOTest;
 import 
org.apache.ignite.internal.processors.cache.persistence.db.wal.IgniteNativeIoWalFlushFsyncSelfTest;
 
 /**
@@ -34,6 +35,9 @@ public class IgnitePdsNativeIoTestSuite2 extends TestSuite {
 
 IgnitePdsTestSuite2.addRealPageStoreTests(suite);
 
+// Direct IO + Page compression.
+suite.addTestSuite(DiskPageCompressionIntegrationDirectIOTest.class);
+
 //Integrity test with reduced count of pages.
 
suite.addTestSuite(IgniteNativeIoPdsRecoveryAfterFileCorruptionTest.class);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/e8eeea37/parent/pom.xml
--
diff --git a/parent/pom.xml b/parent/pom.xml
index 14f970e..23e0a0d 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -84,6 +84,8 @@
 9.4.11.v20180605
 1.13
 1.1.1
+4.5.2
+3.0.46
 0.1.54_1
 0.1.54
 2.4_1
@@ -94,6 +96,7 @@
 2.11.0
 7.4.0_1
 7.4.0
+1.5.0
 3.5.0
 1.10.19
 5.1.39
@@ -110,6 +113,7 @@
 2.2.6
 1.7.7
 1.6.4
+1.1.7.2
 2.6.5
 2.3.0
 1.13.14.RELEASE 
@@ -125,6 +129,7 @@
 0.8.3
 0.5
 3.4.13
+1.3.7-2
 
 
 *

http://git-wip-us.apache.org/repos/asf/ignite/blob/e8eeea37/pom.xml
--
diff --git a/pom.xml b/pom.xml
index 6de435a..54756bb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,6 +45,7 @@
 modules/apache-license-gen
 modules/tools
 modules/core
+modules/compress
 modules/dev-utils
 modules/direct-io
 modules/hadoop



[4/6] ignite git commit: IGNITE-10330: Disk page compression. - Fixes #5200.

2018-11-26 Thread sergi
http://git-wip-us.apache.org/repos/asf/ignite/blob/e8eeea37/modules/compress/licenses/lz4-LICENSE.txt
--
diff --git a/modules/compress/licenses/lz4-LICENSE.txt 
b/modules/compress/licenses/lz4-LICENSE.txt
new file mode 100644
index 000..c221aeb
--- /dev/null
+++ b/modules/compress/licenses/lz4-LICENSE.txt
@@ -0,0 +1,11 @@
+This repository uses 2 different licenses :
+- all files in the `lib` directory use a BSD 2-Clause license
+- all other files use a GPLv2 license, unless explicitly stated otherwise
+
+Relevant license is reminded at the top of each source file,
+and with presence of COPYING or LICENSE file in associated directories.
+
+This model is selected to emphasize that
+files in the `lib` directory are designed to be included into 3rd party 
applications,
+while all other files, in `programs`, `tests` or `examples`,
+receive more limited attention and support for such scenario.

http://git-wip-us.apache.org/repos/asf/ignite/blob/e8eeea37/modules/compress/licenses/lz4-java-LICENSE.txt
--
diff --git a/modules/compress/licenses/lz4-java-LICENSE.txt 
b/modules/compress/licenses/lz4-java-LICENSE.txt
new file mode 100644
index 000..d645695
--- /dev/null
+++ b/modules/compress/licenses/lz4-java-LICENSE.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+   Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+  "License" shall mean the terms and conditions for use, reproduction,
+  and distribution as defined by Sections 1 through 9 of this document.
+
+  "Licensor" shall mean the copyright owner or entity authorized by
+  the copyright owner that is granting the License.
+
+  "Legal Entity" shall mean the union of the acting entity and all
+  other entities that control, are controlled by, or are under common
+  control with that entity. For the purposes of this definition,
+  "control" means (i) the power, direct or indirect, to cause the
+  direction or management of such entity, whether by contract or
+  otherwise, or (ii) ownership of fifty percent (50%) or more of the
+  outstanding shares, or (iii) beneficial ownership of such entity.
+
+  "You" (or "Your") shall mean an individual or Legal Entity
+  exercising permissions granted by this License.
+
+  "Source" form shall mean the preferred form for making modifications,
+  including but not limited to software source code, documentation
+  source, and configuration files.
+
+  "Object" form shall mean any form resulting from mechanical
+  transformation or translation of a Source form, including but
+  not limited to compiled object code, generated documentation,
+  and conversions to other media types.
+
+  "Work" shall mean the work of authorship, whether in Source or
+  Object form, made available under the License, as indicated by a
+  copyright notice that is included in or attached to the work
+  (an example is provided in the Appendix below).
+
+  "Derivative Works" shall mean any work, whether in Source or Object
+  form, that is based on (or derived from) the Work and for which the
+  editorial revisions, annotations, elaborations, or other modifications
+  represent, as a whole, an original work of authorship. For the purposes
+  of this License, Derivative Works shall not include works that remain
+  separable from, or merely link (or bind by name) to the interfaces of,
+  the Work and Derivative Works thereof.
+
+  "Contribution" shall mean any work of authorship, including
+  the original version of the Work and any modifications or additions
+  to that Work or Derivative Works thereof, that is intentionally
+  submitted to Licensor for inclusion in the Work by the copyright owner
+  or by an individual or Legal Entity authorized to submit on behalf of
+  the copyright owner. For the purposes of this definition, "submitted"
+  means any form of electronic, verbal, or written communication sent
+  to the Licensor or its representatives, including but not limited to
+  communication on electronic mailing lists, source code control systems,
+  and issue tracking systems that are managed by, or on behalf of, the
+  Licensor for the purpose of discussing and improving the Work, but
+  excluding communication that is conspicuously marked or otherwise
+  designated in writing by the copyright owner as "Not a Contribution."
+
+  "Contributor" shall mean Licensor and any individual or Legal Entity
+  on behalf of whom a Contribution has been received by Licensor and
+  subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. 

[3/6] ignite git commit: IGNITE-10330: Disk page compression. - Fixes #5200.

2018-11-26 Thread sergi
http://git-wip-us.apache.org/repos/asf/ignite/blob/e8eeea37/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/FileSystemUtilsTest.java
--
diff --git 
a/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/FileSystemUtilsTest.java
 
b/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/FileSystemUtilsTest.java
new file mode 100644
index 000..70dda0b
--- /dev/null
+++ 
b/modules/compress/src/test/java/org/apache/ignite/internal/processors/compress/FileSystemUtilsTest.java
@@ -0,0 +1,193 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.compress;
+
+import java.io.FileDescriptor;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import junit.framework.TestCase;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.util.typedef.internal.U;
+
+import static java.nio.file.StandardOpenOption.READ;
+import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING;
+import static java.nio.file.StandardOpenOption.WRITE;
+import static 
org.apache.ignite.internal.processors.compress.CompressionProcessorImpl.allocateDirectBuffer;
+import static 
org.apache.ignite.internal.processors.compress.FileSystemUtils.getFileSystemBlockSize;
+import static 
org.apache.ignite.internal.processors.compress.FileSystemUtils.getSparseFileSize;
+import static 
org.apache.ignite.internal.processors.compress.FileSystemUtils.punchHole;
+
+/**
+ */
+public class FileSystemUtilsTest extends TestCase {
+/**
+ * @throws Exception If failed.
+ */
+public void testSparseFiles() throws Exception {
+if (!U.isLinux())
+return;
+
+Path file = Files.createTempFile("test_sparse_file_", ".bin");
+
+try {
+doTestSparseFiles(file, false); // Ext4 expected as default FS.
+}
+finally {
+Files.delete(file);
+}
+}
+
+/**
+ * @throws Exception If failed.
+ */
+public void _testFileSystems() throws Exception {
+doTestSparseFiles(Paths.get("/ext4/test_file"), false);
+doTestSparseFiles(Paths.get("/btrfs/test_file"), false);
+doTestSparseFiles(Paths.get("/xfs/test_file"), true);
+}
+
+private static int getFD(FileChannel ch) throws IgniteCheckedException {
+return U.field(U.field(ch, "fd"), "fd");
+}
+
+/**
+ * @param file File path.
+ * @param reopen Reopen file after each hole punch. XFS needs it.
+ * @throws Exception If failed.
+ */
+private void doTestSparseFiles(Path file, boolean reopen) throws Exception 
{
+System.out.println(file);
+
+FileChannel ch = FileChannel.open(file,
+READ, WRITE, TRUNCATE_EXISTING);
+
+try {
+int fd = getFD(ch);
+
+int fsBlockSize = getFileSystemBlockSize(fd);
+
+System.out.println("fsBlockSize: " + fsBlockSize);
+
+assertTrue(fsBlockSize > 0);
+
+int pageSize = fsBlockSize * 4;
+
+ByteBuffer page = allocateDirectBuffer(pageSize);
+
+while (page.remaining() > 0)
+page.putLong(0xABCDEF7654321EADL);
+page.flip();
+
+int pages = 5;
+int blocks = pages * pageSize / fsBlockSize;
+int fileSize = pages * pageSize;
+int sparseSize = fileSize;
+
+for (int i = 0; i < pages; i++) {
+ch.write(page, i * pageSize);
+assertEquals(0, page.remaining());
+page.flip();
+}
+
+if (reopen) {
+ch.force(true);
+ch.close();
+ch = FileChannel.open(file, READ, WRITE);
+fd = getFD(ch);
+}
+
+assertEquals(fileSize, ch.size());
+assertEquals(fileSize, getSparseFileSize(fd));
+
+int off = fsBlockSize * 3 - (fsBlockSize >>> 2);
+int len = fsBlockSize;
+assertEquals(0, 

[2/6] ignite git commit: IGNITE-10330: Disk page compression. - Fixes #5200.

2018-11-26 Thread sergi
http://git-wip-us.apache.org/repos/asf/ignite/blob/e8eeea37/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/AbstractDataPageIO.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/AbstractDataPageIO.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/AbstractDataPageIO.java
index 4a12045..6176eeb 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/AbstractDataPageIO.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/AbstractDataPageIO.java
@@ -33,10 +33,12 @@ import org.apache.ignite.internal.util.GridStringBuilder;
 import org.apache.ignite.internal.util.typedef.internal.SB;
 import org.jetbrains.annotations.Nullable;
 
+import static org.apache.ignite.internal.util.GridUnsafe.bufferAddress;
+
 /**
  * Data pages IO.
  */
-public abstract class AbstractDataPageIO extends PageIO {
+public abstract class AbstractDataPageIO extends PageIO 
implements CompactablePageIO {
 
 /** */
 private static final int SHOW_ITEM = 0b0001;
@@ -228,7 +230,7 @@ public abstract class AbstractDataPageIO extends PageIO {
  * @param pageAddr Page address.
  * @return Free space.
  */
-private int getRealFreeSpace(long pageAddr) {
+public int getRealFreeSpace(long pageAddr) {
 return PageUtils.getShort(pageAddr, FREE_SPACE_OFF);
 }
 
@@ -822,9 +824,10 @@ public abstract class AbstractDataPageIO extends PageIO {
  * @param pageAddr Page address.
  * @param payload Payload.
  * @param pageSize Page size.
+ * @return Item ID.
  * @throws IgniteCheckedException If failed.
  */
-public void addRow(
+public int addRow(
 long pageAddr,
 byte[] payload,
 int pageSize
@@ -840,7 +843,7 @@ public abstract class AbstractDataPageIO extends PageIO {
 
 writeRowData(pageAddr, dataOff, payload);
 
-addItem(pageAddr, fullEntrySize, directCnt, indirectCnt, dataOff, 
pageSize);
+return addItem(pageAddr, fullEntrySize, directCnt, indirectCnt, 
dataOff, pageSize);
 }
 
 /**
@@ -1106,6 +1109,62 @@ public abstract class AbstractDataPageIO extends PageIO {
 return directCnt; // Previous directCnt will be our itemId.
 }
 
+/** {@inheritDoc} */
+@Override public void compactPage(ByteBuffer page, ByteBuffer out, int 
pageSize) {
+// TODO May we compactDataEntries in-place and then copy compacted 
data to out?
+copyPage(page, out, pageSize);
+
+long pageAddr = bufferAddress(out);
+
+int freeSpace = getRealFreeSpace(pageAddr);
+
+if (freeSpace == 0)
+return; // No garbage: nothing to compact here.
+
+int directCnt = getDirectCount(pageAddr);
+
+if (directCnt != 0) {
+int firstOff = getFirstEntryOffset(pageAddr);
+
+if (firstOff - freeSpace != getHeaderSizeWithItems(pageAddr, 
directCnt)) {
+firstOff = compactDataEntries(pageAddr, directCnt, pageSize);
+setFirstEntryOffset(pageAddr, firstOff, pageSize);
+}
+
+// Move all the data entries from page end to the page header to 
close the gap.
+moveBytes(pageAddr, firstOff, pageSize - firstOff, -freeSpace, 
pageSize);
+}
+
+out.limit(pageSize - freeSpace); // Here we have only meaningful data 
of this page.
+}
+
+/** {@inheritDoc} */
+@Override public void restorePage(ByteBuffer page, int pageSize) {
+assert page.isDirect();
+assert page.position() == 0;
+assert page.limit() <= pageSize;
+
+long pageAddr = bufferAddress(page);
+
+int freeSpace = getRealFreeSpace(pageAddr);
+
+if (freeSpace != 0) {
+int firstOff = getFirstEntryOffset(pageAddr);
+int cnt = pageSize - firstOff;
+
+if (cnt != 0) {
+int off = page.limit() - cnt;
+
+assert off > PageIO.COMMON_HEADER_END: off;
+assert cnt > 0 : cnt;
+
+moveBytes(pageAddr, off, cnt, freeSpace, pageSize);
+}
+}
+
+page.limit(pageSize);
+}
+
 /**
  * @param pageAddr Page address.
  * @param directCnt Direct items count.
@@ -1203,7 +1262,16 @@ public abstract class AbstractDataPageIO extends PageIO {
 entriesSize += entrySize;
 }
 
-return pageSize - ITEMS_OFF - entriesSize - (directCnt + 
getIndirectCount(pageAddr)) * ITEM_SIZE;
+return pageSize - entriesSize - getHeaderSizeWithItems(pageAddr, 
directCnt);
+}
+
+/**
+ * @param pageAddr Page address.
+ * @param directCnt Direct items count.
+ * @return Size of the page header including all items.
+ */
+private int 

[6/6] ignite git commit: IGNITE-10330: Disk page compression. - Fixes #5200.

2018-11-26 Thread sergi
IGNITE-10330: Disk page compression. - Fixes #5200.

Signed-off-by: Sergi Vladykin 


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

Branch: refs/heads/master
Commit: e8eeea375584bb31a8a9f60e43c8206cd4753d64
Parents: 9137af7
Author: Sergi Vladykin 
Authored: Mon Nov 26 15:37:58 2018 +0300
Committer: Sergi Vladykin 
Committed: Mon Nov 26 15:37:58 2018 +0300

--
 modules/compress/licenses/Snappy-LICENSE.txt|   29 +
 .../compress/licenses/Snappy-java-LICENSE.txt   |  202 ++
 modules/compress/licenses/Zstd-LICENSE.txt  |   30 +
 modules/compress/licenses/Zstd-jni-LICENSE.txt  |   26 +
 modules/compress/licenses/jnr-ffi-LICENSE.txt   |   25 +
 modules/compress/licenses/jnr-posix-LICENSE.txt | 2486 ++
 modules/compress/licenses/lz4-LICENSE.txt   |   11 +
 modules/compress/licenses/lz4-java-LICENSE.txt  |  202 ++
 modules/compress/pom.xml|  113 +
 .../compress/CompressionProcessorImpl.java  |  403 +++
 .../compress/NativeFileSystemLinux.java |  142 +
 .../compress/NativeFileSystemPosix.java |   54 +
 .../compress/CompressionProcessorTest.java  | 1021 +++
 ...DiskPageCompressionIntegrationAsyncTest.java |   30 +
 .../DiskPageCompressionIntegrationTest.java |  468 
 .../compress/FileSystemUtilsTest.java   |  193 ++
 .../IgnitePdsCompressionTestSuite.java  |   56 +
 .../IgnitePdsCompressionTestSuite2.java |   38 +
 .../org/apache/ignite/DataStorageMetrics.java   |   18 +
 .../apache/ignite/IgniteSystemProperties.java   |   44 +
 .../configuration/CacheConfiguration.java   |   60 +
 .../configuration/DataStorageConfiguration.java |   16 +-
 .../configuration/DiskPageCompression.java  |   38 +
 .../ignite/internal/GridKernalContext.java  |6 +
 .../ignite/internal/GridKernalContextImpl.java  |   12 +
 .../ignite/internal/IgniteComponentType.java|7 +
 .../apache/ignite/internal/IgniteKernal.java|2 +
 .../internal/pagemem/store/PageStore.java   |   34 +-
 .../cache/CacheCompressionManager.java  |   95 +
 .../cache/CacheGroupMetricsMXBeanImpl.java  |   23 +-
 .../processors/cache/GridCacheContext.java  |   13 +
 .../processors/cache/GridCacheProcessor.java|3 +
 .../persistence/DataStorageMetricsImpl.java |   22 +-
 .../persistence/DataStorageMetricsSnapshot.java |   18 +
 .../GridCacheDatabaseSharedManager.java |   89 +-
 .../cache/persistence/file/AbstractFileIO.java  |2 +-
 .../cache/persistence/file/AsyncFileIO.java |   38 +-
 .../cache/persistence/file/EncryptedFileIO.java |   16 +-
 .../cache/persistence/file/FileIO.java  |   19 +
 .../cache/persistence/file/FileIODecorator.java |   17 +-
 .../cache/persistence/file/FilePageStore.java   |   72 +-
 .../persistence/file/FilePageStoreManager.java  |   65 +-
 .../cache/persistence/file/FilePageStoreV2.java |   21 +
 .../persistence/file/RandomAccessFileIO.java|   35 +
 .../cache/persistence/file/UnzipFileIO.java |   15 +
 .../persistence/pagemem/PageMemoryImpl.java |   20 +-
 .../persistence/tree/io/AbstractDataPageIO.java |   79 +-
 .../cache/persistence/tree/io/BPlusIO.java  |   32 +-
 .../persistence/tree/io/CompactablePageIO.java  |   43 +
 .../persistence/tree/io/DataPagePayload.java|   16 +
 .../cache/persistence/tree/io/PageIO.java   |  103 +-
 .../wal/reader/StandaloneGridKernalContext.java |6 +
 .../compress/CompressionProcessor.java  |  173 ++
 .../processors/compress/FileSystemUtils.java|  129 +
 .../processors/compress/NativeFileSystem.java   |   50 +
 .../apache/ignite/internal/util/GridUnsafe.java |1 +
 .../ignite/internal/util/IgniteUtils.java   |   24 +-
 .../ignite/mxbean/CacheGroupMetricsMXBean.java  |   12 +
 .../ignite/mxbean/DataStorageMetricsMXBean.java |8 +
 .../IgniteClusterActivateDeactivateTest.java|2 +-
 .../cache/persistence/DummyPageIO.java  |   21 +-
 .../IgniteDataStorageMetricsSelfTest.java   |   17 +-
 .../persistence/IgnitePdsDynamicCacheTest.java  |3 +-
 .../IgnitePdsExchangeDuringCheckpointTest.java  |1 +
 .../persistence/IgnitePdsPageSizesTest.java |8 +
 ...lWalModeChangeDuringRebalancingSelfTest.java |   15 +
 .../db/IgnitePdsCacheRestoreTest.java   |8 +-
 .../db/IgnitePdsDataRegionMetricsTest.java  |   10 +-
 .../db/IgnitePdsReserveWalSegmentsTest.java |2 -
 ...gniteCheckpointDirtyPagesForLowLoadTest.java |1 -
 ...faultPageSizeBackwardsCompatibilityTest.java |   19 +-
 .../persistence/db/wal/WalCompactionTest.java   |   26 +-
 .../db/wal/WalDeletionArchiveAbstractTest.java  |1 -
 .../database/IgniteDbAbstractTest.java  |2

[5/6] ignite git commit: IGNITE-10330: Disk page compression. - Fixes #5200.

2018-11-26 Thread sergi
http://git-wip-us.apache.org/repos/asf/ignite/blob/e8eeea37/modules/compress/licenses/jnr-posix-LICENSE.txt
--
diff --git a/modules/compress/licenses/jnr-posix-LICENSE.txt 
b/modules/compress/licenses/jnr-posix-LICENSE.txt
new file mode 100644
index 000..58011d4
--- /dev/null
+++ b/modules/compress/licenses/jnr-posix-LICENSE.txt
@@ -0,0 +1,2486 @@
+jnr-posix is released under a tri EPL/GPL/LGPL license. You can use it,
+redistribute it and/or modify it under the terms of the:
+
+  Eclipse Public License version 1.0
+  GNU General Public License version 2
+  GNU Lesser General Public License version 2.1
+
+The complete text of the Eclipse Public License is as follows:
+
+  Eclipse Public License - v 1.0
+
+  THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+  PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION
+  OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+  1. DEFINITIONS
+
+  "Contribution" means:
+
+  a) in the case of the initial Contributor, the initial code and
+ documentation distributed under this Agreement, and
+
+  b) in the case of each subsequent Contributor:
+
+  i) changes to the Program, and
+
+  ii) additions to the Program;
+  where such changes and/or additions to the Program
+  originate from and are distributed by that particular
+  Contributor. A Contribution 'originates' from a
+  Contributor if it was added to the Program by such
+  Contributor itself or anyone acting on such
+  Contributor's behalf. Contributions do not include
+  additions to the Program which: (i) are separate modules
+  of software distributed in conjunction with the Program
+  under their own license agreement, and (ii) are not
+  derivative works of the Program.
+
+  "Contributor" means any person or entity that distributes the Program.
+
+  "Licensed Patents" mean patent claims licensable by a Contributor
+  which are necessarily infringed by the use or sale of its
+  Contribution alone or when combined with the Program.
+
+  "Program" means the Contributions distributed in accordance with
+  this Agreement.
+
+  "Recipient" means anyone who receives the Program under this
+  Agreement, including all Contributors.
+
+  2. GRANT OF RIGHTS
+
+  a) Subject to the terms of this Agreement, each Contributor
+ hereby grants Recipient a non-exclusive, worldwide,
+ royalty-free copyright license to reproduce, prepare
+ derivative works of, publicly display, publicly perform,
+ distribute and sublicense the Contribution of such
+ Contributor, if any, and such derivative works, in source
+ code and object code form.
+
+  b) Subject to the terms of this Agreement, each Contributor
+ hereby grants Recipient a non-exclusive, worldwide,
+ royalty-free patent license under Licensed Patents to make,
+ use, sell, offer to sell, import and otherwise transfer the
+ Contribution of such Contributor, if any, in source code and
+ object code form. This patent license shall apply to the
+ combination of the Contribution and the Program if, at the
+ time the Contribution is added by the Contributor, such
+ addition of the Contribution causes such combination to be
+ covered by the Licensed Patents. The patent license shall not
+ apply to any other combinations which include the
+ Contribution. No hardware per se is licensed hereunder.
+
+  c) Recipient understands that although each Contributor grants
+ the licenses to its Contributions set forth herein, no
+ assurances are provided by any Contributor that the Program
+ does not infringe the patent or other intellectual property
+ rights of any other entity. Each Contributor disclaims any
+ liability to Recipient for claims brought by any other entity
+ based on infringement of intellectual property rights or
+ otherwise. As a condition to exercising the rights and
+ licenses granted hereunder, each Recipient hereby assumes
+ sole responsibility to secure any other intellectual property
+ rights needed, if any. For example, if a third party patent
+ license is required to allow Recipient to distribute the
+ Program, it is Recipient's responsibility to acquire that
+ license before distributing the Program.
+
+  d) Each Contributor represents that to its knowledge it has
+ sufficient copyright rights in its Contribution, if any, to
+ grant the copyright license set forth in this Agreement.
+
+  3. REQUIREMENTS
+
+  A Contributor  may choose to  distribute the Program in  object code
+  form under its own license agreement, provided 

[2/2] ignite git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/ignite

2017-06-14 Thread sergi
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/ignite


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

Branch: refs/heads/master
Commit: a79724dfda4a9056d4965ca9e47edff53679bceb
Parents: 70eed75 b6ad6c0
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Wed Jun 14 20:00:00 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed Jun 14 20:00:00 2017 +0300

--
 .../configuration/ExecutorConfiguration.java|   4 +-
 .../cache/query/GridCacheQueryAdapter.java  |   9 +-
 .../CacheDataStructuresCacheKey.java|  64 
 .../CacheDataStructuresConfigurationKey.java|  64 
 .../datastructures/DataStructureInfoKey.java|  56 +++
 .../datastructures/DataStructuresCacheKey.java  |  42 +++
 .../datastructures/DataStructuresProcessor.java | 373 +++
 .../ignite/internal/util/IgniteUtils.java   | 219 +--
 .../compute/VisorComputeCancelSessionsTask.java |   6 +-
 .../VisorComputeCancelSessionsTaskArg.java  |  10 +-
 .../cache/CacheIteratorScanQueryTest.java   | 110 ++
 .../cache/IgniteCacheNoClassQuerySelfTest.java  |   6 +-
 .../IgniteCacheQuerySelfTestSuite.java  |   2 +
 .../cpp/odbc-test/src/queries_test.cpp  |  31 ++
 .../cpp/odbc/include/ignite/odbc/statement.h|  13 +-
 modules/platforms/cpp/odbc/src/odbc.cpp |   7 +-
 modules/platforms/cpp/odbc/src/statement.cpp|  33 +-
 .../Cache/Query/CacheLinqTest.cs| 162 +++-
 .../Examples/ExamplesTest.cs|  13 +-
 .../ProjectFilesTest.cs |   7 +-
 .../NuGet/LINQPad/BinaryModeExample.linq|   1 +
 .../NuGet/LINQPad/ComputeExample.linq   |  17 +-
 .../NuGet/LINQPad/PutGetExample.linq|   1 +
 .../NuGet/LINQPad/QueryExample.linq |   1 +
 .../Apache.Ignite.Linq.csproj   |   2 +
 .../dotnet/Apache.Ignite.Linq/CompiledQuery.cs  |  31 +-
 .../Apache.Ignite.Linq/Impl/AliasDictionary.cs  |  65 +++-
 .../Impl/CacheQueryExpressionVisitor.cs |  71 ++--
 .../Impl/CacheQueryModelVisitor.cs  |  96 -
 .../Apache.Ignite.Linq/Impl/EnumerableHelper.cs |  59 +++
 .../Apache.Ignite.Linq/Impl/ExpressionWalker.cs |  86 -
 ...SequenceParameterNotNullExpressionVisitor.cs |  72 
 .../NuGet/LINQPad/QueryExample.linq |   1 +
 .../Apache.Ignite.Examples.csproj   |   1 +
 .../examples/Apache.Ignite.Examples/App.config  |   3 +-
 .../Compute/PeerAssemblyLoadingExample.cs   |  96 +
 .../Properties/AssemblyInfo.cs  |   4 +-
 .../Properties/AssemblyInfo.cs  |   4 +-
 .../frontend/app/helpers/jade/mixins.pug|   1 +
 .../states/configuration/clusters/thread.pug|   2 +-
 .../frontend/app/primitives/index.js|   1 +
 .../frontend/app/primitives/switch/index.pug|  34 ++
 .../frontend/app/primitives/switch/index.scss   |  87 +
 .../ignite/console/demo/AgentClusterDemo.java   |   3 +
 .../demo/service/DemoComputeLoadService.java|  79 
 .../console/demo/task/DemoCancellableTask.java  |  92 +
 .../console/demo/task/DemoComputeTask.java  | 105 ++
 47 files changed, 1455 insertions(+), 791 deletions(-)
--




[1/2] ignite git commit: master - fixes splitter push down subquery expressions in SELECT and WHERE clauses

2017-06-14 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master b6ad6c055 -> a79724dfd


master - fixes splitter push down subquery expressions in SELECT and WHERE 
clauses


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

Branch: refs/heads/master
Commit: 70eed75422ea50a7bb9dbe539e2b9a62458e57fd
Parents: b843f07
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Wed Jun 14 19:59:53 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed Jun 14 19:59:53 2017 +0300

--
 .../processors/query/h2/IgniteH2Indexing.java   |   4 +-
 .../query/h2/sql/GridSqlQuerySplitter.java  | 145 ---
 .../query/IgniteSqlSplitterSelfTest.java|  74 +-
 3 files changed, 197 insertions(+), 26 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/70eed754/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 e7f93c5..fc3b28f 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
@@ -192,6 +192,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
 System.setProperty("h2.objectCache", "false");
 System.setProperty("h2.serializeJavaObject", "false");
 System.setProperty("h2.objectCacheMaxPerElementSize", "0"); // Avoid 
ValueJavaObject caching.
+System.setProperty("h2.optimizeTwoEquals", "false"); // Makes splitter 
fail on subqueries in WHERE.
 }
 
 /** Default DB options. */
@@ -991,7 +992,8 @@ public class IgniteH2Indexing implements GridQueryIndexing {
 
 // Add SQL explain result message into log.
 String longMsg = "Query execution is too long [time=" + time + 
" ms, sql='" + sql + '\'' +
-", plan=" + U.nl() + plan.getString(1) + U.nl() + ", 
parameters=" + params + "]";
+", plan=" + U.nl() + plan.getString(1) + U.nl() + ", 
parameters=" +
+(params == null ? "[]" : 
Arrays.deepToString(params.toArray())) + "]";
 
 LT.warn(log, longMsg, msg);
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/70eed754/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index 25d97fc..aebf596 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -97,6 +97,12 @@ public class GridSqlQuerySplitter {
 private static final String UNIQUE_TABLE_ALIAS_SUFFIX = "__Z";
 
 /** */
+private static final String EXPR_ALIAS_PREFIX = "__X";
+
+/** */
+private int nextExprAliasId;
+
+/** */
 private int nextTblAliasId;
 
 /** */
@@ -302,8 +308,12 @@ public class GridSqlQuerySplitter {
 // Get back the updated query from the fake parent. It will be our 
reduce query.
 qry = fakeQryPrnt.subquery();
 
+String rdcQry = qry.getSQL();
+
+checkNoDataTablesInReduceQuery(qry, rdcQry);
+
 // Setup a resulting reduce query.
-rdcSqlQry = new GridCacheSqlQuery(qry.getSQL());
+rdcSqlQry = new GridCacheSqlQuery(rdcQry);
 rdcQrySimple = qry.simpleQuery();
 
 setupParameters(rdcSqlQry, qry, params);
@@ -346,6 +356,21 @@ public class GridSqlQuerySplitter {
 }
 
 /**
+ * @param ast Reduce query AST.
+ * @param rdcQry Reduce query string.
+ */
+private static void checkNoDataTablesInReduceQuery(GridSqlAst ast, String 
rdcQry) {
+if (ast instanceof GridSqlTable) {
+if (((GridSqlTable)ast).dataTable() != null)

[2/2] ignite git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/ignite

2017-06-08 Thread sergi
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/ignite


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

Branch: refs/heads/master
Commit: 4b0998e5d22a94f56db5ddc65ad7fc274a1e3199
Parents: e3ff16a a1e6edc
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Thu Jun 8 20:39:13 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Thu Jun 8 20:39:13 2017 +0300

--
 .../ClientTcpUnreachableMultiNodeSelfTest.java  |   6 +-
 .../configuration/CacheConfiguration.java   |  24 +++
 .../ignite/internal/binary/BinaryContext.java   |   1 -
 .../ignite/internal/binary/BinaryFieldEx.java   |   5 +
 .../ignite/internal/binary/BinaryFieldImpl.java |   5 +
 .../ignite/internal/client/GridClientNode.java  |   9 +-
 .../client/impl/GridClientNodeImpl.java |  22 +-
 .../connection/GridClientNioTcpConnection.java  |   3 +-
 .../PlatformDotNetConfigurationClosure.java |   8 +-
 .../utils/PlatformConfigurationUtils.java   |   8 +
 .../query/DynamicTableAffinityKeyMapper.java|  92 
 .../processors/query/GridQueryProcessor.java|  59 +++---
 .../internal/processors/query/QueryUtils.java   |  19 +-
 .../rest/client/message/GridClientNodeBean.java |  25 +++
 .../top/GridTopologyCommandHandler.java |   1 +
 .../query/h2/ddl/DdlStatementsProcessor.java|   5 +-
 .../processors/query/h2/opt/GridH2Table.java|   5 +-
 .../query/h2/sql/GridSqlCreateTable.java|  37 +++-
 .../query/h2/sql/GridSqlQueryParser.java|  54 +
 .../cache/index/H2DynamicTableSelfTest.java | 209 +--
 .../Cache/CacheConfigurationTest.cs |  10 +
 .../IgniteConfigurationSerializerTest.cs|  11 +-
 .../IgniteConfigurationTest.cs  |   4 +
 .../Cache/Configuration/CacheConfiguration.cs   |  23 ++
 .../Datastream/IDataStreamer.cs |   8 +-
 .../Apache.Ignite.Core/IgniteConfiguration.cs   |  20 ++
 .../IgniteConfigurationSection.xsd  |  12 ++
 modules/web-console/backend/.gitignore  |   1 +
 modules/web-console/frontend/.gitignore |   1 +
 .../yardstick/cache/load/model/ModelUtil.java   |   1 +
 30 files changed, 621 insertions(+), 67 deletions(-)
--




[1/2] ignite git commit: master - fixes splitter push down

2017-06-07 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master 3a2797e2d -> d2efe78e1


master - fixes splitter push down


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

Branch: refs/heads/master
Commit: 8371e3adf453803b2eefe228adebaac3b42b3c0a
Parents: 86d0049
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Wed Jun 7 18:20:24 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed Jun 7 18:20:24 2017 +0300

--
 .../query/h2/sql/GridSqlQuerySplitter.java  | 69 +++-
 .../query/IgniteSqlSplitterSelfTest.java| 47 +
 2 files changed, 114 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/8371e3ad/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index 1b9619e..e87a032 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -43,8 +43,10 @@ import 
org.apache.ignite.internal.processors.query.h2.H2Utils;
 import org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing;
 import org.apache.ignite.internal.processors.query.h2.opt.GridH2RowDescriptor;
 import org.apache.ignite.internal.processors.query.h2.opt.GridH2Table;
+import org.apache.ignite.internal.util.lang.GridTreePrinter;
 import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.X;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.h2.command.Prepared;
 import org.h2.command.dml.Query;
@@ -187,6 +189,8 @@ public class GridSqlQuerySplitter {
 
 String originalSql = qry.getSQL();
 
+//debug("ORIGINAL", originalSql);
+
 final boolean explain = qry.explain();
 
 qry.explain(false);
@@ -197,6 +201,8 @@ public class GridSqlQuerySplitter {
 // Also it will collect all tables and schemas from the query.
 splitter.normalizeQuery(qry);
 
+//debug("NORMALIZED", qry.getSQL());
+
 Connection conn = stmt.getConnection();
 
 // Here we will have correct normalized AST with optimized join order.
@@ -270,13 +276,19 @@ public class GridSqlQuerySplitter {
 // Setup the needed information for split.
 analyzeQueryModel(qrym);
 
+//debug("ANALYZED", printQueryModel(qrym));
+
 // If we have child queries to split, then go hard way.
 if (qrym.needSplitChild) {
 // All the siblings to selects we are going to split must be also 
wrapped into subqueries.
 pushDownQueryModel(qrym);
 
+//debug("PUSHED_DOWN", printQueryModel(qrym));
+
 // Need to make all the joined subqueries to be ordered by join 
conditions.
 setupMergeJoinSorting(qrym);
+
+//debug("SETUP_MERGE_JOIN", printQueryModel(qrym));
 }
 else if (!qrym.needSplit)  // Just split the top level query.
 setNeedSplit(qrym);
@@ -317,6 +329,20 @@ public class GridSqlQuerySplitter {
 }
 
 /**
+ * @param label Label.
+ * @param info Info.
+ * @deprecated Must be commented out.
+ */
+@Deprecated
+@SuppressWarnings("unused")
+private static void debug(String label, String info) {
+X.println();
+X.println("  ==" + label + "== ");
+X.println(info);
+X.println("   ");
+}
+
+/**
  * @param qrym Query model for the SELECT.
  */
 private void pushDownQueryModelSelect(QueryModel qrym) {
@@ -546,6 +572,8 @@ public class GridSqlQuerySplitter {
 // and mark that subquery as splittable.
 doPushDownQueryModelRange(qrym, begin, end, true);
 }
+
+//debug("PUSH_DOWN_PARTIAL", printQueryModel(qrym));
 }
 
 /**
@@ -645,6 +673,9 @@ public class GridSqlQuerySplitter {
 int end,
 GridSqlAlias wrapAlias
 ) {
+// Get the original SELECT.
+GridSqlSelect select = qrym.ast();
+
 GridSqlSelect wrapSelect = 
GridSqlAlias.unwrap(wrapAl

[2/2] ignite git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/ignite

2017-06-07 Thread sergi
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/ignite


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

Branch: refs/heads/master
Commit: d2efe78e1bc59b79a1e544b64bbcd44a0203ce27
Parents: 8371e3a 3a2797e
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Wed Jun 7 18:21:19 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed Jun 7 18:21:19 2017 +0300

--
 .../jdbc/suite/IgniteJdbcDriverTestSuite.java   |   2 +
 .../thin/JdbcThinAutoCloseServerCursorTest.java | 359 +++
 .../jdbc/thin/JdbcThinConnectionSelfTest.java   |  36 ++
 .../internal/binary/BinaryClassDescriptor.java  |   1 -
 .../internal/jdbc/thin/JdbcThinConnection.java  |   4 +-
 .../internal/jdbc/thin/JdbcThinResultSet.java   |  18 +-
 .../internal/jdbc/thin/JdbcThinStatement.java   |   2 +-
 .../internal/jdbc/thin/JdbcThinTcpIo.java   |  17 +-
 .../internal/jdbc/thin/JdbcThinUtils.java   |   7 +-
 .../query/jdbc/GridCacheQueryJdbcTask.java  |   6 +-
 .../processors/odbc/SqlListenerNioListener.java |   3 +-
 .../processors/odbc/jdbc/JdbcQueryCursor.java   |   9 +-
 .../odbc/jdbc/JdbcRequestHandler.java   |  21 +-
 .../processors/query/GridQueryProcessor.java|   2 +-
 .../internal/processors/query/QueryUtils.java   |  32 ++
 .../query/h2/ddl/DdlStatementsProcessor.java|  23 +-
 .../cache/index/H2DynamicTableSelfTest.java |  37 +-
 17 files changed, 531 insertions(+), 48 deletions(-)
--




[2/2] ignite git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/ignite

2017-05-29 Thread sergi
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/ignite


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

Branch: refs/heads/master
Commit: 172419b30b3e5523f426239c0d521c82639dfe3d
Parents: c68c146 88fd1a6
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Mon May 29 09:42:12 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Mon May 29 09:42:12 2017 +0300

--
 modules/web-console/frontend/.babelrc   |   9 +-
 modules/web-console/frontend/.gitignore |   1 -
 modules/web-console/frontend/app/app.js |  18 +-
 .../components/web-console-header/component.js  |   6 +-
 .../app/modules/agent/AgentManager.service.js   |   2 -
 .../frontend/gulpfile.babel.js/index.js |  26 ---
 .../frontend/gulpfile.babel.js/paths.js |  64 --
 .../frontend/gulpfile.babel.js/tasks/build.js   |  21 --
 .../frontend/gulpfile.babel.js/tasks/bundle.js  |  36 
 .../frontend/gulpfile.babel.js/tasks/clean.js   |  32 ---
 .../frontend/gulpfile.babel.js/tasks/copy.js|  33 ---
 .../gulpfile.babel.js/tasks/ignite-modules.js   |  55 -
 .../frontend/gulpfile.babel.js/tasks/watch.js   |  30 ---
 .../gulpfile.babel.js/webpack/common.js | 205 ---
 .../webpack/environments/development.js |  60 --
 .../webpack/environments/production.js  |  41 
 .../webpack/environments/test.js|  44 
 .../frontend/gulpfile.babel.js/webpack/index.js |  36 
 .../frontend/ignite_modules/index.js|   7 +-
 modules/web-console/frontend/package.json   | 104 --
 .../frontend/test/karma.conf.babel.js   |  13 +-
 modules/web-console/frontend/test/karma.conf.js |   2 +-
 .../frontend/webpack/webpack.common.js  | 188 +
 .../frontend/webpack/webpack.dev.babel.js   | 100 +
 .../frontend/webpack/webpack.prod.babel.js  |  64 ++
 .../frontend/webpack/webpack.test.js|  33 +++
 26 files changed, 449 insertions(+), 781 deletions(-)
--




[1/2] ignite git commit: master - tests for SQL schema

2017-05-29 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master 88fd1a63f -> 172419b30


master - tests for SQL schema


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

Branch: refs/heads/master
Commit: c68c146d1671a26efd38335f7902965d0534c0b6
Parents: 52e14ac
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Mon May 29 09:41:56 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Mon May 29 09:41:56 2017 +0300

--
 .../query/IgniteSqlSplitterSelfTest.java| 51 
 1 file changed, 51 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/c68c146d/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
--
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
index 4bb6a3a..6b984bf 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
@@ -1123,6 +1123,57 @@ public class IgniteSqlSplitterSelfTest extends 
GridCommonAbstractTest {
 }
 
 /**
+ */
+public void testSchemaQuoted() {
+assert false; // TODO test hangs
+doTestSchemaName("\"ppAf\"");
+}
+
+/**
+ */
+public void testSchemaQuotedUpper() {
+assert false; // TODO test hangs
+doTestSchemaName("\"PPAF\"");
+}
+
+/**
+ */
+public void testSchemaUnquoted() {
+doTestSchemaName("ppAf");
+}
+
+/**
+ */
+public void testSchemaUnquotedUpper() {
+doTestSchemaName("PPAF");
+}
+
+/**
+ * @param schema Schema name.
+ */
+public void doTestSchemaName(String schema) {
+CacheConfiguration ccfg = cacheConfig("persPartAff", true, 
Integer.class, Person2.class);
+
+ccfg.setSqlSchema(schema);
+
+IgniteCache<Integer, Person2> ppAf = ignite(0).createCache(ccfg);
+
+try {
+ppAf.put(1, new Person2(10, "Petya"));
+ppAf.put(2, new Person2(10, "Kolya"));
+
+List<List> res = ppAf.query(new SqlFieldsQuery("select name 
from " +
+schema + ".Person2 order by _key")).getAll();
+
+assertEquals("Petya", res.get(0).get(0));
+assertEquals("Kolya", res.get(1).get(0));
+}
+finally {
+ppAf.destroy();
+}
+}
+
+/**
  * @throws Exception If failed.
  */
 public void testIndexSegmentation() throws Exception {



ignite git commit: master - AffinityKeyMapper is deprecated.

2017-05-28 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master fb12f0fac -> 52e14ac07


master - AffinityKeyMapper is deprecated.


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

Branch: refs/heads/master
Commit: 52e14ac079a27e42c4b356202148d0d5cddce52a
Parents: fb12f0f
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Sun May 28 22:40:20 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Sun May 28 22:40:20 2017 +0300

--
 .../java/org/apache/ignite/cache/affinity/AffinityKeyMapper.java  | 3 +++
 1 file changed, 3 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/52e14ac0/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKeyMapper.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKeyMapper.java
 
b/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKeyMapper.java
index 4e2c624..7fd5e08 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKeyMapper.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/cache/affinity/AffinityKeyMapper.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.cache.affinity;
 
 import java.io.Serializable;
+import org.apache.ignite.cache.CacheKeyConfiguration;
 
 /**
  * Affinity mapper which maps cache key to an affinity key. Affinity key is a 
key which will be
@@ -41,7 +42,9 @@ import java.io.Serializable;
  * {@link AffinityKeyMapped @AffinityKeyMapped} documentation.
  * @see AffinityFunction
  * @see AffinityKeyMapped
+ * @deprecated Use {@link AffinityKeyMapped} or {@link 
CacheKeyConfiguration#setAffinityKeyFieldName(String)} instead.
  */
+@Deprecated
 public interface AffinityKeyMapper extends Serializable {
 /**
  * Maps passed in key to an alternate key which will be used for node 
affinity.



ignite git commit: master - BPlusTree: compare with lvl

2017-05-23 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master 33cb5e89c -> ff813891d


master - BPlusTree: compare with lvl


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

Branch: refs/heads/master
Commit: ff813891dffb24021f4f7b744cf30d58d919dc42
Parents: 33cb5e8
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Wed May 24 08:52:24 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed May 24 08:52:24 2017 +0300

--
 .../cache/database/tree/BPlusTree.java  | 64 +---
 1 file changed, 41 insertions(+), 23 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/ff813891/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index a4c09d5..4d2110c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -253,11 +253,12 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 int cnt = io.getCount(pageAddr);
 
 int idx;
+
 if (g.findLast)
-idx = io.isLeaf()? cnt - 1: -cnt - 1; //(-cnt - 1) mimics 
not_found result of findInsertionPoint
-//in case of cnt = 0 we end up in 'not found' branch below 
with idx being 0 after fix() adjustment
+idx = io.isLeaf() ? cnt - 1 : -cnt - 1; // (-cnt - 1) mimics 
not_found result of findInsertionPoint
+// in case of cnt = 0 we end up in 'not found' branch below 
with idx being 0 after fix() adjustment
 else
-idx = findInsertionPoint(io, pageAddr, 0, cnt, g.row, g.shift);
+idx = findInsertionPoint(lvl, io, pageAddr, 0, cnt, g.row, 
g.shift);
 
 boolean found = idx >= 0;
 
@@ -338,7 +339,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 assert p.btmLvl == 0 : "split is impossible with replace";
 
 final int cnt = io.getCount(pageAddr);
-final int idx = findInsertionPoint(io, pageAddr, 0, cnt, p.row, 0);
+final int idx = findInsertionPoint(lvl, io, pageAddr, 0, cnt, 
p.row, 0);
 
 if (idx < 0) // Not found, split or merge happened.
 return RETRY;
@@ -399,7 +400,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 return RETRY;
 
 int cnt = io.getCount(pageAddr);
-int idx = findInsertionPoint(io, pageAddr, 0, cnt, p.row, 0);
+int idx = findInsertionPoint(lvl, io, pageAddr, 0, cnt, p.row, 0);
 
 if (idx >= 0) // We do not support concurrent put of the same key.
 throw new IllegalStateException("Duplicate row in index.");
@@ -451,7 +452,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 
 assert cnt <= Short.MAX_VALUE: cnt;
 
-int idx = findInsertionPoint(io, leafAddr, 0, cnt, r.row, 0);
+int idx = findInsertionPoint(lvl, io, leafAddr, 0, cnt, r.row, 0);
 
 if (idx < 0)
 return RETRY; // We've found exact match on search but now 
it's gone.
@@ -1205,7 +1206,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 
 validateDownPages(rootPageId, 0L, rootLvl);
 
-validateDownKeys(rootPageId, null);
+validateDownKeys(rootPageId, null, rootLvl);
 }
 finally {
 releasePage(metaPageId, metaPage);
@@ -1217,7 +1218,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
  * @param minRow Minimum row.
  * @throws IgniteCheckedException If failed.
  */
-private void validateDownKeys(long pageId, L minRow) throws 
IgniteCheckedException {
+private void validateDownKeys(long pageId, L minRow, int lvl) throws 
IgniteCheckedException {
 long page = acquirePage(pageId);
 try {
 long pageAddr = readLock(pageId, page); // No correctness 
guaranties.
@@ -1232,7 +1233,7 @@ public abstract class BPlusTree<L, T extends L> extends 
Da

ignite git commit: Fixed segmented indices snapshots. - Fixes #1936.

2017-05-23 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master 647fd195b -> 1554a1606


Fixed segmented indices snapshots. - Fixes #1936.

Signed-off-by: Sergi Vladykin <sergi.vlady...@gmail.com>


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

Branch: refs/heads/master
Commit: 1554a1606244b46f042ecbf6aeb7eb09c3a2abb8
Parents: 647fd19
Author: Andrey V. Mashenkov <andrey.mashen...@gmail.com>
Authored: Tue May 23 15:26:00 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Tue May 23 15:26:00 2017 +0300

--
 .../processors/query/h2/opt/GridH2Table.java| 107 ---
 .../query/h2/twostep/GridMapQueryExecutor.java  |   2 +-
 .../query/IgniteSqlSegmentedIndexSelfTest.java  |  25 +
 3 files changed, 93 insertions(+), 41 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/1554a160/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
index 41cf68b..ec728de 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
@@ -23,7 +23,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicReference;
+import java.util.concurrent.atomic.AtomicReferenceArray;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
@@ -74,6 +74,9 @@ public class GridH2Table extends TableBase {
 private volatile ArrayList idxs;
 
 /** */
+private final int pkIndexPos;
+
+/** */
 private final Map<String, GridH2IndexBase> tmpIdxs = new HashMap<>();
 
 /** */
@@ -86,7 +89,7 @@ public class GridH2Table extends TableBase {
 private final ConcurrentMap<Session, Boolean> sessions = new 
ConcurrentHashMap8<>();
 
 /** */
-private final AtomicReference<Object[]> actualSnapshot = new 
AtomicReference<>();
+private final AtomicReferenceArray<Object[]> actualSnapshot;
 
 /** */
 private IndexColumn affKeyCol;
@@ -164,21 +167,31 @@ public class GridH2Table extends TableBase {
 assert idxs != null;
 
 List clones = new ArrayList<>(idxs.size());
-for (Index index: idxs) {
+for (Index index : idxs) {
 Index clone = createDuplicateIndexIfNeeded(index);
 if (clone != null)
-   clones.add(clone);
+clones.add(clone);
 }
 idxs.addAll(clones);
 
+boolean hasHashIndex = idxs.size() >= 2 && 
index(0).getIndexType().isHash();
+
 // Add scan index at 0 which is required by H2.
-if (idxs.size() >= 2 && index(0).getIndexType().isHash())
+if (hasHashIndex)
 idxs.add(0, new GridH2PrimaryScanIndex(this, index(1), index(0)));
 else
 idxs.add(0, new GridH2PrimaryScanIndex(this, index(0), null));
 
 snapshotEnabled = desc == null || desc.snapshotableIndex();
 
+pkIndexPos = hasHashIndex ? 2 : 1;
+
+final int segments = desc != null ? 
desc.configuration().getQueryParallelism() :
+// Get index segments count from PK index. Null desc can be passed 
from tests.
+index(pkIndexPos).segmentsCount();
+
+actualSnapshot = snapshotEnabled ? new 
AtomicReferenceArray<Object[]>(Math.max(segments, 1)) : null;
+
 lock = new ReentrantReadWriteLock();
 }
 
@@ -233,8 +246,13 @@ public class GridH2Table extends TableBase {
 throw new IllegalStateException("Table " + identifierString() + " 
already destroyed.");
 }
 
-if (snapshotInLock())
-snapshotIndexes(null);
+if (snapshotInLock()) {
+final GridH2QueryContext qctx = GridH2QueryContext.get();
+
+assert qctx != null;
+
+snapshotIndexes(null, qctx.segment());
+}
 
 return false;
 }
@@ -255,21 +273,22 @@ public class GridH2Table extends TableBase {
 
 /**
  * @param qctx Query context.
+ * @param segment id of index segment to be snapshoted.
   

ignite git commit: IGNITE-5190 - ArrayIndexOutOfBoundsException in GridMergeIndexSorted

2017-05-11 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master f0051e18a -> 3a9dba5f8


IGNITE-5190 - ArrayIndexOutOfBoundsException in GridMergeIndexSorted


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

Branch: refs/heads/master
Commit: 3a9dba5f86ad34736ccd278ebf91044e18cf9a6b
Parents: f0051e1
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Thu May 11 16:01:38 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Thu May 11 16:01:38 2017 +0300

--
 .../query/h2/twostep/GridMergeIndexSorted.java  |  3 +
 .../query/IgniteSqlSplitterSelfTest.java| 68 
 2 files changed, 71 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/3a9dba5f/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexSorted.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexSorted.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexSorted.java
index f2d9de4..54c8dd4 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexSorted.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexSorted.java
@@ -252,6 +252,9 @@ public final class GridMergeIndexSorted extends 
GridMergeIndex {
  *
  */
 private void goNext() {
+if (off == streams.length)
+return; // All streams are done.
+
 if (streams[off].next())
 bubbleUp(streams, off, streamCmp);
 else

http://git-wip-us.apache.org/repos/asf/ignite/blob/3a9dba5f/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
--
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
index ad1c8b8..f98f41b 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
@@ -1609,6 +1609,37 @@ public class IgniteSqlSplitterSelfTest extends 
GridCommonAbstractTest {
 }
 }
 
+/**
+ * @throws Exception If failed.
+ */
+public void testJoinWithSubquery() throws Exception {
+IgniteCache<Integer, Contract> c1 = ignite(0).createCache(
+cacheConfig("Contract", true,
+Integer.class, Contract.class));
+
+IgniteCache<Integer, PromoContract> c2 = ignite(0).createCache(
+cacheConfig("PromoContract", true,
+Integer.class, PromoContract.class));
+
+for (int i = 0; i < 100; i++) {
+int coId = i % 10;
+int cust = i / 10;
+c1.put( i, new Contract(coId, cust));
+}
+
+for (int i = 0; i < 10; i++)
+c2.put(i, new PromoContract((i % 5) + 1, i));
+
+final List<List> res = c2.query(new SqlFieldsQuery("SELECT CO.CO_ID 
\n" +
+"FROM PromoContract PMC  \n" +
+"INNER JOIN \"Contract\".Contract CO  ON PMC.CO_ID = 5  \n" +
+"AND PMC.CO_ID = CO.CO_ID  \n" +
+"INNER JOIN  (SELECT CO_ID FROM PromoContract EBP WHERE EBP.CO_ID 
= 5 LIMIT 1) VPMC  \n" +
+"ON PMC.CO_ID = VPMC.CO_ID ")).getAll();
+
+assertFalse(res.isEmpty());
+}
+
 /** @throws Exception if failed. */
 public void testDistributedAggregates() throws Exception {
 final String cacheName = "ints";
@@ -2128,4 +2159,41 @@ public class IgniteSqlSplitterSelfTest extends 
GridCommonAbstractTest {
 @QuerySqlField
 private int goodId;
 }
+
+/** */
+private static class Contract implements Serializable {
+/** */
+@QuerySqlField(index = true)
+private final int CO_ID;
+
+/** */
+@QuerySqlField(index = true)
+private final int CUSTOMER_ID;
+
+/** */
+public Contract(final int CO_ID, final int CUSTOMER_ID) {
+this.CO_ID = CO_ID;
+this.CUSTOMER_ID = CUSTOMER_ID;
+}
+
+}

ignite git commit: master - minor fix for subqueries with aggregates

2017-05-09 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master d10091d6f -> b039d05a3


master - minor fix for subqueries with aggregates


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

Branch: refs/heads/master
Commit: b039d05a34d8970ee3cbee5cf98ad9e5369772d2
Parents: d10091d
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Tue May 9 18:17:40 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Tue May 9 18:17:40 2017 +0300

--
 .../internal/processors/query/h2/sql/GridSqlQuerySplitter.java | 2 +-
 .../internal/processors/query/IgniteSqlSplitterSelfTest.java   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/b039d05a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index 2bac505..26c6b08 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -1743,7 +1743,7 @@ public class GridSqlQuerySplitter {
 
 // If in SELECT clause we have a subquery expression with aggregate,
 // we should not split it. Run the whole subquery on MAP stage.
-if (el instanceof GridSqlQuery)
+if (el instanceof GridSqlSubquery)
 return false;
 
 for (int i = 0; i < el.size(); i++) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/b039d05a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
--
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
index 34101d2..ad1c8b8 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
@@ -306,7 +306,7 @@ public class IgniteSqlSplitterSelfTest extends 
GridCommonAbstractTest {
 c1.put(new AffinityKey<>(2, orgId), new Person2(orgId, "Another 
Vasya"));
 
 List<List> rs = c1.query(new SqlFieldsQuery("select name, " +
-"(select count(1) from Person2 q where q.orgId = p.orgId) " +
+"select count(1) from Person2 q where q.orgId = p.orgId " +
 "from Person2 p order by name desc")).getAll();
 
 assertEquals(2, rs.size());



ignite git commit: master - fixed SELECT (SELECT COUNT(1)) FROM

2017-05-08 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master 5dc989624 -> d10091d6f


master - fixed SELECT (SELECT COUNT(1)) FROM


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

Branch: refs/heads/master
Commit: d10091d6f23e648d413e478b69e9da0f62c18413
Parents: 5dc9896
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Tue May 9 06:11:34 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Tue May 9 06:11:34 2017 +0300

--
 .../query/h2/sql/GridSqlQuerySplitter.java  |  7 -
 .../query/IgniteSqlSplitterSelfTest.java| 30 
 2 files changed, 36 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/d10091d6/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index b3d54e1..2bac505 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -1734,13 +1734,18 @@ public class GridSqlQuerySplitter {
 }
 
 /**
- * @param el Expression.
+ * @param el Expression part in SELECT clause.
  * @return {@code true} If expression contains aggregates.
  */
 private static boolean hasAggregates(GridSqlAst el) {
 if (el instanceof GridSqlAggregateFunction)
 return true;
 
+// If in SELECT clause we have a subquery expression with aggregate,
+// we should not split it. Run the whole subquery on MAP stage.
+if (el instanceof GridSqlQuery)
+return false;
+
 for (int i = 0; i < el.size(); i++) {
 if (hasAggregates(el.child(i)))
 return true;

http://git-wip-us.apache.org/repos/asf/ignite/blob/d10091d6/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
--
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
index 8e56d36..34101d2 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
@@ -37,6 +37,7 @@ import org.apache.ignite.cache.CacheKeyConfiguration;
 import org.apache.ignite.cache.CacheMode;
 import org.apache.ignite.cache.CachePeekMode;
 import org.apache.ignite.cache.affinity.Affinity;
+import org.apache.ignite.cache.affinity.AffinityKey;
 import org.apache.ignite.cache.affinity.AffinityKeyMapped;
 import org.apache.ignite.cache.query.QueryCursor;
 import org.apache.ignite.cache.query.SqlFieldsQuery;
@@ -291,6 +292,35 @@ public class IgniteSqlSplitterSelfTest extends 
GridCommonAbstractTest {
 }
 
 /**
+ */
+public void testSubQueryWithAggregate() {
+CacheConfiguration ccfg1 = cacheConfig("pers", true,
+AffinityKey.class, Person2.class);
+
+IgniteCache<AffinityKey, Person2> c1 = 
ignite(0).getOrCreateCache(ccfg1);
+
+try {
+int orgId = 100500;
+
+c1.put(new AffinityKey<>(1, orgId), new Person2(orgId, "Vasya"));
+c1.put(new AffinityKey<>(2, orgId), new Person2(orgId, "Another 
Vasya"));
+
+List<List> rs = c1.query(new SqlFieldsQuery("select name, " +
+"(select count(1) from Person2 q where q.orgId = p.orgId) " +
+"from Person2 p order by name desc")).getAll();
+
+assertEquals(2, rs.size());
+assertEquals("Vasya", rs.get(0).get(0));
+assertEquals(2L, rs.get(0).get(1));
+assertEquals("Another Vasya", rs.get(1).get(0));
+assertEquals(2L, rs.get(1).get(1));
+}
+finally {
+c1.destroy();
+}
+}
+
+/**
  * @throws InterruptedException If failed.
  */
 public void testDistributedJoinFromReplicatedCache() throws 
InterruptedException {



ignite git commit: IGNITE-4989 Assertion error in BPlusTree#finishTail - Fixes #1894.

2017-05-03 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master 28870dc71 -> 85f5309db


IGNITE-4989 Assertion error in BPlusTree#finishTail - Fixes #1894.

Signed-off-by: Sergi Vladykin <sergi.vlady...@gmail.com>


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

Branch: refs/heads/master
Commit: 85f5309db0b12f3dc1c843463537518e05c0fd80
Parents: 28870dc
Author: EdShangGG <eshangar...@gridgain.com>
Authored: Wed May 3 15:07:54 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed May 3 15:07:54 2017 +0300

--
 .../cache/database/tree/BPlusTree.java  |  6 +-
 .../processors/database/BPlusTreeSelfTest.java  | 75 
 2 files changed, 80 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/85f5309d/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index 648f35a..a4c09d5 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -443,6 +443,10 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 throws IgniteCheckedException {
 assert lvl == 0 : lvl; // Leaf.
 
+// Check the triangle invariant.
+if (io.getForward(leafAddr) != r.fwdId)
+return RETRY;
+
 final int cnt = io.getCount(leafAddr);
 
 assert cnt <= Short.MAX_VALUE: cnt;
@@ -3384,7 +3388,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 
 if (tail.lvl == 0) {
 // At the bottom level we can't have a tail without a sibling, 
it means we have higher levels.
-assert tail.sibling != null;
+assert tail.sibling != null : tail;
 
 return NOT_FOUND; // Lock upper level, we are at the bottom 
now.
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/85f5309d/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
index 0254c4c..a46242c 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/BPlusTreeSelfTest.java
@@ -27,8 +27,10 @@ import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.atomic.AtomicLongArray;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.concurrent.locks.Lock;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.configuration.MemoryPolicyConfiguration;
@@ -1225,6 +1227,79 @@ public class BPlusTreeSelfTest extends 
GridCommonAbstractTest {
 }
 
 /**
+ *
+ */
+public void testConcurrentGrowDegenerateTreeAndConcurrentRemove() throws 
Exception {
+//calculate tree size when split happens
+final TestTree t = createTestTree(true);
+long i = 0;
+
+for (; ; i++) {
+t.put(i);
+
+if (t.rootLevel() > 0)  //split happened
+break;
+}
+
+final long treeStartSize = i;
+
+final AtomicReference failed = new AtomicReference<>();
+
+for (int k = 0; k < 100; k++) {
+final TestTree tree = createTestTree(true);
+
+final AtomicBoolean start = new AtomicBoolean();
+
+final AtomicInteger ready = new AtomicInteger();
+
+Thread first = new Thread(new Runnable() {
+@Override public void run() {
+ready.incrementAndGet();
+
+while (!start.get()); //waiting without blocking
+
+try {
+  

[2/2] ignite git commit: IGNITE-3487: hidden _key and _val columns - Fixes #1865.

2017-04-26 Thread sergi
IGNITE-3487: hidden _key and _val columns - Fixes #1865.

Signed-off-by: Sergi Vladykin <sergi.vlady...@gmail.com>


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

Branch: refs/heads/ignite-2.0
Commit: efb7abce8323e0dc3449d7ce1bcd1d9558e6f2bc
Parents: 760cf95
Author: devozerov <voze...@gridgain.com>
Authored: Wed Apr 26 17:17:12 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed Apr 26 17:17:12 2017 +0300

--
 .../jdbc2/JdbcAbstractDmlStatementSelfTest.java |   6 +
 .../internal/jdbc2/JdbcMetadataSelfTest.java|  28 +-
 .../ignite/jdbc/JdbcMetadataSelfTest.java   |   8 +-
 .../org/apache/ignite/cache/QueryEntity.java|  81 
 .../configuration/CacheConfiguration.java   |  12 +-
 .../cache/query/GridCacheQueryManager.java  |  14 +-
 .../utils/PlatformConfigurationUtils.java   |   6 +
 .../query/GridQueryTypeDescriptor.java  |  12 +
 .../query/QueryTypeDescriptorImpl.java  |  34 +-
 .../internal/processors/query/QueryUtils.java   | 134 +--
 .../query/h2/DmlStatementsProcessor.java|  17 +-
 .../processors/query/h2/IgniteH2Indexing.java   | 191 -
 .../query/h2/dml/UpdatePlanBuilder.java |  32 +-
 .../query/h2/opt/GridH2AbstractKeyValueRow.java |  78 ++--
 .../query/h2/opt/GridH2CollocationModel.java|   4 +-
 .../query/h2/opt/GridH2IndexBase.java   |  15 +-
 .../query/h2/opt/GridH2KeyValueRowOffheap.java  |   6 +-
 .../query/h2/opt/GridH2KeyValueRowOnheap.java   |   6 +-
 .../query/h2/opt/GridH2ProxyIndex.java  | 204 ++
 .../query/h2/opt/GridH2ProxySpatialIndex.java   |  70 
 .../query/h2/opt/GridH2RowDescriptor.java   |  67 
 .../processors/query/h2/opt/GridH2Table.java| 114 +-
 .../query/h2/opt/GridLuceneIndex.java   |   4 +-
 .../processors/query/h2/sql/DmlAstUtils.java|  36 +-
 .../IgniteBinaryObjectQueryArgumentsTest.java   |   4 +-
 .../IgniteCacheAbstractFieldsQuerySelfTest.java |  15 +-
 .../IgniteCacheDeleteSqlQuerySelfTest.java  |   6 +-
 .../IgniteCacheUpdateSqlQuerySelfTest.java  |   8 +-
 .../cache/index/AbstractSchemaSelfTest.java |   3 +
 .../index/DynamicIndexAbstractSelfTest.java |   3 +
 .../query/IgniteSqlKeyValueFieldsTest.java  | 392 +++
 .../query/IgniteSqlSplitterSelfTest.java|   8 +-
 .../h2/GridIndexingSpiAbstractSelfTest.java |  10 +
 .../query/h2/sql/GridQueryParsingTest.java  |   2 +-
 .../IgniteCacheQuerySelfTestSuite.java  |   2 +
 .../core-test/config/cache-query-default.xml|   6 +
 .../cpp/core-test/src/cache_query_test.cpp  |  82 
 .../cpp/odbc-test/config/queries-default.xml|   5 +
 .../cpp/odbc-test/include/complex_type.h|  25 ++
 .../cpp/odbc-test/src/queries_test.cpp  | 148 +++
 .../Cache/Query/CacheLinqTest.cs|   7 +
 .../Cache/Query/CacheQueriesTest.cs |  52 +++
 .../IgniteConfigurationSerializerTest.cs|   4 +-
 .../Cache/Configuration/QueryEntity.cs  |  20 +
 .../IgniteConfigurationSection.xsd  |  14 +
 .../Impl/CacheQueryExpressionVisitor.cs |  14 +-
 .../Impl/CacheQueryModelVisitor.cs  |  12 +-
 47 files changed, 1822 insertions(+), 199 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/efb7abce/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcAbstractDmlStatementSelfTest.java
--
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcAbstractDmlStatementSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcAbstractDmlStatementSelfTest.java
index f23dde7..90f52bd 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcAbstractDmlStatementSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/jdbc2/JdbcAbstractDmlStatementSelfTest.java
@@ -44,6 +44,9 @@ public abstract class JdbcAbstractDmlStatementSelfTest 
extends GridCommonAbstrac
 /** SQL SELECT query for verification. */
 static final String SQL_SELECT = "select _key, id, firstName, lastName, 
age from Person";
 
+/** Alias for _key */
+private static final String KEY_ALIAS = "key";
+
 /** Connection. */
 protected Connection conn;
 
@@ -97,6 +100,9 @@ public abstract class JdbcAbstractDmlStatementSelfTest 
extends GridCommonAbstrac
 e.setKeyType(String.class.getName());
 e.setValueType("Person");
 
+e.setKeyFieldName(KEY_ALIAS);
+
+   

[1/2] ignite git commit: IGNITE-3487: hidden _key and _val columns - Fixes #1865.

2017-04-26 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-2.0 760cf952d -> efb7abce8


http://git-wip-us.apache.org/repos/asf/ignite/blob/efb7abce/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
index b9394ec..a00ea90 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
@@ -19,7 +19,7 @@ package org.apache.ignite.internal.processors.query.h2.opt;
 
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.TimeUnit;
@@ -34,6 +34,7 @@ import 
org.apache.ignite.internal.processors.cache.GridCacheContext;
 import org.apache.ignite.internal.processors.cache.KeyCacheObject;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
 import org.apache.ignite.internal.processors.query.h2.database.H2RowFactory;
+import org.apache.ignite.internal.processors.query.h2.database.H2TreeIndex;
 import org.apache.ignite.internal.util.offheap.unsafe.GridUnsafeMemory;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.lang.IgniteBiTuple;
@@ -41,6 +42,7 @@ import org.h2.command.ddl.CreateTableData;
 import org.h2.engine.Session;
 import org.h2.index.Index;
 import org.h2.index.IndexType;
+import org.h2.index.SpatialIndex;
 import org.h2.message.DbException;
 import org.h2.result.Row;
 import org.h2.result.SearchRow;
@@ -152,6 +154,14 @@ public class GridH2Table extends TableBase {
 
 assert idxs != null;
 
+List clones = new ArrayList<>(idxs.size());
+for (Index index: idxs) {
+Index clone = createDuplicateIndexIfNeeded(index);
+if (clone != null)
+   clones.add(clone);
+}
+idxs.addAll(clones);
+
 // Add scan index at 0 which is required by H2.
 if (idxs.size() >= 2 && index(0).getIndexType().isHash())
 idxs.add(0, new GridH2PrimaryScanIndex(this, index(1), index(0)));
@@ -365,6 +375,9 @@ public class GridH2Table extends TableBase {
 
 boolean reuseExisting = s != null;
 
+if (!(idxs.get(i) instanceof GridH2IndexBase))
+continue;
+
 s = index(i).takeSnapshot(s, qctx);
 
 if (reuseExisting && s == null) { // Existing snapshot was 
invalidated before we were able to reserve it.
@@ -373,7 +386,8 @@ public class GridH2Table extends TableBase {
 qctx.clearSnapshots();
 
 for (int j = 2; j < i; j++)
-index(j).releaseSnapshot();
+if ((idxs.get(j) instanceof GridH2IndexBase))
+index(j).releaseSnapshot();
 
 // Drop invalidated snapshot.
 actualSnapshot.compareAndSet(snapshots, null);
@@ -406,7 +420,8 @@ public class GridH2Table extends TableBase {
 destroyed = true;
 
 for (int i = 1, len = idxs.size(); i < len; i++)
-index(i).destroy();
+if (idxs.get(i) instanceof GridH2IndexBase)
+index(i).destroy();
 }
 finally {
 unlock(true);
@@ -561,6 +576,8 @@ public class GridH2Table extends TableBase {
 // Put row if absent to all indexes sequentially.
 // Start from 3 because 0 - Scan (don't need to update), 1 - 
PK hash (already updated), 2 - PK (already updated).
 while (++i < len) {
+if (!(idxs.get(i) instanceof GridH2IndexBase))
+continue;
 GridH2IndexBase idx = index(i);
 
 addToIndex(idx, pk, row, old, false);
@@ -577,6 +594,8 @@ public class GridH2Table extends TableBase {
 // Remove row from all indexes.
 // Start from 3 because 0 - Scan (don't need to update), 1 
- PK hash (already updated), 2 - PK (already updated).
 for (int i = 3, len = idxs.size(); i < len; i++) {
+if (!(idxs.get(i) instanceof GridH2IndexBase))
+continue;
 Row res = index(i).remove(old);
 
 assert eq(pk, res, old) : "\n" + old + "\n" + res + 
"\n" + i + " -> " + index(i).getName();
@@ -650,7 +669,8 @@ public class GridH2Table extends TableBase {
 ArrayList res = new ArrayList<>(idxs.size() - 2);
 
 for (int i = 2, len = idxs.size(); i < len; i++)
-res.add(index(i));
+

ignite git commit: IGNITE-4523 Allow distributed SQL query execution over explicit set of partitions - Fixes #1858.

2017-04-25 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-2.0 712398e12 -> 5ef610c07


IGNITE-4523 Allow distributed SQL query execution over explicit set of 
partitions - Fixes #1858.

Signed-off-by: Sergi Vladykin <sergi.vlady...@gmail.com>


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

Branch: refs/heads/ignite-2.0
Commit: 5ef610c07c947c7cf4884b946ef1649e5ce4da34
Parents: 712398e
Author: ascherbakoff <alexey.scherbak...@gmail.com>
Authored: Tue Apr 25 14:01:33 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Tue Apr 25 14:01:33 2017 +0300

--
 .../org/apache/ignite/cache/query/Query.java|  48 ++
 .../ignite/cache/query/SqlFieldsQuery.java  |  26 +
 .../org/apache/ignite/cache/query/SqlQuery.java |  26 +
 .../processors/cache/IgniteCacheProxy.java  |  14 +
 .../processors/query/GridQueryProcessor.java|   4 +-
 .../ignite/internal/util/GridIntIterator.java   |  33 +
 .../ignite/internal/util/GridIntList.java   |  21 +-
 .../ignite/internal/util/IgniteUtils.java   |  21 +-
 .../processors/query/h2/IgniteH2Indexing.java   |  14 +-
 .../query/h2/twostep/GridMapQueryExecutor.java  |   5 +-
 .../h2/twostep/GridReduceQueryExecutor.java | 222 ++-
 .../h2/twostep/msg/GridH2QueryRequest.java  |  64 +-
 ...stributedPartitionQueryAbstractSelfTest.java | 655 +++
 ...utedPartitionQueryConfigurationSelfTest.java |  92 +++
 ...butedPartitionQueryNodeRestartsSelfTest.java | 114 
 ...eCacheDistributedPartitionQuerySelfTest.java |  90 +++
 .../IgniteCacheQueryNodeRestartSelfTest2.java   |   8 +
 .../IgniteCacheQuerySelfTestSuite.java  |   6 +
 18 files changed, 1419 insertions(+), 44 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/5ef610c0/modules/core/src/main/java/org/apache/ignite/cache/query/Query.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/query/Query.java 
b/modules/core/src/main/java/org/apache/ignite/cache/query/Query.java
index 71161e7..c9ed464 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/query/Query.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/query/Query.java
@@ -18,7 +18,10 @@
 package org.apache.ignite.cache.query;
 
 import java.io.Serializable;
+import java.util.Arrays;
 import org.apache.ignite.IgniteCache;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.internal.util.typedef.internal.A;
 import org.apache.ignite.internal.util.typedef.internal.S;
 
 /**
@@ -93,6 +96,51 @@ public abstract class Query implements Serializable {
 return this;
 }
 
+/**
+ * Prepares the partitions.
+ *
+ * @param parts Partitions.
+ */
+protected int[] prepare(int[] parts) {
+if (parts == null)
+return null;
+
+A.notEmpty(parts, "Partitions");
+
+boolean sorted = true;
+
+// Try to do validation in one pass, if array is already sorted.
+for (int i = 0; i < parts.length; i++) {
+if (i < parts.length - 1)
+if (parts[i] > parts[i + 1])
+sorted = false;
+else if (sorted)
+validateDups(parts[i], parts[i + 1]);
+
+A.ensure(0 <= parts[i] && parts[i] < 
CacheConfiguration.MAX_PARTITIONS_COUNT, "Illegal partition");
+}
+
+// Sort and validate again.
+if (!sorted) {
+Arrays.sort(parts);
+
+for (int i = 0; i < parts.length; i++) {
+if (i < parts.length - 1)
+validateDups(parts[i], parts[i + 1]);
+}
+}
+
+return parts;
+}
+
+/**
+ * @param p1 Part 1.
+ * @param p2 Part 2.
+ */
+private void validateDups(int p1, int p2) {
+A.ensure(p1 != p2, "Partition duplicates are not allowed: " + p1);
+}
+
 /** {@inheritDoc} */
 @Override public String toString() {
 return S.toString(Query.class, this);

http://git-wip-us.apache.org/repos/asf/ignite/blob/5ef610c0/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java 
b/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java
index 8c3a4fe..9a7211b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java
+++ 
b/modules/cor

ignite git commit: ignite-2.0 - SQL: Geo tests fixed + distributed join on replicated cache

2017-04-24 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-2.0 de421ffc4 -> b58d58429


ignite-2.0 - SQL: Geo tests fixed + distributed join on replicated cache


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

Branch: refs/heads/ignite-2.0
Commit: b58d584290fc4ca5f18031fac582130ffab59a24
Parents: de421ff
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Mon Apr 24 16:31:25 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Mon Apr 24 16:31:25 2017 +0300

--
 .../processors/cache/IgniteCacheProxy.java  |  8 
 .../query/h2/H2IndexingAbstractGeoSelfTest.java |  2 +-
 .../processors/query/h2/IgniteH2Indexing.java   |  2 +-
 .../query/IgniteSqlSplitterSelfTest.java| 46 
 4 files changed, 40 insertions(+), 18 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/b58d5842/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
index 186212d..b38520d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
@@ -774,10 +774,6 @@ public class IgniteCacheProxy<K, V> extends 
AsyncSupportAdapter<IgniteCache<K, V
 opCtxCall != null && opCtxCall.isKeepBinary());
 
 if (qry instanceof SqlQuery) {
-if (isReplicatedDataNode() && 
((SqlQuery)qry).isDistributedJoins())
-throw new CacheException("Queries using distributed JOINs 
have to be run on partitioned cache, " +
-"not on replicated.");
-
 final SqlQuery p = (SqlQuery)qry;
 
 if ((p.isReplicatedOnly() && isReplicatedDataNode()) || 
ctx.isLocal() || qry.isLocal())
@@ -788,10 +784,6 @@ public class IgniteCacheProxy<K, V> extends 
AsyncSupportAdapter<IgniteCache<K, V
 }
 
 if (qry instanceof SqlFieldsQuery) {
-if (isReplicatedDataNode() && 
((SqlFieldsQuery)qry).isDistributedJoins())
-throw new CacheException("Queries using distributed JOINs 
have to be run on partitioned cache, " +
-"not on replicated.");
-
 SqlFieldsQuery p = (SqlFieldsQuery)qry;
 
 if ((p.isReplicatedOnly() && isReplicatedDataNode()) || 
ctx.isLocal() || qry.isLocal())

http://git-wip-us.apache.org/repos/asf/ignite/blob/b58d5842/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/H2IndexingAbstractGeoSelfTest.java
--
diff --git 
a/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/H2IndexingAbstractGeoSelfTest.java
 
b/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/H2IndexingAbstractGeoSelfTest.java
index f57d573..2a83941 100644
--- 
a/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/H2IndexingAbstractGeoSelfTest.java
+++ 
b/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/H2IndexingAbstractGeoSelfTest.java
@@ -632,7 +632,7 @@ public abstract class H2IndexingAbstractGeoSelfTest extends 
GridCacheAbstractSel
  */
 private static class Enemy {
 /** */
-@QuerySqlField
+@QuerySqlField(index = true)
 int campId;
 
 /** */

http://git-wip-us.apache.org/repos/asf/ignite/blob/b58d5842/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 bf0276a..798ca9b 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
@@ -1569,7 +1569,7 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
 Connection c = 

ignite git commit: ignite-2.0 - minor fixes

2017-04-24 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-2.0 f2996710d -> 8a1ded1cf


ignite-2.0 - minor fixes


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

Branch: refs/heads/ignite-2.0
Commit: 8a1ded1cf55b9aaf1f60d2657ec3ebf1e14fa8bc
Parents: f299671
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Mon Apr 24 10:43:03 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Mon Apr 24 10:43:03 2017 +0300

--
 .../query/h2/opt/GridH2SpatialIndex.java| 24 +++-
 .../query/h2/sql/GridQueryParsingTest.java  |  2 +-
 2 files changed, 19 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/8a1ded1c/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
--
diff --git 
a/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
 
b/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
index c8f3f68..9389290 100644
--- 
a/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
+++ 
b/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
@@ -20,7 +20,6 @@ package org.apache.ignite.internal.processors.query.h2.opt;
 import com.vividsolutions.jts.geom.Envelope;
 import com.vividsolutions.jts.geom.Geometry;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -29,13 +28,14 @@ import java.util.Map;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-import org.apache.ignite.*;
-import org.apache.ignite.internal.processors.query.h2.*;
-import org.apache.ignite.internal.util.*;
-import org.apache.ignite.internal.util.lang.*;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.processors.query.h2.H2Cursor;
+import org.apache.ignite.internal.util.GridCursorIteratorWrapper;
+import org.apache.ignite.internal.util.IgniteTree;
+import org.apache.ignite.internal.util.lang.GridCursor;
 import org.h2.engine.Session;
 import org.h2.index.Cursor;
+import org.h2.index.IndexLookupBatch;
 import org.h2.index.IndexType;
 import org.h2.index.SingleRowCursor;
 import org.h2.index.SpatialIndex;
@@ -132,6 +132,18 @@ public class GridH2SpatialIndex extends GridH2IndexBase 
implements SpatialIndex
 ctx = tbl.rowDescriptor().context();
 }
 
+/** {@inheritDoc} */
+@Override public IndexLookupBatch createLookupBatch(TableFilter[] filters, 
int filter) {
+if (getTable().isPartitioned()) {
+assert filter > 0; // Lookup batch will not be created for the 
first table filter.
+
+throw DbException.throwInternalError(
+"Table with a spatial index must be the first in the query: " 
+ getTable());
+}
+
+return null; // Support must be explicitly added.
+}
+
 /**
  * Check closed.
  */

http://git-wip-us.apache.org/repos/asf/ignite/blob/8a1ded1c/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
--
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
index 2085c9f..9782f28 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
@@ -506,7 +506,7 @@ public class GridQueryParsingTest extends 
GridCommonAbstractTest {
 
 // Schemas for index and table must match
 assertParseThrows("create index if not exists sch2.idx on sch1.Person 
(name)",
-DbException.class, "Schema name must match [90080-194]");
+DbException.class, "Schema name must match [90080-195]");
 
 assertParseThrows("create hash index if not exists idx on Person 
(name)",
 IgniteSQLException.class, "Only SPATIAL modifier is supported for 
CREATE INDEX");



ignite git commit: ignite-2.0 - H2 upgraded to 1.4.195

2017-04-23 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-2.0 045ae6652 -> 2d7fc5176


ignite-2.0 - H2 upgraded to 1.4.195


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

Branch: refs/heads/ignite-2.0
Commit: 2d7fc5176414f9ab47baad2305b700b5f198e037
Parents: 045ae66
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Mon Apr 24 01:52:22 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Mon Apr 24 01:52:22 2017 +0300

--
 .../processors/query/h2/IgniteH2Indexing.java   | 13 +
 .../query/h2/opt/GridH2IndexBase.java   |  3 ++
 .../h2/twostep/GridReduceQueryExecutor.java | 29 
 .../query/h2/twostep/GridThreadLocalTable.java  |  5 ++--
 parent/pom.xml  |  2 +-
 5 files changed, 8 insertions(+), 44 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/2d7fc517/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 8296945..bf0276a 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
@@ -462,7 +462,7 @@ public class IgniteH2Indexing implements GridQueryIndexing {
 
 PreparedStatement stmt = cache.get(sql);
 
-if (stmt != null && !stmt.isClosed() && 
!((JdbcStatement)stmt).wasCancelled()) {
+if (stmt != null && !stmt.isClosed() && 
!((JdbcStatement)stmt).isCancelled()) {
 assert stmt.getConnection() == c;
 
 return stmt;
@@ -669,17 +669,6 @@ public class IgniteH2Indexing implements GridQueryIndexing 
{
 }
 
 /**
- * @param coctx Cache object context.
- * @param o Object.
- * @return Object class.
- */
-private Class getClass(CacheObjectContext coctx, CacheObject o) {
-return isBinary(o) ?
-Object.class :
-o.value(coctx, false).getClass();
-}
-
-/**
  * @param space Space.
  * @return Cache object context.
  */

http://git-wip-us.apache.org/repos/asf/ignite/blob/2d7fc517/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
index 9dab752..81a9620 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
@@ -1360,6 +1360,9 @@ public abstract class GridH2IndexBase extends BaseIndex {
  * Start streaming.
  */
 private void start() {
+assert ctx != null;
+assert log != null: getName();
+
 remainingRanges = req.bounds().size();
 
 assert remainingRanges > 0;

http://git-wip-us.apache.org/repos/asf/ignite/blob/2d7fc517/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
index 0421ca0..d307c00 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.internal.processors.query.h2.twostep;
 
-import java.lang.reflect.Constructor;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -87,9 +86,6 @@ import org.h2.engine.Session;
 import org.h2.index.Cursor;
 import org.h2.index.Index;
 import org.h2.jdbc.JdbcConnection;
-import org.h2.jdbc.JdbcRes

ignite git commit: IGNITE-4594 - SQL Index hints - Fixes #1832.

2017-04-21 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-2.0 a6f8b6940 -> 457c55158


IGNITE-4594 - SQL Index hints - Fixes #1832.

Signed-off-by: Sergi Vladykin <sergi.vlady...@gmail.com>


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

Branch: refs/heads/ignite-2.0
Commit: 457c551581ee96891b62b834d8bbc0358679dade
Parents: a6f8b69
Author: skalashnikov <skalashni...@gridgain.com>
Authored: Fri Apr 21 16:40:32 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Fri Apr 21 16:40:32 2017 +0300

--
 .../query/h2/opt/GridH2SpatialIndex.java|  8 +++-
 .../query/h2/database/H2PkHashIndex.java|  6 ++-
 .../query/h2/database/H2TreeIndex.java  |  6 ++-
 .../query/h2/database/InlineIndexHelper.java| 14 --
 .../query/h2/opt/GridH2IndexBase.java   |  4 +-
 .../query/h2/opt/GridH2MetaTable.java   |  8 ++--
 .../query/h2/opt/GridH2PrimaryScanIndex.java|  7 ++-
 .../processors/query/h2/opt/GridH2Row.java  |  2 +-
 .../query/h2/opt/GridH2ScanIndex.java   |  4 +-
 .../processors/query/h2/opt/GridH2Table.java|  7 ++-
 .../query/h2/opt/GridH2TreeIndex.java   |  7 ++-
 .../processors/query/h2/sql/DmlAstUtils.java|  3 --
 .../processors/query/h2/sql/GridSqlAlias.java   | 20 -
 .../query/h2/sql/GridSqlQueryParser.java|  4 ++
 .../processors/query/h2/sql/GridSqlTable.java   | 46 
 .../query/h2/twostep/GridMergeIndex.java|  1 +
 .../query/h2/twostep/GridMergeIndexSorted.java  |  6 ++-
 .../h2/twostep/GridMergeIndexUnsorted.java  |  6 ++-
 .../query/h2/twostep/GridMergeTable.java| 12 +++--
 .../query/h2/twostep/GridThreadLocalTable.java  |  9 ++--
 .../query/IgniteSqlSplitterSelfTest.java| 34 ++-
 .../h2/database/InlineIndexHelperTest.java  |  8 
 .../query/h2/sql/GridQueryParsingTest.java  | 29 +---
 parent/pom.xml  |  2 +-
 24 files changed, 186 insertions(+), 67 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/457c5515/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
--
diff --git 
a/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
 
b/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
index bc27ae7..c8f3f68 100644
--- 
a/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
+++ 
b/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
@@ -22,6 +22,7 @@ import com.vividsolutions.jts.geom.Geometry;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -45,6 +46,7 @@ import org.h2.mvstore.rtree.MVRTreeMap;
 import org.h2.mvstore.rtree.SpatialKey;
 import org.h2.result.SearchRow;
 import org.h2.result.SortOrder;
+import org.h2.table.Column;
 import org.h2.table.IndexColumn;
 import org.h2.table.TableFilter;
 import org.h2.value.Value;
@@ -260,7 +262,8 @@ public class GridH2SpatialIndex extends GridH2IndexBase 
implements SpatialIndex
 }
 
 /** {@inheritDoc} */
-@Override public double getCost(Session ses, int[] masks, TableFilter[] 
filters, int filter, SortOrder sortOrder) {
+@Override public double getCost(Session ses, int[] masks, TableFilter[] 
filters, int filter,
+SortOrder sortOrder, HashSet cols) {
 return SpatialTreeIndex.getCostRangeIndex(masks,
 table.getRowCountApproximation(), columns) / 10;
 }
@@ -370,7 +373,8 @@ public class GridH2SpatialIndex extends GridH2IndexBase 
implements SpatialIndex
 }
 
 /** {@inheritDoc} */
-@Override public Cursor findByGeometry(TableFilter filter, SearchRow 
intersection) {
+@Override public Cursor findByGeometry(TableFilter filter, SearchRow 
first, SearchRow last,
+SearchRow intersection) {
 Lock l = lock.readLock();
 
 l.lock();

http://git-wip-us.apache.org/repos/asf/ignite/blob/457c5515/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/database/H2PkHashIndex.java
 
b/modules/indexing/src

ignite git commit: master - test adjusted

2017-04-18 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master 735ce60da -> 66a7eb3c6


master - test adjusted


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

Branch: refs/heads/master
Commit: 66a7eb3c6bd77d4af1a04f2224feac5c1a7e9fcb
Parents: 735ce60
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Tue Apr 18 17:21:20 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Tue Apr 18 17:21:20 2017 +0300

--
 ...teCacheJoinPartitionedAndReplicatedTest.java | 57 +++-
 1 file changed, 45 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/66a7eb3c/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheJoinPartitionedAndReplicatedTest.java
--
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheJoinPartitionedAndReplicatedTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheJoinPartitionedAndReplicatedTest.java
index d4772c1..46b8272 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheJoinPartitionedAndReplicatedTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheJoinPartitionedAndReplicatedTest.java
@@ -39,6 +39,7 @@ import java.util.List;
 import java.util.concurrent.Callable;
 
 import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
 import static org.apache.ignite.cache.CacheMode.REPLICATED;
 import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
 
@@ -90,6 +91,8 @@ public class IgniteCacheJoinPartitionedAndReplicatedTest 
extends GridCommonAbstr
 {
 CacheConfiguration ccfg = configuration(ORG_CACHE);
 
+ccfg.setCacheMode(PARTITIONED);
+
 QueryEntity entity = new QueryEntity();
 entity.setKeyType(Integer.class.getName());
 entity.setValueType(Organization.class.getName());
@@ -157,6 +160,21 @@ public class IgniteCacheJoinPartitionedAndReplicatedTest 
extends GridCommonAbstr
 super.afterTestsStopped();
 }
 
+/** {@inheritDoc} */
+@Override protected void beforeTest() throws Exception {
+super.beforeTest();
+
+Ignite client = grid(2);
+
+IgniteCache<Object, Object> personCache = client.cache(PERSON_CACHE);
+IgniteCache<Object, Object> orgCache = client.cache(ORG_CACHE);
+IgniteCache<Object, Object> orgCacheRepl = 
client.cache(ORG_CACHE_REPLICATED);
+
+personCache.clear();
+orgCache.clear();
+orgCacheRepl.clear();
+}
+
 /**
  * @throws Exception If failed.
  */
@@ -207,24 +225,39 @@ public class IgniteCacheJoinPartitionedAndReplicatedTest 
extends GridCommonAbstr
 checkQuery("select o.name, p._key, p.name " +
 "from \"orgRepl\".Organization o left join \"person\".Person p " +
 "on (p.orgId = o.id)", orgCacheRepl, 2);
+}
 
-// Left join from replicated to partitioned cache is not supported:
-// returns duplicates in result and must fail.
-checkQueryFails("select o.name, p._key, p.name " +
+/**
+ */
+public void testReplicatedToPartitionedLeftJoin() {
+Ignite client = grid(2);
+
+IgniteCache<Object, Object> personCache = client.cache(PERSON_CACHE);
+IgniteCache<Object, Object> orgCache = client.cache(ORG_CACHE);
+IgniteCache<Object, Object> orgCacheRepl = 
client.cache(ORG_CACHE_REPLICATED);
+
+List keys = primaryKeys(ignite(0).cache(PERSON_CACHE), 3, 
200_000);
+
+orgCache.put(keys.get(0), new Organization(0, "org1"));
+orgCacheRepl.put(keys.get(0), new Organization(0, "org1"));
+personCache.put(keys.get(1), new Person(0, "p1"));
+personCache.put(keys.get(2), new Person(0, "p2"));
+
+checkQuery("select o.name, p._key, p.name " +
 "from \"person\".Person p left join \"org\".Organization o " +
-"on (p.orgId = o.id)", orgCache);
+"on (p.orgId = o.id)", orgCache, 2);
 
-checkQueryFails("select o.name, p._key, p.name " +
+checkQuery("select o.name, p._key, p.name " +
 "from \"org\".Organizati

ignite git commit: ignite-2.0 - testExplain fix

2017-04-18 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master 920673c4d -> 227599fbb


ignite-2.0 - testExplain fix


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

Branch: refs/heads/master
Commit: 227599fbbd007427d817284d8be64386e18c4e7e
Parents: 920673c
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Tue Apr 18 12:09:52 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Tue Apr 18 12:09:52 2017 +0300

--
 .../processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/227599fb/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
--
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
index 5cb86b1..b40dd78 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheAbstractFieldsQuerySelfTest.java
@@ -369,7 +369,7 @@ public abstract class 
IgniteCacheAbstractFieldsQuerySelfTest extends GridCommonA
 for (List row : res)
 X.println(" : " + row);
 
-if (cacheMode() == PARTITIONED || !isReplicatedOnly()) {
+if (cacheMode() == PARTITIONED || (cacheMode() == REPLICATED && 
!isReplicatedOnly())) {
 assertEquals(2, res.size());
 
 
assertTrue(((String)res.get(1).get(0)).contains(GridSqlQuerySplitter.mergeTableIdentifier(0)));



[1/2] ignite git commit: ignite-4955 - Correctly execute SQL queries started on replicated cache. - Fixes #1806.

2017-04-17 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master 86c405873 -> ded599aed


http://git-wip-us.apache.org/repos/asf/ignite/blob/ded599ae/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
--
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
 
b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
index 43083a8..de341d0 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite.java
@@ -25,8 +25,8 @@ import 
org.apache.ignite.internal.processors.cache.CachePartitionedQueryDetailMe
 import 
org.apache.ignite.internal.processors.cache.CachePartitionedQueryDetailMetricsLocalSelfTest;
 import 
org.apache.ignite.internal.processors.cache.CachePartitionedQueryMetricsDistributedSelfTest;
 import 
org.apache.ignite.internal.processors.cache.CachePartitionedQueryMetricsLocalSelfTest;
-import org.apache.ignite.internal.processors.cache.CacheQueryNewClientSelfTest;
 import org.apache.ignite.internal.processors.cache.CacheQueryEvictDataLostTest;
+import org.apache.ignite.internal.processors.cache.CacheQueryNewClientSelfTest;
 import 
org.apache.ignite.internal.processors.cache.CacheReplicatedQueryDetailMetricsDistributedSelfTest;
 import 
org.apache.ignite.internal.processors.cache.CacheReplicatedQueryDetailMetricsLocalSelfTest;
 import 
org.apache.ignite.internal.processors.cache.CacheReplicatedQueryMetricsDistributedSelfTest;
@@ -77,6 +77,7 @@ import 
org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheP
 import 
org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryAbstractDistributedJoinSelfTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryNoRebalanceSelfTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheReplicatedFieldsQueryP2PEnabledSelfTest;
+import 
org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheReplicatedFieldsQueryROSelfTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheReplicatedFieldsQuerySelfTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheReplicatedQueryP2PDisabledSelfTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheReplicatedQuerySelfTest;
@@ -188,6 +189,7 @@ public class IgniteCacheQuerySelfTestSuite extends 
TestSuite {
 suite.addTestSuite(SqlFieldsQuerySelfTest.class);
 suite.addTestSuite(IgniteCacheLocalFieldsQuerySelfTest.class);
 suite.addTestSuite(IgniteCacheReplicatedFieldsQuerySelfTest.class);
+suite.addTestSuite(IgniteCacheReplicatedFieldsQueryROSelfTest.class);
 
suite.addTestSuite(IgniteCacheReplicatedFieldsQueryP2PEnabledSelfTest.class);
 suite.addTestSuite(IgniteCachePartitionedFieldsQuerySelfTest.class);
 suite.addTestSuite(IgniteCacheAtomicFieldsQuerySelfTest.class);



[2/2] ignite git commit: ignite-4955 - Correctly execute SQL queries started on replicated cache. - Fixes #1806.

2017-04-17 Thread sergi
ignite-4955 - Correctly execute SQL queries started on replicated cache. - 
Fixes #1806.

Signed-off-by: Sergi Vladykin <sergi.vlady...@gmail.com>


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

Branch: refs/heads/master
Commit: ded599aed95501d7553dcf326590d9440a5e9ef7
Parents: 86c4058
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Mon Apr 17 10:03:20 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Mon Apr 17 10:03:20 2017 +0300

--
 .../ignite/cache/query/SqlFieldsQuery.java  |  25 +++
 .../org/apache/ignite/cache/query/SqlQuery.java |  31 +++-
 .../processors/cache/IgniteCacheProxy.java  |   4 +-
 .../cache/query/GridCacheSqlQuery.java  | 114 --
 .../cache/query/GridCacheTwoStepQuery.java  |  26 +++-
 .../processors/query/h2/IgniteH2Indexing.java   |  34 ++--
 .../query/h2/sql/GridSqlQuerySplitter.java  |  85 --
 .../query/h2/twostep/GridMapQueryExecutor.java  |  68 +---
 .../h2/twostep/GridReduceQueryExecutor.java | 154 ++-
 .../h2/twostep/msg/GridH2QueryRequest.java  | 109 ++---
 .../IgniteCacheAbstractFieldsQuerySelfTest.java |  51 +++---
 ...teCacheJoinPartitionedAndReplicatedTest.java |  10 ++
 ...iteCacheReplicatedFieldsQueryROSelfTest.java |  27 
 .../query/IgniteSqlSplitterSelfTest.java| 125 +--
 .../IgniteCacheQuerySelfTestSuite.java  |   4 +-
 15 files changed, 563 insertions(+), 304 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/ded599ae/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java 
b/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java
index 1f10ca8..8c3a4fe 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/cache/query/SqlFieldsQuery.java
@@ -67,6 +67,9 @@ public class SqlFieldsQuery extends Query<List> {
 /** */
 private boolean distributedJoins;
 
+/** */
+private boolean replicatedOnly;
+
 /**
  * Constructs SQL fields query.
  *
@@ -236,6 +239,28 @@ public class SqlFieldsQuery extends Query<List> {
 return (SqlFieldsQuery)super.setLocal(loc);
 }
 
+/**
+ * Specify if the query contains only replicated tables.
+ * This is a hint for potentially more effective execution.
+ *
+ * @param replicatedOnly The query contains only replicated tables.
+ * @return {@code this} For chaining.
+ */
+public SqlFieldsQuery setReplicatedOnly(boolean replicatedOnly) {
+this.replicatedOnly = replicatedOnly;
+
+return this;
+}
+
+/**
+ * Check is the query contains only replicated tables.
+ *
+ * @return {@code true} If the query contains only replicated tables.
+ */
+public boolean isReplicatedOnly() {
+return replicatedOnly;
+}
+
 /** {@inheritDoc} */
 @Override public String toString() {
 return S.toString(SqlFieldsQuery.class, this);

http://git-wip-us.apache.org/repos/asf/ignite/blob/ded599ae/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java 
b/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java
index d77e5ce..944c70e 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java
@@ -53,6 +53,9 @@ public final class SqlQuery<K, V> extends 
Query<Cache.Entry<K, V>> {
 /** */
 private boolean distributedJoins;
 
+/** */
+private boolean replicatedOnly;
+
 /**
  * Constructs query for the given type name and SQL query.
  *
@@ -197,7 +200,7 @@ public final class SqlQuery<K, V> extends 
Query<Cache.Entry<K, V>> {
  * @param type Type.
  * @return {@code this} For chaining.
  */
-public SqlQuery setType(Class type) {
+public SqlQuery<K, V> setType(Class type) {
 return setType(QueryUtils.typeName(type));
 }
 
@@ -210,7 +213,7 @@ public final class SqlQuery<K, V> extends 
Query<Cache.Entry<K, V>> {
  * @param distributedJoins Distributed joins enabled.
  * @return {@code this} For chaining.
  */
-   

ignite git commit: IGNITE-4992: Fix Segmented SQL Index self tests. - Fixes #1801.

2017-04-16 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master 8fa438c65 -> 0c0cf2c00


IGNITE-4992: Fix Segmented SQL Index self tests. - Fixes #1801.

Signed-off-by: Sergi Vladykin <sergi.vlady...@gmail.com>


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

Branch: refs/heads/master
Commit: 0c0cf2c00355ae2aec340473ed19dc5f0e0ddef0
Parents: 8fa438c
Author: Andrey V. Mashenkov <andrey.mashen...@gmail.com>
Authored: Sun Apr 16 15:28:20 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Sun Apr 16 15:28:20 2017 +0300

--
 .../query/h2/opt/GridH2TreeIndex.java   |   2 +-
 ...gniteSqlSegmentedIndexMultiNodeSelfTest.java |  28 
 .../query/IgniteSqlSegmentedIndexSelfTest.java  | 154 +++
 .../IgniteCacheQuerySelfTestSuite.java  |   2 +
 4 files changed, 118 insertions(+), 68 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/0c0cf2c0/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 4a12c78..cf75395 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
@@ -290,7 +290,7 @@ public class GridH2TreeIndex extends GridH2IndexBase 
implements Comparatorhttp://git-wip-us.apache.org/repos/asf/ignite/blob/0c0cf2c0/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSegmentedIndexMultiNodeSelfTest.java
--
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSegmentedIndexMultiNodeSelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSegmentedIndexMultiNodeSelfTest.java
new file mode 100644
index 000..549ea5e
--- /dev/null
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSegmentedIndexMultiNodeSelfTest.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query;
+
+/**
+ * Tests for correct distributed queries with index consisted of many segments 
running on multi-node grid.
+ */
+public class IgniteSqlSegmentedIndexMultiNodeSelfTest extends 
IgniteSqlSegmentedIndexSelfTest {
+/** {@inheritDoc} */
+@Override protected int nodesCount() {
+return 4;
+}
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/0c0cf2c0/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSegmentedIndexSelfTest.java
--
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSegmentedIndexSelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSegmentedIndexSelfTest.java
index 8408ad0..1715a56 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSegmentedIndexSelfTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSegmentedIndexSelfTest.java
@@ -18,11 +18,13 @@
 package org.apache.ignite.internal.processors.query;
 
 import java.io.Serializable;
+import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Random;
 import java.util.Set;
 import javax.cache.Cache;
+import org.apache.ignite.Igni

[4/4] ignite git commit: Merge remote-tracking branch 'origin/ignite-3477-master' into ignite-3477-master

2017-04-11 Thread sergi
Merge remote-tracking branch 'origin/ignite-3477-master' into ignite-3477-master


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

Branch: refs/heads/ignite-3477-master
Commit: a68045f0d8871da5619e9f8f01700b6f3341a18f
Parents: f9b6424 a45dd88
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Tue Apr 11 12:42:49 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Tue Apr 11 12:42:49 2017 +0300

--
 .../internal/pagemem/impl/PageNoStoreImpl.java |  0
 .../distributed/dht/GridDhtLocalPartition.java |  8 ++--
 .../cache/transactions/IgniteTxHandler.java|  2 +-
 ...aryObjectsAtomicNearDisabledOnheapSelfTest.java | 17 +
 ...GridCacheBinaryObjectsAtomicOnheapSelfTest.java | 17 +
 ...jectsPartitionedNearDisabledOnheapSelfTest.java | 17 +
 ...acheBinaryObjectsPartitionedOnheapSelfTest.java | 17 +
 7 files changed, 71 insertions(+), 7 deletions(-)
--




[2/4] ignite git commit: ignite-3477-master - drop FairAffinityFunction

2017-04-11 Thread sergi
http://git-wip-us.apache.org/repos/asf/ignite/blob/f9b64246/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheExchangeMessageDuplicatedStateTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheExchangeMessageDuplicatedStateTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheExchangeMessageDuplicatedStateTest.java
index 294951f..ef7c7a7 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheExchangeMessageDuplicatedStateTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheExchangeMessageDuplicatedStateTest.java
@@ -22,7 +22,6 @@ import java.util.List;
 import java.util.Map;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.Ignition;
-import org.apache.ignite.cache.affinity.fair.FairAffinityFunction;
 import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
 import org.apache.ignite.cluster.ClusterNode;
 import org.apache.ignite.configuration.CacheConfiguration;
@@ -54,12 +53,6 @@ public class CacheExchangeMessageDuplicatedStateTest extends 
GridCommonAbstractT
 private static final String AFF1_CACHE2 = "a1c2";
 
 /** */
-private static final String AFF2_CACHE1 = "a2c1";
-
-/** */
-private static final String AFF2_CACHE2 = "a2c2";
-
-/** */
 private static final String AFF3_CACHE1 = "a3c1";
 
 /** */
@@ -69,9 +62,6 @@ public class CacheExchangeMessageDuplicatedStateTest extends 
GridCommonAbstractT
 private static final String AFF4_FILTER_CACHE2 = "a4c2";
 
 /** */
-private static final String AFF5_FILTER_CACHE1 = "a5c1";
-
-/** */
 private boolean client;
 
 /** {@inheritDoc} */
@@ -104,18 +94,6 @@ public class CacheExchangeMessageDuplicatedStateTest 
extends GridCommonAbstractT
 }
 {
 CacheConfiguration ccfg = new CacheConfiguration();
-ccfg.setName(AFF2_CACHE1);
-ccfg.setAffinity(new FairAffinityFunction(false,512));
-ccfgs.add(ccfg);
-}
-{
-CacheConfiguration ccfg = new CacheConfiguration();
-ccfg.setName(AFF2_CACHE2);
-ccfg.setAffinity(new FairAffinityFunction(false,512));
-ccfgs.add(ccfg);
-}
-{
-CacheConfiguration ccfg = new CacheConfiguration();
 ccfg.setName(AFF3_CACHE1);
 ccfg.setBackups(3);
 
@@ -138,13 +116,6 @@ public class CacheExchangeMessageDuplicatedStateTest 
extends GridCommonAbstractT
 ccfg.setAffinity(new RendezvousAffinityFunction());
 ccfgs.add(ccfg);
 }
-{
-CacheConfiguration ccfg = new CacheConfiguration();
-ccfg.setName(AFF5_FILTER_CACHE1);
-ccfg.setNodeFilter(new TestNodeFilter());
-ccfg.setAffinity(new FairAffinityFunction());
-ccfgs.add(ccfg);
-}
 
 cfg.setCacheConfiguration(ccfgs.toArray(new 
CacheConfiguration[ccfgs.size()]));
 
@@ -265,11 +236,9 @@ public class CacheExchangeMessageDuplicatedStateTest 
extends GridCommonAbstractT
 assertNotNull(dupPartsData);
 
 checkFullMessage(AFF1_CACHE1, AFF1_CACHE2, dupPartsData, msg);
-checkFullMessage(AFF2_CACHE1, AFF2_CACHE2, dupPartsData, msg);
 checkFullMessage(AFF4_FILTER_CACHE1, AFF4_FILTER_CACHE2, dupPartsData, 
msg);
 
 assertFalse(dupPartsData.containsKey(CU.cacheId(AFF3_CACHE1)));
-assertFalse(dupPartsData.containsKey(CU.cacheId(AFF5_FILTER_CACHE1)));
 
 Map> partCntrs = 
GridTestUtils.getFieldValue(msg, "partCntrs");
 
@@ -288,11 +257,9 @@ public class CacheExchangeMessageDuplicatedStateTest 
extends GridCommonAbstractT
 assertNotNull(dupPartsData);
 
 checkSingleMessage(AFF1_CACHE1, AFF1_CACHE2, dupPartsData, msg);
-checkSingleMessage(AFF2_CACHE1, AFF2_CACHE2, dupPartsData, msg);
 checkSingleMessage(AFF4_FILTER_CACHE1, AFF4_FILTER_CACHE2, 
dupPartsData, msg);
 
 assertFalse(dupPartsData.containsKey(CU.cacheId(AFF3_CACHE1)));
-assertFalse(dupPartsData.containsKey(CU.cacheId(AFF5_FILTER_CACHE1)));
 
 Map> partCntrs = 
GridTestUtils.getFieldValue(msg, "partCntrs");
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/f9b64246/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
index db112a1..1194a27 100644
--- 

[3/4] ignite git commit: ignite-3477-master - drop FairAffinityFunction

2017-04-11 Thread sergi
ignite-3477-master - drop FairAffinityFunction


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

Branch: refs/heads/ignite-3477-master
Commit: f9b64246f4bce407cb52853bdf296270ece69036
Parents: 01b088f
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Tue Apr 11 12:42:19 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Tue Apr 11 12:42:19 2017 +0300

--
 .../affinity/fair/FairAffinityFunction.java | 1159 --
 .../cache/affinity/fair/package-info.java   |   21 -
 .../utils/PlatformConfigurationUtils.java   |   40 +-
 .../GridCacheAffinityBackupsSelfTest.java   |   20 +-
 .../ignite/IgniteCacheAffinitySelfTest.java |   12 +-
 .../affinity/AffinityClientNodeSelfTest.java|   15 +-
 .../affinity/AffinityHistoryCleanupTest.java|3 +-
 .../fair/FairAffinityDynamicCacheSelfTest.java  |   86 --
 ...airAffinityFunctionBackupFilterSelfTest.java |   44 -
 ...ffinityFunctionExcludeNeighborsSelfTest.java |   31 -
 .../fair/FairAffinityFunctionNodesSelfTest.java |  247 
 .../fair/FairAffinityFunctionSelfTest.java  |   31 -
 .../affinity/fair/FairAffinityNodesRestart.java |  130 --
 .../local/LocalAffinityFunctionTest.java|4 +-
 ...CacheExchangeMessageDuplicatedStateTest.java |   33 -
 .../cache/CrossCacheTxRandomOperationsTest.java |   36 +-
 .../GridCacheVersionTopologyChangeTest.java |5 -
 .../IgniteClientAffinityAssignmentSelfTest.java |   20 +-
 ...eDynamicCacheStartNoExchangeTimeoutTest.java |3 -
 ...eLateAffinityAssignmentFairAffinityTest.java |   32 -
 ...teCacheClientNodePartitionsExchangeTest.java |   18 +-
 .../IgniteCacheTxFairAffinityNodeJoinTest.java  |   35 -
 ...arDisabledFairAffinityPutGetRestartTest.java |   35 -
 ...ledFairAffinityMultiNodeFullApiSelfTest.java |   36 -
 .../AtomicPutAllChangingTopologyTest.java   |4 +-
 ...nlyFairAffinityMultiNodeFullApiSelfTest.java |   36 -
 ...micFairAffinityMultiNodeFullApiSelfTest.java |   35 -
 ...ledFairAffinityMultiNodeFullApiSelfTest.java |   36 -
 ...derFairAffinityMultiNodeFullApiSelfTest.java |   36 -
 ...nlyFairAffinityMultiNodeFullApiSelfTest.java |   35 -
 ...xcludeNeighborsMultiNodeFullApiSelfTest.java |   36 -
 ...tedFairAffinityMultiNodeFullApiSelfTest.java |   35 -
 ...nedFairAffinityMultiNodeFullApiSelfTest.java |   37 -
 ...OnlyFairAffinityMultiJvmFullApiSelfTest.java |   31 -
 ...omicFairAffinityMultiJvmFullApiSelfTest.java |   31 -
 ...bledFairAffinityMultiJvmFullApiSelfTest.java |   36 -
 ...rderFairAffinityMultiJvmFullApiSelfTest.java |   31 -
 ...OnlyFairAffinityMultiJvmFullApiSelfTest.java |   31 -
 ...onedFairAffinityMultiJvmFullApiSelfTest.java |   31 -
 ...bledFairAffinityMultiJvmFullApiSelfTest.java |   31 -
 .../configvariations/ConfigVariations.java  |2 -
 .../IgniteCacheFailoverTestSuite.java   |4 -
 ...IgniteCacheFullApiMultiJvmSelfTestSuite.java |   15 -
 .../IgniteCacheFullApiSelfTestSuite.java|   24 +-
 .../ignite/testsuites/IgniteCacheTestSuite.java |9 +-
 .../testsuites/IgniteCacheTestSuite2.java   |4 -
 .../testsuites/IgniteCacheTestSuite5.java   |   10 -
 47 files changed, 37 insertions(+), 2639 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/f9b64246/modules/core/src/main/java/org/apache/ignite/cache/affinity/fair/FairAffinityFunction.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/affinity/fair/FairAffinityFunction.java
 
b/modules/core/src/main/java/org/apache/ignite/cache/affinity/fair/FairAffinityFunction.java
deleted file mode 100644
index fb19fb5..000
--- 
a/modules/core/src/main/java/org/apache/ignite/cache/affinity/fair/FairAffinityFunction.java
+++ /dev/null
@@ -1,1159 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations un

[1/4] ignite git commit: ignite-3477-master - drop FairAffinityFunction

2017-04-11 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-3477-master a45dd888e -> a68045f0d


http://git-wip-us.apache.org/repos/asf/ignite/blob/f9b64246/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java
 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java
index 934047d..3e79da0 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java
@@ -22,10 +22,6 @@ import org.apache.ignite.GridCacheAffinityBackupsSelfTest;
 import org.apache.ignite.IgniteCacheAffinitySelfTest;
 import org.apache.ignite.cache.affinity.AffinityClientNodeSelfTest;
 import org.apache.ignite.cache.affinity.AffinityHistoryCleanupTest;
-import org.apache.ignite.cache.affinity.fair.FairAffinityDynamicCacheSelfTest;
-import org.apache.ignite.cache.affinity.fair.FairAffinityFunctionNodesSelfTest;
-import org.apache.ignite.cache.affinity.fair.FairAffinityFunctionSelfTest;
-import org.apache.ignite.cache.affinity.fair.FairAffinityNodesRestart;
 import org.apache.ignite.cache.affinity.local.LocalAffinityFunctionTest;
 import org.apache.ignite.internal.processors.cache.CacheNearReaderUpdateTest;
 import org.apache.ignite.internal.processors.cache.CacheRebalancingSelfTest;
@@ -37,7 +33,6 @@ import 
org.apache.ignite.internal.processors.cache.IgniteCachePutStackOverflowSe
 import 
org.apache.ignite.internal.processors.cache.IgniteCacheReadThroughEvictionsVariationsSuite;
 import 
org.apache.ignite.internal.processors.cache.IgniteCacheStoreCollectionTest;
 import 
org.apache.ignite.internal.processors.cache.PartitionsExchangeOnDiscoveryHistoryOverflowTest;
-import 
org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentFairAffinityTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentNodeJoinValidationTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest;
 import 
org.apache.ignite.internal.processors.cache.distributed.IgniteActiveOnStartNodeJoinValidationSelfTest;
@@ -65,7 +60,6 @@ public class IgniteCacheTestSuite5 extends TestSuite {
 suite.addTestSuite(IgniteCachePutStackOverflowSelfTest.class);
 
 suite.addTestSuite(CacheLateAffinityAssignmentTest.class);
-suite.addTestSuite(CacheLateAffinityAssignmentFairAffinityTest.class);
 
suite.addTestSuite(CacheLateAffinityAssignmentNodeJoinValidationTest.class);
 
suite.addTestSuite(IgniteActiveOnStartNodeJoinValidationSelfTest.class);
 suite.addTestSuite(EntryVersionConsistencyReadThroughTest.class);
@@ -81,10 +75,6 @@ public class IgniteCacheTestSuite5 extends TestSuite {
 suite.addTestSuite(CacheRebalancingSelfTest.class);
 
 // Affinity tests.
-suite.addTestSuite(FairAffinityFunctionNodesSelfTest.class);
-suite.addTestSuite(FairAffinityFunctionSelfTest.class);
-suite.addTestSuite(FairAffinityDynamicCacheSelfTest.class);
-suite.addTestSuite(FairAffinityNodesRestart.class);
 suite.addTestSuite(GridCacheAffinityBackupsSelfTest.class);
 suite.addTestSuite(IgniteCacheAffinitySelfTest.class);
 suite.addTestSuite(AffinityClientNodeSelfTest.class);



[1/2] ignite git commit: IGNITE-4524: Index direct lookup for SQL MIN() and MAX() #1749 - Fixes #1749.

2017-04-10 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-3477-master c2d8bd9a4 -> c449d6e93


IGNITE-4524: Index direct lookup for SQL MIN() and MAX() #1749 - Fixes #1749.

Signed-off-by: Sergi Vladykin <sergi.vlady...@gmail.com>


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

Branch: refs/heads/ignite-3477-master
Commit: 035b0fa8712489b0ba86bd612611f258c2e85f5d
Parents: c2d8bd9
Author: skalashnikov <skalashni...@gridgain.com>
Authored: Mon Apr 10 10:19:03 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Mon Apr 10 10:19:03 2017 +0300

--
 .../cache/database/tree/BPlusTree.java  | 103 -
 .../apache/ignite/internal/util/IgniteTree.java |  14 +
 .../processors/database/BPlusTreeSelfTest.java  |  28 +-
 .../query/h2/database/H2TreeIndex.java  |  16 +-
 .../query/h2/opt/GridH2TreeIndex.java   |  29 +-
 .../query/h2/IgniteSqlQueryMinMaxTest.java  | 376 +++
 .../query/h2/opt/GridH2TableSelfTest.java   |  50 +++
 .../IgniteCacheQuerySelfTestSuite.java  |   2 +
 8 files changed, 603 insertions(+), 15 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/035b0fa8/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index f3d020b..e5fd0ab 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -251,7 +251,13 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 g.backId(0L); // Usually we'll go left down and don't need it.
 
 int cnt = io.getCount(pageAddr);
-int idx = findInsertionPoint(io, pageAddr, 0, cnt, g.row, g.shift);
+
+int idx;
+if (g.findLast)
+idx = io.isLeaf()? cnt - 1: -cnt - 1; //(-cnt - 1) mimics 
not_found result of findInsertionPoint
+//in case of cnt = 0 we end up in 'not found' branch below 
with idx being 0 after fix() adjustment
+else
+idx = findInsertionPoint(io, pageAddr, 0, cnt, g.row, g.shift);
 
 boolean found = idx >= 0;
 
@@ -949,6 +955,76 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 }
 }
 
+/** {@inheritDoc} */
+@Override public T findFirst() throws IgniteCheckedException {
+checkDestroyed();
+
+try {
+long firstPageId;
+
+long metaPage = acquirePage(metaPageId);
+try {
+firstPageId = getFirstPageId(metaPageId, metaPage, 0);
+}
+finally {
+releasePage(metaPageId, metaPage);
+}
+
+long page = acquirePage(firstPageId);
+try {
+long pageAddr = readLock(firstPageId, page);
+
+try {
+BPlusIO io = io(pageAddr);
+
+int cnt = io.getCount(pageAddr);
+
+if (cnt == 0)
+return null;
+
+return getRow(io, pageAddr, 0);
+}
+finally {
+readUnlock(firstPageId, page, pageAddr);
+}
+}
+finally {
+releasePage(firstPageId, page);
+}
+}
+catch (IgniteCheckedException e) {
+throw new IgniteCheckedException("Runtime failure on first row 
lookup", e);
+}
+catch (RuntimeException e) {
+throw new IgniteException("Runtime failure on first row lookup", 
e);
+}
+catch (AssertionError e) {
+throw new AssertionError("Assertion error on first row lookup", e);
+}
+}
+
+/** {@inheritDoc} */
+@SuppressWarnings("unchecked")
+@Override public T findLast() throws IgniteCheckedException {
+checkDestroyed();
+
+try {
+GetOne g = new GetOne(null, null, true);
+doFind(g);
+
+return (T)g.row;
+}
+catch (IgniteCheckedException e) {
+throw new IgniteCheckedException("Runtime failure on last row 
lookup", e);
+

[2/2] ignite git commit: ignite-3477-master - minor

2017-04-10 Thread sergi
ignite-3477-master - minor


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

Branch: refs/heads/ignite-3477-master
Commit: c449d6e93ffda3e895615d5958a1b00e476e3ad6
Parents: 035b0fa
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Mon Apr 10 10:22:03 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Mon Apr 10 10:22:03 2017 +0300

--
 .../internal/processors/cache/database/tree/BPlusTree.java| 7 +++
 1 file changed, 7 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/c449d6e9/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index e5fd0ab..648f35a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -971,6 +971,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 }
 
 long page = acquirePage(firstPageId);
+
 try {
 long pageAddr = readLock(firstPageId, page);
 
@@ -1001,6 +1002,9 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 catch (AssertionError e) {
 throw new AssertionError("Assertion error on first row lookup", e);
 }
+finally {
+checkDestroyed();
+}
 }
 
 /** {@inheritDoc} */
@@ -1023,6 +1027,9 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 catch (AssertionError e) {
 throw new AssertionError("Assertion error on last row lookup", e);
 }
+finally {
+checkDestroyed();
+}
 }
 
 /**



ignite git commit: ignite-3477 - destroy checks on api exit

2017-04-07 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-3477-master 1970982a4 -> 5c6d5503e


ignite-3477 - destroy checks on api exit


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

Branch: refs/heads/ignite-3477-master
Commit: 5c6d5503ef41dea91fac70caa140c1bf798d3c5f
Parents: 1970982
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Fri Apr 7 12:15:05 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Fri Apr 7 12:15:05 2017 +0300

--
 .../processors/cache/database/tree/BPlusTree.java | 18 ++
 1 file changed, 14 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/5c6d5503/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index 1290e5b..f3d020b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -944,6 +944,9 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 catch (AssertionError e) {
 throw new AssertionError("Assertion error on bounds: [lower=" + 
lower + ", upper=" + upper + "]", e);
 }
+finally {
+checkDestroyed();
+}
 }
 
 /**
@@ -972,6 +975,9 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 catch (AssertionError e) {
 throw new AssertionError("Assertion error on lookup row: " + row, 
e);
 }
+finally {
+checkDestroyed();
+}
 }
 
 /**
@@ -1530,6 +1536,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 }
 finally {
 x.releaseAll();
+checkDestroyed();
 }
 }
 
@@ -1684,6 +1691,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 }
 finally {
 r.releaseAll();
+checkDestroyed();
 }
 }
 
@@ -1857,6 +1865,8 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 }
 }
 
+checkDestroyed();
+
 return cnt;
 }
 
@@ -1931,6 +1941,9 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 catch (AssertionError e) {
 throw new AssertionError("Assertion error on row: " + row, e);
 }
+finally {
+checkDestroyed();
+}
 }
 
 /**
@@ -2249,17 +2262,14 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 
 /**
  * @param g Other operation to copy from.
- * @return {@code this}.
  */
-final Get copyFrom(Get g) {
+final void copyFrom(Get g) {
 rmvId = g.rmvId;
 rootLvl = g.rootLvl;
 pageId = g.pageId;
 fwdId = g.fwdId;
 backId = g.backId;
 shift = g.shift;
-
-return this;
 }
 
 /**



[09/12] ignite git commit: review

2017-04-06 Thread sergi
review


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

Branch: refs/heads/ignite-3477-master
Commit: 3ed1cbf64bbf3d994f071c19db638e4542c515c3
Parents: 6495975
Author: Igor Seliverstov 
Authored: Wed Apr 5 17:48:24 2017 +0300
Committer: Igor Seliverstov 
Committed: Wed Apr 5 17:48:24 2017 +0300

--
 .../cache/database/freelist/FreeListImpl.java   |   9 +-
 .../cache/database/freelist/PagesList.java  | 114 ++-
 2 files changed, 62 insertions(+), 61 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/3ed1cbf6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
index 8ca95f0..b74c85e 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
@@ -58,9 +58,6 @@ public class FreeListImpl extends PagesList implements 
FreeList, ReuseList {
 private static final Long FAIL_L = Long.MAX_VALUE;
 
 /** */
-private static final Boolean FAIL_B = null;
-
-/** */
 private static final int MIN_PAGE_FREE_SPACE = 8;
 
 /** */
@@ -437,7 +434,7 @@ public class FreeListImpl extends PagesList implements 
FreeList, ReuseList {
 
 boolean allocated = pageId == 0L;
 
-if(allocated)
+if (allocated)
 pageId = allocateDataPage(row.partition());
 
 DataPageIO init = reuseBucket || allocated ? 
DataPageIO.VERSIONS.latest() : null;
@@ -456,9 +453,9 @@ public class FreeListImpl extends PagesList implements 
FreeList, ReuseList {
 long pageId = PageIdUtils.pageId(link);
 int itemId = PageIdUtils.itemId(link);
 
-Boolean updated = write(pageId, updateRow, row, itemId, FAIL_B);
+Boolean updated = write(pageId, updateRow, row, itemId, null);
 
-assert updated != FAIL_B; // Can't fail here.
+assert updated != null; // Can't fail here.
 
 return updated;
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/3ed1cbf6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
index 4cf38ba..98a55bd 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
@@ -272,13 +272,13 @@ public abstract class PagesList extends DataStructure {
 int tailIdx = 0;
 
 while (tailIdx < tails.length) {
-int written = curAddr != 0L ? 
curIo.addTails(pageMem.pageSize(), curAddr, bucket, tails, tailIdx) : 0;
+int written = curPage != 0L ? 
curIo.addTails(pageMem.pageSize(), curAddr, bucket, tails, tailIdx) : 0;
 
 if (written == 0) {
 if (nextPageId == 0L) {
 nextPageId = allocatePageNoReuse();
 
-if (curAddr != 0L) {
+if (curPage != 0L) {
 curIo.setNextMetaPageId(curAddr, 
nextPageId);
 
 releaseAndClose(curId, curPage, curAddr);
@@ -350,7 +350,7 @@ public abstract class PagesList extends DataStructure {
  * @throws IgniteCheckedException If failed.
  */
 private void releaseAndClose(long pageId, long page, long pageAddr) throws 
IgniteCheckedException {
-if (pageAddr != 0L && page != 0L) {
+if (page != 0L) {
 try {
 // No special WAL record because we most likely changed the 
whole page.
 writeUnlock(pageId, page, pageAddr, TRUE, true);
@@ -821,7 +821,7 @@ public abstract class PagesList extends DataStructure {
 
 Boolean walPlc = null;
 
-List locked = null; // TODO may 

[04/12] ignite git commit: GC pressure

2017-04-06 Thread sergi
GC pressure


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

Branch: refs/heads/ignite-3477-master
Commit: 37eed3420d559922568261b37f1e9f7aa5f25905
Parents: 226d698
Author: Igor Seliverstov 
Authored: Mon Mar 27 13:36:51 2017 +0300
Committer: Igor Seliverstov 
Committed: Tue Mar 28 16:39:21 2017 +0300

--
 .../apache/ignite/internal/pagemem/Page.java|  84 --
 .../ignite/internal/pagemem/PageMemory.java |  20 +-
 .../ignite/internal/pagemem/PageSupport.java| 102 +++
 .../pagemem/impl/PageMemoryNoStoreImpl.java | 177 ++--
 .../internal/pagemem/impl/PageNoStoreImpl.java  | 141 ---
 .../cache/CacheOffheapEvictionManager.java  |   3 +-
 .../cache/IgniteCacheOffheapManagerImpl.java|  16 +-
 .../cache/database/CacheDataRowAdapter.java |  26 +-
 .../cache/database/DataStructure.java   | 243 +-
 .../processors/cache/database/RowStore.java |  10 -
 .../cache/database/freelist/FreeListImpl.java   | 148 ++--
 .../cache/database/freelist/PagesList.java  | 687 ---
 .../cache/database/tree/BPlusTree.java  | 856 ++-
 .../cache/database/tree/io/PageIO.java  |   3 +-
 .../database/tree/reuse/ReuseListImpl.java  |   2 +-
 .../cache/database/tree/util/PageHandler.java   | 391 ++---
 .../database/tree/util/PageLockListener.java|  42 +-
 .../dht/atomic/GridDhtAtomicCache.java  |  18 +-
 .../cache/version/GridCacheVersionManager.java  |   3 +
 .../clock/GridClockDeltaSnapshot.java   |   2 +-
 .../pagemem/impl/PageMemoryNoLoadSelfTest.java  | 116 +--
 .../database/BPlusTreeReuseSelfTest.java|  29 +-
 .../processors/database/BPlusTreeSelfTest.java  |  92 +-
 .../processors/query/h2/database/H2Tree.java|  13 +-
 .../h2/database/InlineIndexHelperTest.java  |  44 +-
 25 files changed, 1817 insertions(+), 1451 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/37eed342/modules/core/src/main/java/org/apache/ignite/internal/pagemem/Page.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/Page.java 
b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/Page.java
deleted file mode 100644
index a93d186..000
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/Page.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.pagemem;
-
-/**
- *
- */
-public interface Page extends AutoCloseable {
-/**
- * Gets the page ID. Page ID is a unique page identifier that does not 
change when partitions migrate
- * from one node to another. Links (which is a page ID and 8-byte offset 
within a page) must be used
- * when referencing data across pages.
- *
- * @return Page ID.
- */
-public long id();
-
-/**
- * @return Full page ID.
- */
-public FullPageId fullId();
-
-/**
- * @return Pointer for reading the page.
- */
-public long getForReadPointer();
-
-/**
- * Releases reserved page. Released page can be evicted from RAM after 
flushing modifications to disk.
- */
-public void releaseRead();
-
-/**
- * @return ByteBuffer for modifying the page.
- */
-public long getForWritePointer();
-
-/**
- * @return ByteBuffer for modifying the page of {@code null} if failed to 
get write lock.
- */
-public long tryGetForWritePointer();
-
-/**
- * Releases reserved page. Released page can be evicted from RAM after 
flushing modifications to disk.
- */
-public void releaseWrite(boolean markDirty);
-
-/**
- * @return {@code True} if the page was modified since the last checkpoint.
- */
-public boolean isDirty();
-
-/**
- * @param 

[02/12] ignite git commit: GC pressure

2017-04-06 Thread sergi
http://git-wip-us.apache.org/repos/asf/ignite/blob/37eed342/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index 9597f87..5a8c49c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -28,7 +28,6 @@ import java.util.concurrent.atomic.AtomicLong;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.internal.IgniteInterruptedCheckedException;
-import org.apache.ignite.internal.pagemem.Page;
 import org.apache.ignite.internal.pagemem.PageIdUtils;
 import org.apache.ignite.internal.pagemem.PageMemory;
 import org.apache.ignite.internal.pagemem.wal.IgniteWriteAheadLogManager;
@@ -40,7 +39,6 @@ import 
org.apache.ignite.internal.pagemem.wal.record.delta.MetaPageAddRootRecord
 import 
org.apache.ignite.internal.pagemem.wal.record.delta.MetaPageCutRootRecord;
 import 
org.apache.ignite.internal.pagemem.wal.record.delta.MetaPageInitRootInlineRecord;
 import org.apache.ignite.internal.pagemem.wal.record.delta.NewRootInitRecord;
-import org.apache.ignite.internal.pagemem.wal.record.delta.RecycleRecord;
 import org.apache.ignite.internal.pagemem.wal.record.delta.RemoveRecord;
 import org.apache.ignite.internal.pagemem.wal.record.delta.ReplaceRecord;
 import 
org.apache.ignite.internal.pagemem.wal.record.delta.SplitExistingPageRecord;
@@ -75,10 +73,6 @@ import static 
org.apache.ignite.internal.processors.cache.database.tree.BPlusTre
 import static 
org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.Result.NOT_FOUND;
 import static 
org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.Result.RETRY;
 import static 
org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.Result.RETRY_ROOT;
-import static 
org.apache.ignite.internal.processors.cache.database.tree.util.PageHandler.initPage;
-import static 
org.apache.ignite.internal.processors.cache.database.tree.util.PageHandler.isWalDeltaRecordNeeded;
-import static 
org.apache.ignite.internal.processors.cache.database.tree.util.PageHandler.readPage;
-import static 
org.apache.ignite.internal.processors.cache.database.tree.util.PageHandler.writePage;
 
 /**
  * Abstract B+Tree.
@@ -126,71 +120,86 @@ public abstract class BPlusTree extends 
DataStructure implements
 /** */
 private boolean keys = true;
 
-@Override protected List getChildren(Long pageId) {
+@Override protected List getChildren(final Long pageId) {
 if (pageId == null || pageId == 0L)
 return null;
 
-try (Page page = page(pageId)) {
-long pageAddr = readLock(page); // No correctness guaranties.
+try {
+long page = acquirePage(pageId);
 
 try {
-BPlusIO io = io(pageAddr);
+long pageAddr = readLock(pageId, page); // No correctness 
guaranties.
 
-if (io.isLeaf())
-return null;
+try {
+BPlusIO io = io(pageAddr);
 
-int cnt = io.getCount(pageAddr);
+if (io.isLeaf())
+return null;
 
-assert cnt >= 0 : cnt;
+int cnt = io.getCount(pageAddr);
 
-List res;
+assert cnt >= 0 : cnt;
 
-if (cnt > 0) {
-res = new ArrayList<>(cnt + 1);
+List res;
 
-for (int i = 0; i < cnt; i++)
-res.add(inner(io).getLeft(pageAddr, i));
+if (cnt > 0) {
+res = new ArrayList<>(cnt + 1);
 
-res.add(inner(io).getRight(pageAddr, cnt - 1));
-}
-else {
-long left = inner(io).getLeft(pageAddr, 0);
+for (int i = 0; i < cnt; i++)
+res.add(inner(io).getLeft(pageAddr, i));
 
-res = left == 0 ? Collections.emptyList() : 
Collections.singletonList(left);
-}
+res.add(inner(io).getRight(pageAddr, cnt - 1));
+}
+else {
+long left = inner(io).getLeft(pageAddr, 0);
+
+res = left == 0 ? Collections.emptyList() : 

[08/12] ignite git commit: Merge branch 'ignite-3477-master' into ignite-4811

2017-04-06 Thread sergi
Merge branch 'ignite-3477-master' into ignite-4811


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

Branch: refs/heads/ignite-3477-master
Commit: 64959753f47e53c9406b5fc68a4e626d6992856c
Parents: 7215c25 b6c1761
Author: Igor Seliverstov 
Authored: Mon Apr 3 10:38:20 2017 +0300
Committer: Igor Seliverstov 
Committed: Mon Apr 3 10:38:20 2017 +0300

--
 .../spi/checkpoint/s3/S3CheckpointSpi.java  |  72 +-
 .../tcp/ipfinder/s3/TcpDiscoveryS3IpFinder.java |  27 +-
 .../cloud/TcpDiscoveryCloudIpFinder.java|  51 +-
 .../ignite/binary/BinaryBasicIdMapper.java  |   5 +-
 .../ignite/binary/BinaryBasicNameMapper.java|   5 +-
 .../ignite/binary/BinaryTypeConfiguration.java  |  30 +-
 .../ignite/cache/CacheKeyConfiguration.java |  10 +-
 .../org/apache/ignite/cache/QueryEntity.java|  35 +-
 .../affinity/fair/FairAffinityFunction.java |  21 +-
 .../rendezvous/RendezvousAffinityFunction.java  |  27 +-
 .../cache/eviction/AbstractEvictionPolicy.java  |  15 +-
 .../cache/eviction/fifo/FifoEvictionPolicy.java |  74 +-
 .../eviction/fifo/FifoEvictionPolicyMBean.java  |   2 +
 .../igfs/IgfsPerBlockLruEvictionPolicy.java | 131 +++-
 .../cache/eviction/lru/LruEvictionPolicy.java   |  74 +-
 .../eviction/sorted/SortedEvictionPolicy.java   |  74 +-
 .../configuration/AtomicConfiguration.java  |  15 +-
 .../configuration/BinaryConfiguration.java  |  30 +-
 .../configuration/CacheConfiguration.java   |  71 +-
 .../configuration/CollectionConfiguration.java  |  35 +-
 .../configuration/ConnectorConfiguration.java   | 100 ++-
 .../configuration/FileSystemConfiguration.java  | 151 +++-
 .../configuration/HadoopConfiguration.java  |  31 +-
 .../configuration/NearCacheConfiguration.java   |  50 ++
 .../configuration/TransactionConfiguration.java |  45 +-
 .../igfs/IgfsGroupDataBlocksKeyMapper.java  |   5 +-
 .../igfs/IgfsIpcEndpointConfiguration.java  |  30 +-
 .../ignite/internal/MarshallerPlatformIds.java  |   3 +
 .../ignite/internal/binary/BinaryUtils.java |   4 +
 .../client/GridClientConfiguration.java | 100 ++-
 .../client/GridClientDataConfiguration.java |  15 +-
 .../client/GridClientPartitionAffinity.java |  15 +-
 .../balancer/GridClientBalancerAdapter.java |   5 +-
 .../router/GridTcpRouterConfiguration.java  |  50 +-
 .../internal/jdbc2/JdbcSqlFieldsQuery.java  |  57 ++
 .../processors/cache/CacheObjectImpl.java   |  16 +-
 .../processors/cache/GridCacheProcessor.java|  39 +-
 .../cache/IgniteCacheOffheapManagerImpl.java|  20 +-
 .../cache/transactions/IgniteTxAdapter.java |   2 +
 .../platform/PlatformContextImpl.java   |  10 +-
 .../binary/PlatformBinaryProcessor.java |  40 +-
 .../dotnet/PlatformDotNetConfigurationEx.java   |  21 +-
 .../utils/PlatformConfigurationUtils.java   |   3 +-
 .../service/GridServiceProcessor.java   |  14 +-
 .../optimized/OptimizedMarshaller.java  |  15 +-
 .../apache/ignite/mxbean/IgniteMBeanAware.java  |  28 +
 .../dotnet/PlatformDotNetAffinityFunction.java  |  10 +-
 .../PlatformDotNetBinaryConfiguration.java  |  31 +-
 .../PlatformDotNetBinaryTypeConfiguration.java  |  35 +-
 .../dotnet/PlatformDotNetConfiguration.java |  10 +-
 .../ignite/services/ServiceConfiguration.java   |  35 +-
 .../org/apache/ignite/spi/IgniteSpiAdapter.java |  50 +-
 .../ignite/spi/IgniteSpiMBeanAdapter.java   |  78 ++
 .../checkpoint/cache/CacheCheckpointSpi.java|  40 +-
 .../spi/checkpoint/jdbc/JdbcCheckpointSpi.java  | 219 +-
 .../spi/checkpoint/noop/NoopCheckpointSpi.java  |   7 +
 .../sharedfs/SharedFsCheckpointSpi.java |  54 +-
 .../fifoqueue/FifoQueueCollisionSpi.java| 134 +++-
 .../fifoqueue/FifoQueueCollisionSpiMBean.java   |   2 +-
 .../jobstealing/JobStealingCollisionSpi.java| 281 ++-
 .../JobStealingCollisionSpiMBean.java   |   6 +-
 .../spi/collision/noop/NoopCollisionSpi.java|   7 +
 .../PriorityQueueCollisionSpi.java  | 278 +--
 .../PriorityQueueCollisionSpiMBean.java |   2 +-
 .../communication/tcp/TcpCommunicationSpi.java  | 536 +++--
 .../deployment/local/LocalDeploymentSpi.java|  24 +-
 .../ignite/spi/discovery/tcp/ServerImpl.java|   6 +-
 .../spi/discovery/tcp/TcpDiscoverySpi.java  | 438 +--
 .../ipfinder/TcpDiscoveryIpFinderAdapter.java   |   5 +-
 .../ipfinder/jdbc/TcpDiscoveryJdbcIpFinder.java |  17 +-
 .../TcpDiscoveryMulticastIpFinder.java  |  47 +-
 .../sharedfs/TcpDiscoverySharedFsIpFinder.java  |  12 +-
 .../tcp/ipfinder/vm/TcpDiscoveryVmIpFinder.java |  14 +-
 .../memory/MemoryEventStorageSpi.java   

[10/12] ignite git commit: review

2017-04-06 Thread sergi
review


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

Branch: refs/heads/ignite-3477-master
Commit: e8b97470180216fba1abf5c4f55c78e8048cd901
Parents: 3ed1cbf
Author: Igor Seliverstov 
Authored: Wed Apr 5 19:04:11 2017 +0300
Committer: Igor Seliverstov 
Committed: Wed Apr 5 19:04:11 2017 +0300

--
 .../cache/database/tree/BPlusTree.java  | 49 +---
 1 file changed, 23 insertions(+), 26 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/e8b97470/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index 7be8297..1290e5b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -187,9 +187,6 @@ public abstract class BPlusTree extends 
DataStructure implements
 
 return printPage(io, pageAddr, keys);
 }
-catch (IgniteCheckedException e) {
-throw new IllegalStateException(e);
-}
 finally {
 readUnlock(pageId, page, pageAddr);
 }
@@ -198,8 +195,8 @@ public abstract class BPlusTree extends 
DataStructure implements
 releasePage(pageId, page);
 }
 }
-catch (IgniteCheckedException ignored) {
-throw new AssertionError("Can not acquire page.");
+catch (IgniteCheckedException e) {
+throw new IllegalStateException(e);
 }
 }
 };
@@ -2499,7 +2496,7 @@ public abstract class BPlusTree extends 
DataStructure implements
 assert (tailId == 0L) == (tailPage == 0L);
 assert (tailPage == 0L) == (tailPageAddr == 0L);
 
-if (this.tailAddr != 0L)
+if (this.tailPage != 0L)
 writeUnlockAndClose(this.tailId, this.tailPage, this.tailAddr, 
null);
 
 this.tailId = tailId;
@@ -3346,7 +3343,7 @@ public abstract class BPlusTree extends 
DataStructure implements
 if (tail.getCount() == 0 && tail.lvl != 0 && 
getRootLevel() == tail.lvl) {
 // Free root if it became empty after merge.
 cutRoot(tail.lvl);
-freePage(tail.id, tail.page, tail.buf, tail.walPlc, 
false);
+freePage(tail.pageId, tail.page, tail.buf, 
tail.walPlc, false);
 
 // Exit: we are done.
 }
@@ -3381,7 +3378,7 @@ public abstract class BPlusTree extends 
DataStructure implements
 
 Tail leaf = getTail(t, 0);
 
-removeDataRowFromLeaf(leaf.id, leaf.page, leaf.buf, leaf.walPlc, 
leaf.io, leaf.getCount(), insertionPoint(leaf));
+removeDataRowFromLeaf(leaf.pageId, leaf.page, leaf.buf, 
leaf.walPlc, leaf.io, leaf.getCount(), insertionPoint(leaf));
 }
 
 /**
@@ -3577,7 +3574,7 @@ public abstract class BPlusTree extends 
DataStructure implements
 Tail left = t.getLeftChild();
 Tail right = t.getRightChild();
 
-assert left.id != right.id;
+assert left.pageId != right.pageId;
 
 int cnt = t.getCount();
 
@@ -3628,7 +3625,7 @@ public abstract class BPlusTree extends 
DataStructure implements
 if (right && cnt != 0)
 idx++;
 
-return inner(prnt.io).getLeft(prnt.buf, idx) == child.id;
+return inner(prnt.io).getLeft(prnt.buf, idx) == child.pageId;
 }
 
 /**
@@ -3641,8 +3638,8 @@ public abstract class BPlusTree extends 
DataStructure implements
 private boolean checkChildren(Tail prnt, Tail left, Tail 
right, int idx) {
 assert idx >= 0 && idx < prnt.getCount(): idx;
 
-return inner(prnt.io).getLeft(prnt.buf, idx) == left.id &&
-inner(prnt.io).getRight(prnt.buf, idx) == right.id;
+return inner(prnt.io).getLeft(prnt.buf, idx) == left.pageId &&
+

[01/12] ignite git commit: GC pressure

2017-04-06 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-3477-master 6204d4650 -> 1970982a4


http://git-wip-us.apache.org/repos/asf/ignite/blob/37eed342/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/PageIO.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/PageIO.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/PageIO.java
index 06999cb..2586696 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/PageIO.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/io/PageIO.java
@@ -21,7 +21,6 @@ import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.pagemem.Page;
 import org.apache.ignite.internal.pagemem.PageMemory;
 import org.apache.ignite.internal.pagemem.PageUtils;
 import org.apache.ignite.internal.pagemem.wal.IgniteWriteAheadLogManager;
@@ -62,7 +61,7 @@ import 
org.apache.ignite.internal.processors.cache.database.tree.util.PageLockLi
  *
  * 7. It is almost always preferable to read or write (especially write) page 
contents using
  *static methods on {@link PageHandler}. To just initialize new page use
- *{@link PageHandler#initPage(PageMemory, Page, PageLockListener, PageIO, 
IgniteWriteAheadLogManager)}
+ *{@link PageHandler#initPage(PageMemory, int, long, PageIO, 
IgniteWriteAheadLogManager, PageLockListener)}
  *method with needed IO instance.
  */
 public abstract class PageIO {

http://git-wip-us.apache.org/repos/asf/ignite/blob/37eed342/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/reuse/ReuseListImpl.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/reuse/ReuseListImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/reuse/ReuseListImpl.java
index ce8266a..1c6c8d5 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/reuse/ReuseListImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/reuse/ReuseListImpl.java
@@ -65,7 +65,7 @@ public class ReuseListImpl extends PagesList implements 
ReuseList {
 
 /** {@inheritDoc} */
 @Override public void addForRecycle(ReuseBag bag) throws 
IgniteCheckedException {
-put(bag, null, 0, 0);
+put(bag, 0, 0, 0, 0);
 }
 
 /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/37eed342/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/util/PageHandler.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/util/PageHandler.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/util/PageHandler.java
index 97b5a04..f660686 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/util/PageHandler.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/util/PageHandler.java
@@ -19,7 +19,6 @@ package 
org.apache.ignite.internal.processors.cache.database.tree.util;
 
 import java.nio.ByteBuffer;
 import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.pagemem.Page;
 import org.apache.ignite.internal.pagemem.PageMemory;
 import org.apache.ignite.internal.pagemem.wal.IgniteWriteAheadLogManager;
 import org.apache.ignite.internal.pagemem.wal.record.delta.InitNewPageRecord;
@@ -34,38 +33,62 @@ import static java.lang.Boolean.TRUE;
  */
 public abstract class PageHandler {
 /** */
-private static final PageHandler NOOP = new 
PageHandler() {
-@Override public Boolean run(Page page, PageIO io, long pageAddr, Void 
arg, int intArg)
-throws IgniteCheckedException {
-return TRUE;
+private static final PageHandler NO_OP = new 
PageHandler() {
+@Override
+public Boolean run(int cacheId, long pageId, long page, long pageAddr, 
PageIO io, Boolean walPlc,
+Void arg,
+int intArg) throws IgniteCheckedException {
+return Boolean.TRUE;
 }
 };
 
 /**
- * @param page Page.
- * @param io IO.
+ * @param cacheId Cache ID.
+ * @param pageId Page ID.
+ * @param page Page absolute pointer.
  * @param pageAddr Page address.
+ * @param io IO.
+ * @param walPlc Full page WAL record policy.
  * @param arg Argument.
 

[03/12] ignite git commit: GC pressure

2017-04-06 Thread sergi
http://git-wip-us.apache.org/repos/asf/ignite/blob/37eed342/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
index 5c66b10..6c51096 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/PagesList.java
@@ -25,7 +25,6 @@ import java.util.Map;
 import java.util.concurrent.atomic.AtomicLong;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteSystemProperties;
-import org.apache.ignite.internal.pagemem.Page;
 import org.apache.ignite.internal.pagemem.PageIdUtils;
 import org.apache.ignite.internal.pagemem.PageMemory;
 import org.apache.ignite.internal.pagemem.wal.IgniteWriteAheadLogManager;
@@ -37,7 +36,6 @@ import 
org.apache.ignite.internal.pagemem.wal.record.delta.PagesListInitNewPageR
 import 
org.apache.ignite.internal.pagemem.wal.record.delta.PagesListRemovePageRecord;
 import 
org.apache.ignite.internal.pagemem.wal.record.delta.PagesListSetNextRecord;
 import 
org.apache.ignite.internal.pagemem.wal.record.delta.PagesListSetPreviousRecord;
-import org.apache.ignite.internal.pagemem.wal.record.delta.RecycleRecord;
 import org.apache.ignite.internal.processors.cache.database.DataStructure;
 import 
org.apache.ignite.internal.processors.cache.database.freelist.io.PagesListMetaIO;
 import 
org.apache.ignite.internal.processors.cache.database.freelist.io.PagesListNodeIO;
@@ -58,9 +56,6 @@ import static java.lang.Boolean.TRUE;
 import static org.apache.ignite.internal.pagemem.PageIdAllocator.FLAG_DATA;
 import static org.apache.ignite.internal.pagemem.PageIdAllocator.FLAG_IDX;
 import static 
org.apache.ignite.internal.processors.cache.database.tree.io.PageIO.getPageId;
-import static 
org.apache.ignite.internal.processors.cache.database.tree.util.PageHandler.initPage;
-import static 
org.apache.ignite.internal.processors.cache.database.tree.util.PageHandler.isWalDeltaRecordNeeded;
-import static 
org.apache.ignite.internal.processors.cache.database.tree.util.PageHandler.writePage;
 
 /**
  * Striped doubly-linked list of page IDs optionally organized in buckets.
@@ -93,13 +88,20 @@ public abstract class PagesList extends DataStructure {
 /**
  *
  */
-private class CutTail extends PageHandler {
-/** {@inheritDoc} */
-@Override public Boolean run(Page page, PageIO pageIo, long pageAddr, 
Void ignore, int bucket)
-throws IgniteCheckedException {
-assert getPageId(pageAddr) == page.id();
-
-PagesListNodeIO io = (PagesListNodeIO)pageIo;
+private final class CutTail extends PageHandler {
+@Override
+public Boolean run(
+int cacheId,
+long pageId,
+long page,
+long pageAddr,
+PageIO iox,
+Boolean walPlc,
+Void ignore,
+int bucket) throws IgniteCheckedException {
+assert getPageId(pageAddr) == pageId;
+
+PagesListNodeIO io = (PagesListNodeIO)iox;
 
 long tailId = io.getNextId(pageAddr);
 
@@ -107,10 +109,10 @@ public abstract class PagesList extends DataStructure {
 
 io.setNextId(pageAddr, 0L);
 
-if (isWalDeltaRecordNeeded(wal, page))
-wal.log(new PagesListSetNextRecord(cacheId, page.id(), 0L));
+if (needWalDeltaRecord(pageId, page, walPlc))
+wal.log(new PagesListSetNextRecord(cacheId, pageId, 0L));
 
-updateTail(bucket, tailId, page.id());
+updateTail(bucket, tailId, pageId);
 
 return TRUE;
 }
@@ -153,18 +155,19 @@ public abstract class PagesList extends DataStructure {
 protected final void init(long metaPageId, boolean initNew) throws 
IgniteCheckedException {
 if (metaPageId != 0L) {
 if (initNew) {
-try (Page page = page(metaPageId)) {
-initPage(pageMem, page, this, 
PagesListMetaIO.VERSIONS.latest(), wal);
-}
+init(metaPageId, PagesListMetaIO.VERSIONS.latest());
 }
 else {
 Map bucketsData = new HashMap<>();
 
-long nextPageId = metaPageId;
+long nextId = metaPageId;
 
-while (nextPageId != 0) {
-try (Page page = page(nextPageId)) {
-long pageAddr = readLock(page); // No concurrent 
recycling on init.
+while (nextId != 0) {
+final long pageId 

[07/12] ignite git commit: Merge branch 'ignite-3477-master' into ignite-4811

2017-04-06 Thread sergi
Merge branch 'ignite-3477-master' into ignite-4811


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

Branch: refs/heads/ignite-3477-master
Commit: 7215c25bb9e5bca141fac374645f38b8836bc49e
Parents: e34222b d758a82
Author: Igor Seliverstov 
Authored: Fri Mar 31 15:38:53 2017 +0300
Committer: Igor Seliverstov 
Committed: Fri Mar 31 15:38:53 2017 +0300

--
 .../computegrid/ComputeAsyncExample.java|   8 +-
 .../ComputeFibonacciContinuationExample.java|  13 +-
 .../examples/datagrid/CacheAsyncApiExample.java |  17 +-
 .../datastructures/IgniteLockExample.java   |   4 +-
 .../datastructures/IgniteSemaphoreExample.java  |   4 +-
 .../examples/ScalarContinuationExample.scala|  10 +-
 .../singlesplit/SingleSplitsLoadTest.java   |   8 +-
 .../tcp/ipfinder/s3/TcpDiscoveryS3IpFinder.java |   6 +-
 ...3IpFinderAwsCredentialsProviderSelfTest.java |   2 +-
 .../ignite/tests/utils/TestTransaction.java |  11 +
 modules/clients/pom.xml |   7 +
 .../src/test/config/jdbc-config-cache-store.xml | 124 +++
 .../internal/client/ClientStartNodeTask.java|  10 +-
 .../jdbc2/JdbcAbstractDmlStatementSelfTest.java |   3 +
 .../internal/jdbc2/JdbcConnectionSelfTest.java  |  28 +-
 .../internal/jdbc2/JdbcSpringSelfTest.java  | 125 +++
 .../jdbc/AbstractJdbcPojoQuerySelfTest.java | 169 
 .../jdbc/JdbcPojoLegacyQuerySelfTest.java   |  44 +
 .../ignite/jdbc/JdbcPojoQuerySelfTest.java  |  56 ++
 .../jdbc/suite/IgniteJdbcDriverTestSuite.java   |   5 +
 .../java/org/apache/ignite/IgniteCache.java | 611 +++-
 .../java/org/apache/ignite/IgniteCluster.java   | 126 +++
 .../java/org/apache/ignite/IgniteCompute.java   | 262 -
 .../java/org/apache/ignite/IgniteEvents.java| 128 ++-
 .../org/apache/ignite/IgniteFileSystem.java |  76 ++
 .../java/org/apache/ignite/IgniteMessaging.java |  27 +
 .../java/org/apache/ignite/IgniteServices.java  | 221 -
 .../ignite/binary/BinaryObjectBuilder.java  |  10 -
 .../store/jdbc/CacheAbstractJdbcStore.java  |  24 +-
 .../cache/store/jdbc/CacheJdbcPojoStore.java|  18 +-
 .../apache/ignite/internal/GridComponent.java   |   5 +-
 .../ignite/internal/GridJobCancelRequest.java   |   2 +-
 .../ignite/internal/GridJobExecuteRequest.java  |   2 +-
 .../ignite/internal/GridJobExecuteResponse.java |   2 +-
 .../ignite/internal/GridJobSiblingsRequest.java |   2 +-
 .../internal/GridJobSiblingsResponse.java   |   2 +-
 .../ignite/internal/GridTaskCancelRequest.java  |   2 +-
 .../ignite/internal/GridTaskSessionRequest.java |   2 +-
 .../org/apache/ignite/internal/GridTopic.java   |   5 +-
 .../ignite/internal/IgniteComputeImpl.java  | 546 +--
 .../ignite/internal/IgniteEventsImpl.java   |  79 ++
 .../ignite/internal/IgniteMessagingImpl.java|  65 +-
 .../ignite/internal/IgniteServicesImpl.java | 108 +++
 .../ignite/internal/MarshallerContextImpl.java  |   4 +-
 .../binary/BinaryCachingMetadataHandler.java|   6 +
 .../internal/binary/BinaryClassDescriptor.java  |  33 +-
 .../ignite/internal/binary/BinaryContext.java   |  29 +-
 .../internal/binary/BinaryEnumObjectImpl.java   |   2 +-
 .../internal/binary/BinaryFieldMetadata.java| 127 +++
 .../ignite/internal/binary/BinaryMetadata.java  |  49 +-
 .../binary/BinaryMetadataCollector.java |  17 +-
 .../internal/binary/BinaryMetadataHandler.java  |  18 +-
 .../binary/BinaryNoopMetadataHandler.java   |   5 +
 .../internal/binary/BinaryObjectExImpl.java |   4 -
 .../internal/binary/BinaryObjectImpl.java   |   2 +-
 .../binary/BinaryObjectOffheapImpl.java |   2 +-
 .../internal/binary/BinaryReaderExImpl.java |   2 +-
 .../ignite/internal/binary/BinaryUtils.java |  21 +-
 .../internal/binary/BinaryWriterExImpl.java |  45 +-
 .../binary/builder/BinaryObjectBuilderImpl.java |  34 +-
 .../internal/cluster/ClusterGroupAdapter.java   |   2 +-
 .../cluster/IgniteClusterAsyncImpl.java |  28 +-
 .../internal/cluster/IgniteClusterImpl.java |  24 +-
 .../internal/direct/DirectMessageWriter.java|   4 +-
 .../stream/v1/DirectByteBufferStreamImplV1.java |   8 +-
 .../stream/v2/DirectByteBufferStreamImplV2.java |   9 +-
 .../ignite/internal/jdbc2/JdbcConnection.java   |  19 +-
 .../ignite/internal/jdbc2/JdbcQueryTask.java|   2 +-
 .../ignite/internal/jdbc2/JdbcQueryTaskV2.java  |   2 +-
 .../checkpoint/GridCheckpointRequest.java   |   2 +-
 .../managers/communication/GridIoMessage.java   |   2 +-
 .../communication/GridIoMessageFactory.java |  23 +-
 .../communication/GridIoUserMessage.java|   2 +-
 .../communication/IgniteIoTestMessage.java  |   2 +-
 

[11/12] ignite git commit: Merge branch 'ignite-3477-master' into ignite-4811

2017-04-06 Thread sergi
Merge branch 'ignite-3477-master' into ignite-4811


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

Branch: refs/heads/ignite-3477-master
Commit: 43098a43e06cebe00b0fc8deb09922c4047121b8
Parents: e8b9747 6d0a419
Author: Igor Seliverstov 
Authored: Thu Apr 6 13:14:22 2017 +0300
Committer: Igor Seliverstov 
Committed: Thu Apr 6 13:14:22 2017 +0300

--
 .../processors/cache/H2CacheStoreStrategy.java  |   2 +-
 ...ryDuplicateIndexObjectsAbstractSelfTest.java | 161 ---
 ...ateIndexObjectPartitionedAtomicSelfTest.java |  38 -
 ...xObjectPartitionedTransactionalSelfTest.java |  41 -
 ...eRebalancingUnmarshallingFailedSelfTest.java |   6 +-
 ...IgniteCacheFullApiMultiJvmSelfTestSuite.java |   2 +
 .../processors/query/h2/IgniteH2Indexing.java   |   8 +-
 .../IgniteBinaryCacheQueryTestSuite.java|   5 -
 modules/yardstick/config/ignite-base-config.xml |   2 -
 .../config/ignite-failover-base-config.xml  |   6 -
 .../ignite-int-max-values-offheap-config.xml|   1 -
 .../ignite-int-max-values-onheap-config.xml |   1 -
 .../yardstick/config/ignite-store-config.xml|   2 -
 13 files changed, 12 insertions(+), 263 deletions(-)
--




[05/12] ignite git commit: GC pressure

2017-04-06 Thread sergi
GC pressure


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

Branch: refs/heads/ignite-3477-master
Commit: 682f3bed2e8c7dee4f13d11c8fc5d3cf856934c5
Parents: 37eed34
Author: Igor Seliverstov 
Authored: Tue Mar 28 19:28:20 2017 +0300
Committer: Igor Seliverstov 
Committed: Tue Mar 28 19:28:20 2017 +0300

--
 .../ignite/internal/pagemem/PageSupport.java|  6 ++--
 .../pagemem/impl/PageMemoryNoStoreImpl.java | 18 +-
 .../cache/database/freelist/FreeListImpl.java   |  4 +--
 .../cache/database/freelist/PagesList.java  | 38 ++--
 .../cache/database/tree/BPlusTree.java  | 10 +++---
 .../cache/database/tree/util/PageHandler.java   | 24 -
 .../processors/query/h2/database/H2Tree.java|  1 +
 7 files changed, 47 insertions(+), 54 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/682f3bed/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageSupport.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageSupport.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageSupport.java
index 7d1f711..8076f28 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageSupport.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/PageSupport.java
@@ -66,7 +66,8 @@ public interface PageSupport {
  * @param cacheId Cache ID.
  * @param pageId Page ID.
  * @param page Page pointer.
- * @return ByteBuffer for modifying the page.
+ * @return Address of a buffer with contents of the given page or
+ *{@code 0L} if attempt to take the write lock failed.
  */
 public long writeLock(int cacheId, long pageId, long page);
 
@@ -75,7 +76,8 @@ public interface PageSupport {
  * @param cacheId Cache ID.
  * @param pageId Page ID.
  * @param page Page pointer.
- * @return ByteBuffer for modifying the page of {@code null} if failed to 
get write lock.
+ * @return Address of a buffer with contents of the given page or
+ *{@code 0L} if attempt to take the write lock failed.
  */
 public long tryWriteLock(int cacheId, long pageId, long page);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/682f3bed/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java
index 7afd5bd..0b65ce6 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java
@@ -66,7 +66,7 @@ import static 
org.apache.ignite.internal.util.GridUnsafe.wrapPointer;
 @SuppressWarnings({"LockAcquiredButNotSafelyReleased", 
"FieldAccessedSynchronizedAndUnsynchronized"})
 public class PageMemoryNoStoreImpl implements PageMemory {
 /** */
-private static final long PAGE_MARKER = 0xBEEAAFDEADBEEF01L;
+public static final long PAGE_MARKER = 0xBEEAAFDEADBEEF01L;
 
 /** Full relative pointer mask. */
 private static final long RELATIVE_PTR_MASK = 0xFFL;
@@ -84,16 +84,16 @@ public class PageMemoryNoStoreImpl implements PageMemory {
 private static final long COUNTER_INC = ADDRESS_MASK + 1;
 
 /** Page ID offset. */
-private static final int PAGE_ID_OFFSET = 8;
+public static final int PAGE_ID_OFFSET = 8;
 
 /** Page pin counter offset. */
-private static final int LOCK_OFFSET = 16;
+public static final int LOCK_OFFSET = 16;
 
 /**
  * Need a 8-byte pointer for linked list, 8 bytes for internal needs 
(flags),
  * 4 bytes cache ID, 8 bytes timestamp.
  */
-static final int PAGE_OVERHEAD = LOCK_OFFSET + 
OffheapReadWriteLock.LOCK_SIZE;
+public static final int PAGE_OVERHEAD = LOCK_OFFSET + 
OffheapReadWriteLock.LOCK_SIZE;
 
 /** Page size. */
 private int sysPageSize;
@@ -386,7 +386,7 @@ public class PageMemoryNoStoreImpl implements PageMemory {
 
 Segment seg = segment(pageIdx);
 
-return seg.acquire(pageIdx);
+return seg.acquirePage(pageIdx);
 }
 
 /** {@inheritDoc} */
@@ -505,7 +505,7 @@ public class PageMemoryNoStoreImpl implements PageMemory {
  * @param pageIdx Page index.
  * 

[06/12] ignite git commit: Merge branch 'ignite-3477-master' into ignite-4811

2017-04-06 Thread sergi
Merge branch 'ignite-3477-master' into ignite-4811


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

Branch: refs/heads/ignite-3477-master
Commit: e34222b3b88fb85a3dabdcf87763d55235554c4f
Parents: 682f3be 6107992
Author: Igor Seliverstov 
Authored: Thu Mar 30 11:01:08 2017 +0300
Committer: Igor Seliverstov 
Committed: Thu Mar 30 11:37:21 2017 +0300

--
 .../JettyRestProcessorAbstractSelfTest.java |   3 +-
 .../configuration/CacheConfiguration.java   |  25 ++
 .../configuration/MemoryConfiguration.java  | 104 --
 .../MemoryPolicyConfiguration.java  |  80 +
 .../apache/ignite/internal/IgniteKernal.java|  50 ++-
 .../processors/cache/GridCacheContext.java  |  43 +++
 .../processors/cache/GridCacheProcessor.java|  21 +-
 .../cache/IgniteCacheOffheapManagerImpl.java|  35 +-
 .../cache/database/CacheDataRowAdapter.java |   2 +-
 .../IgniteCacheDatabaseSharedManager.java   | 354 ---
 .../processors/cache/database/MemoryPolicy.java |  53 +++
 .../processors/cache/database/RowStore.java |   2 +-
 .../dht/atomic/GridDhtAtomicCache.java  |   5 +
 .../cache/distributed/near/GridNearTxLocal.java |   1 -
 .../cache/query/GridCacheQueryManager.java  |   3 +-
 .../cache/transactions/IgniteTxManager.java |   2 +
 .../visor/node/VisorGridConfiguration.java  |   2 +-
 .../visor/node/VisorMemoryConfiguration.java|  55 ++-
 .../node/VisorMemoryPolicyConfiguration.java|  72 
 .../resources/META-INF/classnames.properties|   1 +
 .../ignite/cache/LargeEntryUpdateTest.java  |   1 -
 .../binary/BinaryObjectExceptionSelfTest.java   | 209 ---
 .../cache/CacheConfigurationLeakTest.java   |   7 +-
 .../CacheMemoryPolicyConfigurationTest.java | 164 +
 .../GridCacheAbstractFailoverSelfTest.java  |   4 +
 .../cache/MemoryPolicyConfigValidationTest.java | 241 +
 .../database/IgniteDbAbstractTest.java  |   2 -
 .../database/IgniteDbDynamicCacheSelfTest.java  |   9 +-
 .../IgniteDbMemoryLeakAbstractTest.java |  10 +-
 .../loadtests/hashmap/GridCacheTestContext.java |   3 +
 .../IgniteBinaryObjectsTestSuite.java   |   2 -
 .../testsuites/IgniteCacheTestSuite2.java   |   4 +
 .../query/h2/database/H2TreeIndex.java  |  23 +-
 .../processors/query/h2/opt/GridH2Table.java|  16 +-
 .../query/h2/opt/GridH2TreeIndex.java   |  16 +-
 .../cache/IgniteCacheAbstractQuerySelfTest.java |  13 +-
 .../IgniteCachePartitionedQuerySelfTest.java|   2 +-
 .../h2/GridIndexingSpiAbstractSelfTest.java | 196 +-
 .../query/h2/opt/GridH2TableSelfTest.java   |   3 +-
 .../query/h2/sql/GridQueryParsingTest.java  | 112 +++---
 .../cpp/core-test/config/cache-query-32.xml |  50 +++
 .../config/cache-query-continuous-32.xml|  46 +++
 .../config/cache-query-continuous-default.xml   |  87 +
 .../core-test/config/cache-query-continuous.xml |  61 +---
 .../core-test/config/cache-query-default.xml| 131 +++
 .../cpp/core-test/config/cache-query.xml| 114 +-
 .../cpp/core-test/config/cache-test-32.xml  |  50 +++
 .../cpp/core-test/config/cache-test-default.xml | 135 +++
 .../cpp/core-test/config/cache-test.xml | 105 +-
 .../cpp/core-test/project/vs/core-test.vcxproj  |   7 +
 .../project/vs/core-test.vcxproj.filters|  21 ++
 .../cpp/core-test/src/cache_query_test.cpp  |   4 +
 .../platforms/cpp/core-test/src/cache_test.cpp  |   5 +
 .../cpp/core-test/src/continuous_query_test.cpp |   4 +
 .../cpp/core-test/src/ignition_test.cpp |   4 +
 .../cpp/core-test/src/interop_test.cpp  |   4 +
 .../cpp/core-test/src/transactions_test.cpp |   4 +
 .../cpp/odbc-test/config/queries-test-32.xml|  47 +++
 .../odbc-test/config/queries-test-default.xml   |  38 ++
 .../odbc-test/config/queries-test-noodbc-32.xml |  47 +++
 .../cpp/odbc-test/config/queries-test.xml   |  11 +-
 .../cpp/odbc-test/project/vs/odbc-test.vcxproj  |   3 +
 .../project/vs/odbc-test.vcxproj.filters|   6 +
 .../cpp/odbc-test/src/api_robustness_test.cpp   |  20 +-
 .../cpp/odbc-test/src/queries_test.cpp  |   8 +
 .../odbc-test/src/sql_test_suite_fixture.cpp|   6 +-
 66 files changed, 2159 insertions(+), 809 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/e34222b3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
--


[12/12] ignite git commit: Merge branch 'ignite-4811' of https://github.com/gridgain/apache-ignite into ignite-3477-master

2017-04-06 Thread sergi
Merge branch 'ignite-4811' of https://github.com/gridgain/apache-ignite into 
ignite-3477-master


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

Branch: refs/heads/ignite-3477-master
Commit: 1970982a4925ed52d5f99006605b69a5b18540a0
Parents: 6204d46 43098a4
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Thu Apr 6 19:59:25 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Thu Apr 6 19:59:25 2017 +0300

--
 .../apache/ignite/internal/pagemem/Page.java|  84 --
 .../ignite/internal/pagemem/PageMemory.java |  20 +-
 .../ignite/internal/pagemem/PageSupport.java| 104 +++
 .../pagemem/impl/PageMemoryNoStoreImpl.java | 163 ++--
 .../internal/pagemem/impl/PageNoStoreImpl.java  | 141 ---
 .../cache/CacheOffheapEvictionManager.java  |   3 +-
 .../cache/IgniteCacheOffheapManagerImpl.java|  16 +-
 .../cache/database/CacheDataRowAdapter.java |  26 +-
 .../cache/database/DataStructure.java   | 243 +-
 .../processors/cache/database/RowStore.java |  10 -
 .../cache/database/freelist/FreeListImpl.java   | 145 ++--
 .../cache/database/freelist/PagesList.java  | 637 +++---
 .../cache/database/tree/BPlusTree.java  | 851 ++-
 .../cache/database/tree/io/PageIO.java  |   3 +-
 .../database/tree/reuse/ReuseListImpl.java  |   2 +-
 .../cache/database/tree/util/PageHandler.java   | 381 ++---
 .../database/tree/util/PageLockListener.java|  42 +-
 .../dht/atomic/GridDhtAtomicCache.java  |  18 +-
 .../cache/version/GridCacheVersionManager.java  |   3 +
 .../clock/GridClockDeltaSnapshot.java   |   2 +-
 .../pagemem/impl/PageMemoryNoLoadSelfTest.java  | 116 +--
 .../database/BPlusTreeReuseSelfTest.java|  29 +-
 .../processors/database/BPlusTreeSelfTest.java  |  92 +-
 .../processors/query/h2/database/H2Tree.java|  14 +-
 .../h2/database/InlineIndexHelperTest.java  |  44 +-
 25 files changed, 1773 insertions(+), 1416 deletions(-)
--




ignite git commit: ignite-2913 - SQL: EXISTS support added

2017-04-02 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master f66be1af7 -> f726dc483


ignite-2913 - SQL: EXISTS support added


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

Branch: refs/heads/master
Commit: f726dc483a9e406b0149a6afffc38026b43ccbc5
Parents: f66be1a
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Sun Apr 2 15:35:04 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Sun Apr 2 15:35:04 2017 +0300

--
 .../query/h2/sql/GridSqlOperationType.java  | 23 +--
 .../query/h2/sql/GridSqlQueryParser.java| 19 -
 .../query/IgniteSqlSplitterSelfTest.java| 43 
 .../query/h2/sql/GridQueryParsingTest.java  | 27 +++-
 4 files changed, 105 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/f726dc48/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperationType.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperationType.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperationType.java
index 07a6f6b..5009c0c 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperationType.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperationType.java
@@ -31,7 +31,7 @@ public enum GridSqlOperationType {
 MULTIPLY(2, new BiExpressionSqlGenerator("*")),
 DIVIDE(2, new BiExpressionSqlGenerator("/")),
 MODULUS(2, new BiExpressionSqlGenerator("%")),
-NEGATE(1, new PrefixSqlGenerator("-")),
+NEGATE(1, new PrefixSqlGenerator("-", true)),
 
 // from org.h2.expression.Comparison
 EQUAL(2, new BiExpressionSqlGenerator("=")),
@@ -47,7 +47,7 @@ public enum GridSqlOperationType {
 IS_NULL(1, new SuffixSqlGenerator("IS NULL")),
 IS_NOT_NULL(1, new SuffixSqlGenerator("IS NOT NULL")),
 
-NOT(1, new PrefixSqlGenerator("NOT")),
+NOT(1, new PrefixSqlGenerator("NOT", true)),
 
 // from org.h2.expression.ConditionAndOr
 AND(2, new BiExpressionSqlGenerator("AND")),
@@ -58,6 +58,7 @@ public enum GridSqlOperationType {
 LIKE(2, new BiExpressionSqlGenerator("LIKE")),
 
 IN(-1, new ConditionInSqlGenerator()),
+EXISTS(1, new PrefixSqlGenerator("EXISTS", false)),
 
 ;
 /** */
@@ -145,18 +146,32 @@ public enum GridSqlOperationType {
 /** */
 private final String text;
 
+/** */
+private final boolean addSpace;
+
 /**
  * @param text Text.
+ * @param addSpace Add space char after the prefix.
  */
-private PrefixSqlGenerator(String text) {
+private PrefixSqlGenerator(String text, boolean addSpace) {
 this.text = text;
+this.addSpace = addSpace;
 }
 
 /** {@inheritDoc} */
 @Override public String getSql(GridSqlOperation operation) {
 assert operation.operationType().childrenCnt == 1;
 
-return '(' + text + ' ' + operation.child(0).getSQL() + ')';
+StringBuilder b = new StringBuilder();
+
+b.append('(').append(text);
+
+if (addSpace)
+b.append(' ');
+
+b.append(operation.child(0).getSQL()).append(')');
+
+return b.toString();
 }
 }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/f726dc48/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
index 16d7105..0f940e9 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
@@ -45,6 +45,7 @@ import org.h2.expression.Alias;
 import org.h2.expression.CompareLike;
 import org.h2.expression.Comparison;
 import org.h2.expression.ConditionAndOr;
+import org.h2.expression.ConditionExists;
 import org.h2.expre

[1/3] ignite git commit: Fixed.

2017-03-28 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master d44de994e -> db21f7354


Fixed.


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

Branch: refs/heads/master
Commit: 088b3c0f6255f47cbaa81d3f365c1f0925d675b4
Parents: 8362fe7
Author: Andrey V. Mashenkov 
Authored: Wed Mar 15 18:35:21 2017 +0300
Committer: Andrey V. Mashenkov 
Committed: Wed Mar 15 19:30:03 2017 +0300

--
 .../query/h2/opt/GridH2TreeIndex.java   |  4 +--
 .../query/IgniteSqlSegmentedIndexSelfTest.java  | 30 ++--
 2 files changed, 30 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/088b3c0f/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 2873211..663d863 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
@@ -286,8 +286,8 @@ public class GridH2TreeIndex extends GridH2IndexBase 
implements Comparatorhttp://git-wip-us.apache.org/repos/asf/ignite/blob/088b3c0f/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSegmentedIndexSelfTest.java
--
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSegmentedIndexSelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSegmentedIndexSelfTest.java
index f8c9dd5..800138c 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSegmentedIndexSelfTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSegmentedIndexSelfTest.java
@@ -27,6 +27,7 @@ import org.apache.ignite.IgniteCache;
 import org.apache.ignite.cache.CacheAtomicityMode;
 import org.apache.ignite.cache.CacheKeyConfiguration;
 import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicy;
 import org.apache.ignite.cache.query.SqlFieldsQuery;
 import org.apache.ignite.cache.query.annotations.QuerySqlField;
 import org.apache.ignite.configuration.CacheConfiguration;
@@ -34,6 +35,7 @@ import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+import org.apache.ignite.spi.swapspace.file.FileSwapSpaceSpi;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 
 /**
@@ -63,6 +65,8 @@ public class IgniteSqlSegmentedIndexSelfTest extends 
GridCommonAbstractTest {
 
 cfg.setDiscoverySpi(disco);
 
+cfg.setSwapSpaceSpi(new FileSwapSpaceSpi());
+
 return cfg;
 }
 
@@ -77,7 +81,7 @@ public class IgniteSqlSegmentedIndexSelfTest extends 
GridCommonAbstractTest {
  * @param idxTypes Indexed types.
  * @return Cache configuration.
  */
-private static  CacheConfiguration cacheConfig(String name, 
boolean partitioned, Class... idxTypes) {
+protected  CacheConfiguration cacheConfig(String name, boolean 
partitioned, Class... idxTypes) {
 return new CacheConfiguration()
 .setName(name)
 .setCacheMode(partitioned ? CacheMode.PARTITIONED : 
CacheMode.REPLICATED)
@@ -104,6 +108,28 @@ public class IgniteSqlSegmentedIndexSelfTest extends 
GridCommonAbstractTest {
 }
 
 /**
+ * Run tests on single-node grid
+ * @throws Exception If failed.
+ */
+public void testSingleNodeIndexSegmentationWithSwapEnabled() throws 
Exception {
+startGridsMultiThreaded(1, true);
+
+final IgniteCache cache = 
ignite(0).createCache(cacheConfig("org", true, Integer.class, 
Organization.class)
+.setOffHeapMaxMemory(-1)
+.setSwapEnabled(true)
+.setEvictionPolicy(new FifoEvictionPolicy(10)));
+
+for (int i = 0; i < 20; i++)
+cache.put(i, new Organization("org-" + i));
+
+String select0 = "select name from \"org\".Organization";
+

[3/3] ignite git commit: Merge remote-tracking branch 'origin/master'

2017-03-28 Thread sergi
Merge remote-tracking branch 'origin/master'


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

Branch: refs/heads/master
Commit: db21f73548efca8a3380b24577a08aad88b964fe
Parents: 118492d d44de99
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Tue Mar 28 18:12:05 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Tue Mar 28 18:12:05 2017 +0300

--
 .../internal/binary/BinaryClassDescriptor.java  |  10 +-
 .../ignite/internal/binary/BinaryContext.java   |   2 +-
 .../internal/binary/BinaryFieldMetadata.java| 127 +++
 .../ignite/internal/binary/BinaryMetadata.java  |  20 +-
 .../binary/BinaryMetadataCollector.java |  17 +-
 .../ignite/internal/binary/BinaryUtils.java |  14 +-
 .../binary/builder/BinaryObjectBuilderImpl.java |  14 +-
 .../binary/CacheObjectBinaryProcessor.java  |   3 +-
 .../binary/CacheObjectBinaryProcessorImpl.java  |   3 +-
 .../platform/PlatformContextImpl.java   |  82 +++
 modules/platforms/cpp/binary/Makefile.am|   2 +-
 .../platforms/cpp/binary/include/Makefile.am|   1 +
 .../include/ignite/binary/binary_object.h   |  75 ++-
 .../ignite/impl/binary/binary_field_meta.h  | 110 ++
 .../ignite/impl/binary/binary_id_resolver.h |  96 +++-
 .../ignite/impl/binary/binary_object_header.h   |  13 ++
 .../ignite/impl/binary/binary_object_impl.h | 124 +--
 .../include/ignite/impl/binary/binary_schema.h  |  10 +-
 .../ignite/impl/binary/binary_type_handler.h|  47 ++--
 .../ignite/impl/binary/binary_type_manager.h|  48 ++--
 .../ignite/impl/binary/binary_type_snapshot.h   |  82 +--
 .../ignite/impl/binary/binary_type_updater.h|  19 +-
 .../ignite/impl/binary/binary_writer_impl.h |  17 +-
 .../cpp/binary/project/vs/binary.vcxproj|   3 +-
 .../binary/project/vs/binary.vcxproj.filters|   9 +-
 .../src/impl/binary/binary_field_meta.cpp   |  42 
 .../src/impl/binary/binary_object_impl.cpp  | 139 +++-
 .../src/impl/binary/binary_type_handler.cpp |  45 +---
 .../src/impl/binary/binary_type_manager.cpp | 187 +++-
 .../src/impl/binary/binary_type_snapshot.cpp|  50 ++---
 .../src/impl/binary/binary_type_updater.cpp |  32 ---
 .../cpp/core-test/config/cache-identity.xml |  33 +++
 .../core-test/include/ignite/binary_test_defs.h |   5 +
 .../src/binary_identity_resolver_test.cpp   |  91 +++-
 .../cpp/core-test/src/binary_object_test.cpp| 220 ++-
 .../cpp/core-test/src/cache_invoke_test.cpp |   2 +
 .../cpp/core-test/src/cluster_test.cpp  |   5 +-
 .../impl/binary/binary_type_updater_impl.h  |   6 +-
 .../cpp/core/include/ignite/impl/ignite_impl.h  |  11 +
 .../ignite/impl/interop/interop_target.h|   2 +-
 .../impl/binary/binary_type_updater_impl.cpp| 101 +++--
 .../cpp/core/src/impl/ignite_environment.cpp|   4 +-
 .../core/src/impl/interop/interop_target.cpp|   2 +-
 .../Apache.Ignite.Core.csproj   |   1 +
 .../Impl/Binary/BinaryObjectBuilder.cs  |   2 +-
 .../Impl/Binary/BinaryProcessor.cs  |   3 +-
 .../Impl/Binary/BinaryWriter.cs |   2 +-
 .../Impl/Binary/Marshaller.cs   |   6 +-
 .../Impl/Binary/Metadata/BinaryField.cs |  72 ++
 .../Impl/Binary/Metadata/BinaryType.cs  |  38 +++-
 .../Binary/Metadata/BinaryTypeHashsetHandler.cs |  10 +-
 .../Impl/Binary/Metadata/BinaryTypeHolder.cs|   9 +-
 .../Impl/Binary/Metadata/IBinaryTypeHandler.cs  |   2 +-
 53 files changed, 1586 insertions(+), 484 deletions(-)
--




[2/3] ignite git commit: Merge branch 'ignite-4826' of https://github.com/gridgain/apache-ignite

2017-03-28 Thread sergi
Merge branch 'ignite-4826' of https://github.com/gridgain/apache-ignite


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

Branch: refs/heads/master
Commit: 118492d57bba1dcdae740839977de61240fc3158
Parents: 8ae3d5b 088b3c0
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Tue Mar 28 18:11:05 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Tue Mar 28 18:11:05 2017 +0300

--
 .../query/h2/opt/GridH2TreeIndex.java   |  4 +--
 .../query/IgniteSqlSegmentedIndexSelfTest.java  | 30 ++--
 2 files changed, 30 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/118492d5/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2TreeIndex.java
--



ignite git commit: master - improve tests

2017-03-22 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master 067cf8a23 -> c5a6ea6eb


master - improve tests


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

Branch: refs/heads/master
Commit: c5a6ea6eb03debc082cf57cf22ac2c7c81814c0c
Parents: 067cf8a
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Wed Mar 22 14:17:52 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed Mar 22 14:17:52 2017 +0300

--
 .../processors/query/IgniteSqlSplitterSelfTest.java  | 15 +--
 1 file changed, 13 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/c5a6ea6e/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
--
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
index 9dd12e1..8c880a3 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
@@ -153,11 +153,22 @@ public class IgniteSqlSplitterSelfTest extends 
GridCommonAbstractTest {
 }
 
 /**
- *
  */
 public void testReplicatedOnlyTables() {
+doTestReplicatedOnlyTables(1);
+}
+
+/**
+ */
+public void testReplicatedOnlyTablesSegmented() {
+doTestReplicatedOnlyTables(5);
+}
+
+/**
+ */
+private void doTestReplicatedOnlyTables(int segments) {
 IgniteCache<Integer,Value> p = 
ignite(0).getOrCreateCache(cacheConfig("p", true,
-Integer.class, Value.class));
+Integer.class, Value.class).setQueryParallelism(segments));
 IgniteCache<Integer,Value> r = 
ignite(0).getOrCreateCache(cacheConfig("r", false,
 Integer.class, Value.class));
 



ignite git commit: ignite-1.9 - test added

2017-03-22 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master 827befb7f -> 067cf8a23


ignite-1.9 - test added


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

Branch: refs/heads/master
Commit: 067cf8a23d06acda873ac73d8f99f30eba9abb12
Parents: 827befb
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Sat Mar 18 14:46:00 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed Mar 22 12:11:22 2017 +0300

--
 .../query/IgniteSqlSplitterSelfTest.java| 28 
 1 file changed, 28 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/067cf8a2/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
--
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
index b7d5bab..9dd12e1 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
@@ -153,6 +153,34 @@ public class IgniteSqlSplitterSelfTest extends 
GridCommonAbstractTest {
 }
 
 /**
+ *
+ */
+public void testReplicatedOnlyTables() {
+IgniteCache<Integer,Value> p = 
ignite(0).getOrCreateCache(cacheConfig("p", true,
+Integer.class, Value.class));
+IgniteCache<Integer,Value> r = 
ignite(0).getOrCreateCache(cacheConfig("r", false,
+Integer.class, Value.class));
+
+try {
+int cnt = 1000;
+
+for (int i = 0; i < cnt; i++)
+r.put(i, new Value(i, -i));
+
+// Query data from replicated table using partitioned cache.
+assertEquals(cnt, p.query(new SqlFieldsQuery("select 1 from 
\"r\".Value")).getAll().size());
+
+List<List> res = p.query(new SqlFieldsQuery("select count(1) 
from \"r\".Value")).getAll();
+assertEquals(1, res.size());
+assertEquals(cnt, ((Number)res.get(0).get(0)).intValue());
+}
+finally {
+p.destroy();
+r.destroy();
+}
+}
+
+/**
  * @throws Exception If failed.
  */
 public void testSortedMergeIndex() throws Exception {



[2/3] ignite git commit: ignite-1.9 - SQL related fixes and improvements: - Sorted MERGE index - EXPLAIN fixes - Replicated subqueries fixes

2017-03-09 Thread sergi
ignite-1.9 - SQL related fixes and improvements:
 - Sorted MERGE index
 - EXPLAIN fixes
 - Replicated subqueries fixes

Squashed commit of the following:

commit 423c2155c85ed9be8dffb3517b7331b753e1ce5c
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Date:   Thu Mar 9 23:21:38 2017 +0300

ignite-1.9.1 - test fix

commit ff3c1f2967905b0bcac7661014656d1c080fa803
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Date:   Thu Mar 9 11:08:34 2017 +0300

ignite-1.9.0 - replicated subqueries fix

commit bc0801a3c976f5d87cab2c414f76f69dc28b43d7
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Date:   Wed Mar 8 16:03:40 2017 +0300

ignite-1.9.0 - fix for distributed join test

commit f1f1d96c6babaadab9e3ed1fbb3c9740c94d8209
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Date:   Wed Mar 8 15:28:44 2017 +0300

ignite-1.9.0 - fix for distributed join test

commit a8751d535b3e025a804c441204465e94035a5247
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Date:   Tue Feb 28 18:46:07 2017 +0300

ignite-1.9 - splitter fixes

commit 0601ce6e291eb4689d526e922b02fd9e21df5b08
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Date:   Sun Feb 26 23:24:14 2017 +0300

ignite-1.9 - merge index test

commit 4ad048e248157d799a325b3ce9975d4ad8a9fb49
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Date:   Sun Feb 26 23:19:49 2017 +0300

ignite-1.9 - merge index

commit 4ea63d7335000b8f30bfbd1bb907e411cd62a5e8
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Date:   Sun Feb 26 22:44:51 2017 +0300

ignite-1.9 - unsorted index fixed

commit a639bff6f25a8397e49a892f830c9de23c847127
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Date:   Sun Feb 26 20:08:26 2017 +0300

ignite-1.9 - sorted index fixes2

commit ee9d524f5a0d6f1c416345822e8201c327f1e562
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Date:   Fri Feb 24 16:00:26 2017 +0300

ignite-1.9 - sorted index fixes

commit fc42406a9e55851d53d9dfed8e6cf3c8b12af345
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Date:   Thu Feb 23 16:46:39 2017 +0300

ignite-1.9 - sorted index


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

Branch: refs/heads/master
Commit: 8817190e1dd31d869682df0167bb3e82fb597aad
Parents: 8362fe7
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Thu Mar 9 23:30:09 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Thu Mar 9 23:30:09 2017 +0300

--
 .../cache/query/GridCacheSqlQuery.java  |  82 -
 .../processors/query/h2/IgniteH2Indexing.java   |   4 +-
 .../query/h2/opt/GridH2CollocationModel.java|   6 +-
 .../query/h2/opt/GridH2ScanIndex.java   | 273 +
 .../processors/query/h2/opt/GridH2Table.java| 244 +--
 .../processors/query/h2/sql/GridSqlQuery.java   |  17 --
 .../query/h2/sql/GridSqlQueryParser.java|   4 +-
 .../query/h2/sql/GridSqlQuerySplitter.java  |  38 ++-
 .../query/h2/sql/GridSqlSortColumn.java |  41 +++
 .../query/h2/twostep/GridMapQueryExecutor.java  |  83 +++--
 .../query/h2/twostep/GridMergeIndex.java| 300 +++
 .../query/h2/twostep/GridMergeIndexSorted.java  | 172 ---
 .../h2/twostep/GridMergeIndexUnsorted.java  |  67 -
 .../query/h2/twostep/GridMergeTable.java|  70 -
 .../h2/twostep/GridReduceQueryExecutor.java | 101 +--
 .../query/h2/twostep/GridResultPage.java|  34 ++-
 .../h2/twostep/msg/GridH2QueryRequest.java  |  11 +-
 .../cache/IgniteCacheAbstractQuerySelfTest.java |  10 +-
 .../query/IgniteSqlSplitterSelfTest.java| 100 ++-
 .../query/h2/sql/H2CompareBigQueryTest.java |   4 +-
 .../IgniteCacheQuerySelfTestSuite.java  |   2 +
 .../processors/query/h2/sql/bigQuery.sql|  34 ++-
 22 files changed, 1138 insertions(+), 559 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/8817190e/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlQuery.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlQuery.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlQuery.java
index 18688b7..c4bb205 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlQuery.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheSqlQuery.java
@@ -19,6 +19,8 @@ package org.apache.

[1/3] ignite git commit: ignite-1.9 - SQL related fixes and improvements: - Sorted MERGE index - EXPLAIN fixes - Replicated subqueries fixes

2017-03-09 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/master a61a98ad3 -> 32506d69c


http://git-wip-us.apache.org/repos/asf/ignite/blob/8817190e/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
index 4cae6ac..8d3ece9 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
@@ -67,6 +67,7 @@ import 
org.apache.ignite.internal.processors.query.GridQueryCancel;
 import org.apache.ignite.internal.processors.query.GridRunningQueryInfo;
 import org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing;
 import org.apache.ignite.internal.processors.query.h2.opt.GridH2QueryContext;
+import org.apache.ignite.internal.processors.query.h2.sql.GridSqlSortColumn;
 import org.apache.ignite.internal.processors.query.h2.sql.GridSqlType;
 import 
org.apache.ignite.internal.processors.query.h2.twostep.messages.GridQueryCancelRequest;
 import 
org.apache.ignite.internal.processors.query.h2.twostep.messages.GridQueryFailResponse;
@@ -86,6 +87,7 @@ import 
org.apache.ignite.plugin.extensions.communication.Message;
 import org.h2.command.ddl.CreateTableData;
 import org.h2.engine.Session;
 import org.h2.index.Cursor;
+import org.h2.index.Index;
 import org.h2.jdbc.JdbcConnection;
 import org.h2.jdbc.JdbcResultSet;
 import org.h2.jdbc.JdbcStatement;
@@ -97,6 +99,7 @@ import org.h2.value.Value;
 import org.jetbrains.annotations.Nullable;
 import org.jsr166.ConcurrentHashMap8;
 
+import static java.util.Collections.singletonList;
 import static 
org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion.NONE;
 import static 
org.apache.ignite.internal.processors.cache.query.GridCacheQueryType.SQL_FIELDS;
 import static 
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.setupConnection;
@@ -115,6 +118,12 @@ public class GridReduceQueryExecutor {
 private static final IgniteProductVersion DISTRIBUTED_JOIN_SINCE = 
IgniteProductVersion.fromString("1.7.0");
 
 /** */
+private static final String MERGE_INDEX_UNSORTED = "merge_scan";
+
+/** */
+private static final String MERGE_INDEX_SORTED = "merge_sorted";
+
+/** */
 private GridKernalContext ctx;
 
 /** */
@@ -354,7 +363,7 @@ public class GridReduceQueryExecutor {
 
 if (msg.retry() != null)
 retry(r, msg.retry(), node.id());
-else if (msg.allRows() != -1) // Only the first page contains row 
count.
+else if (msg.page() == 0) // Do count down on each first page received.
 r.latch.countDown();
 }
 
@@ -518,7 +527,7 @@ public class GridReduceQueryExecutor {
 Map partsMap = null;
 
 if (qry.isLocal())
-nodes = Collections.singleton(ctx.discovery().localNode());
+nodes = singletonList(ctx.discovery().localNode());
 else {
 if (isPreloadingActive(cctx, extraSpaces)) {
 if (cctx.isReplicated())
@@ -542,17 +551,17 @@ public class GridReduceQueryExecutor {
 "We must be on a client node.";
 
 // Select random data node to run query on a replicated 
data or get EXPLAIN PLAN from a single node.
-nodes = Collections.singleton(F.rand(nodes));
+nodes = singletonList(F.rand(nodes));
 }
 }
 
-final Collection finalNodes = nodes;
-
 int tblIdx = 0;
 
 final boolean skipMergeTbl = !qry.explain() && 
qry.skipMergeTable();
 
-final int segmentsPerIndex = cctx.config().getQueryParallelism();
+final int segmentsPerIndex = qry.explain() ? 1 : 
cctx.config().getQueryParallelism();
+
+int replicatedQrysCnt = 0;
 
 for (GridCacheSqlQuery mapQry : qry.mapQueries()) {
 GridMergeIndex idx;
@@ -567,19 +576,33 @@ public class GridReduceQueryExecutor {
 throw new IgniteException(e);
 }
 
-idx = tbl.getScanIndex(null);
+idx = tbl.getMergeIndex();
 
 fakeTable(r.conn, tblIdx++).innerTable(tbl);
 }
 else
 idx = GridMergeIndexUnsorted.createDummy(ctx);
 
-idx.setSources(nodes, segmentsPerIndex);
+// If the query has only replicated tables, we have to run it 
on a single node only.
+if 

[3/3] ignite git commit: Merge branch 'ignite-1.9.2' of https://github.com/gridgain/apache-ignite

2017-03-09 Thread sergi
Merge branch 'ignite-1.9.2' of https://github.com/gridgain/apache-ignite


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

Branch: refs/heads/master
Commit: 32506d69c6b2654a3547a6797254c7527c6ef239
Parents: a61a98a 8817190
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Thu Mar 9 23:39:48 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Thu Mar 9 23:39:48 2017 +0300

--
 .../cache/query/GridCacheSqlQuery.java  |  82 -
 .../processors/query/h2/IgniteH2Indexing.java   |   4 +-
 .../query/h2/opt/GridH2CollocationModel.java|   6 +-
 .../query/h2/opt/GridH2ScanIndex.java   | 273 +
 .../processors/query/h2/opt/GridH2Table.java| 244 +--
 .../processors/query/h2/sql/GridSqlQuery.java   |  17 --
 .../query/h2/sql/GridSqlQueryParser.java|   4 +-
 .../query/h2/sql/GridSqlQuerySplitter.java  |  38 ++-
 .../query/h2/sql/GridSqlSortColumn.java |  41 +++
 .../query/h2/twostep/GridMapQueryExecutor.java  |  83 +++--
 .../query/h2/twostep/GridMergeIndex.java| 300 +++
 .../query/h2/twostep/GridMergeIndexSorted.java  | 172 ---
 .../h2/twostep/GridMergeIndexUnsorted.java  |  67 -
 .../query/h2/twostep/GridMergeTable.java|  70 -
 .../h2/twostep/GridReduceQueryExecutor.java | 101 +--
 .../query/h2/twostep/GridResultPage.java|  34 ++-
 .../h2/twostep/msg/GridH2QueryRequest.java  |  11 +-
 .../cache/IgniteCacheAbstractQuerySelfTest.java |  10 +-
 .../query/IgniteSqlSplitterSelfTest.java| 100 ++-
 .../query/h2/sql/H2CompareBigQueryTest.java |   4 +-
 .../IgniteCacheQuerySelfTestSuite.java  |   2 +
 .../processors/query/h2/sql/bigQuery.sql|  34 ++-
 22 files changed, 1138 insertions(+), 559 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/32506d69/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
--

http://git-wip-us.apache.org/repos/asf/ignite/blob/32506d69/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
--



[1/2] ignite git commit: ignite-3477-index2 SQL inline indexes (simple types, Strings, Bytes)

2017-03-01 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-3477 ee28b9cb8 -> c4490ddce


ignite-3477-index2 SQL inline indexes (simple types, Strings, Bytes)


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

Branch: refs/heads/ignite-3477
Commit: 78c2a7f410d9086d836e4c5596cb47187b52c95d
Parents: ee28b9c
Author: Konstantin Dudkov 
Authored: Wed Mar 1 16:54:45 2017 +0300
Committer: Konstantin Dudkov 
Committed: Wed Mar 1 16:54:45 2017 +0300

--
 .../configuration/CacheConfiguration.java   |  28 ++
 .../core/src/test/java/FullTextIndexTest.java   | 316 +++
 .../testframework/junits/GridAbstractTest.java  |   2 +-
 .../processors/query/h2/database/H2Tree.java| 120 +-
 .../query/h2/database/H2TreeIndex.java  | 167 ++--
 .../query/h2/database/InlineIndexHelper.java| 400 ---
 .../query/h2/database/io/H2ExtrasInnerIO.java   |  12 +-
 .../query/h2/database/io/H2ExtrasLeafIO.java|   9 +-
 .../processors/query/h2/opt/GridH2Table.java|   2 +-
 .../query/h2/database/H2TreeIndexTest.java  |  59 ---
 .../h2/database/InlineIndexHelperTest.java  | 316 ++-
 11 files changed, 1153 insertions(+), 278 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/78c2a7f4/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
index 6c56fc5..c41be0c2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
@@ -136,6 +136,9 @@ public class CacheConfiguration extends 
MutableConfiguration {
 /** Default cache size to use with eviction policy. */
 public static final int DFLT_CACHE_SIZE = 10;
 
+/** Default maximum inline size for sql indexes. */
+public static final int DFLT_SQL_INDEX_MAX_INLINE_SIZE = -1;
+
 /** Initial default near cache size. */
 public static final int DFLT_NEAR_START_SIZE = DFLT_START_SIZE / 4;
 
@@ -321,6 +324,9 @@ public class CacheConfiguration extends 
MutableConfiguration {
 /** Maximum number of concurrent asynchronous operations. */
 private int maxConcurrentAsyncOps = DFLT_MAX_CONCURRENT_ASYNC_OPS;
 
+/** Maximum inline size for sql indexes. */
+private int sqlIndexMaxInlineSize = DFLT_SQL_INDEX_MAX_INLINE_SIZE;
+
 /** Write-behind feature. */
 private boolean writeBehindEnabled = DFLT_WRITE_BEHIND_ENABLED;
 
@@ -461,6 +467,7 @@ public class CacheConfiguration extends 
MutableConfiguration {
 longQryWarnTimeout = cc.getLongQueryWarningTimeout();
 offHeapMaxMem = cc.getOffHeapMaxMemory();
 maxConcurrentAsyncOps = cc.getMaxConcurrentAsyncOperations();
+sqlIndexMaxInlineSize = cc.getSqlIndexMaxInlineSize();
 name = cc.getName();
 nearCfg = cc.getNearConfiguration();
 nodeFilter = cc.getNodeFilter();
@@ -1286,6 +1293,27 @@ public class CacheConfiguration extends 
MutableConfiguration {
 }
 
 /**
+ * Gets maximum inline size for sql indexes. If -1 returned then
+ * {@code IgniteSystemProperties.IGNITE_MAX_INDEX_PAYLOAD_SIZE} system 
property is used.
+ * 
+ * If not set, default value is {@link #DFLT_SQL_INDEX_MAX_INLINE_SIZE}.
+ *
+ * @return Maximum payload size for offheap indexes.
+ */
+public int getSqlIndexMaxInlineSize() {
+return sqlIndexMaxInlineSize;
+}
+
+/**
+ * Sets maximum inline size for sql indexes.
+ *
+ * @param sqlIndexMaxInlineSize Maximum inline size for sql indexes.
+ */
+public void setSqlIndexMaxInlineSize(int sqlIndexMaxInlineSize) {
+this.sqlIndexMaxInlineSize = sqlIndexMaxInlineSize;
+}
+
+/**
  * Flag indicating whether Ignite should use write-behind behaviour for 
the cache store.
  * By default write-behind is disabled which is defined via {@link 
#DFLT_WRITE_BEHIND_ENABLED}
  * constant.

http://git-wip-us.apache.org/repos/asf/ignite/blob/78c2a7f4/modules/core/src/test/java/FullTextIndexTest.java
--
diff --git a/modules/core/src/test/java/FullTextIndexTest.java 
b/modules/core/src/test/java/FullTextIndexTest.java
new file mode 100644
index 000..05a9541
--- /dev/null
+++ 

[2/2] ignite git commit: ignite-3477 - minor

2017-03-01 Thread sergi
ignite-3477 - minor


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

Branch: refs/heads/ignite-3477
Commit: c4490ddce4a836fd41fa6d65d3fbfd7b94e56995
Parents: 78c2a7f
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Wed Mar 1 22:23:26 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed Mar 1 22:23:26 2017 +0300

--
 .../org/apache/ignite/testframework/junits/GridAbstractTest.java   | 2 +-
 .../ignite/internal/processors/query/h2/opt/GridH2Table.java   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/c4490ddc/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
--
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
index 3be511e..b45e173 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
@@ -1263,7 +1263,7 @@ public abstract class GridAbstractTest extends TestCase {
 public String getTestGridName() {
 String[] parts = getClass().getName().split("\\.");
 
-return "tg1";
+return parts[parts.length - 2] + '.' + parts[parts.length - 1];
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/c4490ddc/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
index b93bd5e..30219dc 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2Table.java
@@ -579,7 +579,7 @@ public class GridH2Table extends TableBase {
  * @throws IgniteCheckedException If failed.
  */
 @SuppressWarnings("LockAcquiredButNotSafelyReleased")
-public boolean doUpdate(final GridH2Row row, boolean del) throws 
IgniteCheckedException {
+boolean doUpdate(final GridH2Row row, boolean del) throws 
IgniteCheckedException {
 // Here we assume that each key can't be updated concurrently and case 
when different indexes
 // getting updated from different threads with different rows with the 
same key is impossible.
 GridUnsafeMemory mem = desc == null ? null : desc.memory();



[1/2] ignite git commit: ignite-1.9 - compilation

2017-02-22 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-1.9 80352d0a8 -> 57291773c


ignite-1.9 - compilation


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

Branch: refs/heads/ignite-1.9
Commit: cf3de19ccacf5c15c16df8a4e4c193d88c7dc56b
Parents: e3d7326
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Wed Feb 22 16:43:05 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed Feb 22 16:43:05 2017 +0300

--
 .../query/h2/GridH2IndexingGeoSelfTest.java   | 18 +++---
 1 file changed, 11 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/cf3de19c/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/GridH2IndexingGeoSelfTest.java
--
diff --git 
a/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/GridH2IndexingGeoSelfTest.java
 
b/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/GridH2IndexingGeoSelfTest.java
index 839514b..b53387f 100644
--- 
a/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/GridH2IndexingGeoSelfTest.java
+++ 
b/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/GridH2IndexingGeoSelfTest.java
@@ -43,7 +43,6 @@ import 
org.apache.ignite.internal.processors.cache.GridCacheAbstractSelfTest;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.testframework.GridTestUtils;
-import org.jetbrains.annotations.NotNull;
 
 /**
  * Geo-indexing test.
@@ -90,7 +89,8 @@ public class GridH2IndexingGeoSelfTest extends 
GridCacheAbstractSelfTest {
  * @throws Exception If failed.
  */
 public void testPrimitiveGeometry() throws Exception {
-IgniteCache<Long, Geometry> cache = 
grid(0).getOrCreateCache(cacheConfig("geom", true, Long.class, Geometry.class));
+IgniteCache<Long, Geometry> cache = grid(0).getOrCreateCache(
+this.<Long, Geometry>cacheConfig("geom", true, Long.class, 
Geometry.class));
 
 try {
 WKTReader r = new WKTReader();
@@ -114,7 +114,7 @@ public class GridH2IndexingGeoSelfTest extends 
GridCacheAbstractSelfTest {
 @SuppressWarnings("unchecked")
 public void testGeo() throws Exception {
 IgniteCache<Integer, EnemyCamp> cache = grid(0).getOrCreateCache(
-cacheConfig("camp", true, Integer.class, EnemyCamp.class));
+this.<Integer, EnemyCamp>cacheConfig("camp", true, Integer.class, 
EnemyCamp.class));
 
 try {
 WKTReader r = new WKTReader();
@@ -301,8 +301,10 @@ public class GridH2IndexingGeoSelfTest extends 
GridCacheAbstractSelfTest {
  * @throws Exception if fails.
  */
 public void testSegmentedGeoIndexJoin() throws Exception {
-IgniteCache<Integer, Enemy> c1 = 
ignite(0).getOrCreateCache(cacheConfig("enemy", true, Integer.class, 
Enemy.class));
-IgniteCache<Integer, EnemyCamp> c2 = 
ignite(0).getOrCreateCache(cacheConfig("camp", true, Integer.class, 
EnemyCamp.class));
+IgniteCache<Integer, Enemy> c1 = ignite(0).getOrCreateCache(
+this.<Integer, Enemy>cacheConfig("enemy", true, Integer.class, 
Enemy.class));
+IgniteCache<Integer, EnemyCamp> c2 = ignite(0).getOrCreateCache(
+this.<Integer, EnemyCamp>cacheConfig("camp", true, Integer.class, 
EnemyCamp.class));
 
 try {
 fillCache();
@@ -321,8 +323,10 @@ public class GridH2IndexingGeoSelfTest extends 
GridCacheAbstractSelfTest {
  * @throws Exception if fails.
  */
 public void testSegmentedGeoIndexJoin2() throws Exception {
-IgniteCache<Integer, Enemy> c1 = 
ignite(0).getOrCreateCache(cacheConfig("enemy", true, Integer.class, 
Enemy.class));
-IgniteCache<Integer, EnemyCamp> c2 = 
ignite(0).getOrCreateCache(cacheConfig("camp", false, Integer.class, 
EnemyCamp.class));
+IgniteCache<Integer, Enemy> c1 = ignite(0).getOrCreateCache(
+this.<Integer, Enemy>cacheConfig("enemy", true, Integer.class, 
Enemy.class));
+IgniteCache<Integer, EnemyCamp> c2 = ignite(0).getOrCreateCache(
+this.<Integer, EnemyCamp>cacheConfig("camp", false, Integer.class, 
EnemyCamp.class));
 
 try {
 fillCache();



[2/2] ignite git commit: Merge branch 'ignite-1.9' of https://git-wip-us.apache.org/repos/asf/ignite into ignite-1.9

2017-02-22 Thread sergi
Merge branch 'ignite-1.9' of https://git-wip-us.apache.org/repos/asf/ignite 
into ignite-1.9


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

Branch: refs/heads/ignite-1.9
Commit: 57291773cf9ddfbf78c3370429a1fb630a907603
Parents: cf3de19 80352d0
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Wed Feb 22 16:43:21 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed Feb 22 16:43:21 2017 +0300

--
 .../cpp/common/project/vs/common.vcxproj|  1 -
 .../common/project/vs/common.vcxproj.filters|  6 -
 .../platforms/cpp/common/project/vs/targetver.h | 25 
 .../platforms/cpp/jni/project/vs/jni.vcxproj|  1 -
 .../cpp/jni/project/vs/jni.vcxproj.filters  |  3 ---
 .../platforms/cpp/jni/project/vs/targetver.h| 25 
 6 files changed, 61 deletions(-)
--




[06/12] ignite git commit: Minor

2017-02-22 Thread sergi
Minor


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

Branch: refs/heads/ignite-1.9
Commit: 56ce2237a87c2285d9e2f2e8ce433ba17d27c64c
Parents: 5b774f6
Author: Andrey V. Mashenkov 
Authored: Tue Feb 21 12:23:28 2017 +0300
Committer: Andrey V. Mashenkov 
Committed: Tue Feb 21 12:52:33 2017 +0300

--
 .../processors/query/h2/twostep/GridMapQueryExecutor.java | 7 +--
 .../processors/query/h2/twostep/GridMergeIndexSorted.java | 4 ++--
 .../processors/query/h2/twostep/GridReduceQueryExecutor.java  | 2 +-
 3 files changed, 8 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/56ce2237/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
index 72a34a6..f002a5e 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
@@ -458,6 +458,8 @@ public class GridMapQueryExecutor {
 req.isFlagSet(GridH2QueryRequest.FLAG_IS_LOCAL),
 req.isFlagSet(GridH2QueryRequest.FLAG_DISTRIBUTED_JOINS));
 
+final boolean enforceJoinOrder = 
req.isFlagSet(GridH2QueryRequest.FLAG_ENFORCE_JOIN_ORDER);
+
 for (int i = 1; i < mainCctx.config().getQueryParallelism(); i++) {
 final int segment = i;
 
@@ -475,6 +477,7 @@ public class GridMapQueryExecutor {
 req.tables(),
 req.pageSize(),
 joinMode,
+enforceJoinOrder,
 req.timeout());
 
 return null;
@@ -494,7 +497,7 @@ public class GridMapQueryExecutor {
 req.tables(),
 req.pageSize(),
 joinMode,
-req.isFlagSet(GridH2QueryRequest.FLAG_ENFORCE_JOIN_ORDER),
+enforceJoinOrder,
 req.timeout());
 }
 
@@ -585,7 +588,7 @@ public class GridMapQueryExecutor {
 Connection conn = h2.connectionForSpace(mainCctx.name());
 
 // Here we enforce join order to have the same behavior on all the 
nodes.
-h2.setupConnection(conn, distributedJoinMode != OFF, 
enforceJoinOrder);
+setupConnection(conn, distributedJoinMode != OFF, 
enforceJoinOrder);
 
 GridH2QueryContext.set(qctx);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/56ce2237/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexSorted.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexSorted.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexSorted.java
index a1b6691..32c676d 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexSorted.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMergeIndexSorted.java
@@ -85,8 +85,8 @@ public final class GridMergeIndexSorted extends 
GridMergeIndex {
 }
 
 /** {@inheritDoc} */
-@Override public void setSources(Collection nodes) {
-super.setSources(nodes);
+@Override public void setSources(Collection nodes, int 
segmentsCnt) {
+super.setSources(nodes, segmentsCnt);
 
 streamsMap = U.newHashMap(nodes.size());
 streams = new RowStream[nodes.size()];

http://git-wip-us.apache.org/repos/asf/ignite/blob/56ce2237/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
index 3cfaae9..4cae6ac 100644
--- 

[09/12] ignite git commit: Fix queries with binary marshaller.

2017-02-22 Thread sergi
Fix queries with binary marshaller.


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

Branch: refs/heads/ignite-1.9
Commit: de6e52ba54ce58f0dadad16de8aae14b55ab8478
Parents: f4d36cb
Author: Andrey V. Mashenkov 
Authored: Tue Feb 21 16:27:08 2017 +0300
Committer: Andrey V. Mashenkov 
Committed: Tue Feb 21 16:27:08 2017 +0300

--
 .../internal/processors/query/h2/opt/GridH2TreeIndex.java  | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/de6e52ba/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 07c3e6d..80597f2 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
@@ -439,7 +439,11 @@ public class GridH2TreeIndex extends GridH2IndexBase 
implements Comparator

[04/12] ignite git commit: Minor

2017-02-22 Thread sergi
Minor


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

Branch: refs/heads/ignite-1.9
Commit: f684c00affa25d67557b382e6ffaf2d1de45c964
Parents: e69d3c3
Author: Andrey V. Mashenkov 
Authored: Tue Feb 21 12:00:41 2017 +0300
Committer: Andrey V. Mashenkov 
Committed: Tue Feb 21 12:00:41 2017 +0300

--
 .../ignite/internal/processors/query/h2/IgniteH2Indexing.java| 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/f684c00a/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 652d1f3..de48eb9 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
@@ -2831,7 +2831,7 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
 if (!ctor.isAccessible())
 ctor.setAccessible(true);
 
-final int segments = 
tbl.rowDescriptor().context().config().getQueryParallelism();
+final int segments = 
tbl.rowDescriptor().configuration().getQueryParallelism();
 
 return (SpatialIndex)ctor.newInstance(tbl, idxName, segments, 
cols);
 }
@@ -2848,7 +2848,7 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
  * @return
  */
 private Index createTreeIndex(String idxName, GridH2Table tbl, boolean 
pk, List columns) {
-final int segments = 
tbl.rowDescriptor().context().config().getQueryParallelism();
+final int segments = 
tbl.rowDescriptor().configuration().getQueryParallelism();
 
 return new GridH2TreeIndex(idxName, tbl, pk, columns, segments);
 }



[02/12] ignite git commit: Implemented.

2017-02-22 Thread sergi
Implemented.


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

Branch: refs/heads/ignite-1.9
Commit: 64ba13b0a3be6acbf7d629029b460a39c2e2b388
Parents: 4eac51c
Author: AMRepo 
Authored: Mon Feb 20 21:24:29 2017 +0300
Committer: Andrey V. Mashenkov 
Committed: Tue Feb 21 11:52:40 2017 +0300

--
 .../configuration/CacheConfiguration.java   |  48 
 .../processors/cache/GridCacheProcessor.java|   3 +
 .../processors/cache/IgniteCacheProxy.java  |   6 +-
 .../closure/GridClosureProcessor.java   |   2 +-
 .../processors/query/GridQueryIndexing.java |  27 +-
 .../processors/query/GridQueryProcessor.java| 141 +++---
 .../messages/GridQueryNextPageRequest.java  |  29 +-
 .../messages/GridQueryNextPageResponse.java |  29 +-
 .../cache/query/GridCacheTwoStepQuery.java  |  17 ++
 .../processors/query/h2/IgniteH2Indexing.java   | 235 ++--
 .../query/h2/opt/DistributedJoinMode.java   |  51 
 .../query/h2/opt/GridH2IndexBase.java   | 264 +-
 .../query/h2/opt/GridH2QueryContext.java|  84 --
 .../query/h2/opt/GridH2TreeIndex.java   | 232 
 .../query/h2/twostep/GridMapQueryExecutor.java  | 227 +++
 .../query/h2/twostep/GridMergeIndex.java|  39 ++-
 .../h2/twostep/GridReduceQueryExecutor.java |  69 +++--
 .../h2/twostep/msg/GridH2IndexRangeRequest.java |  60 +++-
 .../twostep/msg/GridH2IndexRangeResponse.java   |  62 -
 .../h2/twostep/msg/GridH2QueryRequest.java  |   5 +
 .../query/IgniteSqlSegmentedIndexSelfTest.java  | 263 ++
 .../query/IgniteSqlSplitterSelfTest.java| 139 +-
 .../h2/GridIndexingSpiAbstractSelfTest.java |  26 +-
 .../FetchingQueryCursorStressTest.java  | 277 +++
 .../IgniteCacheQuerySelfTestSuite.java  |   2 +
 25 files changed, 1917 insertions(+), 420 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/64ba13b0/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
index 0656dda..149f25a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
@@ -223,6 +223,9 @@ public class CacheConfiguration extends 
MutableConfiguration {
 /** Default threshold for concurrent loading of keys from {@link 
CacheStore}. */
 public static final int DFLT_CONCURRENT_LOAD_ALL_THRESHOLD = 5;
 
+/** Default SQL query parallelism level */
+public static final int DFLT_SQL_QUERY_PARALLELISM_LVL = 1;
+
 /** Cache name. */
 private String name;
 
@@ -410,6 +413,9 @@ public class CacheConfiguration extends 
MutableConfiguration {
 /** Query entities. */
 private Collection qryEntities;
 
+/** */
+private int qryParallelism = DFLT_SQL_QUERY_PARALLELISM_LVL;
+
 /** Empty constructor (all values are initialized to their defaults). */
 public CacheConfiguration() {
 /* No-op. */
@@ -462,6 +468,7 @@ public class CacheConfiguration extends 
MutableConfiguration {
 interceptor = cc.getInterceptor();
 invalidate = cc.isInvalidate();
 isReadThrough = cc.isReadThrough();
+qryParallelism = cc.getQueryParallelism();
 isWriteThrough = cc.isWriteThrough();
 storeKeepBinary = cc.isStoreKeepBinary() != null ? 
cc.isStoreKeepBinary() : DFLT_STORE_KEEP_BINARY;
 listenerConfigurations = cc.listenerConfigurations;
@@ -2108,6 +2115,47 @@ public class CacheConfiguration extends 
MutableConfiguration {
 }
 
 /**
+ * Defines a hint to query execution engine on desired degree of 
parallelism within a single node.
+ * Query executor may or may not use this hint depending on estimated 
query costs. Query executor may define
+ * certain restrictions on parallelism depending on query type and/or 
cache type.
+ * 
+ * As of {@code Apache Ignite 1.9} this hint is only supported for SQL 
queries with the following restrictions:
+ * 
+ * Hint cannot be used for {@code REPLICATED} cache, exception is 
thrown otherwise
+ * All caches participating in query must have the same degree of 
parallelism, exception is thrown

[07/12] ignite git commit: Minors

2017-02-22 Thread sergi
Minors


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

Branch: refs/heads/ignite-1.9
Commit: 2e90a07218272c5cb2c09111e193a3613d3d51ac
Parents: 56ce223
Author: Andrey V. Mashenkov 
Authored: Tue Feb 21 15:05:51 2017 +0300
Committer: Andrey V. Mashenkov 
Committed: Tue Feb 21 15:05:51 2017 +0300

--
 .../query/h2/opt/GridH2TreeIndex.java   | 34 
 1 file changed, 6 insertions(+), 28 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/2e90a072/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 64ca9ea..07c3e6d 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
@@ -45,25 +45,13 @@ import org.h2.table.TableFilter;
 import org.h2.value.Value;
 import org.jetbrains.annotations.Nullable;
 
+import static 
org.apache.ignite.internal.processors.query.h2.opt.GridH2AbstractKeyValueRow.KEY_COL;
+
 /**
  * Base class for snapshotable segmented tree indexes.
  */
 @SuppressWarnings("ComparatorNotSerializable")
 public class GridH2TreeIndex extends GridH2IndexBase implements 
Comparator {
-/** */
-private static Field KEY_FIELD;
-
-/** */
-static {
-try {
-KEY_FIELD = 
GridH2AbstractKeyValueRow.class.getDeclaredField("key");
-KEY_FIELD.setAccessible(true);
-}
-catch (NoSuchFieldException e) {
-KEY_FIELD = null;
-}
-}
-
 /** Index segments. */
 private final ConcurrentNavigableMap[] 
segments;
 
@@ -451,22 +439,12 @@ public class GridH2TreeIndex extends GridH2IndexBase 
implements Comparator

[12/12] ignite git commit: Merge branch 'ignite-4106-1.9' of https://github.com/gridgain/apache-ignite into ignite-1.9

2017-02-22 Thread sergi
Merge branch 'ignite-4106-1.9' of https://github.com/gridgain/apache-ignite 
into ignite-1.9


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

Branch: refs/heads/ignite-1.9
Commit: 658b4ad5a3bf17fcb3fb9f364e47b4e28f5eea64
Parents: 963a9d9 4dc3694
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Wed Feb 22 13:17:43 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed Feb 22 13:17:43 2017 +0300

--
 .../configuration/CacheConfiguration.java   |  48 +++
 .../processors/cache/GridCacheProcessor.java|   3 +
 .../processors/cache/IgniteCacheProxy.java  |   6 +-
 .../closure/GridClosureProcessor.java   |   2 +-
 .../processors/query/GridQueryIndexing.java |  27 +-
 .../processors/query/GridQueryProcessor.java| 141 ++-
 .../messages/GridQueryNextPageRequest.java  |  29 +-
 .../messages/GridQueryNextPageResponse.java |  29 +-
 .../query/h2/opt/GridH2SpatialIndex.java|  56 ++-
 .../query/h2/GridH2IndexingGeoSelfTest.java | 405 ++-
 .../h2/GridH2IndexingSegmentedGeoSelfTest.java  |  37 ++
 .../testsuites/GeoSpatialIndexingTestSuite.java |   2 +
 .../cache/query/GridCacheTwoStepQuery.java  |  17 +
 .../processors/query/h2/IgniteH2Indexing.java   | 238 +--
 .../query/h2/opt/DistributedJoinMode.java   |  51 +++
 .../query/h2/opt/GridH2IndexBase.java   | 303 ++
 .../query/h2/opt/GridH2QueryContext.java|  84 +++-
 .../query/h2/opt/GridH2TreeIndex.java   | 151 ---
 .../query/h2/sql/GridSqlQuerySplitter.java  |   2 +-
 .../query/h2/twostep/GridMapQueryExecutor.java  | 233 ---
 .../query/h2/twostep/GridMergeIndex.java|  39 +-
 .../query/h2/twostep/GridMergeIndexSorted.java  |   4 +-
 .../h2/twostep/GridReduceQueryExecutor.java |  69 ++--
 .../h2/twostep/msg/GridH2IndexRangeRequest.java |  60 ++-
 .../twostep/msg/GridH2IndexRangeResponse.java   |  62 ++-
 .../h2/twostep/msg/GridH2QueryRequest.java  |   5 +
 .../query/IgniteSqlSegmentedIndexSelfTest.java  | 263 
 .../query/IgniteSqlSplitterSelfTest.java| 136 ++-
 .../h2/GridIndexingSpiAbstractSelfTest.java |  26 +-
 .../FetchingQueryCursorStressTest.java  | 277 +
 .../IgniteCacheQuerySelfTestSuite.java  |   2 +
 31 files changed, 2262 insertions(+), 545 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/658b4ad5/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
--

http://git-wip-us.apache.org/repos/asf/ignite/blob/658b4ad5/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
--



[10/12] ignite git commit: Review minors.

2017-02-22 Thread sergi
Review minors.


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

Branch: refs/heads/ignite-1.9
Commit: 9bc776fef537d2fb749951cbbf186e81858c11b5
Parents: de6e52b
Author: Andrey V. Mashenkov 
Authored: Tue Feb 21 19:25:14 2017 +0300
Committer: Andrey V. Mashenkov 
Committed: Tue Feb 21 19:29:59 2017 +0300

--
 .../processors/cache/GridCacheProcessor.java|  2 +-
 .../query/h2/opt/GridH2SpatialIndex.java| 23 +++---
 .../h2/GridH2IndexingSegmentedGeoSelfTest.java  |  2 +
 .../query/h2/opt/GridH2IndexBase.java   | 38 -
 .../query/h2/opt/GridH2TreeIndex.java   | 44 +---
 .../query/IgniteSqlSplitterSelfTest.java|  2 +-
 6 files changed, 46 insertions(+), 65 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/9bc776fe/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index c3e3f3b..50e1379 100755
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -270,7 +270,7 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
 cfg.setBackups(Integer.MAX_VALUE);
 
 if( cfg.getQueryParallelism() > 1 && cfg.getCacheMode() != PARTITIONED)
-throw new IgniteCheckedException("Cache index segmentation is 
supported for PARTITIONED mode only.");
+throw new IgniteCheckedException("Segmented indices are supported 
for PARTITIONED mode only.");
 
 if (cfg.getAffinityMapper() == null)
 cfg.setAffinityMapper(cacheObjCtx.defaultAffMapper());

http://git-wip-us.apache.org/repos/asf/ignite/blob/9bc776fe/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
--
diff --git 
a/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
 
b/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
index 096b82d..c3a1362 100644
--- 
a/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
+++ 
b/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
@@ -121,6 +121,8 @@ public class GridH2SpatialIndex extends GridH2IndexBase 
implements SpatialIndex
 
 for (int i = 0; i < segmentsCnt; i++)
 segments[i] = store.openMap("spatialIndex-" + i, new 
MVRTreeMap.Builder());
+
+ctx = tbl.rowDescriptor().context();
 }
 
 /**
@@ -156,13 +158,11 @@ public class GridH2SpatialIndex extends GridH2IndexBase 
implements SpatialIndex
 
 assert key != null;
 
-Long rowId = keyToId.get(key);
+final int seg = segmentForRow(row);
 
-int seg;
+Long rowId = keyToId.get(key);
 
 if (rowId != null) {
-seg = segmentForRowID(rowId);
-
 Long oldRowId = 
segments[seg].remove(getEnvelope(idToRow.get(rowId), rowId));
 
 assert rowId.equals(oldRowId);
@@ -170,8 +170,6 @@ public class GridH2SpatialIndex extends GridH2IndexBase 
implements SpatialIndex
 else {
 rowId = ++rowIds;
 
-seg = segmentForRowID(rowId);
-
 keyToId.put(key, rowId);
 }
 
@@ -190,17 +188,6 @@ public class GridH2SpatialIndex extends GridH2IndexBase 
implements SpatialIndex
 }
 
 /**
- * @param id Row ID.
- *
- * @return Segment ID for given row ID.
- */
-private int segmentForRowID(Long id) {
-assert id != null;
-
-return (int)(id % segmentsCount());
-}
-
-/**
  * @param row Row.
  * @param rowId Row id.
  * @return Envelope.
@@ -235,7 +222,7 @@ public class GridH2SpatialIndex extends GridH2IndexBase 
implements SpatialIndex
 
 assert oldRow != null;
 
-int seg = segmentForRowID(rowId);
+final int seg = segmentForRow(row);
 
 if (!segments[seg].remove(getEnvelope(row, rowId), rowId))
 throw 

[08/12] ignite git commit: Minor. .

2017-02-22 Thread sergi
Minor. .


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

Branch: refs/heads/ignite-1.9
Commit: f4d36cb683b82bc0d059f183a586be4662818bbc
Parents: 2e90a07
Author: Andrey V. Mashenkov 
Authored: Tue Feb 21 15:29:52 2017 +0300
Committer: Andrey V. Mashenkov 
Committed: Tue Feb 21 15:29:52 2017 +0300

--
 .../internal/processors/query/h2/sql/GridSqlQuerySplitter.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/f4d36cb6/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index 165b6b8..779e565 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -1628,7 +1628,7 @@ public class GridSqlQuerySplitter {
 findParams(((GridSqlSubquery)el).subquery(), params, target, 
paramIdxs);
 else {
 for (int i = 0; i < el.size(); i++)
-findParams(el.child(i), params, target, paramIdxs);
+findParams((GridSqlAst)el.child(i), params, target, paramIdxs);
 }
 }
 



[05/12] ignite git commit: Merge remote-tracking branch 'apache/ignite-1.9' into ignite-4106-1.9

2017-02-22 Thread sergi
Merge remote-tracking branch 'apache/ignite-1.9' into ignite-4106-1.9

# Conflicts:
#   
modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
#   
modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2IndexBase.java
#   
modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridMapQueryExecutor.java
#   
modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
#   
modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/msg/GridH2QueryRequest.java
#   
modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java


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

Branch: refs/heads/ignite-1.9
Commit: 5b774f6d9dc7faa60a95b1206d30115b0ef67d16
Parents: f684c00 166e65c
Author: Andrey V. Mashenkov 
Authored: Tue Feb 21 12:10:38 2017 +0300
Committer: Andrey V. Mashenkov 
Committed: Tue Feb 21 12:10:38 2017 +0300

--
 .../examples/java8/spark/SharedRDDExample.java  |4 +-
 .../jdbc2/JdbcAbstractDmlStatementSelfTest.java |   49 +-
 .../jdbc2/JdbcInsertStatementSelfTest.java  |   51 +
 .../jdbc2/JdbcMergeStatementSelfTest.java   |   51 +
 .../internal/jdbc2/JdbcStreamingSelfTest.java   |  189 ++
 .../jdbc2/JdbcUpdateStatementSelfTest.java  |   50 +
 .../jdbc/suite/IgniteJdbcDriverTestSuite.java   |1 +
 .../org/apache/ignite/IgniteJdbcDriver.java |   30 +
 .../apache/ignite/IgniteSystemProperties.java   |6 +
 .../ignite/internal/jdbc2/JdbcConnection.java   |   72 +-
 .../internal/jdbc2/JdbcPreparedStatement.java   |   34 +-
 .../ignite/internal/jdbc2/JdbcStatement.java|   20 +-
 .../jdbc2/JdbcStreamedPreparedStatement.java|   59 +
 .../cache/query/GridCacheSqlQuery.java  |   45 +-
 .../processors/query/GridQueryIndexing.java |   35 +
 .../processors/query/GridQueryProcessor.java|   63 +-
 .../visor/cache/VisorCacheClearTask.java|   88 +-
 .../visor/compute/VisorGatewayTask.java |   30 +-
 .../junits/multijvm/IgniteProcessProxy.java |5 +-
 .../query/h2/DmlStatementsProcessor.java|  267 ++-
 .../processors/query/h2/IgniteH2Indexing.java   |  160 +-
 .../query/h2/dml/UpdatePlanBuilder.java |2 +-
 .../query/h2/opt/GridH2CollocationModel.java|   78 +-
 .../query/h2/opt/GridH2IndexBase.java   |   47 +-
 .../processors/query/h2/sql/DmlAstUtils.java|   46 +-
 .../processors/query/h2/sql/GridSqlAlias.java   |   13 +-
 .../processors/query/h2/sql/GridSqlArray.java   |8 +-
 .../processors/query/h2/sql/GridSqlAst.java |   61 +
 .../processors/query/h2/sql/GridSqlColumn.java  |   85 +-
 .../processors/query/h2/sql/GridSqlConst.java   |6 +-
 .../processors/query/h2/sql/GridSqlElement.java |   43 +-
 .../query/h2/sql/GridSqlFunction.java   |   16 +-
 .../processors/query/h2/sql/GridSqlJoin.java|   35 +-
 .../processors/query/h2/sql/GridSqlKeyword.java |3 +-
 .../query/h2/sql/GridSqlOperation.java  |6 +-
 .../query/h2/sql/GridSqlOperationType.java  |4 +-
 .../query/h2/sql/GridSqlParameter.java  |4 +-
 .../query/h2/sql/GridSqlPlaceholder.java|2 +-
 .../processors/query/h2/sql/GridSqlQuery.java   |   80 +-
 .../query/h2/sql/GridSqlQueryParser.java|  228 ++-
 .../query/h2/sql/GridSqlQuerySplitter.java  | 1634 +++---
 .../processors/query/h2/sql/GridSqlSelect.java  |  121 +-
 .../query/h2/sql/GridSqlStatement.java  |6 +-
 .../query/h2/sql/GridSqlSubquery.java   |   31 +-
 .../processors/query/h2/sql/GridSqlTable.java   |   19 +-
 .../processors/query/h2/sql/GridSqlType.java|6 +-
 .../processors/query/h2/sql/GridSqlUnion.java   |   66 +-
 .../processors/query/h2/sql/GridSqlValue.java   |   25 -
 .../query/h2/twostep/GridMapQueryExecutor.java  |6 +-
 .../query/h2/twostep/GridMergeIndex.java|  418 -
 .../query/h2/twostep/GridMergeIndexSorted.java  |  284 +++
 .../h2/twostep/GridMergeIndexUnsorted.java  |   40 +-
 .../h2/twostep/GridReduceQueryExecutor.java |   56 +-
 .../h2/twostep/msg/GridH2QueryRequest.java  |9 +-
 .../IgniteCacheAbstractFieldsQuerySelfTest.java |2 +-
 ...niteCacheAbstractInsertSqlQuerySelfTest.java |6 +-
 .../IgniteCacheInsertSqlQuerySelfTest.java  |   14 +
 .../query/IgniteSqlSplitterSelfTest.java|  100 +-
 .../query/h2/sql/GridQueryParsingTest.java  |   41 +-
 modules/spark-2.10/pom.xml  |   54 +
 

[11/12] ignite git commit: Distributed joins with segmented spatial index tests added.

2017-02-22 Thread sergi
Distributed joins with segmented spatial index tests added.


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

Branch: refs/heads/ignite-1.9
Commit: 4dc369487ef6f5583348f6a0232952c441623723
Parents: 9bc776f
Author: Andrey V. Mashenkov 
Authored: Tue Feb 21 21:13:13 2017 +0300
Committer: Andrey V. Mashenkov 
Committed: Tue Feb 21 21:13:13 2017 +0300

--
 .../query/h2/GridH2IndexingGeoSelfTest.java | 405 ++-
 .../h2/GridH2IndexingSegmentedGeoSelfTest.java  |  13 +-
 2 files changed, 302 insertions(+), 116 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/4dc36948/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/GridH2IndexingGeoSelfTest.java
--
diff --git 
a/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/GridH2IndexingGeoSelfTest.java
 
b/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/GridH2IndexingGeoSelfTest.java
index 2843076..839514b 100644
--- 
a/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/GridH2IndexingGeoSelfTest.java
+++ 
b/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/GridH2IndexingGeoSelfTest.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.internal.processors.query.h2;
 
 import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.io.ParseException;
 import com.vividsolutions.jts.io.WKTReader;
 import java.io.Serializable;
 import java.util.Arrays;
@@ -31,14 +32,18 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
 import javax.cache.Cache;
 import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.cache.CacheMode;
 import org.apache.ignite.cache.query.SqlFieldsQuery;
 import org.apache.ignite.cache.query.SqlQuery;
 import org.apache.ignite.cache.query.annotations.QuerySqlField;
+import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.processors.cache.GridCacheAbstractSelfTest;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.testframework.GridTestUtils;
+import org.jetbrains.annotations.NotNull;
 
 /**
  * Geo-indexing test.
@@ -50,6 +55,12 @@ public class GridH2IndexingGeoSelfTest extends 
GridCacheAbstractSelfTest {
 /** */
 private static final long DUR = 6L;
 
+/** Number of generated samples. */
+public static final int ENEMYCAMP_SAMPLES_COUNT = 500;
+
+/** Number of generated samples. */
+public static final int ENEMY_SAMPLES_COUNT = 1000;
+
 /** {@inheritDoc} */
 @Override protected int gridCount() {
 return 3;
@@ -60,29 +71,41 @@ public class GridH2IndexingGeoSelfTest extends 
GridCacheAbstractSelfTest {
 return DUR * 3;
 }
 
-/** {@inheritDoc} */
-@Override protected Class[] indexedTypes() {
-return new Class[]{
-Integer.class, EnemyCamp.class,
-Long.class, Geometry.class // Geometry must be indexed here.
-};
+/**
+ * @param name Cache name.
+ * @param partitioned Partition or replicated cache.
+ * @param idxTypes Indexed types.
+ * @return Cache configuration.
+ */
+protected  CacheConfiguration cacheConfig(String name, boolean 
partitioned,
+Class... idxTypes) throws Exception {
+return new CacheConfiguration(name)
+.setName(name)
+.setCacheMode(partitioned ? CacheMode.PARTITIONED : 
CacheMode.REPLICATED)
+.setAtomicityMode(CacheAtomicityMode.ATOMIC)
+.setIndexedTypes(idxTypes);
 }
 
 /**
  * @throws Exception If failed.
  */
 public void testPrimitiveGeometry() throws Exception {
-IgniteCache cache = grid(0).cache(null);
+IgniteCache cache = 
grid(0).getOrCreateCache(cacheConfig("geom", true, Long.class, Geometry.class));
 
-WKTReader r = new WKTReader();
+try {
+WKTReader r = new WKTReader();
 
-for (long i = 0; i < 100; i++)
-cache.put(i, r.read("POINT(" + i + " " + i + ")"));
+for (long i = 0; i < 100; i++)
+cache.put(i, r.read("POINT(" + i + " " + i + ")"));
 
-List res = cache.query(new SqlFieldsQuery("explain select 
_key from Geometry 

[03/12] ignite git commit: Added Spatial Index segmentation.

2017-02-22 Thread sergi
Added Spatial Index segmentation.


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

Branch: refs/heads/ignite-1.9
Commit: e69d3c34915f2f7de1b66f22e0584b7c09d8fe71
Parents: 64ba13b
Author: Andrey V. Mashenkov 
Authored: Tue Feb 21 11:35:34 2017 +0300
Committer: Andrey V. Mashenkov 
Committed: Tue Feb 21 11:52:58 2017 +0300

--
 .../query/h2/opt/GridH2SpatialIndex.java| 69 +---
 .../h2/GridH2IndexingSegmentedGeoSelfTest.java  | 30 +
 .../testsuites/GeoSpatialIndexingTestSuite.java |  2 +
 .../processors/query/h2/IgniteH2Indexing.java   | 16 ++---
 .../query/h2/opt/GridH2IndexBase.java   | 21 +++---
 .../query/h2/opt/GridH2TreeIndex.java   | 35 ++
 6 files changed, 118 insertions(+), 55 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/e69d3c34/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
--
diff --git 
a/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
 
b/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
index 3062d13..096b82d 100644
--- 
a/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
+++ 
b/modules/geospatial/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2SpatialIndex.java
@@ -41,7 +41,6 @@ import org.h2.mvstore.rtree.SpatialKey;
 import org.h2.result.SearchRow;
 import org.h2.result.SortOrder;
 import org.h2.table.IndexColumn;
-import org.h2.table.Table;
 import org.h2.table.TableFilter;
 import org.h2.value.Value;
 import org.h2.value.ValueGeometry;
@@ -67,7 +66,7 @@ public class GridH2SpatialIndex extends GridH2IndexBase 
implements SpatialIndex
 private boolean closed;
 
 /** */
-private final MVRTreeMap treeMap;
+private final MVRTreeMap[] segments;
 
 /** */
 private final Map idToRow = new HashMap<>();
@@ -83,7 +82,17 @@ public class GridH2SpatialIndex extends GridH2IndexBase 
implements SpatialIndex
  * @param idxName Index name.
  * @param cols Columns.
  */
-public GridH2SpatialIndex(Table tbl, String idxName, IndexColumn... cols) {
+public GridH2SpatialIndex(GridH2Table tbl, String idxName, IndexColumn... 
cols) {
+this(tbl, idxName, 1, cols);
+}
+
+/**
+ * @param tbl Table.
+ * @param idxName Index name.
+ * @param segmentsCnt Index segments count.
+ * @param cols Columns.
+ */
+public GridH2SpatialIndex(GridH2Table tbl, String idxName, int 
segmentsCnt, IndexColumn... cols) {
 if (cols.length > 1)
 throw DbException.getUnsupportedException("can only do one 
column");
 
@@ -107,7 +116,11 @@ public class GridH2SpatialIndex extends GridH2IndexBase 
implements SpatialIndex
 
 // Index in memory
 store = MVStore.open(null);
-treeMap = store.openMap("spatialIndex", new 
MVRTreeMap.Builder());
+
+segments = new MVRTreeMap[segmentsCnt];
+
+for (int i = 0; i < segmentsCnt; i++)
+segments[i] = store.openMap("spatialIndex-" + i, new 
MVRTreeMap.Builder());
 }
 
 /**
@@ -119,6 +132,11 @@ public class GridH2SpatialIndex extends GridH2IndexBase 
implements SpatialIndex
 }
 
 /** {@inheritDoc} */
+@Override protected int segmentsCount() {
+return segments.length;
+}
+
+/** {@inheritDoc} */
 @Nullable @Override protected Object doTakeSnapshot() {
 return null; // TODO We do not support snapshots, but probably this is 
possible.
 }
@@ -140,20 +158,26 @@ public class GridH2SpatialIndex extends GridH2IndexBase 
implements SpatialIndex
 
 Long rowId = keyToId.get(key);
 
+int seg;
+
 if (rowId != null) {
-Long oldRowId = treeMap.remove(getEnvelope(idToRow.get(rowId), 
rowId));
+seg = segmentForRowID(rowId);
+
+Long oldRowId = 
segments[seg].remove(getEnvelope(idToRow.get(rowId), rowId));
 
 assert rowId.equals(oldRowId);
 }
 else {
 rowId = ++rowIds;
 
+seg = segmentForRowID(rowId);
+
 keyToId.put(key, rowId);
 }
 
 GridH2Row old = idToRow.put(rowId, row);
 
-treeMap.put(getEnvelope(row, rowId), rowId);
+segments[seg].put(getEnvelope(row, rowId), rowId);
 
 if 

ignite git commit: ignite-3860 - parsing test

2017-02-22 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-1.9 43fea35aa -> 963a9d9fe


ignite-3860 - parsing test


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

Branch: refs/heads/ignite-1.9
Commit: 963a9d9fe39a67097c848c7b232ddb220ea34189
Parents: 43fea35
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Wed Feb 22 12:38:10 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed Feb 22 12:38:10 2017 +0300

--
 .../internal/processors/query/h2/sql/GridQueryParsingTest.java| 3 +++
 1 file changed, 3 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/963a9d9f/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
--
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
index b869da9..225c838 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java
@@ -301,6 +301,9 @@ public class GridQueryParsingTest extends 
GridCommonAbstractTest {
 
 // Must be distinct objects, even if it is the same table.
 assertNotSame(tbl1, tbl2);
+assertNotNull(tbl1.dataTable());
+assertNotNull(tbl2.dataTable());
+assertSame(tbl1.dataTable(), tbl2.dataTable());
 
 GridSqlColumn col1 = (GridSqlColumn)select.column(0);
 GridSqlColumn col2 = (GridSqlColumn)select.column(1);



[2/2] ignite git commit: Merge branch 'ignite-1.9' of https://git-wip-us.apache.org/repos/asf/ignite into ignite-1.9

2017-02-21 Thread sergi
Merge branch 'ignite-1.9' of https://git-wip-us.apache.org/repos/asf/ignite 
into ignite-1.9


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

Branch: refs/heads/ignite-1.9
Commit: 437f37469e241b30aa4dfd129ba572440f487161
Parents: efb8668 a160162
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Wed Feb 22 02:32:07 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed Feb 22 02:32:07 2017 +0300

--
 assembly/release-base.xml| 5 -
 assembly/release-fabric-base.xml | 5 +
 2 files changed, 5 insertions(+), 5 deletions(-)
--




[1/2] ignite git commit: ignite-3860 - parsing fixed

2017-02-21 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-1.9 a16016257 -> 437f37469


ignite-3860 - parsing fixed


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

Branch: refs/heads/ignite-1.9
Commit: efb866803e9831c86b1c4b1bab93cf12076c8a73
Parents: bf337bc
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Wed Feb 22 02:31:54 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed Feb 22 02:31:54 2017 +0300

--
 .../query/h2/sql/GridSqlQueryParser.java| 20 +-
 .../query/h2/sql/GridQueryParsingTest.java  | 28 
 2 files changed, 41 insertions(+), 7 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/efb86680/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
index f5ad397..024529c 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
@@ -344,7 +344,7 @@ public class GridSqlQueryParser {
 /**
  * @param filter Filter.
  */
-private GridSqlElement parseTable(TableFilter filter) {
+private GridSqlElement parseTableFilter(TableFilter filter) {
 GridSqlElement res = (GridSqlElement)h2ObjToGridObj.get(filter);
 
 if (res == null) {
@@ -369,9 +369,15 @@ public class GridSqlQueryParser {
 GridSqlElement res = (GridSqlElement)h2ObjToGridObj.get(tbl);
 
 if (res == null) {
+// We can't cache simple tables because otherwise it will be the 
same instance for all
+// table filters. Thus we will not be able to distinguish one 
table filter from another.
+// Table here is semantically equivalent to a table filter.
 if (tbl instanceof TableBase)
-res = new GridSqlTable(tbl);
-else if (tbl instanceof TableView) {
+return new GridSqlTable(tbl);
+
+// Other stuff can be cached because we will have separate 
instances in
+// different table filters anyways. Thus the semantics will be 
correct.
+if (tbl instanceof TableView) {
 Query qry = VIEW_QUERY.get((TableView) tbl);
 
 res = new GridSqlSubquery(parseQuery(qry));
@@ -438,7 +444,7 @@ public class GridSqlQueryParser {
 
 for (int i = 0; i < tableFilters.size(); i++) {
 TableFilter f = tableFilters.get(i);
-GridSqlElement gridFilter = parseTable(f);
+GridSqlElement gridFilter = parseTableFilter(f);
 
 from = from == null ? gridFilter : new GridSqlJoin(from, 
gridFilter, f.isJoinOuter(),
 parseExpression(f.getJoinCondition(), false));
@@ -606,7 +612,7 @@ public class GridSqlQueryParser {
 res = new GridSqlDelete();
 h2ObjToGridObj.put(del, res);
 
-GridSqlElement tbl = parseTable(DELETE_FROM.get(del));
+GridSqlElement tbl = parseTableFilter(DELETE_FROM.get(del));
 GridSqlElement where = parseExpression(DELETE_WHERE.get(del), true);
 GridSqlElement limit = parseExpression(DELETE_LIMIT.get(del), true);
 res.from(tbl).where(where).limit(limit);
@@ -626,7 +632,7 @@ public class GridSqlQueryParser {
 res = new GridSqlUpdate();
 h2ObjToGridObj.put(update, res);
 
-GridSqlElement tbl = parseTable(UPDATE_TARGET.get(update));
+GridSqlElement tbl = parseTableFilter(UPDATE_TARGET.get(update));
 
 List srcCols = UPDATE_COLUMNS.get(update);
 Map<Column, Expression> srcSet = UPDATE_SET.get(update);
@@ -826,7 +832,7 @@ public class GridSqlQueryParser {
 ExpressionColumn expCol = (ExpressionColumn)expression;
 
 return new GridSqlColumn(expCol.getColumn(),
-parseTable(expCol.getTableFilter()),
+parseTableFilter(expCol.getTableFilter()),
 SCHEMA_NAME.get(expCol),
 expCol.getOriginalTableAliasName(),
 expCol.getColumnName());

http://git-wip-us.apache.org/repos/asf/ignite/blob/efb86680/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/G

ignite git commit: ignite-3860 - fixes2

2017-02-21 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-1.9 207a669b7 -> bf337bc53


ignite-3860 - fixes2


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

Branch: refs/heads/ignite-1.9
Commit: bf337bc53bca0a1a0ab6b8b5d4f19e509287ebe9
Parents: 207a669
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Tue Feb 21 18:53:16 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Tue Feb 21 18:53:16 2017 +0300

--
 .../query/h2/sql/GridSqlQuerySplitter.java  | 52 --
 .../query/h2/sql/GridSqlStatement.java  |  5 ++
 .../query/h2/sql/GridSqlSubquery.java   |  2 +-
 .../h2/sql/AbstractH2CompareQueryTest.java  | 21 +++-
 .../query/h2/sql/H2CompareBigQueryTest.java | 56 +---
 .../processors/query/h2/sql/bigQuery.sql|  2 +-
 6 files changed, 86 insertions(+), 52 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/bf337bc5/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index 165b6b8..a215f20 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -21,6 +21,7 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.SQLException;
 import java.util.ArrayList;
+import java.util.BitSet;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -35,7 +36,9 @@ import org.apache.ignite.IgniteException;
 import org.apache.ignite.internal.processors.cache.query.GridCacheSqlQuery;
 import org.apache.ignite.internal.processors.cache.query.GridCacheTwoStepQuery;
 import org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing;
+import org.apache.ignite.internal.util.tostring.GridToStringInclude;
 import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.S;
 import org.h2.command.Prepared;
 import org.h2.command.dml.Query;
 import org.h2.command.dml.SelectUnion;
@@ -407,15 +410,16 @@ public class GridSqlQuerySplitter {
  * @param qrym Query model.
  */
 private void injectSortingFirstJoin(QueryModel qrym) {
-// Must always be generated unique aliases here.
-GridSqlAlias leftTbl = qrym.get(0).ast();
-GridSqlAlias rightTbl = qrym.get(1).ast();
-
 GridSqlJoin join = findJoin(qrym, 0);
 
 // We are at the beginning, thus left and right AST must be children 
of the same join AST.
-assert join.leftTable() == leftTbl: join.getSQL();
-assert join.rightTable() == rightTbl: join.getSQL();
+// join2
+//  / \
+//   join1 \
+/// \   \
+//  T0   T1  T2
+GridSqlAlias leftTbl = (GridSqlAlias)join.leftTable();
+GridSqlAlias rightTbl = (GridSqlAlias)join.rightTable();
 
 // Collect all AND conditions.
 List andConditions = new ArrayList<>();
@@ -461,10 +465,15 @@ public class GridSqlQuerySplitter {
  * @param orderByCols Columns for ORDER BY.
  */
 private void injectOrderBy(GridSqlAlias subQryAlias, List 
orderByCols) {
+if (orderByCols.isEmpty())
+return;
+
 // Structure: alias -> subquery -> query
-GridSqlQuery qry = subQryAlias.child().child();
+GridSqlQuery qry = 
GridSqlAlias.unwrap(subQryAlias).subquery();
 GridSqlSelect select = leftmostSelect(qry); // The leftmost SELECT in 
UNION defines column names.
 
+BitSet set = new BitSet();
+
 for (int i = 0; i < orderByCols.size(); i++) {
 GridSqlColumn col = orderByCols.get(i);
 
@@ -480,12 +489,21 @@ public class GridSqlQuerySplitter {
 else if (expr instanceof GridSqlColumn)
 colName = ((GridSqlColumn)expr).columnName();
 else
-throw new IllegalStateException(); // It must be 
impossible to join by this column then.
+// It must be impossible to join by this column then, 
because the expression has no name.
+throw new IllegalStateException();
 
 if (colName.equals(col.columnName()))
  

[2/4] ignite git commit: Removed redundant method

2017-02-21 Thread sergi
Removed redundant method


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

Branch: refs/heads/ignite-1.9
Commit: 990f64d7694204d2e7889d9aad2156343988dbad
Parents: 14290d3
Author: Alexander Paschenko 
Authored: Tue Feb 21 15:28:46 2017 +0300
Committer: Alexander Paschenko 
Committed: Tue Feb 21 15:28:46 2017 +0300

--
 .../ignite/internal/processors/query/h2/IgniteH2Indexing.java   | 5 -
 .../internal/processors/query/h2/opt/GridH2RowDescriptor.java   | 5 -
 2 files changed, 10 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/990f64d7/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 15e7fc6..9a355e5 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
@@ -3221,11 +3221,6 @@ public class IgniteH2Indexing implements 
GridQueryIndexing {
 @Override public boolean snapshotableIndex() {
 return snapshotableIdx;
 }
-
-/** {@inheritDoc} */
-@Override public boolean quoteAllIdentifiers() {
-return schema.escapeAll();
-}
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/990f64d7/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 3465ed7..8136ee1 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
@@ -163,9 +163,4 @@ public interface GridH2RowDescriptor extends 
GridOffHeapSmartPointerFactory

[4/4] ignite git commit: Merge branch 'ignite-4732' of https://github.com/gridgain/apache-ignite into ignite-1.9

2017-02-21 Thread sergi
Merge branch 'ignite-4732' of https://github.com/gridgain/apache-ignite into 
ignite-1.9


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

Branch: refs/heads/ignite-1.9
Commit: 207a669b7b9b48834791bddd8fe28d4549d52de8
Parents: a65889a f0ef842
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Tue Feb 21 16:18:30 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Tue Feb 21 16:18:30 2017 +0300

--
 .../internal/processors/query/h2/IgniteH2Indexing.java   | 5 -
 .../processors/query/h2/opt/GridH2RowDescriptor.java | 5 -
 .../ignite/internal/processors/query/h2/sql/DmlAstUtils.java | 8 
 .../internal/processors/query/h2/sql/GridSqlFunction.java| 2 +-
 4 files changed, 5 insertions(+), 15 deletions(-)
--




[1/4] ignite git commit: IGNITE-4372 Ids quoting fix

2017-02-21 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-1.9 a65889a75 -> 207a669b7


IGNITE-4372 Ids quoting fix


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

Branch: refs/heads/ignite-1.9
Commit: 14290d3fe44af7e2269d42361f2bb1207b0ee8c3
Parents: 166e65c
Author: Alexander Paschenko 
Authored: Tue Feb 21 14:00:45 2017 +0300
Committer: Alexander Paschenko 
Committed: Tue Feb 21 14:00:45 2017 +0300

--
 .../internal/processors/query/h2/sql/DmlAstUtils.java | 10 ++
 .../internal/processors/query/h2/sql/GridSqlFunction.java |  2 +-
 2 files changed, 7 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/14290d3f/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/DmlAstUtils.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/DmlAstUtils.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/DmlAstUtils.java
index 35f0983..f96e5e3 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/DmlAstUtils.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/DmlAstUtils.java
@@ -25,6 +25,7 @@ import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.internal.processors.query.IgniteSQLException;
 import org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing;
+import org.apache.ignite.internal.processors.query.h2.dml.FastUpdateArgument;
 import org.apache.ignite.internal.processors.query.h2.dml.FastUpdateArguments;
 import 
org.apache.ignite.internal.processors.query.h2.opt.GridH2AbstractKeyValueRow;
 import org.apache.ignite.internal.processors.query.h2.opt.GridH2RowDescriptor;
@@ -33,6 +34,7 @@ import org.apache.ignite.internal.util.lang.IgnitePair;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgnitePredicate;
+import org.h2.command.Parser;
 import org.h2.expression.Expression;
 import org.h2.table.Column;
 import org.h2.table.Table;
@@ -47,8 +49,6 @@ import org.h2.value.ValueTimestamp;
 import org.h2.value.ValueTimestampUtc;
 import org.jetbrains.annotations.Nullable;
 
-import org.apache.ignite.internal.processors.query.h2.dml.FastUpdateArgument;
-
 /**
  * AST utils for DML
  */
@@ -85,7 +85,7 @@ public final class DmlAstUtils {
 for (int i = 0; i < cols.length; i++) {
 GridSqlArray arr = new GridSqlArray(rows.size());
 
-String colName = 
IgniteH2Indexing.escapeName(cols[i].columnName(), desc.quoteAllIdentifiers());
+String colName = cols[i].columnName();
 
 GridSqlAlias alias = new GridSqlAlias(colName, arr);
 
@@ -109,6 +109,8 @@ public final class DmlAstUtils {
 args[i].addChild(row[i]);
 }
 
+sel.getSQL();
+
 return sel;
 }
 else {
@@ -339,7 +341,7 @@ public final class DmlAstUtils {
 mapQry.addColumn(valCol, true);
 
 for (GridSqlColumn c : update.cols()) {
-String newColName = "_upd_" + c.columnName();
+String newColName = Parser.quoteIdentifier("_upd_" + 
c.columnName());
 // We have to use aliases to cover cases when the user
 // wants to update _val field directly (if it's a literal)
 GridSqlAlias alias = new GridSqlAlias(newColName, 
elementOrDefault(update.set().get(c.columnName()), c), true);

http://git-wip-us.apache.org/repos/asf/ignite/blob/14290d3f/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlFunction.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlFunction.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlFunction.java
index f194b07..46a558a 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlFunction.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlFunction.java
@@ -143,7 +143,7 @@ public class GridSqlFunction extends GridSqlElement {
 GridSqlElement e = child(i);
 
 // id int = ?, name varchar = ('aaa', 'bbb')
-

[3/4] ignite git commit: Removed redundant call

2017-02-21 Thread sergi
Removed redundant call


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

Branch: refs/heads/ignite-1.9
Commit: f0ef842097b61dad364c98e79e125b6a9b1ffc31
Parents: 990f64d
Author: Alexander Paschenko 
Authored: Tue Feb 21 15:59:31 2017 +0300
Committer: Alexander Paschenko 
Committed: Tue Feb 21 15:59:31 2017 +0300

--
 .../ignite/internal/processors/query/h2/sql/DmlAstUtils.java   | 2 --
 1 file changed, 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/f0ef8420/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/DmlAstUtils.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/DmlAstUtils.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/DmlAstUtils.java
index f96e5e3..974a5b8 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/DmlAstUtils.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/DmlAstUtils.java
@@ -109,8 +109,6 @@ public final class DmlAstUtils {
 args[i].addChild(row[i]);
 }
 
-sel.getSQL();
-
 return sel;
 }
 else {



ignite git commit: ignite-3860 - fixes

2017-02-21 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-1.9 43bf89f97 -> 166e65c0f


ignite-3860 - fixes


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

Branch: refs/heads/ignite-1.9
Commit: 166e65c0f946529852d72bf8a74f12c4130a64dd
Parents: 43bf89f
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Tue Feb 21 11:08:27 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Tue Feb 21 11:08:27 2017 +0300

--
 .../query/h2/sql/GridSqlQuerySplitter.java  |  3 ++-
 .../h2/twostep/GridReduceQueryExecutor.java | 26 ++--
 2 files changed, 15 insertions(+), 14 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/166e65c0/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index 5352c87..165b6b8 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -209,7 +209,8 @@ public class GridSqlQuerySplitter {
 boolean allCollocated = true;
 
 for (GridCacheSqlQuery mapSqlQry : splitter.mapSqlQrys) {
-Prepared prepared = optimize(h2, conn, mapSqlQry.query(), 
params, true, enforceJoinOrder);
+Prepared prepared = optimize(h2, conn, mapSqlQry.query(), 
mapSqlQry.parameters(),
+true, enforceJoinOrder);
 
 allCollocated &= isCollocated((Query)prepared);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/166e65c0/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
index 128ca8e..f813cae 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
@@ -99,6 +99,7 @@ import org.jsr166.ConcurrentHashMap8;
 
 import static 
org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion.NONE;
 import static 
org.apache.ignite.internal.processors.cache.query.GridCacheQueryType.SQL_FIELDS;
+import static 
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.setupConnection;
 import static 
org.apache.ignite.internal.processors.query.h2.opt.GridH2QueryType.REDUCE;
 import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlQuerySplitter.mergeTableIdentifier;
 
@@ -674,23 +675,22 @@ public class GridReduceQueryExecutor {
 if (skipMergeTbl) {
 List<List> res = new ArrayList<>();
 
-assert r.idxs.size() == 1 : r.idxs;
+// Simple UNION ALL can have multiple indexes.
+for (GridMergeIndex idx : r.idxs) {
+Cursor cur = idx.findInStream(null, null);
 
-GridMergeIndex idx = r.idxs.get(0);
+while (cur.next()) {
+Row row = cur.get();
 
-Cursor cur = idx.findInStream(null, null);
+int cols = row.getColumnCount();
 
-while (cur.next()) {
-Row row = cur.get();
+List resRow = new ArrayList<>(cols);
 
-int cols = row.getColumnCount();
+for (int c = 0; c < cols; c++)
+resRow.add(row.getValue(c).getObject());
 
-List resRow = new ArrayList<>(cols);
-
-for (int c = 0; c < cols; c++)
-resRow.add(row.getValue(c).getObject());
-
-res.add(resRow)

[4/4] ignite git commit: Merge branch 'ignite-1.9' of https://git-wip-us.apache.org/repos/asf/ignite into ignite-1.9

2017-02-20 Thread sergi
Merge branch 'ignite-1.9' of https://git-wip-us.apache.org/repos/asf/ignite 
into ignite-1.9


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

Branch: refs/heads/ignite-1.9
Commit: 43bf89f97cac84fee155e5063b1b18937b74b1f0
Parents: 3737407 caf7b22
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Mon Feb 20 22:09:42 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Mon Feb 20 22:09:42 2017 +0300

--
 .../examples/java8/spark/SharedRDDExample.java  |   4 +-
 modules/spark-2.10/pom.xml  |  54 ++
 modules/spark/pom.xml   | 183 ++-
 .../org/apache/ignite/spark/IgniteContext.scala |  22 ++-
 .../spark/JavaEmbeddedIgniteRDDSelfTest.java|  10 +-
 .../spark/JavaStandaloneIgniteRDDSelfTest.java  |  22 +--
 parent/pom.xml  |   3 +-
 7 files changed, 270 insertions(+), 28 deletions(-)
--




[3/4] ignite git commit: ignite-3860 - merge to 1.9 # Conflicts: # modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java # modules/indexing/src/main/java/

2017-02-20 Thread sergi
ignite-3860 - merge to 1.9
# Conflicts:
#   
modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
#   
modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlConst.java
#   
modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuery.java
#   
modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java
#   
modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
#   
modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/IgniteSqlSplitterSelfTest.java
#   
modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/GridQueryParsingTest.java


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

Branch: refs/heads/ignite-1.9
Commit: 3737407b28294e08e3e5d9a54b7efa350a7377c1
Parents: 5b94a7d
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Mon Feb 20 22:06:50 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Mon Feb 20 22:06:50 2017 +0300

--
 .../apache/ignite/IgniteSystemProperties.java   |6 +
 .../cache/query/GridCacheSqlQuery.java  |   45 +-
 .../processors/query/h2/IgniteH2Indexing.java   |  104 +-
 .../query/h2/dml/UpdatePlanBuilder.java |2 +-
 .../query/h2/opt/GridH2CollocationModel.java|   78 +-
 .../query/h2/opt/GridH2IndexBase.java   |   47 +-
 .../processors/query/h2/sql/DmlAstUtils.java|   46 +-
 .../processors/query/h2/sql/GridSqlAlias.java   |   13 +-
 .../processors/query/h2/sql/GridSqlArray.java   |8 +-
 .../processors/query/h2/sql/GridSqlAst.java |   61 +
 .../processors/query/h2/sql/GridSqlColumn.java  |   85 +-
 .../processors/query/h2/sql/GridSqlConst.java   |6 +-
 .../processors/query/h2/sql/GridSqlElement.java |   43 +-
 .../query/h2/sql/GridSqlFunction.java   |   16 +-
 .../processors/query/h2/sql/GridSqlJoin.java|   35 +-
 .../processors/query/h2/sql/GridSqlKeyword.java |3 +-
 .../query/h2/sql/GridSqlOperation.java  |6 +-
 .../query/h2/sql/GridSqlOperationType.java  |4 +-
 .../query/h2/sql/GridSqlParameter.java  |4 +-
 .../query/h2/sql/GridSqlPlaceholder.java|2 +-
 .../processors/query/h2/sql/GridSqlQuery.java   |   80 +-
 .../query/h2/sql/GridSqlQueryParser.java|  228 ++-
 .../query/h2/sql/GridSqlQuerySplitter.java  | 1633 +++---
 .../processors/query/h2/sql/GridSqlSelect.java  |  121 +-
 .../query/h2/sql/GridSqlStatement.java  |6 +-
 .../query/h2/sql/GridSqlSubquery.java   |   31 +-
 .../processors/query/h2/sql/GridSqlTable.java   |   19 +-
 .../processors/query/h2/sql/GridSqlType.java|6 +-
 .../processors/query/h2/sql/GridSqlUnion.java   |   66 +-
 .../processors/query/h2/sql/GridSqlValue.java   |   25 -
 .../query/h2/twostep/GridMapQueryExecutor.java  |7 +-
 .../query/h2/twostep/GridMergeIndex.java|  418 -
 .../query/h2/twostep/GridMergeIndexSorted.java  |  284 +++
 .../h2/twostep/GridMergeIndexUnsorted.java  |   40 +-
 .../h2/twostep/GridReduceQueryExecutor.java |   26 +-
 .../h2/twostep/msg/GridH2QueryRequest.java  |7 +
 .../IgniteCacheAbstractFieldsQuerySelfTest.java |2 +-
 .../query/IgniteSqlSplitterSelfTest.java|  101 +-
 .../query/h2/sql/GridQueryParsingTest.java  |   41 +-
 39 files changed, 2974 insertions(+), 781 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/3737407b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java 
b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 914ba2f..47a66fe 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -403,6 +403,12 @@ public final class IgniteSystemProperties {
  */
 public static final String IGNITE_SQL_MERGE_TABLE_MAX_SIZE = 
"IGNITE_SQL_MERGE_TABLE_MAX_SIZE";
 
+/**
+ * Property controlling number of SQL result rows that will be fetched 
into a merge table at once before
+ * applying binary search for the bounds.
+ */
+public static final String IGNITE_SQL_MERGE_TABLE_PREFETCH_SIZE = 
"IGNITE_SQL_MERGE_TABLE_PREFETCH_SIZE";
+
 /** Maximum size for affinity assignmen

[2/4] ignite git commit: ignite-3860 - merge to 1.9 # Conflicts: # modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java # modules/indexing/src/main/java/

2017-02-20 Thread sergi
http://git-wip-us.apache.org/repos/asf/ignite/blob/3737407b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
--
diff --git 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index e164315..5352c87 100644
--- 
a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ 
b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -17,34 +17,53 @@
 
 package org.apache.ignite.internal.processors.query.h2.sql;
 
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
+import java.util.IdentityHashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
+import javax.cache.CacheException;
+import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
-import org.apache.ignite.internal.processors.cache.GridCacheContext;
 import org.apache.ignite.internal.processors.cache.query.GridCacheSqlQuery;
 import org.apache.ignite.internal.processors.cache.query.GridCacheTwoStepQuery;
-import org.apache.ignite.internal.processors.query.h2.opt.GridH2Table;
-import org.apache.ignite.lang.IgnitePredicate;
+import org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing;
+import org.apache.ignite.internal.util.typedef.F;
 import org.h2.command.Prepared;
+import org.h2.command.dml.Query;
+import org.h2.command.dml.SelectUnion;
 import org.h2.jdbc.JdbcPreparedStatement;
-import org.h2.table.Column;
-import org.h2.table.IndexColumn;
 import org.h2.util.IntArray;
 import org.jetbrains.annotations.Nullable;
 
+import static 
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.setupConnection;
 import static 
org.apache.ignite.internal.processors.query.h2.opt.GridH2CollocationModel.isCollocated;
+import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlConst.TRUE;
 import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlFunctionType.AVG;
 import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlFunctionType.CAST;
 import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlFunctionType.COUNT;
 import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlFunctionType.MAX;
 import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlFunctionType.MIN;
 import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlFunctionType.SUM;
+import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlJoin.LEFT_TABLE_CHILD;
+import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlJoin.ON_CHILD;
+import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlJoin.RIGHT_TABLE_CHILD;
 import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlPlaceholder.EMPTY;
+import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlQuery.LIMIT_CHILD;
+import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlQuery.OFFSET_CHILD;
 import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlQueryParser.prepared;
-import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlQueryParser.query;
+import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlSelect.FROM_CHILD;
+import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlSelect.WHERE_CHILD;
+import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlSelect.childIndexForColumn;
+import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlUnion.LEFT_CHILD;
+import static 
org.apache.ignite.internal.processors.query.h2.sql.GridSqlUnion.RIGHT_CHILD;
 import static 
org.apache.ignite.internal.processors.query.h2.twostep.GridReduceQueryExecutor.toArray;
 
 /**
@@ -52,10 +71,10 @@ import static 
org.apache.ignite.internal.processors.query.h2.twostep.GridReduceQ
  */
 public class GridSqlQuerySplitter {
 /** */
-private static final String TABLE_SCHEMA = "PUBLIC";
+private static final String MERGE_TABLE_SCHEMA = "PUBLIC"; // Schema 
PUBLIC must always exist.
 
 /** */
-private static final String TABLE_PREFIX = "__T";
+private static final String MERGE_TABLE_PREFIX = "__T";
 
 /** */
 private static final String COLUMN_PREFIX = "__C";
@@ -63,264 +82,1129 @@ public class GridSqlQuerySplitter {
 /** */
 private static final String HAVING_COLUMN = "__H";
 
+/** */
+private static final String UNIQUE_TABLE_ALIAS_SUFFIX = "__Z";
+
+/** */
+private int 

ignite git commit: ignite-4652 - no key read in invoke

2017-02-17 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-4652 c90978394 -> 0d4e951aa


ignite-4652 - no key read in invoke


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

Branch: refs/heads/ignite-4652
Commit: 0d4e951aabcf8e4d5980626d5c99a7b23c11ec89
Parents: c909783
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Fri Feb 17 15:41:39 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Fri Feb 17 15:41:39 2017 +0300

--
 .../benchmarks/jmh/tree/BPlusTreeBenchmark.java |  3 +-
 .../processors/cache/GridCacheMapEntry.java |  3 +
 .../cache/IgniteCacheOffheapManagerImpl.java| 27 +++-
 .../processors/cache/database/CacheDataRow.java |  6 ++
 .../cache/database/MetadataStorage.java |  2 +-
 .../cache/database/tree/BPlusTree.java  | 65 +++-
 .../apache/ignite/internal/util/IgniteTree.java |  3 +-
 .../processors/database/BPlusTreeSelfTest.java  | 11 ++--
 .../database/FreeListImplSelfTest.java  |  5 ++
 .../processors/query/h2/database/H2Tree.java|  4 +-
 .../processors/query/h2/opt/GridH2Row.java  |  5 ++
 .../query/h2/opt/GridH2TreeIndex.java   |  2 +-
 12 files changed, 78 insertions(+), 58 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/0d4e951a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/tree/BPlusTreeBenchmark.java
--
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/tree/BPlusTreeBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/tree/BPlusTreeBenchmark.java
index 7355850..dc74363 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/tree/BPlusTreeBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/tree/BPlusTreeBenchmark.java
@@ -190,7 +190,8 @@ public class BPlusTreeBenchmark extends 
JmhAbstractBenchmark {
 }
 
 /** {@inheritDoc} */
-@Override protected Long getRow(BPlusIO io, long pageAddr, int 
idx) throws IgniteCheckedException {
+@Override protected Long getRow(BPlusIO io, long pageAddr, int 
idx, Object ignore)
+throws IgniteCheckedException {
 assert io.canGetRow() : io;
 
 return io.getLookupRow(this, pageAddr, idx);

http://git-wip-us.apache.org/repos/asf/ignite/blob/0d4e951a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
index 6b6fb90..ed2cf1b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java
@@ -3950,6 +3950,9 @@ public abstract class GridCacheMapEntry extends 
GridMetadataAwareAdapter impleme
 @Override public void call(@Nullable CacheDataRow oldRow) throws 
IgniteCheckedException {
 assert entry.isNear() || oldRow == null || oldRow.link() != 0 : 
oldRow;
 
+if (oldRow != null)
+oldRow.key(entry.key());
+
 this.oldRow = oldRow;
 
 GridCacheContext cctx = entry.context();

http://git-wip-us.apache.org/repos/asf/ignite/blob/0d4e951a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
index 5a9c460..660daf9 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
@@ -940,7 +940,7 @@ public class IgniteCacheOffheapManagerImpl extends 
GridCacheManagerAdapter imple
 c.call(oldRow0);
 }
 else
-dataTree.invoke(new SearchRow(key), c);
+dataTree.invoke(new SearchRow(key), 
CacheDataRowAdapter.RowData.NO_KEY, c);
 
 switch (

ignite git commit: ignite-4652 - invoke closure outside of readLock

2017-02-17 Thread sergi
Repository: ignite
Updated Branches:
  refs/heads/ignite-4652 80716c4ca -> c90978394


ignite-4652 - invoke closure outside of readLock


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

Branch: refs/heads/ignite-4652
Commit: c909783940ce2fc733868f8127ca4e2ecbaf6982
Parents: 80716c4
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Fri Feb 17 12:10:57 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Fri Feb 17 12:10:57 2017 +0300

--
 .../cache/database/tree/BPlusTree.java  | 48 +++-
 .../processors/database/BPlusTreeSelfTest.java  | 34 ++
 2 files changed, 60 insertions(+), 22 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/c9097839/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index d35e7f5..0b60924 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -1578,9 +1578,15 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 return res;
 
 case NOT_FOUND:
+if (lvl == 0)
+x.invokeClosure();
+
 return x.onNotFound(page, pageId, fwdId, lvl);
 
 case FOUND:
+if (lvl == 0)
+x.invokeClosure();
+
 return x.onFound(page, pageId, backId, fwdId, lvl);
 
 default:
@@ -2712,7 +2718,10 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 final InvokeClosure clo;
 
 /** */
-boolean closureInvoked;
+Bool closureInvoked = FALSE;
+
+/** */
+T foundRow;
 
 /** */
 Get op;
@@ -2768,7 +2777,11 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 return op.found(io, pageAddr, idx, lvl);
 
 if (lvl == 0) {
-invokeClosure(io, pageAddr, idx);
+if (closureInvoked == FALSE) {
+closureInvoked = READY;
+
+foundRow = getRow(io, pageAddr, idx);
+}
 
 return true;
 }
@@ -2783,7 +2796,8 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 return op.notFound(io, pageAddr, idx, lvl);
 
 if (lvl == 0) {
-invokeClosure(null, 0L, 0);
+if (closureInvoked == FALSE)
+closureInvoked = READY;
 
 return true;
 }
@@ -2792,20 +2806,15 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 }
 
 /**
- * @param io IO.
- * @param pageAddr Page address.
- * @param idx Index of found entry.
  * @throws IgniteCheckedException If failed.
  */
-private void invokeClosure(BPlusIO io, long pageAddr, int idx) 
throws IgniteCheckedException {
-if (closureInvoked)
+private void invokeClosure() throws IgniteCheckedException {
+if (closureInvoked != READY)
 return;
 
-closureInvoked = true;
+closureInvoked = DONE;
 
-boolean rowFound = io != null;
-
-clo.call(rowFound ? getRow(io, pageAddr, idx) : null);
+clo.call(foundRow);
 
 switch (clo.operationType()) {
 case PUT:
@@ -2813,32 +2822,27 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 
 assert newRow != null;
 
-// Row key must be equal to the old one.
-assert !rowFound || compare(io, pageAddr, idx, newRow) == 
0;
-
 op = new Put(newRow, false);
 
 break;
 
 case REMOVE:
-assert rowFound;
+assert foundRow != null;
 
 op = new Remove(row, false);
 
 break;
 
 case NOOP:
-   

[17/17] ignite git commit: ignite-4652 - tests

2017-02-16 Thread sergi
ignite-4652 - tests


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

Branch: refs/heads/ignite-4652
Commit: affadf3bb2a7278f46106c4e65c4b402e0b9aa80
Parents: e03af95
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Thu Feb 16 17:40:23 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Thu Feb 16 17:40:23 2017 +0300

--
 .../cache/database/tree/BPlusTree.java  | 27 --
 .../processors/database/BPlusTreeSelfTest.java  | 96 +---
 2 files changed, 100 insertions(+), 23 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/affadf3b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index c1589a6..d35e7f5 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -350,10 +350,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 
 // Detach the old row if we are on a leaf page.
 if (lvl == 0) {
-assert p.oldRow == null;
-
-// Get old row in leaf page to reduce contention at upper 
level.
-p.oldRow = p.needOld ? getRow(io, pageAddr, idx) : 
(T)Boolean.TRUE;
+assert p.oldRow == null; // The old row must be set only once.
 
 // Inner replace state must be consistent by the end of the 
operation.
 assert p.needReplaceInner == FALSE || p.needReplaceInner == 
DONE : p.needReplaceInner;
@@ -361,15 +358,18 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 // Need to replace inner key if now we are replacing the 
rightmost row and have a forward page.
 if (canGetRowFromInner && idx + 1 == cnt && p.fwdId != 0L && 
p.needReplaceInner == FALSE) {
 // Can happen only for invoke, otherwise inner key must be 
replaced on the way down.
-assert p.invoke;
+assert p.invoke != null;
 
 // We need to restart the operation from root to perform 
inner replace.
 // On the second pass we will not get here (will avoid 
infinite loop) because
 // needReplaceInner will be DONE or our key will not be 
the rightmost anymore.
 return RETRY_ROOT;
 }
-else
-p.finish();
+
+// Get old row in leaf page to reduce contention at upper 
level.
+p.oldRow = p.needOld ? getRow(io, pageAddr, idx) : 
(T)Boolean.TRUE;
+
+p.finish();
 }
 
 boolean needWal = needWalDeltaRecord(page);
@@ -415,6 +415,9 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 p.btmLvl++; // Get high.
 p.row = moveUpRow;
 
+if (p.invoke != null)
+p.invoke.row = moveUpRow;
+
 // Here forward page can't be concurrently removed because we 
keep write lock on tail which is the only
 // page who knows about the forward page, because it was just 
produced by split.
 p.rightId = io.getForward(pageAddr);
@@ -2196,8 +2199,8 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 /** */
 int shift;
 
-/** If {@code true}, then this operation is a part of invoke. */
-boolean invoke;
+/** If this operation is a part of invoke. */
+Invoke invoke;
 
 /**
  * @param row Row.
@@ -2426,6 +2429,8 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 if (lvl == 0) // Leaf: need to stop.
 return true;
 
+assert btmLvl == 0; // It can not be insert.
+
 // If we can get full row from the inner page, we have to replace 
it with the new one. On the way down
 // we can not miss inner key even in presence of concurrent 
operations because of `triangle` invariant +
 // concurrent inner replace handling 

[07/17] ignite git commit: ignite-db-x - restartFromRoot

2017-02-16 Thread sergi
ignite-db-x - restartFromRoot


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

Branch: refs/heads/ignite-4652
Commit: 9fe01a494d97f98a5cbf2873046a8bb1a38b69d7
Parents: 97e9bd9
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Tue Feb 14 13:20:36 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Tue Feb 14 13:20:36 2017 +0300

--
 .../processors/cache/database/tree/BPlusTree.java | 10 +-
 1 file changed, 9 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/9fe01a49/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index f87ba2b..7770c27 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -2198,7 +2198,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
  * @param rootLvl Root level.
  * @param rmvId Remove ID to be afraid of.
  */
-final void restartFromRoot(long rootId, int rootLvl, long rmvId) {
+void restartFromRoot(long rootId, int rootLvl, long rmvId) {
 this.rootId = rootId;
 this.rootLvl = rootLvl;
 this.rmvId = rmvId;
@@ -2660,6 +2660,14 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 }
 
 /** {@inheritDoc} */
+@Override void restartFromRoot(long rootId, int rootLvl, long rmvId) {
+super.restartFromRoot(rootId, rootLvl, rmvId);
+
+if (op != null)
+op.restartFromRoot(rootId, rootLvl, rmvId);
+}
+
+/** {@inheritDoc} */
 @Override boolean found(BPlusIO io, long pageAddr, int idx, int 
lvl) throws IgniteCheckedException {
 if (lvl == 0) {
 invokeClosure(io, pageAddr, idx);



[02/17] ignite git commit: ignite-4652 - reverted

2017-02-16 Thread sergi
ignite-4652 - reverted


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

Branch: refs/heads/ignite-4652
Commit: 164995f601c188a45275d2f2d0dbbc0b6a742523
Parents: 1fd247f
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Mon Feb 6 18:23:29 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Mon Feb 6 18:23:29 2017 +0300

--
 .../cache/database/tree/BPlusTree.java  | 197 ---
 1 file changed, 37 insertions(+), 160 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/164995f6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index 39b8b10..860f542 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -68,10 +68,6 @@ import static 
org.apache.ignite.internal.processors.cache.database.tree.BPlusTre
 import static 
org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.Bool.FALSE;
 import static 
org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.Bool.READY;
 import static 
org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.Bool.TRUE;
-import static 
org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.InvokeType.INSERT;
-import static 
org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.InvokeType.NOOP;
-import static 
org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.InvokeType.REMOVE;
-import static 
org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.InvokeType.REPLACE;
 import static 
org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.Result.FOUND;
 import static 
org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.Result.GO_DOWN;
 import static 
org.apache.ignite.internal.processors.cache.database.tree.BPlusTree.Result.GO_DOWN_X;
@@ -228,9 +224,9 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 long res = doAskNeighbor(io, pageAddr, back);
 
 if (back) {
-assert g.getClass() == Invoke.class;
+assert g.getClass() == Remove.class;
 
-if (io.getForward(pageAddr) != g.backId) // See how g.backId 
is setup in invokeDown for this check.
+if (io.getForward(pageAddr) != g.backId) // See how g.backId 
is setup in removeDown for this check.
 return RETRY;
 
 g.backId = res;
@@ -423,14 +419,14 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 }
 
 /** */
-private final GetPageHandler rmvFromLeaf = new RemoveFromLeaf();
+private final GetPageHandler rmvFromLeaf = new RemoveFromLeaf();
 
 /**
  *
  */
-private class RemoveFromLeaf extends GetPageHandler {
+private class RemoveFromLeaf extends GetPageHandler {
 /** {@inheritDoc} */
-@Override public Result run0(Page leaf, long pageAddr, BPlusIO io, 
Invoke r, int lvl)
+@Override public Result run0(Page leaf, long pageAddr, BPlusIO io, 
Remove r, int lvl)
 throws IgniteCheckedException {
 assert lvl == 0 : lvl; // Leaf.
 
@@ -494,14 +490,14 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 }
 
 /** */
-private final GetPageHandler lockBackAndRmvFromLeaf = new 
LockBackAndRmvFromLeaf();
+private final GetPageHandler lockBackAndRmvFromLeaf = new 
LockBackAndRmvFromLeaf();
 
 /**
  *
  */
-private class LockBackAndRmvFromLeaf extends GetPageHandler {
+private class LockBackAndRmvFromLeaf extends GetPageHandler {
 /** {@inheritDoc} */
-@Override protected Result run0(Page back, long pageAddr, BPlusIO 
io, Invoke r, int lvl)
+@Override protected Result run0(Page back, long pageAddr, BPlusIO 
io, Remove r, int lvl)
 throws IgniteCheckedException {
 // Check that we have consistent view of the world.
 if (io.getForward(pageAddr) != r.pageId)
@@ -519,14 +515,14 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 }
 
 /** */
-private 

[06/17] ignite git commit: ignite-db-x - tryReplaceInner

2017-02-16 Thread sergi
ignite-db-x - tryReplaceInner


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

Branch: refs/heads/ignite-4652
Commit: 97e9bd96028651e8deb4873c71a7a91cd40b91c4
Parents: 7689b36
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Mon Feb 13 17:57:13 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Mon Feb 13 17:57:13 2017 +0300

--
 .../cache/database/tree/BPlusTree.java  | 63 
 1 file changed, 39 insertions(+), 24 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/97e9bd96/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index e126923..f87ba2b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -2055,31 +2055,10 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 assert p.pageId != pageId;
 assert p.fwdId != fwdId || fwdId == 0;
 
-// Need to replace key in inner page. There is no race 
because we keep tail lock after split.
-if (p.needReplaceInner == TRUE) {
-p.needReplaceInner = FALSE; // Protect from 
retries.
+res = p.tryReplaceInner(page, pageId, fwdId, lvl);
 
-long oldFwdId = p.fwdId;
-long oldPageId = p.pageId;
-
-// Set old args.
-p.fwdId = fwdId;
-p.pageId = pageId;
-
-res = writePage(pageMem, page, this, replace, p, 
lvl, RETRY);
-
-// Restore args.
-p.pageId = oldPageId;
-p.fwdId = oldFwdId;
-
-if (res != FOUND)
-return res; // Need to retry.
-
-p.needReplaceInner = DONE; // We can have only 
single matching inner key.
-}
-
-// Go down recursively.
-res = putDown(p, p.pageId, p.fwdId, lvl - 1);
+if (res != RETRY) // Go down recursively.
+res = putDown(p, p.pageId, p.fwdId, lvl - 1);
 
 if (res == RETRY_ROOT || p.isFinished())
 return res;
@@ -2595,6 +2574,42 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 }
 }
 }
+
+/**
+ * @param page Page.
+ * @param pageId Page ID.
+ * @param fwdId Forward ID.
+ * @param lvl Level.
+ * @return Result.
+ * @throws IgniteCheckedException If failed.
+ */
+private Result tryReplaceInner(Page page, long pageId, long fwdId, int 
lvl)
+throws IgniteCheckedException {
+// Need to replace key in inner page. There is no race because we 
keep tail lock after split.
+if (needReplaceInner == TRUE) {
+needReplaceInner = FALSE; // Protect from retries.
+
+long oldFwdId = this.fwdId;
+long oldPageId = this.pageId;
+
+// Set old args.
+this.fwdId = fwdId;
+this.pageId = pageId;
+
+Result res = writePage(pageMem, page, BPlusTree.this, replace, 
this, lvl, RETRY);
+
+// Restore args.
+this.pageId = oldPageId;
+this.fwdId = oldFwdId;
+
+if (res == RETRY)
+return res;
+
+needReplaceInner = DONE; // We can have only a single matching 
inner key.
+}
+
+return FOUND;
+}
 }
 
 /**



[05/17] ignite git commit: ignite-db-x - Minor.

2017-02-16 Thread sergi
ignite-db-x - Minor.


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

Branch: refs/heads/ignite-4652
Commit: 7689b36427d1cdcbb19b59fdb3d048a93c417af0
Parents: d8ff795
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Mon Feb 13 12:09:07 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Mon Feb 13 12:09:07 2017 +0300

--
 .../cache/database/tree/BPlusTree.java  | 109 +--
 1 file changed, 78 insertions(+), 31 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/7689b364/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index 68a0255..e126923 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -227,12 +227,12 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 if (io.getForward(pageAddr) != g.backId) // See how g.backId 
is setup in removeDown for this check.
 return RETRY;
 
-g.backId = res;
+g.backId(res);
 }
 else {
 assert isBack == FALSE.ordinal() : isBack;
 
-g.fwdId = res;
+g.fwdId(res);
 }
 
 return FOUND;
@@ -255,7 +255,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 
 boolean needBackIfRouting = g.backId != 0;
 
-g.backId = 0; // Usually we'll go left down and don't need it.
+g.backId(0L); // Usually we'll go left down and don't need it.
 
 int cnt = io.getCount(pageAddr);
 int idx = findInsertionPoint(io, pageAddr, 0, cnt, g.row, g.shift);
@@ -280,13 +280,13 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 assert !io.isLeaf() : io;
 
 // If idx == cnt then we go right down, else left down: 
getLeft(cnt) == getRight(cnt - 1).
-g.pageId = inner(io).getLeft(pageAddr, idx);
+g.pageId(inner(io).getLeft(pageAddr, idx));
 
 // If we see the tree in consistent state, then our right down 
page must be forward for our left down page,
 // we need to setup fwdId and/or backId to be able to check this 
invariant on lower level.
 if (idx < cnt) {
 // Go left down here.
-g.fwdId = inner(io).getRight(pageAddr, idx);
+g.fwdId(inner(io).getRight(pageAddr, idx));
 }
 else {
 // Go right down here or it is an empty branch.
@@ -299,7 +299,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 
 // Setup fwdId.
 if (fwdId == 0)
-g.fwdId = 0;
+g.fwdId(0L);
 else {
 // We can do askNeighbor on forward page here because we 
always take locks in forward direction.
 Result res = askNeighbor(fwdId, g, false);
@@ -310,7 +310,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 
 // Setup backId.
 if (cnt != 0) // It is not a routing page and we are going to 
the right, can get backId here.
-g.backId = inner(io).getLeft(pageAddr, cnt - 1);
+g.backId(inner(io).getLeft(pageAddr, cnt - 1));
 else if (needBackIfRouting) {
 // Can't get backId here because of possible deadlock and 
it is only needed for remove operation.
 return GO_DOWN_X;
@@ -1401,6 +1401,8 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 
 /** {@inheritDoc} */
 @Override public void invoke(L row, InvokeClosure c) throws 
IgniteCheckedException {
+assert c != null;
+
 checkDestroyed();
 
 Invoke x = new Invoke(row, c);
@@ -1457,9 +1459,9 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 try {
 for (;;) {
 // Init args.
-  

[09/17] ignite git commit: ignite-db-x - wip2

2017-02-16 Thread sergi
ignite-db-x - wip2


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

Branch: refs/heads/ignite-4652
Commit: 94174121522f318b2df0564729b9a81cbd1a3a42
Parents: 4f1088f
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Tue Feb 14 15:59:18 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Tue Feb 14 15:59:18 2017 +0300

--
 .../processors/cache/database/tree/BPlusTree.java | 10 +-
 1 file changed, 9 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/94174121/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index 51d2c83..c21032f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -358,7 +358,15 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 // Inner replace state must be consistent by the end of the 
operation.
 assert p.needReplaceInner == FALSE || p.needReplaceInner == 
DONE : p.needReplaceInner;
 
-p.finish();
+// Need to replace inner key if now we are replacing the 
rightmost row and have a forward page.
+if (canGetRowFromInner && idx + 1 == cnt && p.fwdId != 0L && 
p.needReplaceInner == FALSE) {
+// Can happen only for invoke, otherwise inner key must be 
replaced on the way down.
+assert p.invoke;
+
+p.needReplaceInner = TRUE;
+}
+else
+p.finish();
 }
 
 io.store(pageAddr, idx, newRow, null);



[11/17] ignite git commit: ignite-db-x - invoke2

2017-02-16 Thread sergi
ignite-db-x - invoke2


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

Branch: refs/heads/ignite-4652
Commit: e52a08ea293b19b6421df5ca24ce21c6cf0010ce
Parents: c16109c
Author: Sergi Vladykin <sergi.vlady...@gmail.com>
Authored: Wed Feb 15 17:54:12 2017 +0300
Committer: Sergi Vladykin <sergi.vlady...@gmail.com>
Committed: Wed Feb 15 17:54:12 2017 +0300

--
 .../cache/database/tree/BPlusTree.java  | 83 +++-
 1 file changed, 63 insertions(+), 20 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/ignite/blob/e52a08ea/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
--
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
index 347ee85..93097ba 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/tree/BPlusTree.java
@@ -1506,14 +1506,18 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 if (res != RETRY)
 res = invokeDown(x, x.pageId, x.backId, x.fwdId, 
lvl - 1);
 
-if (res == RETRY) {
+if (res == RETRY_ROOT || x.isFinished())
+return res;
+
+if (res == RETRY || x.isPut()) {
 checkInterrupted();
 
 continue;
 }
 
-if (res != RETRY_ROOT)
-res = x.onUp();
+assert x.isRemove();
+
+res = x.finishOrLockTail(page, pageId, backId, fwdId, 
lvl);
 
 return res;
 
@@ -1647,12 +1651,10 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 continue;
 }
 
-if (res != RETRY_ROOT && !r.isFinished()) {
-res = r.finishTail();
+if (res == RETRY_ROOT || r.isFinished())
+return res;
 
-if (res == NOT_FOUND)
-res = r.lockTail(pageId, page, backId, fwdId, 
lvl);
-}
+res = r.finishOrLockTail(page, pageId, backId, fwdId, 
lvl);
 
 return res;
 
@@ -2604,7 +2606,7 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 this.fwdId = oldFwdId;
 
 if (res == RETRY)
-return res;
+return RETRY;
 
 needReplaceInner = DONE; // We can have only a single matching 
inner key.
 
@@ -2790,8 +2792,18 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
 return op.canRelease(page, lvl);
 }
 
-private boolean is(Class cls) {
-return op != null && op.getClass() == cls;
+/**
+ * @return {@code true} If it is a {@link Put} operation internally.
+ */
+private boolean isPut() {
+return op != null && op.getClass() == Put.class;
+}
+
+/**
+ * @return {@code true} If it is a {@link Remove} operation internally.
+ */
+private boolean isRemove() {
+return op != null && op.getClass() == Remove.class;
 }
 
 /**
@@ -2800,13 +2812,13 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
  * @return {@code true} If it is a {@link Remove} and the page is in 
tail.
  */
 private boolean isTail(long pageId, int lvl) {
-return is(Remove.class) && ((Remove)op).isTail(pageId, lvl);
+return isRemove() && ((Remove)op).isTail(pageId, lvl);
 }
 
 /**
  */
 private void levelExit() {
-if (is(Remove.class))
+if (isRemove())
 ((Remove)op).page = null;
 }
 
@@ -2814,14 +2826,10 @@ public abstract class BPlusTree<L, T extends L> extends 
DataStructure implements
  * Release all the resources by the

  1   2   >