~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/optimizer.test

  • Committer: Patrick Crews
  • Date: 2010-08-17 17:42:29 UTC
  • mfrom: (1711.1.24 build)
  • Revision ID: gleebix@gmail.com-20100817174229-e28p5025ndgkkxif
Rollup patch - optimizer fixes, mutex removal, client cleanup, translations update

Show diffs side-by-side

added added

removed removed

Lines of Context:
133
133
  KEY `col_int_key` (`col_int_key`)
134
134
) ENGINE=InnoDB;
135
135
 
136
 
ALTER TABLE `p` DISABLE KEYS;
137
136
INSERT INTO `p` VALUES (1,NULL),(2,261947392),(3,-1761017856),(4,NULL),(5,NULL),(6,NULL),(7,1941635072),(8,-610992128),(9,NULL),(10,-1486618624),(11,1047199744),(12,5),(13,2),(14,NULL),(15,NULL),(16,-828899328),(17,5),(18,NULL),(19,-1573322752),(20,NULL),(21,1),(22,1080360960),(23,NULL),(24,9),(25,243335168),(26,NULL),(27,2),(28,351469568),(29,NULL),(30,0),(31,1626865664),(32,NULL),(33,NULL),(34,6),(35,NULL),(36,6),(37,NULL),(38,838598656),(39,-1732706304),(40,-120061952),(41,NULL),(42,3),(43,2),(44,8),(45,-1234436096),(46,4),(47,-1542324224),(48,NULL),(49,1607073792),(50,0),(51,9),(52,NULL),(53,NULL),(54,-921174016),(55,-184877056),(56,NULL),(57,-1291059200),(58,0),(59,NULL),(60,565379072),(61,NULL),(62,506855424),(63,NULL),(64,NULL),(65,NULL),(66,5),(67,5),(68,5),(69,2),(70,6),(71,NULL),(72,9),(73,7),(74,-2108555264),(75,6),(76,1057095680),(77,8),(78,-409468928),(79,-438960128),(80,-939393024),(81,-927203328),(82,NULL),(83,-1834680320),(84,NULL),(85,1984561152),(86,8),(87,NULL),(88,8),(89,-326500352),(90,NULL),(91,4),(92,NULL),(93,NULL),(94,-1369833472),(95,NULL),(96,0),(97,31260672),(98,NULL),(99,NULL),(100,0);
138
 
ALTER TABLE `p` ENABLE KEYS;
139
137
 
140
138
DROP TABLE IF EXISTS `n`;
141
139
CREATE TABLE `n` (
145
143
  KEY `col_varchar_10_key` (`col_varchar_10_key`)
146
144
) ENGINE=InnoDB;
147
145
 
148
 
ALTER TABLE `n` DISABLE KEYS;
149
146
INSERT INTO `n` VALUES (1,'rdtxodtcmi'),(2,'corrdtxodt'),(3,'v'),(4,'dcorrdtxod'),(5,'s'),(6,'my'),(7,'e'),(8,'qxszmrdcor'),(9,'bqxszmrdco'),(10,'wbqxszmrdc'),(11,'v'),(12,'kywbqxszmr'),(13,'v'),(14,'lngrakywbq'),(15,'umtlngraky'),(16,'could'),(17,'peiywumtln'),(18,'will'),(19,'tell'),(20,'w'),(21,'jenpeiywum'),(22,'cejenpeiyw'),(23,'x'),(24,'vxcejenpei');
150
 
ALTER TABLE `n` ENABLE KEYS;
151
147
 
152
148
CREATE TABLE `d` (
153
149
  `pk` int NOT NULL AUTO_INCREMENT,
155
151
  PRIMARY KEY (`pk`)
156
152
) ENGINE=InnoDB;
157
153
 
158
 
ALTER TABLE `d` DISABLE KEYS;
159
154
INSERT INTO `d` VALUES (1,'f'),(2,'zdvoleqxer'),(3,'i'),(4,'u'),(5,'q');
160
 
ALTER TABLE `d` ENABLE KEYS;
161
155
 
162
156
CREATE TABLE `h` (
163
157
  `col_varchar_10` varchar(10) DEFAULT NULL,
169
163
  KEY `col_int_key` (`col_int_key`)
170
164
) ENGINE=InnoDB;
171
165
 
172
 
ALTER TABLE `h` DISABLE KEYS;
173
166
INSERT INTO `h` VALUES ('n',1,'rshrrbmsyd',4),('h',2,'okay',NULL),('ok',3,'i',-802095104),('just',4,'z',6),('hfnrshrrbm',5,'his',8),('f',6,'xhfnrshrrb',1),('h',7,'wxhfnrshrr',7),('wtwxhfnrsh',8,'v',7),('of',9,'cwtwxhfnrs',-1258487808);
174
 
ALTER TABLE `h` ENABLE KEYS;
175
167
 
176
168
CREATE TABLE `a` (
177
169
  `pk` int NOT NULL AUTO_INCREMENT,
188
180
  KEY `col_int_key` (`col_int_key`)
189
181
) ENGINE=InnoDB;
190
182
 
191
 
ALTER TABLE `k` DISABLE KEYS;
192
183
INSERT INTO `k` VALUES (1,'bwylrhande','hbwylrhand',-522452992),(2,'how','about',2098200576),(3,'ephbwylrha','pephbwylrh',904331264),(4,'okay','ipephbwylr',-1176633344),(5,'but','one',-1177288704),(6,'tnwkipephb','j',5),(7,'hqtnwkipep','a',9),(8,'with','wdhqtnwkip',NULL),(9,'eyxwdhqtnw','jeyxwdhqtn',2),(10,'right','something',3),(11,'z','ujeyxwdhqt',5),(12,'yyujeyxwdh','we',NULL),(13,'can','syyujeyxwd',0),(14,'s','oh',21037056),(15,'ngvsyyujey','something',1224867840),(16,'gngvsyyuje','qgngvsyyuj',1),(17,'this','really',4),(18,'p','bbuqgngvsy',1865023488),(19,'okay','from',1),(20,'dmbbuqgngv','but',9),(21,'one','rdmbbuqgng',0);
193
 
ALTER TABLE `k` ENABLE KEYS;
194
184
 
195
185
SELECT
196
186
table2 . `pk` AS field4
216
206
# Cleanup
217
207
DROP TABLE a, d, h, k, n , p ;
218
208
--echo End Bug#592444 test
 
209
 
 
210
--echo Bug#586051 start
 
211
--echo -Server allowing JOIN on NULL values in certain cases if query includes ORDER BY clause
 
212
 
 
213
--disable_warnings
 
214
DROP TABLE IF EXISTS `i`;
 
215
CREATE TABLE `i` (
 
216
  `col_int_key` int DEFAULT NULL,
 
217
  `pk` int NOT NULL AUTO_INCREMENT,
 
218
  PRIMARY KEY (`pk`),
 
219
  KEY `col_int_key` (`col_int_key`)
 
220
) ENGINE=InnoDB;
 
221
 
 
222
INSERT INTO `i` VALUES (-480247808,1),(-1066663936,2),(NULL,3),(NULL,4),(-1583808512,5),(NULL,6),(NULL,7),(NULL,8),(0,9),(-219152384,10);
 
223
 
 
224
DROP TABLE IF EXISTS `b`;
 
225
CREATE TABLE `b` (
 
226
  `col_int_key` int DEFAULT NULL,
 
227
  `col_int` int DEFAULT NULL,
 
228
  `pk` int NOT NULL AUTO_INCREMENT,
 
229
  PRIMARY KEY (`pk`),
 
230
  KEY `col_int_key` (`col_int_key`)
 
231
) ENGINE=InnoDB;
 
232
 
 
233
INSERT INTO `b` VALUES (NULL,7,1);
 
234
--enable_warnings
 
235
 
 
236
#/* Begin test case for query 0 */
 
237
 
 
238
SELECT table2 .`col_int` field3
 
239
FROM i table1 JOIN b table2 ON table1 .`col_int_key` = table2 .`col_int_key`
 
240
WHERE table1 .`pk` IN ( 4 ) 
 
241
ORDER BY field3 ;
 
242
#/* End of test case for query 0 */
 
243
 
 
244
#/* Begin test case for query 1 */
 
245
 
 
246
SELECT table2 .`col_int` field3
 
247
FROM i table1 JOIN b table2 ON table1 .`col_int_key` = table2 .`col_int_key`
 
248
WHERE table1 .`pk` IN ( 4 ) /* TRANSFORM_OUTCOME_UNORDERED_MATCH */ ;
 
249
 
 
250
#/* End of test case for query 1 */
 
251
 
 
252
DROP TABLE i;
 
253
DROP TABLE b;
 
254
 
 
255
--echo End Bug#586051 test
 
256
 
 
257
 
 
258
--echo Bug#585628
 
259
--echo - Adding STRAIGHT_JOIN to certain queries results in loss of returned rows
 
260
--disable_warnings
 
261
DROP TABLE IF EXISTS `g`;
 
262
DROP TABLE IF EXISTS `e`;
 
263
DROP TABLE IF EXISTS `m`;
 
264
DROP TABLE IF EXISTS `a`;
 
265
--enable_warnings
 
266
 
 
267
CREATE TABLE `g` (
 
268
  `pk` int NOT NULL AUTO_INCREMENT,
 
269
  `col_int` int DEFAULT NULL,
 
270
  PRIMARY KEY (`pk`)
 
271
) ENGINE=InnoDB;
 
272
 
 
273
INSERT INTO `g` VALUES (1,NULL),(2,1607860224),(3,NULL),(4,822673408),(5,1907556352),(6,NULL),(7,NULL),(8,NULL);
 
274
 
 
275
CREATE TABLE `e` (
 
276
  `col_int_key` int DEFAULT NULL,
 
277
  `pk` int NOT NULL AUTO_INCREMENT,
 
278
  PRIMARY KEY (`pk`),
 
279
  KEY `col_int_key` (`col_int_key`)
 
280
) ENGINE=InnoDB;
 
281
 
 
282
INSERT INTO `e` VALUES (NULL,1),(1862205440,2),(1,3),(-517472256,4),(1341587456,5),(5,6);
 
283
 
 
284
CREATE TABLE `m` (
 
285
  `col_int` int DEFAULT NULL,
 
286
  `pk` int NOT NULL AUTO_INCREMENT,
 
287
  PRIMARY KEY (`pk`)
 
288
) ENGINE=InnoDB;
 
289
 
 
290
INSERT INTO `m` VALUES (1,1),(NULL,2),(NULL,3),(-207224832,4),(714801152,5),(-1265106944,6),(2023948288,7),(865599488,8),(1,9),(-1895301120,10),(3,11),(9,12),(5,13),(NULL,14),(NULL,15),(1,16),(-224657408,17),(2,18),(-1219493888,19),(7,20),(1,21),(NULL,22),(NULL,23);
 
291
 
 
292
CREATE TABLE `a` (
 
293
  `col_int_key` int DEFAULT NULL,
 
294
  `pk` int NOT NULL AUTO_INCREMENT,
 
295
  PRIMARY KEY (`pk`),
 
296
  KEY `col_int_key` (`col_int_key`)
 
297
) ENGINE=InnoDB;
 
298
 
 
299
 
 
300
SELECT COUNT(table1 .`col_int`)
 
301
FROM g table1 RIGHT JOIN e table2 LEFT JOIN m table3 LEFT JOIN a table5 ON table5 .`col_int_key` ON table2 .`col_int_key` = table3 .`col_int` ON table2 .`pk` ;
 
302
 
 
303
SELECT STRAIGHT_JOIN COUNT(table1 .`col_int`)
 
304
FROM g table1 RIGHT JOIN e table2 LEFT JOIN m table3 LEFT JOIN a table5 ON table5 .`col_int_key` ON table2 .`col_int_key` = table3 .`col_int` ON table2 .`pk` /* TRANSFORM_OUTCOME_UNORDERED_MATCH */;
 
305
 
 
306
DROP TABLE `a` ;
 
307
DROP TABLE `e` ;
 
308
DROP TABLE `g` ;
 
309
 
 
310
 
 
311
--echo End Bug#585628 test
 
312
 
 
313
 
 
314
--echo Bug#585644
 
315
--echo - Adding STRAIGHT_JOIN to certain queries results in a large number of duplicate rows
 
316
--disable_warnings
 
317
DROP TABLE IF EXISTS `m`;
 
318
DROP TABLE IF EXISTS `o`;
 
319
--enable_warnings
 
320
 
 
321
CREATE TABLE `m` (
 
322
  `col_int` int DEFAULT NULL,
 
323
  `pk` int NOT NULL AUTO_INCREMENT,
 
324
  PRIMARY KEY (`pk`)
 
325
) ENGINE=InnoDB;
 
326
 
 
327
INSERT INTO `m` VALUES (1,1),(NULL,2),(NULL,3),(-207224832,4),(714801152,5),(-1265106944,6),(2023948288,7),(865599488,8),(1,9),(-1895301120,10),(3,11),(9,12),(5,13),(NULL,14),(NULL,15),(1,16),(-224657408,17),(2,18),(-1219493888,19),(7,20),(1,21),(NULL,22),(NULL,23);
 
328
 
 
329
CREATE TABLE `o` (
 
330
  `col_int_key` int DEFAULT NULL,
 
331
  `pk` int NOT NULL AUTO_INCREMENT,
 
332
  PRIMARY KEY (`pk`),
 
333
  KEY `col_int_key` (`col_int_key`)
 
334
) ENGINE=InnoDB;
 
335
 
 
336
INSERT INTO `o` VALUES (4,1),(-867368960,2),(655032320,3),(1,4),(NULL,5),(-118751232,6),(7,7),(1,8),(3,9),(-518324224,10),(7,11),(1129709568,12),(-2081357824,13),(6,14),(NULL,15),(NULL,16),(NULL,17);
 
337
 
 
338
#/* Begin test case for query 0 */
 
339
 
 
340
SELECT COUNT(table1 .`pk`)
 
341
FROM m table1 RIGHT JOIN o JOIN o table3 ON table3 .`col_int_key` ON table1 .`col_int` = table3 .`col_int_key` ;
 
342
 
 
343
SELECT STRAIGHT_JOIN COUNT(table1 .`pk`)
 
344
FROM m table1 RIGHT JOIN o JOIN o table3 ON table3 .`col_int_key` ON table1 .`col_int` = table3 .`col_int_key` /* TRANSFORM_OUTCOME_UNORDERED_MATCH */;
 
345
 
 
346
DROP TABLE m;
 
347
DROP TABLE o;
 
348
--echo End Bug#585644 test
 
349
 
 
350
--echo Bug#608416
 
351
--echo Crash / assertion failed -
 
352
--echo "void drizzled::Select_Lex::print(drizzled::Session*, drizzled::String*, drizzled::enum_query_type)") at assert.c:81
 
353
--echo #3 0x00000000006282fb in drizzled::Select_Lex::print
 
354
--echo (this=0x3911418, session=0x0, str=0x7f26b77fd7c0, query_type=drizzled::QT_ORDINARY) at drizzled/sql_select.cc:6592
 
355
 
 
356
--disable_warnings
 
357
DROP TABLE IF EXISTS `aa`,`bb`,`dd`;
 
358
--enable_warnings
 
359
 
 
360
DROP TABLE IF EXISTS `aa`;
 
361
CREATE TABLE `aa` (
 
362
  `pk` int NOT NULL AUTO_INCREMENT,
 
363
  `col_enum_not_null_key` enum('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z') NOT NULL,
 
364
  `col_int_not_null_key` int NOT NULL,
 
365
  `col_char_10_not_null_key` varchar(10) NOT NULL,
 
366
  `col_int_key` int DEFAULT NULL,
 
367
  `col_text_not_null` text NOT NULL,
 
368
  `col_char_1024_key` varchar(1024) DEFAULT NULL,
 
369
  `col_bigint_key` bigint DEFAULT NULL,
 
370
  `col_int_not_null` int NOT NULL,
 
371
  PRIMARY KEY (`pk`),
 
372
  KEY `col_enum_not_null_key` (`col_enum_not_null_key`),
 
373
  KEY `col_int_not_null_key` (`col_int_not_null_key`),
 
374
  KEY `col_char_10_not_null_key` (`col_char_10_not_null_key`),
 
375
  KEY `col_int_key` (`col_int_key`),
 
376
  KEY `col_char_1024_key` (`col_char_1024_key`(255)),
 
377
  KEY `col_bigint_key` (`col_bigint_key`)
 
378
) ENGINE=InnoDB;
 
379
 
 
380
INSERT INTO `aa` VALUES (1,'s',-523436032,'at',2071265280,'','LPUJD',NULL,-1974206464),(2,'p',1,'VDMDI',1,'','don\'t',NULL,3),(3,'n',621543424,'WPTIG',NULL,'','think',-2842897264777625600,-274595840),(4,'o',880148480,'your',1734213632,'','on',NULL,295501824),(5,'b',1963982848,'q',1505558528,'','YTUNQ',3557843705622691840,9),(6,'c',8,'OOQXU',8,'','o',-4628011567076605952,2),(7,'p',1445462016,'RDODX',NULL,'','so',-5755881798756204544,-1601306624),(8,'i',0,'e',-1685520384,'','get',NULL,-1770323968),(9,'f',-747241472,'FEKXH',NULL,'','l',NULL,256311296),(10,'p',6,'GTHOM',-1431502848,'','h',-5719290051783819264,4);
 
381
 
 
382
CREATE TABLE `bb` (
 
383
  `col_enum_not_null_key` enum('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z') NOT NULL,
 
384
  `col_text_not_null` text NOT NULL,
 
385
  `col_char_10_not_null_key` varchar(10) NOT NULL,
 
386
  `col_bigint_key` bigint DEFAULT NULL,
 
387
  `col_char_1024_key` varchar(1024) DEFAULT NULL,
 
388
  `pk` int NOT NULL AUTO_INCREMENT,
 
389
  `col_int_not_null_key` int NOT NULL,
 
390
  `col_int_key` int DEFAULT NULL,
 
391
  `col_int_not_null` int NOT NULL,
 
392
  PRIMARY KEY (`pk`),
 
393
  KEY `col_enum_not_null_key` (`col_enum_not_null_key`),
 
394
  KEY `col_char_10_not_null_key` (`col_char_10_not_null_key`),
 
395
  KEY `col_bigint_key` (`col_bigint_key`),
 
396
  KEY `col_char_1024_key` (`col_char_1024_key`(255)),
 
397
  KEY `col_int_not_null_key` (`col_int_not_null_key`),
 
398
  KEY `col_int_key` (`col_int_key`)
 
399
) ENGINE=InnoDB;
 
400
 
 
401
INSERT INTO `bb` VALUES ('r','','DCJRX',NULL,'ANVSO',1,1,NULL,763953152),('a','','x',NULL,'JBJPT',2,1,4,-132513792),('s','','ZMHDL',-647673921411219456,'KAHJT',3,-1536425984,-628359168,3),('i','','SJGHS',-5702401553181179904,'q',4,-1443495936,-2114322432,-1349844992),('w','','his',NULL,'l',5,2,105971712,-2019688448),('v','','m',4,'ULWFL',6,0,2,-38207488),('d','','i',NULL,'YOIXU',7,8,NULL,3),('f','','d',8,'that\'s',8,476315648,NULL,8),('y','','from',NULL,'ZPPIG',9,5,-607322112,-1129054208),('o','','h',NULL,'like',10,5,0,-415629312);
 
402
 
 
403
CREATE TABLE `dd` (
 
404
  `col_int_not_null` int NOT NULL,
 
405
  `col_int_key` int DEFAULT NULL,
 
406
  `col_enum_not_null_key` enum('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z') NOT NULL,
 
407
  `col_bigint_key` bigint DEFAULT NULL,
 
408
  `col_char_10_not_null_key` varchar(10) NOT NULL,
 
409
  `col_int_not_null_key` int NOT NULL,
 
410
  `col_text_not_null` text NOT NULL,
 
411
  `pk` int NOT NULL AUTO_INCREMENT,
 
412
  `col_char_1024_key` varchar(1024) DEFAULT NULL,
 
413
  PRIMARY KEY (`pk`),
 
414
  KEY `col_int_key` (`col_int_key`),
 
415
  KEY `col_enum_not_null_key` (`col_enum_not_null_key`),
 
416
  KEY `col_bigint_key` (`col_bigint_key`),
 
417
  KEY `col_char_10_not_null_key` (`col_char_10_not_null_key`),
 
418
  KEY `col_int_not_null_key` (`col_int_not_null_key`),
 
419
  KEY `col_char_1024_key` (`col_char_1024_key`(255))
 
420
) ENGINE=InnoDB;
 
421
 
 
422
INSERT INTO `dd` VALUES (1777795072,NULL,'g',0,'was',-1866203136,'',1,'g');
 
423
 
 
424
--error 1054
 
425
EXPLAIN EXTENDED SELECT
 
426
table2 . `col_enum_not_null_key` AS field1 ,
 
427
 table1 . `col_char_1024_key` AS field2
 
428
 FROM ( ( SELECT SUBQUERY1_t1 . * FROM ( BB AS SUBQUERY1_t1 RIGHT JOIN AA AS SUBQUERY1_t2 ON (SUBQUERY1_t2 . `col_int_not_null_key` = SUBQUERY1_t1 . `col_int_key` ) ) ) AS table1 INNER JOIN ( ( DD AS table2 STRAIGHT_JOIN BB AS table3 ON (table3 . `col_char_10_not_null_key` = table2 . `col_char_key` ) ) ) ON (table3 . `col_char_key` = table2 . `col_text_not_null` ) ) WHERE ( ( SELECT MIN( SUBQUERY2_t2 . `col_char_10_not_null_key` ) AS SUBQUERY2_field1 FROM AA AS SUBQUERY2_t1 WHERE ( EXISTS ( ( SELECT CHILD_SUBQUERY1_t2 . `col_char_10_not_null_key` AS CHILD_SUBQUERY1_field1 FROM ( BB AS CHILD_SUBQUERY1_t1 INNER JOIN AA AS CHILD_SUBQUERY1_t2 ON (CHILD_SUBQUERY1_t2 . `col_int_key` = CHILD_SUBQUERY1_t1 . `pk` ) ) WHERE ( CHILD_SUBQUERY1_t2 . `col_char_10_not_null_key` > 'y' AND CHILD_SUBQUERY1_t1 . `col_int_not_null_key` = CHILD_SUBQUERY1_t1 . `col_int_not_null` ) HAVING CHILD_SUBQUERY1_t2 . `col_bigint_key` >= 3) ) AND SUBQUERY2_t1 . `col_int_key` != 8 ) ) IS NOT NULL ) AND ( table1 . `col_int_key` = 160 AND table1 . `col_int_key` = 197 ) AND table3 . `col_text_not_null` >= 'g' GROUP BY field1, field2;
 
429
 
 
430
# cleanup
 
431
DROP TABLE `aa`;
 
432
DROP TABLE `bb`;
 
433
DROP TABLE `dd`;
 
434
--echo End Bug#608416