]> review.fuel-infra Code Review - packages/trusty/mysql-wsrep-5.6.git/blob
05d06e773379a7cf044b230144305777e1550126
[packages/trusty/mysql-wsrep-5.6.git] /
1 /*
2    Copyright (c) 2010, 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 testsuite.clusterj;
19
20 import testsuite.clusterj.model.DoubleTypes;
21 import testsuite.clusterj.model.IdBase;
22
23 public class QueryDoubleTypesTest extends AbstractQueryTest {
24
25     @Override
26     public Class getInstanceType() {
27         return DoubleTypes.class;
28     }
29
30     @Override
31     void createInstances(int number) {
32         createAllDoubleTypesInstances(number);
33     }
34
35     /** Test all single- and double-predicate queries using DoubleTypes.
36 drop table if exists doubletypes;
37 create table doubletypes (
38  id int not null primary key,
39
40  double_null_hash double(10,5),
41  double_null_btree double(10,5),
42  double_null_both double(10,5),
43  double_null_none double(10,5)
44
45 ) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
46
47 create unique index idx_double_null_hash using hash on doubletypes(double_null_hash);
48 create index idx_double_null_btree on doubletypes(double_null_btree);
49 create unique index idx_double_null_both on doubletypes(double_null_both);
50
51      */
52
53 /** Double types allow hash indexes to be defined but ndb-bindings
54  * do not allow an equal lookup, so they are not used.
55  * If hash indexes are supported in future, uncomment the test case methods.
56  */
57     public void test() {
58         btreeIndexScanDouble();
59         hashIndexScanDouble();
60         bothIndexScanDouble();
61         noneIndexScanDouble();
62         failOnError();
63     }
64
65     public void btreeIndexScanDouble() {
66         equalQuery("double_not_null_btree", "idx_double_not_null_btree", getDouble(8), 8);
67         greaterEqualQuery("double_not_null_btree", "idx_double_not_null_btree", getDouble(7), 7, 8, 9);
68         greaterThanQuery("double_not_null_btree", "idx_double_not_null_btree", getDouble(6), 7, 8, 9);
69         lessEqualQuery("double_not_null_btree", "idx_double_not_null_btree", getDouble(4), 4, 3, 2, 1, 0);
70         lessThanQuery("double_not_null_btree", "idx_double_not_null_btree", getDouble(4), 3, 2, 1, 0);
71         betweenQuery("double_not_null_btree", "idx_double_not_null_btree", getDouble(4), getDouble(6), 4, 5, 6);
72         greaterEqualAndLessEqualQuery("double_not_null_btree", "idx_double_not_null_btree", getDouble(4), getDouble(6), 4, 5, 6);
73         greaterThanAndLessEqualQuery("double_not_null_btree", "idx_double_not_null_btree", getDouble(4), getDouble(6), 5, 6);
74         greaterEqualAndLessThanQuery("double_not_null_btree", "idx_double_not_null_btree", getDouble(4), getDouble(6), 4, 5);
75         greaterThanAndLessThanQuery("double_not_null_btree", "idx_double_not_null_btree", getDouble(4), getDouble(6), 5);
76
77         equalQuery("double_null_btree", "idx_double_null_btree", getDouble(8), 8);
78         greaterEqualQuery("double_null_btree", "idx_double_null_btree", getDouble(7), 7, 8, 9);
79         greaterThanQuery("double_null_btree", "idx_double_null_btree", getDouble(6), 7, 8, 9);
80         lessEqualQuery("double_null_btree", "idx_double_null_btree", getDouble(4), 4, 3, 2, 1, 0);
81         lessThanQuery("double_null_btree", "idx_double_null_btree", getDouble(4), 3, 2, 1, 0);
82         betweenQuery("double_null_btree", "idx_double_null_btree", getDouble(4), getDouble(6), 4, 5, 6);
83         greaterEqualAndLessEqualQuery("double_null_btree", "idx_double_null_btree", getDouble(4), getDouble(6), 4, 5, 6);
84         greaterThanAndLessEqualQuery("double_null_btree", "idx_double_null_btree", getDouble(4), getDouble(6), 5, 6);
85         greaterEqualAndLessThanQuery("double_null_btree", "idx_double_null_btree", getDouble(4), getDouble(6), 4, 5);
86         greaterThanAndLessThanQuery("double_null_btree", "idx_double_null_btree", getDouble(4), getDouble(6), 5);
87 }
88
89     public void hashIndexScanDouble() {
90         equalQuery("double_not_null_hash", "idx_double_not_null_hash", getDouble(8), 8);
91         greaterEqualQuery("double_not_null_hash", "none", getDouble(7), 7, 8, 9);
92         greaterThanQuery("double_not_null_hash", "none", getDouble(6), 7, 8, 9);
93         lessEqualQuery("double_not_null_hash", "none", getDouble(4), 4, 3, 2, 1, 0);
94         lessThanQuery("double_not_null_hash", "none", getDouble(4), 3, 2, 1, 0);
95         betweenQuery("double_not_null_hash", "none", getDouble(4), getDouble(6), 4, 5, 6);
96         greaterEqualAndLessEqualQuery("double_not_null_hash", "none", getDouble(4), getDouble(6), 4, 5, 6);
97         greaterThanAndLessEqualQuery("double_not_null_hash", "none", getDouble(4), getDouble(6), 5, 6);
98         greaterEqualAndLessThanQuery("double_not_null_hash", "none", getDouble(4), getDouble(6), 4, 5);
99         greaterThanAndLessThanQuery("double_not_null_hash", "none", getDouble(4), getDouble(6), 5);
100
101         equalQuery("double_null_hash", "idx_double_null_hash", getDouble(8), 8);
102         greaterEqualQuery("double_null_hash", "none", getDouble(7), 7, 8, 9);
103         greaterThanQuery("double_null_hash", "none", getDouble(6), 7, 8, 9);
104         lessEqualQuery("double_null_hash", "none", getDouble(4), 4, 3, 2, 1, 0);
105         lessThanQuery("double_null_hash", "none", getDouble(4), 3, 2, 1, 0);
106         betweenQuery("double_null_hash", "none", getDouble(4), getDouble(6), 4, 5, 6);
107         greaterEqualAndLessEqualQuery("double_null_hash", "none", getDouble(4), getDouble(6), 4, 5, 6);
108         greaterThanAndLessEqualQuery("double_null_hash", "none", getDouble(4), getDouble(6), 5, 6);
109         greaterEqualAndLessThanQuery("double_null_hash", "none", getDouble(4), getDouble(6), 4, 5);
110         greaterThanAndLessThanQuery("double_null_hash", "none", getDouble(4), getDouble(6), 5);
111
112     }
113
114     public void bothIndexScanDouble() {
115         equalQuery("double_not_null_both", "idx_double_not_null_both", getDouble(8), 8);
116         greaterEqualQuery("double_not_null_both", "idx_double_not_null_both", getDouble(7), 7, 8, 9);
117         greaterThanQuery("double_not_null_both", "idx_double_not_null_both", getDouble(6), 7, 8, 9);
118         lessEqualQuery("double_not_null_both", "idx_double_not_null_both", getDouble(4), 4, 3, 2, 1, 0);
119         lessThanQuery("double_not_null_both", "idx_double_not_null_both", getDouble(4), 3, 2, 1, 0);
120         betweenQuery("double_not_null_both", "idx_double_not_null_both", getDouble(4), getDouble(6), 4, 5, 6);
121         greaterEqualAndLessEqualQuery("double_not_null_both", "idx_double_not_null_both", getDouble(4), getDouble(6), 4, 5, 6);
122         greaterThanAndLessEqualQuery("double_not_null_both", "idx_double_not_null_both", getDouble(4), getDouble(6), 5, 6);
123         greaterEqualAndLessThanQuery("double_not_null_both", "idx_double_not_null_both", getDouble(4), getDouble(6), 4, 5);
124         greaterThanAndLessThanQuery("double_not_null_both", "idx_double_not_null_both", getDouble(4), getDouble(6), 5);
125
126         equalQuery("double_null_both", "idx_double_null_both", getDouble(8), 8);
127         greaterEqualQuery("double_null_both", "idx_double_null_both", getDouble(7), 7, 8, 9);
128         greaterThanQuery("double_null_both", "idx_double_null_both", getDouble(6), 7, 8, 9);
129         lessEqualQuery("double_null_both", "idx_double_null_both", getDouble(4), 4, 3, 2, 1, 0);
130         lessThanQuery("double_null_both", "idx_double_null_both", getDouble(4), 3, 2, 1, 0);
131         betweenQuery("double_null_both", "idx_double_null_both", getDouble(4), getDouble(6), 4, 5, 6);
132         greaterEqualAndLessEqualQuery("double_null_both", "idx_double_null_both", getDouble(4), getDouble(6), 4, 5, 6);
133         greaterThanAndLessEqualQuery("double_null_both", "idx_double_null_both", getDouble(4), getDouble(6), 5, 6);
134         greaterEqualAndLessThanQuery("double_null_both", "idx_double_null_both", getDouble(4), getDouble(6), 4, 5);
135         greaterThanAndLessThanQuery("double_null_both", "idx_double_null_both", getDouble(4), getDouble(6), 5);
136
137     }
138
139     public void noneIndexScanDouble() {
140         equalQuery("double_not_null_none", "none", getDouble(8), 8);
141         greaterEqualQuery("double_not_null_none", "none", getDouble(7), 7, 8, 9);
142         greaterThanQuery("double_not_null_none", "none", getDouble(6), 7, 8, 9);
143         lessEqualQuery("double_not_null_none", "none", getDouble(4), 4, 3, 2, 1, 0);
144         lessThanQuery("double_not_null_none", "none", getDouble(4), 3, 2, 1, 0);
145         betweenQuery("double_not_null_none", "none", getDouble(4), getDouble(6), 4, 5, 6);
146         greaterEqualAndLessEqualQuery("double_not_null_none", "none", getDouble(4), getDouble(6), 4, 5, 6);
147         greaterThanAndLessEqualQuery("double_not_null_none", "none", getDouble(4), getDouble(6), 5, 6);
148         greaterEqualAndLessThanQuery("double_not_null_none", "none", getDouble(4), getDouble(6), 4, 5);
149         greaterThanAndLessThanQuery("double_not_null_none", "none", getDouble(4), getDouble(6), 5);
150
151         equalQuery("double_null_none", "none", getDouble(8), 8);
152         greaterEqualQuery("double_null_none", "none", getDouble(7), 7, 8, 9);
153         greaterThanQuery("double_null_none", "none", getDouble(6), 7, 8, 9);
154         lessEqualQuery("double_null_none", "none", getDouble(4), 4, 3, 2, 1, 0);
155         lessThanQuery("double_null_none", "none", getDouble(4), 3, 2, 1, 0);
156         betweenQuery("double_null_none", "none", getDouble(4), getDouble(6), 4, 5, 6);
157         greaterEqualAndLessEqualQuery("double_null_none", "none", getDouble(4), getDouble(6), 4, 5, 6);
158         greaterThanAndLessEqualQuery("double_null_none", "none", getDouble(4), getDouble(6), 5, 6);
159         greaterEqualAndLessThanQuery("double_null_none", "none", getDouble(4), getDouble(6), 4, 5);
160         greaterThanAndLessThanQuery("double_null_none", "none", getDouble(4), getDouble(6), 5);
161
162     }
163
164     private void createAllDoubleTypesInstances(int number) {
165         for (int i = 0; i < number; ++i) {
166             DoubleTypes instance = session.newInstance(DoubleTypes.class);
167             instance.setId(i);
168             instance.setDouble_not_null_hash(getDouble(i));
169             instance.setDouble_not_null_btree(getDouble(i));
170             instance.setDouble_not_null_both(getDouble(i));
171             instance.setDouble_not_null_none(getDouble(i));
172             instance.setDouble_null_hash(getDouble(i));
173             instance.setDouble_null_btree(getDouble(i));
174             instance.setDouble_null_both(getDouble(i));
175             instance.setDouble_null_none(getDouble(i));
176             instances.add(instance);
177         }
178     }
179
180     protected Double getDouble(int number) {
181         return Double.valueOf(0.00001D * number);
182     }
183
184     /** Print the results of a query for debugging.
185      *
186      * @param instance the instance to print
187      */
188     @Override
189     protected void printResultInstance(IdBase instance) {
190         if (instance instanceof DoubleTypes) {
191             DoubleTypes doubleType = (DoubleTypes)instance;
192 //            System.out.println(toString(doubleType));
193         }
194     }
195
196     public static String toString(IdBase idBase) {
197         DoubleTypes instance = (DoubleTypes)idBase;
198         StringBuffer buffer = new StringBuffer("DoubleTypes id: ");
199         buffer.append(instance.getId());
200         buffer.append("; double_not_null_both: ");
201         buffer.append(instance.getDouble_not_null_both());
202         buffer.append("; double_not_null_btree: ");
203         buffer.append(instance.getDouble_not_null_btree());
204         buffer.append("; double_not_null_hash: ");
205         buffer.append(instance.getDouble_not_null_hash());
206         buffer.append("; double_not_null_none: ");
207         buffer.append(instance.getDouble_not_null_none());
208         buffer.append("; double_null_both: ");
209         buffer.append(instance.getDouble_null_both().toString());
210         buffer.append("; double_null_btree: ");
211         buffer.append(instance.getDouble_null_btree().toString());
212         buffer.append("; double_null_hash: ");
213         buffer.append(instance.getDouble_null_hash().toString());
214         buffer.append("; double_null_none: ");
215         buffer.append(instance.getDouble_null_none().toString());
216         return buffer.toString();
217     }
218 }