[ignite] branch master updated: IGNITE-7265
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
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
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
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.
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.
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.
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.
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.
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.
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
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
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
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
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
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
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
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.
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
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.
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
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
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
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.
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.
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.
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.
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
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
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
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.
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
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
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.
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.
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.
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
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
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
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
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.
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
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
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
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 SeliverstovAuthored: 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
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 SeliverstovAuthored: 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
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 BPlusTreeextends 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
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 SeliverstovAuthored: 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
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 SeliverstovAuthored: 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
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
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
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 SeliverstovAuthored: 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
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 SeliverstovAuthored: 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
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 SeliverstovAuthored: 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
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 SeliverstovAuthored: 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
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
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.
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. MashenkovAuthored: 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
[3/3] ignite git commit: Merge remote-tracking branch 'origin/master'
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
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
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
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
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
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 { MappartsMap = 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
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)
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 DudkovAuthored: 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
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
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
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
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. MashenkovAuthored: 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.
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. MashenkovAuthored: 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
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. MashenkovAuthored: 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.
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: AMRepoAuthored: 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
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. MashenkovAuthored: 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
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.
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. MashenkovAuthored: 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. .
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. MashenkovAuthored: 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
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. MashenkovAuthored: 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.
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. MashenkovAuthored: 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.
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. MashenkovAuthored: 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
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
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
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
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
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 PaschenkoAuthored: 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
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
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 PaschenkoAuthored: 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
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 PaschenkoAuthored: 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
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
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/
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/
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
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
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
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
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
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
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.
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
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
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