]> review.fuel-infra Code Review - packages/trusty/mysql-wsrep-5.6.git/blob
a239eb06536660127f6a587f2ea4f5475de71d7e
[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.FloatTypes;
21 import testsuite.clusterj.model.IdBase;
22
23 public class QueryFloatTypesTest extends AbstractQueryTest {
24
25     @Override
26     public Class getInstanceType() {
27         return FloatTypes.class;
28     }
29
30     @Override
31     void createInstances(int number) {
32         createAllFloatTypesInstances(number);
33     }
34
35     /** Test all single- and double-predicate queries using FloatTypes.
36 drop table if exists floattypes;
37 create table floattypes (
38  id int not null primary key,
39
40  float_null_hash float,
41  float_null_btree float,
42  float_null_both float,
43  float_null_none float,
44
45  float_not_null_hash float,
46  float_not_null_btree float,
47  float_not_null_both float,
48  float_not_null_none float
49
50 ) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
51
52 create unique index idx_float_null_hash using hash on floattypes(float_null_hash);
53 create index idx_float_null_btree on floattypes(float_null_btree);
54 create unique index idx_float_null_both on floattypes(float_null_both);
55
56 create unique index idx_float_not_null_hash using hash on floattypes(float_not_null_hash);
57 create index idx_float_not_null_btree on floattypes(float_not_null_btree);
58 create unique index idx_float_not_null_both on floattypes(float_not_null_both);
59
60      */
61
62 /** Float types allow hash indexes to be defined but ndb-bindings
63  * do not allow an equal lookup, so they are not used.
64  * If hash indexes are supported in future, uncomment the test case methods.
65  */
66     public void test() {
67         btreeIndexScanFloat();
68         hashIndexScanFloat();
69         bothIndexScanFloat();
70         noneIndexScanFloat();
71         failOnError();
72     }
73
74     public void btreeIndexScanFloat() {
75         equalQuery("float_not_null_btree", "idx_float_not_null_btree", getFloat(8), 8);
76         greaterEqualQuery("float_not_null_btree", "idx_float_not_null_btree", getFloat(7), 7, 8, 9);
77         greaterThanQuery("float_not_null_btree", "idx_float_not_null_btree", getFloat(6), 7, 8, 9);
78         lessEqualQuery("float_not_null_btree", "idx_float_not_null_btree", getFloat(4), 4, 3, 2, 1, 0);
79         lessThanQuery("float_not_null_btree", "idx_float_not_null_btree", getFloat(4), 3, 2, 1, 0);
80         betweenQuery("float_not_null_btree", "idx_float_not_null_btree", getFloat(4), getFloat(6), 4, 5, 6);
81         greaterEqualAndLessEqualQuery("float_not_null_btree", "idx_float_not_null_btree", getFloat(4), getFloat(6), 4, 5, 6);
82         greaterThanAndLessEqualQuery("float_not_null_btree", "idx_float_not_null_btree", getFloat(4), getFloat(6), 5, 6);
83         greaterEqualAndLessThanQuery("float_not_null_btree", "idx_float_not_null_btree", getFloat(4), getFloat(6), 4, 5);
84         greaterThanAndLessThanQuery("float_not_null_btree", "idx_float_not_null_btree", getFloat(4), getFloat(6), 5);
85
86         equalQuery("float_null_btree", "idx_float_null_btree", getFloat(8), 8);
87         greaterEqualQuery("float_null_btree", "idx_float_null_btree", getFloat(7), 7, 8, 9);
88         greaterThanQuery("float_null_btree", "idx_float_null_btree", getFloat(6), 7, 8, 9);
89         lessEqualQuery("float_null_btree", "idx_float_null_btree", getFloat(4), 4, 3, 2, 1, 0);
90         lessThanQuery("float_null_btree", "idx_float_null_btree", getFloat(4), 3, 2, 1, 0);
91         betweenQuery("float_null_btree", "idx_float_null_btree", getFloat(4), getFloat(6), 4, 5, 6);
92         greaterEqualAndLessEqualQuery("float_null_btree", "idx_float_null_btree", getFloat(4), getFloat(6), 4, 5, 6);
93         greaterThanAndLessEqualQuery("float_null_btree", "idx_float_null_btree", getFloat(4), getFloat(6), 5, 6);
94         greaterEqualAndLessThanQuery("float_null_btree", "idx_float_null_btree", getFloat(4), getFloat(6), 4, 5);
95         greaterThanAndLessThanQuery("float_null_btree", "idx_float_null_btree", getFloat(4), getFloat(6), 5);
96 }
97
98     public void hashIndexScanFloat() {
99         equalQuery("float_not_null_hash", "idx_float_not_null_hash", getFloat(8), 8);
100         greaterEqualQuery("float_not_null_hash", "none", getFloat(7), 7, 8, 9);
101         greaterThanQuery("float_not_null_hash", "none", getFloat(6), 7, 8, 9);
102         lessEqualQuery("float_not_null_hash", "none", getFloat(4), 4, 3, 2, 1, 0);
103         lessThanQuery("float_not_null_hash", "none", getFloat(4), 3, 2, 1, 0);
104         betweenQuery("float_not_null_hash", "none", getFloat(4), getFloat(6), 4, 5, 6);
105         greaterEqualAndLessEqualQuery("float_not_null_hash", "none", getFloat(4), getFloat(6), 4, 5, 6);
106         greaterThanAndLessEqualQuery("float_not_null_hash", "none", getFloat(4), getFloat(6), 5, 6);
107         greaterEqualAndLessThanQuery("float_not_null_hash", "none", getFloat(4), getFloat(6), 4, 5);
108         greaterThanAndLessThanQuery("float_not_null_hash", "none", getFloat(4), getFloat(6), 5);
109
110         equalQuery("float_null_hash", "idx_float_null_hash", getFloat(8), 8);
111         greaterEqualQuery("float_null_hash", "none", getFloat(7), 7, 8, 9);
112         greaterThanQuery("float_null_hash", "none", getFloat(6), 7, 8, 9);
113         lessEqualQuery("float_null_hash", "none", getFloat(4), 4, 3, 2, 1, 0);
114         lessThanQuery("float_null_hash", "none", getFloat(4), 3, 2, 1, 0);
115         betweenQuery("float_null_hash", "none", getFloat(4), getFloat(6), 4, 5, 6);
116         greaterEqualAndLessEqualQuery("float_null_hash", "none", getFloat(4), getFloat(6), 4, 5, 6);
117         greaterThanAndLessEqualQuery("float_null_hash", "none", getFloat(4), getFloat(6), 5, 6);
118         greaterEqualAndLessThanQuery("float_null_hash", "none", getFloat(4), getFloat(6), 4, 5);
119         greaterThanAndLessThanQuery("float_null_hash", "none", getFloat(4), getFloat(6), 5);
120
121     }
122
123     public void bothIndexScanFloat() {
124         equalQuery("float_not_null_both", "idx_float_not_null_both", getFloat(8), 8);
125         greaterEqualQuery("float_not_null_both", "idx_float_not_null_both", getFloat(7), 7, 8, 9);
126         greaterThanQuery("float_not_null_both", "idx_float_not_null_both", getFloat(6), 7, 8, 9);
127         lessEqualQuery("float_not_null_both", "idx_float_not_null_both", getFloat(4), 4, 3, 2, 1, 0);
128         lessThanQuery("float_not_null_both", "idx_float_not_null_both", getFloat(4), 3, 2, 1, 0);
129         betweenQuery("float_not_null_both", "idx_float_not_null_both", getFloat(4), getFloat(6), 4, 5, 6);
130         greaterEqualAndLessEqualQuery("float_not_null_both", "idx_float_not_null_both", getFloat(4), getFloat(6), 4, 5, 6);
131         greaterThanAndLessEqualQuery("float_not_null_both", "idx_float_not_null_both", getFloat(4), getFloat(6), 5, 6);
132         greaterEqualAndLessThanQuery("float_not_null_both", "idx_float_not_null_both", getFloat(4), getFloat(6), 4, 5);
133         greaterThanAndLessThanQuery("float_not_null_both", "idx_float_not_null_both", getFloat(4), getFloat(6), 5);
134
135         equalQuery("float_null_both", "idx_float_null_both", getFloat(8), 8);
136         greaterEqualQuery("float_null_both", "idx_float_null_both", getFloat(7), 7, 8, 9);
137         greaterThanQuery("float_null_both", "idx_float_null_both", getFloat(6), 7, 8, 9);
138         lessEqualQuery("float_null_both", "idx_float_null_both", getFloat(4), 4, 3, 2, 1, 0);
139         lessThanQuery("float_null_both", "idx_float_null_both", getFloat(4), 3, 2, 1, 0);
140         betweenQuery("float_null_both", "idx_float_null_both", getFloat(4), getFloat(6), 4, 5, 6);
141         greaterEqualAndLessEqualQuery("float_null_both", "idx_float_null_both", getFloat(4), getFloat(6), 4, 5, 6);
142         greaterThanAndLessEqualQuery("float_null_both", "idx_float_null_both", getFloat(4), getFloat(6), 5, 6);
143         greaterEqualAndLessThanQuery("float_null_both", "idx_float_null_both", getFloat(4), getFloat(6), 4, 5);
144         greaterThanAndLessThanQuery("float_null_both", "idx_float_null_both", getFloat(4), getFloat(6), 5);
145
146     }
147
148     public void noneIndexScanFloat() {
149         equalQuery("float_not_null_none", "none", getFloat(8), 8);
150         greaterEqualQuery("float_not_null_none", "none", getFloat(7), 7, 8, 9);
151         greaterThanQuery("float_not_null_none", "none", getFloat(6), 7, 8, 9);
152         lessEqualQuery("float_not_null_none", "none", getFloat(4), 4, 3, 2, 1, 0);
153         lessThanQuery("float_not_null_none", "none", getFloat(4), 3, 2, 1, 0);
154         betweenQuery("float_not_null_none", "none", getFloat(4), getFloat(6), 4, 5, 6);
155         greaterEqualAndLessEqualQuery("float_not_null_none", "none", getFloat(4), getFloat(6), 4, 5, 6);
156         greaterThanAndLessEqualQuery("float_not_null_none", "none", getFloat(4), getFloat(6), 5, 6);
157         greaterEqualAndLessThanQuery("float_not_null_none", "none", getFloat(4), getFloat(6), 4, 5);
158         greaterThanAndLessThanQuery("float_not_null_none", "none", getFloat(4), getFloat(6), 5);
159
160         equalQuery("float_null_none", "none", getFloat(8), 8);
161         greaterEqualQuery("float_null_none", "none", getFloat(7), 7, 8, 9);
162         greaterThanQuery("float_null_none", "none", getFloat(6), 7, 8, 9);
163         lessEqualQuery("float_null_none", "none", getFloat(4), 4, 3, 2, 1, 0);
164         lessThanQuery("float_null_none", "none", getFloat(4), 3, 2, 1, 0);
165         betweenQuery("float_null_none", "none", getFloat(4), getFloat(6), 4, 5, 6);
166         greaterEqualAndLessEqualQuery("float_null_none", "none", getFloat(4), getFloat(6), 4, 5, 6);
167         greaterThanAndLessEqualQuery("float_null_none", "none", getFloat(4), getFloat(6), 5, 6);
168         greaterEqualAndLessThanQuery("float_null_none", "none", getFloat(4), getFloat(6), 4, 5);
169         greaterThanAndLessThanQuery("float_null_none", "none", getFloat(4), getFloat(6), 5);
170
171     }
172
173     private void createAllFloatTypesInstances(int number) {
174         for (int i = 0; i < number; ++i) {
175             FloatTypes instance = session.newInstance(FloatTypes.class);
176             instance.setId(i);
177             instance.setFloat_not_null_hash(getFloat(i));
178             instance.setFloat_not_null_btree(getFloat(i));
179             instance.setFloat_not_null_both(getFloat(i));
180             instance.setFloat_not_null_none(getFloat(i));
181             instance.setFloat_null_hash(getFloat(i));
182             instance.setFloat_null_btree(getFloat(i));
183             instance.setFloat_null_both(getFloat(i));
184             instance.setFloat_null_none(getFloat(i));
185             instances.add(instance);
186         }
187     }
188
189     protected Float getFloat(int number) {
190         return Float.valueOf(0.00001F * number);
191     }
192
193     /** Print the results of a query for debugging.
194      *
195      * @param instance the instance to print
196      */
197     @Override
198     protected void printResultInstance(IdBase instance) {
199         if (instance instanceof FloatTypes) {
200             FloatTypes floatType = (FloatTypes)instance;
201 //            System.out.println(toString(floatType));
202         }
203     }
204
205     public static String toString(IdBase idBase) {
206         FloatTypes instance = (FloatTypes)idBase;
207         StringBuffer buffer = new StringBuffer("FloatTypes id: ");
208         buffer.append(instance.getId());
209         buffer.append("; float_not_null_both: ");
210         buffer.append(instance.getFloat_not_null_both());
211         buffer.append("; float_not_null_btree: ");
212         buffer.append(instance.getFloat_not_null_btree());
213         buffer.append("; float_not_null_hash: ");
214         buffer.append(instance.getFloat_not_null_hash());
215         buffer.append("; float_not_null_none: ");
216         buffer.append(instance.getFloat_not_null_none());
217         buffer.append("; float_null_both: ");
218         buffer.append(instance.getFloat_null_both().toString());
219         buffer.append("; float_null_btree: ");
220         buffer.append(instance.getFloat_null_btree().toString());
221         buffer.append("; float_null_hash: ");
222         buffer.append(instance.getFloat_null_hash().toString());
223         buffer.append("; float_null_none: ");
224         buffer.append(instance.getFloat_null_none().toString());
225         return buffer.toString();
226     }
227 }