Implemented support for enforce join order flag.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a7f77d4e Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a7f77d4e Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a7f77d4e Branch: refs/heads/ignite-4768 Commit: a7f77d4e89956ac7a5d4ec9f629f89f1c2e1315a Parents: 2ba8005 Author: Alexey Kuznetsov <akuznet...@gridgain.com> Authored: Wed Mar 1 22:09:40 2017 +0700 Committer: Alexey Kuznetsov <akuznet...@gridgain.com> Committed: Wed Mar 1 22:09:40 2017 +0700 ---------------------------------------------------------------------- .../internal/visor/query/VisorQueryArgV3.java | 51 ++++++++++++++++++++ .../internal/visor/query/VisorQueryJob.java | 6 +-- .../resources/META-INF/classnames.properties | 1 + 3 files changed, 55 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/a7f77d4e/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryArgV3.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryArgV3.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryArgV3.java new file mode 100644 index 0000000..f32c00a --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryArgV3.java @@ -0,0 +1,51 @@ +/* + * 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.visor.query; + +/** + * Arguments for {@link VisorQueryTask}. + */ +public class VisorQueryArgV3 extends VisorQueryArgV2 { + /** */ + private static final long serialVersionUID = 0L; + + /** Enforce join order flag. */ + private final boolean enforceJoinOrder; + + /** + * @param cacheName Cache name for query. + * @param qryTxt Query text. + * @param distributedJoins If {@code true} then distributed joins enabled. + * @param enforceJoinOrder If {@code true} then enforce join order. + * @param loc Flag whether to execute query locally. + * @param pageSize Result batch size. + */ + public VisorQueryArgV3(String cacheName, String qryTxt, + boolean distributedJoins, boolean enforceJoinOrder, boolean loc, int pageSize) { + super(cacheName, qryTxt, distributedJoins, loc, pageSize); + + this.enforceJoinOrder = enforceJoinOrder; + } + + /** + * @return Enforce join order flag. + */ + public boolean enforceJoinOrder() { + return enforceJoinOrder; + } +} http://git-wip-us.apache.org/repos/asf/ignite/blob/a7f77d4e/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryJob.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryJob.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryJob.java index c66b2dd..1ac90ad 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryJob.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/query/VisorQueryJob.java @@ -131,9 +131,8 @@ public class VisorQueryJob extends VisorJob<VisorQueryArg, IgniteBiTuple<? exten if (scanWithFilter) { boolean caseSensitive = qryTxt.startsWith(SCAN_CACHE_WITH_FILTER_CASE_SENSITIVE); - String ptrn = caseSensitive - ? qryTxt.substring(SCAN_CACHE_WITH_FILTER_CASE_SENSITIVE.length()) - : qryTxt.substring(SCAN_CACHE_WITH_FILTER.length()); + String ptrn = qryTxt.substring( + caseSensitive ? SCAN_CACHE_WITH_FILTER_CASE_SENSITIVE.length() : SCAN_CACHE_WITH_FILTER.length()); filter = new VisorQueryScanSubstringFilter(caseSensitive, ptrn); } @@ -162,6 +161,7 @@ public class VisorQueryJob extends VisorJob<VisorQueryArg, IgniteBiTuple<? exten qry.setPageSize(arg.pageSize()); qry.setLocal(arg.local()); qry.setDistributedJoins(arg instanceof VisorQueryArgV2 && ((VisorQueryArgV2)arg).distributedJoins()); + qry.setEnforceJoinOrder(arg instanceof VisorQueryArgV3 && ((VisorQueryArgV3)arg).enforceJoinOrder()); long start = U.currentTimeMillis(); http://git-wip-us.apache.org/repos/asf/ignite/blob/a7f77d4e/modules/core/src/main/resources/META-INF/classnames.properties ---------------------------------------------------------------------- diff --git a/modules/core/src/main/resources/META-INF/classnames.properties b/modules/core/src/main/resources/META-INF/classnames.properties index c0a6407..8cfed3a 100644 --- a/modules/core/src/main/resources/META-INF/classnames.properties +++ b/modules/core/src/main/resources/META-INF/classnames.properties @@ -1822,6 +1822,7 @@ org.apache.ignite.internal.visor.node.VisorSpisConfiguration org.apache.ignite.internal.visor.node.VisorTransactionConfiguration org.apache.ignite.internal.visor.query.VisorQueryArg org.apache.ignite.internal.visor.query.VisorQueryArgV2 +org.apache.ignite.internal.visor.query.VisorQueryArgV3 org.apache.ignite.internal.visor.query.VisorQueryCleanupTask org.apache.ignite.internal.visor.query.VisorQueryCleanupTask$VisorQueryCleanupJob org.apache.ignite.internal.visor.query.VisorQueryField