]> review.fuel-infra Code Review - packages/trusty/mysql-wsrep-5.6.git/blob
231ff960401c959f184dd3e18082898c1ef7d51d
[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.Operation;
23 import com.mysql.clusterj.core.store.ScanFilter;
24 import com.mysql.clusterj.core.store.ScanOperation;
25
26 public class EqualPredicateImpl extends ComparativePredicateImpl {
27
28     public EqualPredicateImpl(QueryDomainTypeImpl<?> dobj,
29             PropertyImpl property, ParameterImpl param) {
30         super(dobj, property, param);
31     }
32
33     @Override
34     public void markBoundsForCandidateIndices(QueryExecutionContext context, CandidateIndexImpl[] candidateIndices) {
35         if (param.getParameterValue(context) == null) {
36             // null parameters cannot be used with indexes
37             return;
38         }
39         property.markEqualBound(candidateIndices, this);
40     }
41
42     @Override
43     public void operationSetBounds(QueryExecutionContext context, IndexScanOperation op, boolean lastColumn) {
44         // can always set boundEQ
45         property.operationSetBounds(param.getParameterValue(context), IndexScanOperation.BoundType.BoundEQ, op);
46     }
47
48     @Override
49     public void operationSetLowerBound(QueryExecutionContext context, IndexScanOperation op, boolean lastColumn) {
50         // only set lower bound
51         property.operationSetBounds(param.getParameterValue(context), IndexScanOperation.BoundType.BoundLE, op);
52     }
53
54     @Override
55     public void operationSetUpperBound(QueryExecutionContext context, IndexScanOperation op, boolean lastColumn) {
56         // only set upper bound
57         property.operationSetBounds(param.getParameterValue(context), IndexScanOperation.BoundType.BoundGE, op);
58     }
59
60     @Override
61     public void operationEqual(QueryExecutionContext context,
62             Operation op) {
63         property.operationEqual(param.getParameterValue(context), op);
64     }
65
66     @Override
67     public void operationEqualFor(QueryExecutionContext context,
68             Operation op, String indexName) {
69         property.operationEqualFor(param.getParameterValue(context), op, indexName);
70     }
71
72     /** Set the condition into the filter.
73      * @param context the query execution context with the parameter values
74      * @param op the operation
75      * @param filter the filter
76      */
77     @Override
78     public void filterCmpValue(QueryExecutionContext context, ScanOperation op, ScanFilter filter) {
79         property.filterCmpValue(param.getParameterValue(context),
80                 ScanFilter.BinaryCondition.COND_EQ, filter);
81     }
82
83 }