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, version 2.0, 6 as published by the Free Software Foundation. 7 8 This program is also distributed with certain software (including 9 but not limited to OpenSSL) that is licensed under separate terms, 10 as designated in a particular file or component or in included license 11 documentation. The authors of MySQL hereby grant you an additional 12 permission to link the program and your derivative works with the 13 separately licensed software that they have included with MySQL. 14 15 This program is distributed in the hope that it will be useful, 16 but WITHOUT ANY WARRANTY; without even the implied warranty of 17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 GNU General Public License, version 2.0, for more details. 19 20 You should have received a copy of the GNU General Public License 21 along with this program; if not, write to the Free Software 22 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 23 */ 24 25 package testsuite.clusterj; 26 27 import testsuite.clusterj.model.StringTypes; 28 import testsuite.clusterj.model.IdBase; 29 30 public class QueryStringTypesTest extends AbstractQueryTest { 31 32 @Override getInstanceType()33 public Class getInstanceType() { 34 return StringTypes.class; 35 } 36 37 @Override createInstances(int number)38 void createInstances(int number) { 39 createAllStringTypesInstances(number); 40 } 41 42 static String[] strings = new String[] { 43 "Alabama", 44 "Arkansas", 45 "Delaware", 46 "New Jersey", 47 "New York", 48 "Pennsylvania", 49 "Rhode Island", 50 "Texax", 51 "Virginia", 52 "Wyoming" 53 }; 54 55 /** Schema 56 * 57 drop table if exists stringtypes; 58 create table stringtypes ( 59 id int not null primary key, 60 61 string_null_hash varchar(20), 62 string_null_btree varchar(300), 63 string_null_both varchar(20), 64 string_null_none varchar(300), 65 66 string_not_null_hash varchar(300), 67 string_not_null_btree varchar(20), 68 string_not_null_both varchar(300), 69 string_not_null_none varchar(20), 70 unique key idx_string_null_hash (string_null_hash) using hash, 71 key idx_string_null_btree (string_null_btree), 72 unique key idx_string_null_both (string_null_both), 73 74 unique key idx_string_not_null_hash (string_not_null_hash) using hash, 75 key idx_string_not_null_btree (string_not_null_btree), 76 unique key idx_string_not_null_both (string_not_null_both) 77 78 ) ENGINE=ndbcluster DEFAULT CHARSET=latin1; 79 80 */ test()81 public void test() { 82 btreeIndexScanString(); 83 hashIndexScanString(); 84 bothIndexScanString(); 85 noneIndexScanString(); 86 failOnError(); 87 } 88 btreeIndexScanString()89 public void btreeIndexScanString() { 90 equalQuery("string_not_null_btree", "idx_string_not_null_btree", getString(8), 8); 91 greaterEqualQuery("string_not_null_btree", "idx_string_not_null_btree", getString(7), 7, 8, 9); 92 greaterThanQuery("string_not_null_btree", "idx_string_not_null_btree", getString(6), 7, 8, 9); 93 lessEqualQuery("string_not_null_btree", "idx_string_not_null_btree", getString(4), 4, 3, 2, 1, 0); 94 lessThanQuery("string_not_null_btree", "idx_string_not_null_btree", getString(4), 3, 2, 1, 0); 95 betweenQuery("string_not_null_btree", "idx_string_not_null_btree", getString(4), getString(6), 4, 5, 6); 96 greaterEqualAndLessEqualQuery("string_not_null_btree", "idx_string_not_null_btree", getString(4), getString(6), 4, 5, 6); 97 greaterThanAndLessEqualQuery("string_not_null_btree", "idx_string_not_null_btree", getString(4), getString(6), 5, 6); 98 greaterEqualAndLessThanQuery("string_not_null_btree", "idx_string_not_null_btree", getString(4), getString(6), 4, 5); 99 greaterThanAndLessThanQuery("string_not_null_btree", "idx_string_not_null_btree", getString(4), getString(6), 5); 100 101 equalQuery("string_null_btree", "idx_string_null_btree", getString(8), 8); 102 greaterEqualQuery("string_null_btree", "idx_string_null_btree", getString(7), 7, 8, 9); 103 greaterThanQuery("string_null_btree", "idx_string_null_btree", getString(6), 7, 8, 9); 104 lessEqualQuery("string_null_btree", "idx_string_null_btree", getString(4), 4, 3, 2, 1, 0); 105 lessThanQuery("string_null_btree", "idx_string_null_btree", getString(4), 3, 2, 1, 0); 106 betweenQuery("string_null_btree", "idx_string_null_btree", getString(4), getString(6), 4, 5, 6); 107 greaterEqualAndLessEqualQuery("string_null_btree", "idx_string_null_btree", getString(4), getString(6), 4, 5, 6); 108 greaterThanAndLessEqualQuery("string_null_btree", "idx_string_null_btree", getString(4), getString(6), 5, 6); 109 greaterEqualAndLessThanQuery("string_null_btree", "idx_string_null_btree", getString(4), getString(6), 4, 5); 110 greaterThanAndLessThanQuery("string_null_btree", "idx_string_null_btree", getString(4), getString(6), 5); 111 } 112 hashIndexScanString()113 public void hashIndexScanString() { 114 equalQuery("string_not_null_hash", "idx_string_not_null_hash", getString(8), 8); 115 greaterEqualQuery("string_not_null_hash", "none", getString(7), 7, 8, 9); 116 greaterThanQuery("string_not_null_hash", "none", getString(6), 7, 8, 9); 117 lessEqualQuery("string_not_null_hash", "none", getString(4), 4, 3, 2, 1, 0); 118 lessThanQuery("string_not_null_hash", "none", getString(4), 3, 2, 1, 0); 119 betweenQuery("string_not_null_hash", "none", getString(4), getString(6), 4, 5, 6); 120 greaterEqualAndLessEqualQuery("string_not_null_hash", "none", getString(4), getString(6), 4, 5, 6); 121 greaterThanAndLessEqualQuery("string_not_null_hash", "none", getString(4), getString(6), 5, 6); 122 greaterEqualAndLessThanQuery("string_not_null_hash", "none", getString(4), getString(6), 4, 5); 123 greaterThanAndLessThanQuery("string_not_null_hash", "none", getString(4), getString(6), 5); 124 125 equalQuery("string_null_hash", "idx_string_null_hash", getString(8), 8); 126 greaterEqualQuery("string_null_hash", "none", getString(7), 7, 8, 9); 127 greaterThanQuery("string_null_hash", "none", getString(6), 7, 8, 9); 128 lessEqualQuery("string_null_hash", "none", getString(4), 4, 3, 2, 1, 0); 129 lessThanQuery("string_null_hash", "none", getString(4), 3, 2, 1, 0); 130 betweenQuery("string_null_hash", "none", getString(4), getString(6), 4, 5, 6); 131 greaterEqualAndLessEqualQuery("string_null_hash", "none", getString(4), getString(6), 4, 5, 6); 132 greaterThanAndLessEqualQuery("string_null_hash", "none", getString(4), getString(6), 5, 6); 133 greaterEqualAndLessThanQuery("string_null_hash", "none", getString(4), getString(6), 4, 5); 134 greaterThanAndLessThanQuery("string_null_hash", "none", getString(4), getString(6), 5); 135 136 } 137 bothIndexScanString()138 public void bothIndexScanString() { 139 equalQuery("string_not_null_both", "idx_string_not_null_both", getString(8), 8); 140 greaterEqualQuery("string_not_null_both", "idx_string_not_null_both", getString(7), 7, 8, 9); 141 greaterThanQuery("string_not_null_both", "idx_string_not_null_both", getString(6), 7, 8, 9); 142 lessEqualQuery("string_not_null_both", "idx_string_not_null_both", getString(4), 4, 3, 2, 1, 0); 143 lessThanQuery("string_not_null_both", "idx_string_not_null_both", getString(4), 3, 2, 1, 0); 144 betweenQuery("string_not_null_both", "idx_string_not_null_both", getString(4), getString(6), 4, 5, 6); 145 greaterEqualAndLessEqualQuery("string_not_null_both", "idx_string_not_null_both", getString(4), getString(6), 4, 5, 6); 146 greaterThanAndLessEqualQuery("string_not_null_both", "idx_string_not_null_both", getString(4), getString(6), 5, 6); 147 greaterEqualAndLessThanQuery("string_not_null_both", "idx_string_not_null_both", getString(4), getString(6), 4, 5); 148 greaterThanAndLessThanQuery("string_not_null_both", "idx_string_not_null_both", getString(4), getString(6), 5); 149 150 equalQuery("string_null_both", "idx_string_null_both", getString(8), 8); 151 greaterEqualQuery("string_null_both", "idx_string_null_both", getString(7), 7, 8, 9); 152 greaterThanQuery("string_null_both", "idx_string_null_both", getString(6), 7, 8, 9); 153 lessEqualQuery("string_null_both", "idx_string_null_both", getString(4), 4, 3, 2, 1, 0); 154 lessThanQuery("string_null_both", "idx_string_null_both", getString(4), 3, 2, 1, 0); 155 betweenQuery("string_null_both", "idx_string_null_both", getString(4), getString(6), 4, 5, 6); 156 greaterEqualAndLessEqualQuery("string_null_both", "idx_string_null_both", getString(4), getString(6), 4, 5, 6); 157 greaterThanAndLessEqualQuery("string_null_both", "idx_string_null_both", getString(4), getString(6), 5, 6); 158 greaterEqualAndLessThanQuery("string_null_both", "idx_string_null_both", getString(4), getString(6), 4, 5); 159 greaterThanAndLessThanQuery("string_null_both", "idx_string_null_both", getString(4), getString(6), 5); 160 161 } 162 noneIndexScanString()163 public void noneIndexScanString() { 164 equalQuery("string_not_null_none", "none", getString(8), 8); 165 greaterEqualQuery("string_not_null_none", "none", getString(7), 7, 8, 9); 166 greaterThanQuery("string_not_null_none", "none", getString(6), 7, 8, 9); 167 lessEqualQuery("string_not_null_none", "none", getString(4), 4, 3, 2, 1, 0); 168 lessThanQuery("string_not_null_none", "none", getString(4), 3, 2, 1, 0); 169 betweenQuery("string_not_null_none", "none", getString(4), getString(6), 4, 5, 6); 170 greaterEqualAndLessEqualQuery("string_not_null_none", "none", getString(4), getString(6), 4, 5, 6); 171 greaterThanAndLessEqualQuery("string_not_null_none", "none", getString(4), getString(6), 5, 6); 172 greaterEqualAndLessThanQuery("string_not_null_none", "none", getString(4), getString(6), 4, 5); 173 greaterThanAndLessThanQuery("string_not_null_none", "none", getString(4), getString(6), 5); 174 175 equalQuery("string_null_none", "none", getString(8), 8); 176 greaterEqualQuery("string_null_none", "none", getString(7), 7, 8, 9); 177 greaterThanQuery("string_null_none", "none", getString(6), 7, 8, 9); 178 lessEqualQuery("string_null_none", "none", getString(4), 4, 3, 2, 1, 0); 179 lessThanQuery("string_null_none", "none", getString(4), 3, 2, 1, 0); 180 betweenQuery("string_null_none", "none", getString(4), getString(6), 4, 5, 6); 181 greaterEqualAndLessEqualQuery("string_null_none", "none", getString(4), getString(6), 4, 5, 6); 182 greaterThanAndLessEqualQuery("string_null_none", "none", getString(4), getString(6), 5, 6); 183 greaterEqualAndLessThanQuery("string_null_none", "none", getString(4), getString(6), 4, 5); 184 greaterThanAndLessThanQuery("string_null_none", "none", getString(4), getString(6), 5); 185 186 } 187 createAllStringTypesInstances(int number)188 private void createAllStringTypesInstances(int number) { 189 for (int i = 0; i < number; ++i) { 190 StringTypes instance = session.newInstance(StringTypes.class); 191 instance.setId(i); 192 instance.setString_not_null_hash(getString(i)); 193 instance.setString_not_null_btree(getString(i)); 194 instance.setString_not_null_both(getString(i)); 195 instance.setString_not_null_none(getString(i)); 196 instance.setString_null_hash(getString(i)); 197 instance.setString_null_btree(getString(i)); 198 instance.setString_null_both(getString(i)); 199 instance.setString_null_none(getString(i)); 200 instances.add(instance); 201 } 202 } 203 getString(int number)204 protected String getString(int number) { 205 return strings[number]; 206 } 207 208 /** Print the results of a query for debugging. 209 * 210 * @param instance the instance to print 211 */ 212 @Override printResultInstance(IdBase instance)213 protected void printResultInstance(IdBase instance) { 214 if (instance instanceof StringTypes) { 215 StringTypes stringType = (StringTypes)instance; 216 // System.out.println(toString(stringType)); 217 } 218 } 219 toString(IdBase idBase)220 public static String toString(IdBase idBase) { 221 StringTypes instance = (StringTypes)idBase; 222 StringBuffer buffer = new StringBuffer("StringTypes id: "); 223 buffer.append(instance.getId()); 224 buffer.append("; string_not_null_both: "); 225 buffer.append(instance.getString_not_null_both()); 226 buffer.append("; string_not_null_btree: "); 227 buffer.append(instance.getString_not_null_btree()); 228 buffer.append("; string_not_null_hash: "); 229 buffer.append(instance.getString_not_null_hash()); 230 buffer.append("; string_not_null_none: "); 231 buffer.append(instance.getString_not_null_none()); 232 buffer.append("; string_null_both: "); 233 buffer.append(instance.getString_null_both().toString()); 234 buffer.append("; string_null_btree: "); 235 buffer.append(instance.getString_null_btree().toString()); 236 buffer.append("; string_null_hash: "); 237 buffer.append(instance.getString_null_hash().toString()); 238 buffer.append("; string_null_none: "); 239 buffer.append(instance.getString_null_none().toString()); 240 return buffer.toString(); 241 } 242 } 243