2 Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
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.
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.
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
18 package testsuite.clusterj;
20 import testsuite.clusterj.model.StringTypes;
21 import testsuite.clusterj.model.IdBase;
23 public class QueryStringTypesTest extends AbstractQueryTest {
26 public Class getInstanceType() {
27 return StringTypes.class;
31 void createInstances(int number) {
32 createAllStringTypesInstances(number);
35 static String[] strings = new String[] {
50 drop table if exists stringtypes;
51 create table stringtypes (
52 id int not null primary key,
54 string_null_hash varchar(20),
55 string_null_btree varchar(300),
56 string_null_both varchar(20),
57 string_null_none varchar(300),
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),
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)
71 ) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
75 btreeIndexScanString();
76 hashIndexScanString();
77 bothIndexScanString();
78 noneIndexScanString();
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);
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);
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);
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);
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);
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);
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);
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);
181 private void createAllStringTypesInstances(int number) {
182 for (int i = 0; i < number; ++i) {
183 StringTypes instance = session.newInstance(StringTypes.class);
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);
197 protected String getString(int number) {
198 return strings[number];
201 /** Print the results of a query for debugging.
203 * @param instance the instance to print
206 protected void printResultInstance(IdBase instance) {
207 if (instance instanceof StringTypes) {
208 StringTypes stringType = (StringTypes)instance;
209 // System.out.println(toString(stringType));
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();