]> review.fuel-infra Code Review - packages/trusty/mysql-wsrep-5.6.git/blob
00ae85c8b4b5dfa208ea40bf9d327e47ac748c3b
[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.StringTypes;
21 import testsuite.clusterj.model.IdBase;
22
23 public class QueryStringTypesTest extends AbstractQueryTest {
24
25     @Override
26     public Class getInstanceType() {
27         return StringTypes.class;
28     }
29
30     @Override
31     void createInstances(int number) {
32         createAllStringTypesInstances(number);
33     }
34
35     static String[] strings = new String[] {
36         "Alabama",
37         "Arkansas",
38         "Delaware",
39         "New Jersey",
40         "New York",
41         "Pennsylvania",
42         "Rhode Island",
43         "Texax",
44         "Virginia",
45         "Wyoming"
46     };
47
48     /** Schema
49     *
50    drop table if exists stringtypes;
51    create table stringtypes (
52     id int not null primary key,
53
54     string_null_hash varchar(20),
55     string_null_btree varchar(300),
56     string_null_both varchar(20),
57     string_null_none varchar(300),
58
59     string_not_null_hash varchar(300),
60     string_not_null_btree varchar(20),
61     string_not_null_both varchar(300),
62     string_not_null_none varchar(20),
63     unique key idx_string_null_hash (string_null_hash) using hash,
64     key idx_string_null_btree (string_null_btree),
65     unique key idx_string_null_both (string_null_both),
66
67     unique key idx_string_not_null_hash (string_not_null_hash) using hash,
68     key idx_string_not_null_btree (string_not_null_btree),
69     unique key idx_string_not_null_both (string_not_null_both)
70
71    ) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
72
73     */
74     public void test() {
75         btreeIndexScanString();
76         hashIndexScanString();
77         bothIndexScanString();
78         noneIndexScanString();
79         failOnError();
80     }
81
82     public void btreeIndexScanString() {
83         equalQuery("string_not_null_btree", "idx_string_not_null_btree", getString(8), 8);
84         greaterEqualQuery("string_not_null_btree", "idx_string_not_null_btree", getString(7), 7, 8, 9);
85         greaterThanQuery("string_not_null_btree", "idx_string_not_null_btree", getString(6), 7, 8, 9);
86         lessEqualQuery("string_not_null_btree", "idx_string_not_null_btree", getString(4), 4, 3, 2, 1, 0);
87         lessThanQuery("string_not_null_btree", "idx_string_not_null_btree", getString(4), 3, 2, 1, 0);
88         betweenQuery("string_not_null_btree", "idx_string_not_null_btree", getString(4), getString(6), 4, 5, 6);
89         greaterEqualAndLessEqualQuery("string_not_null_btree", "idx_string_not_null_btree", getString(4), getString(6), 4, 5, 6);
90         greaterThanAndLessEqualQuery("string_not_null_btree", "idx_string_not_null_btree", getString(4), getString(6), 5, 6);
91         greaterEqualAndLessThanQuery("string_not_null_btree", "idx_string_not_null_btree", getString(4), getString(6), 4, 5);
92         greaterThanAndLessThanQuery("string_not_null_btree", "idx_string_not_null_btree", getString(4), getString(6), 5);
93
94         equalQuery("string_null_btree", "idx_string_null_btree", getString(8), 8);
95         greaterEqualQuery("string_null_btree", "idx_string_null_btree", getString(7), 7, 8, 9);
96         greaterThanQuery("string_null_btree", "idx_string_null_btree", getString(6), 7, 8, 9);
97         lessEqualQuery("string_null_btree", "idx_string_null_btree", getString(4), 4, 3, 2, 1, 0);
98         lessThanQuery("string_null_btree", "idx_string_null_btree", getString(4), 3, 2, 1, 0);
99         betweenQuery("string_null_btree", "idx_string_null_btree", getString(4), getString(6), 4, 5, 6);
100         greaterEqualAndLessEqualQuery("string_null_btree", "idx_string_null_btree", getString(4), getString(6), 4, 5, 6);
101         greaterThanAndLessEqualQuery("string_null_btree", "idx_string_null_btree", getString(4), getString(6), 5, 6);
102         greaterEqualAndLessThanQuery("string_null_btree", "idx_string_null_btree", getString(4), getString(6), 4, 5);
103         greaterThanAndLessThanQuery("string_null_btree", "idx_string_null_btree", getString(4), getString(6), 5);
104 }
105
106     public void hashIndexScanString() {
107         equalQuery("string_not_null_hash", "idx_string_not_null_hash", getString(8), 8);
108         greaterEqualQuery("string_not_null_hash", "none", getString(7), 7, 8, 9);
109         greaterThanQuery("string_not_null_hash", "none", getString(6), 7, 8, 9);
110         lessEqualQuery("string_not_null_hash", "none", getString(4), 4, 3, 2, 1, 0);
111         lessThanQuery("string_not_null_hash", "none", getString(4), 3, 2, 1, 0);
112         betweenQuery("string_not_null_hash", "none", getString(4), getString(6), 4, 5, 6);
113         greaterEqualAndLessEqualQuery("string_not_null_hash", "none", getString(4), getString(6), 4, 5, 6);
114         greaterThanAndLessEqualQuery("string_not_null_hash", "none", getString(4), getString(6), 5, 6);
115         greaterEqualAndLessThanQuery("string_not_null_hash", "none", getString(4), getString(6), 4, 5);
116         greaterThanAndLessThanQuery("string_not_null_hash", "none", getString(4), getString(6), 5);
117
118         equalQuery("string_null_hash", "idx_string_null_hash", getString(8), 8);
119         greaterEqualQuery("string_null_hash", "none", getString(7), 7, 8, 9);
120         greaterThanQuery("string_null_hash", "none", getString(6), 7, 8, 9);
121         lessEqualQuery("string_null_hash", "none", getString(4), 4, 3, 2, 1, 0);
122         lessThanQuery("string_null_hash", "none", getString(4), 3, 2, 1, 0);
123         betweenQuery("string_null_hash", "none", getString(4), getString(6), 4, 5, 6);
124         greaterEqualAndLessEqualQuery("string_null_hash", "none", getString(4), getString(6), 4, 5, 6);
125         greaterThanAndLessEqualQuery("string_null_hash", "none", getString(4), getString(6), 5, 6);
126         greaterEqualAndLessThanQuery("string_null_hash", "none", getString(4), getString(6), 4, 5);
127         greaterThanAndLessThanQuery("string_null_hash", "none", getString(4), getString(6), 5);
128
129     }
130
131     public void bothIndexScanString() {
132         equalQuery("string_not_null_both", "idx_string_not_null_both", getString(8), 8);
133         greaterEqualQuery("string_not_null_both", "idx_string_not_null_both", getString(7), 7, 8, 9);
134         greaterThanQuery("string_not_null_both", "idx_string_not_null_both", getString(6), 7, 8, 9);
135         lessEqualQuery("string_not_null_both", "idx_string_not_null_both", getString(4), 4, 3, 2, 1, 0);
136         lessThanQuery("string_not_null_both", "idx_string_not_null_both", getString(4), 3, 2, 1, 0);
137         betweenQuery("string_not_null_both", "idx_string_not_null_both", getString(4), getString(6), 4, 5, 6);
138         greaterEqualAndLessEqualQuery("string_not_null_both", "idx_string_not_null_both", getString(4), getString(6), 4, 5, 6);
139         greaterThanAndLessEqualQuery("string_not_null_both", "idx_string_not_null_both", getString(4), getString(6), 5, 6);
140         greaterEqualAndLessThanQuery("string_not_null_both", "idx_string_not_null_both", getString(4), getString(6), 4, 5);
141         greaterThanAndLessThanQuery("string_not_null_both", "idx_string_not_null_both", getString(4), getString(6), 5);
142
143         equalQuery("string_null_both", "idx_string_null_both", getString(8), 8);
144         greaterEqualQuery("string_null_both", "idx_string_null_both", getString(7), 7, 8, 9);
145         greaterThanQuery("string_null_both", "idx_string_null_both", getString(6), 7, 8, 9);
146         lessEqualQuery("string_null_both", "idx_string_null_both", getString(4), 4, 3, 2, 1, 0);
147         lessThanQuery("string_null_both", "idx_string_null_both", getString(4), 3, 2, 1, 0);
148         betweenQuery("string_null_both", "idx_string_null_both", getString(4), getString(6), 4, 5, 6);
149         greaterEqualAndLessEqualQuery("string_null_both", "idx_string_null_both", getString(4), getString(6), 4, 5, 6);
150         greaterThanAndLessEqualQuery("string_null_both", "idx_string_null_both", getString(4), getString(6), 5, 6);
151         greaterEqualAndLessThanQuery("string_null_both", "idx_string_null_both", getString(4), getString(6), 4, 5);
152         greaterThanAndLessThanQuery("string_null_both", "idx_string_null_both", getString(4), getString(6), 5);
153
154     }
155
156     public void noneIndexScanString() {
157         equalQuery("string_not_null_none", "none", getString(8), 8);
158         greaterEqualQuery("string_not_null_none", "none", getString(7), 7, 8, 9);
159         greaterThanQuery("string_not_null_none", "none", getString(6), 7, 8, 9);
160         lessEqualQuery("string_not_null_none", "none", getString(4), 4, 3, 2, 1, 0);
161         lessThanQuery("string_not_null_none", "none", getString(4), 3, 2, 1, 0);
162         betweenQuery("string_not_null_none", "none", getString(4), getString(6), 4, 5, 6);
163         greaterEqualAndLessEqualQuery("string_not_null_none", "none", getString(4), getString(6), 4, 5, 6);
164         greaterThanAndLessEqualQuery("string_not_null_none", "none", getString(4), getString(6), 5, 6);
165         greaterEqualAndLessThanQuery("string_not_null_none", "none", getString(4), getString(6), 4, 5);
166         greaterThanAndLessThanQuery("string_not_null_none", "none", getString(4), getString(6), 5);
167
168         equalQuery("string_null_none", "none", getString(8), 8);
169         greaterEqualQuery("string_null_none", "none", getString(7), 7, 8, 9);
170         greaterThanQuery("string_null_none", "none", getString(6), 7, 8, 9);
171         lessEqualQuery("string_null_none", "none", getString(4), 4, 3, 2, 1, 0);
172         lessThanQuery("string_null_none", "none", getString(4), 3, 2, 1, 0);
173         betweenQuery("string_null_none", "none", getString(4), getString(6), 4, 5, 6);
174         greaterEqualAndLessEqualQuery("string_null_none", "none", getString(4), getString(6), 4, 5, 6);
175         greaterThanAndLessEqualQuery("string_null_none", "none", getString(4), getString(6), 5, 6);
176         greaterEqualAndLessThanQuery("string_null_none", "none", getString(4), getString(6), 4, 5);
177         greaterThanAndLessThanQuery("string_null_none", "none", getString(4), getString(6), 5);
178
179     }
180
181     private void createAllStringTypesInstances(int number) {
182         for (int i = 0; i < number; ++i) {
183             StringTypes instance = session.newInstance(StringTypes.class);
184             instance.setId(i);
185             instance.setString_not_null_hash(getString(i));
186             instance.setString_not_null_btree(getString(i));
187             instance.setString_not_null_both(getString(i));
188             instance.setString_not_null_none(getString(i));
189             instance.setString_null_hash(getString(i));
190             instance.setString_null_btree(getString(i));
191             instance.setString_null_both(getString(i));
192             instance.setString_null_none(getString(i));
193             instances.add(instance);
194         }
195     }
196
197     protected String getString(int number) {
198         return strings[number];
199     }
200
201     /** Print the results of a query for debugging.
202      *
203      * @param instance the instance to print
204      */
205     @Override
206     protected void printResultInstance(IdBase instance) {
207         if (instance instanceof StringTypes) {
208             StringTypes stringType = (StringTypes)instance;
209 //            System.out.println(toString(stringType));
210         }
211     }
212
213     public static String toString(IdBase idBase) {
214         StringTypes instance = (StringTypes)idBase;
215         StringBuffer buffer = new StringBuffer("StringTypes id: ");
216         buffer.append(instance.getId());
217         buffer.append("; string_not_null_both: ");
218         buffer.append(instance.getString_not_null_both());
219         buffer.append("; string_not_null_btree: ");
220         buffer.append(instance.getString_not_null_btree());
221         buffer.append("; string_not_null_hash: ");
222         buffer.append(instance.getString_not_null_hash());
223         buffer.append("; string_not_null_none: ");
224         buffer.append(instance.getString_not_null_none());
225         buffer.append("; string_null_both: ");
226         buffer.append(instance.getString_null_both().toString());
227         buffer.append("; string_null_btree: ");
228         buffer.append(instance.getString_null_btree().toString());
229         buffer.append("; string_null_hash: ");
230         buffer.append(instance.getString_null_hash().toString());
231         buffer.append("; string_null_none: ");
232         buffer.append(instance.getString_null_none().toString());
233         return buffer.toString();
234     }
235 }