]> review.fuel-infra Code Review - packages/trusty/mysql-wsrep-5.6.git/blob
2b4bdb70e17a0847e74817bd59882adda6b8ddfb
[packages/trusty/mysql-wsrep-5.6.git] /
1 /*
2    Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
3
4    This program is free software; you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation; version 2 of the License.
7
8    This program is distributed in the hope that it will be useful,
9    but WITHOUT ANY WARRANTY; without even the implied warranty of
10    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11    GNU General Public License for more details.
12
13    You should have received a copy of the GNU General Public License
14    along with this program; if not, write to the Free Software
15    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
16 */
17
18 package com.mysql.clusterj.core.query;
19
20 import com.mysql.clusterj.core.spi.QueryExecutionContext;
21 import com.mysql.clusterj.core.store.IndexScanOperation;
22 import com.mysql.clusterj.core.store.ScanFilter;
23 import com.mysql.clusterj.core.store.ScanOperation;
24
25 public class GreaterThanPredicateImpl extends ComparativePredicateImpl {
26
27     public GreaterThanPredicateImpl(QueryDomainTypeImpl<?> dobj,
28             PropertyImpl property, ParameterImpl param) {
29         super(dobj, property, param);
30     }
31
32     @Override
33     public void markBoundsForCandidateIndices(QueryExecutionContext context, CandidateIndexImpl[] candidateIndices) {
34         if (param.getParameterValue(context) == null) {
35             // null parameters cannot be used with indexes
36             return;
37         }
38         property.markLowerBound(candidateIndices, this, true);
39     }
40
41     @Override
42     public void operationSetBounds(QueryExecutionContext context, IndexScanOperation op, boolean lastColumn) {
43         if (lastColumn) {
44             // last column may be strict
45             property.operationSetBounds(param.getParameterValue(context), IndexScanOperation.BoundType.BoundLT, op);
46         } else {
47             // not-last column must not be strict
48             property.operationSetBounds(param.getParameterValue(context), IndexScanOperation.BoundType.BoundLE, op);
49         }
50     }
51
52     /** Set the condition into the filter.
53      * @param context the query execution context with the parameter values
54      * @param op the operation
55      * @param filter the filter
56      */
57     @Override
58     public void filterCmpValue(QueryExecutionContext context,
59             ScanOperation op, ScanFilter filter) {
60         property.filterCmpValue(param.getParameterValue(context),
61                 ScanFilter.BinaryCondition.COND_GT, filter);
62     }
63
64 }