~ubuntu-branches/ubuntu/precise/mysql-5.1/precise

« back to all changes in this revision

Viewing changes to mysql-test/t/innodb_mysql.test

  • Committer: Bazaar Package Importer
  • Author(s): Norbert Tretkowski
  • Date: 2010-03-17 14:56:02 UTC
  • Revision ID: james.westby@ubuntu.com-20100317145602-x7e30l1b2sb5s6w6
Tags: upstream-5.1.45
ImportĀ upstreamĀ versionĀ 5.1.45

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# t/innodb_mysql.test
 
2
#
 
3
# Last update:
 
4
# 2006-07-26 ML test refactored (MySQL 5.1)
 
5
#               main testing code t/innodb_mysql.test -> include/mix1.inc              
 
6
#
 
7
 
 
8
-- source include/have_innodb.inc
 
9
let $engine_type= InnoDB;
 
10
let $other_engine_type= MEMORY;
 
11
# InnoDB does support FOREIGN KEYFOREIGN KEYs
 
12
let $test_foreign_keys= 1;
 
13
set global innodb_support_xa=default;
 
14
set session innodb_support_xa=default;
 
15
--source include/mix1.inc
 
16
 
 
17
--disable_warnings
 
18
drop table if exists t1, t2, t3;
 
19
--enable_warnings
 
20
#
 
21
# BUG#35850: Performance regression in 5.1.23/5.1.24
 
22
#
 
23
create table t1(a int);
 
24
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
 
25
create table t2 (a int, b int, pk int, key(a,b), primary key(pk)) engine=innodb;
 
26
insert into t2 select @a:=A.a+10*(B.a + 10*C.a),@a, @a from t1 A, t1 B, t1 C;
 
27
--echo this must use key 'a', not PRIMARY:
 
28
--replace_column 9 #
 
29
explain select a from t2 where a=b;
 
30
drop table t1, t2;
 
31
 
 
32
#
 
33
# Bug #40360: Binlog related errors with binlog off
 
34
#
 
35
# This bug is triggered when the binlog format is STATEMENT and the
 
36
# binary log is turned off. In this case, no error should be shown for
 
37
# the statement since there are no replication issues.
 
38
 
 
39
SET SESSION BINLOG_FORMAT=STATEMENT;
 
40
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
 
41
query_vertical select @@session.sql_log_bin, @@session.binlog_format, @@session.tx_isolation;
 
42
CREATE TABLE t1 ( a INT ) ENGINE=InnoDB;
 
43
INSERT INTO t1 VALUES(1);
 
44
DROP TABLE t1;
 
45
 
 
46
#
 
47
# Bug#37284 Crash in Field_string::type()
 
48
#
 
49
--disable_warnings
 
50
DROP TABLE IF EXISTS t1;
 
51
--enable_warnings
 
52
CREATE TABLE t1 (a char(50)) ENGINE=InnoDB;
 
53
CREATE INDEX i1 on t1 (a(3));
 
54
SELECT * FROM t1 WHERE a = 'abcde';
 
55
DROP TABLE t1;
 
56
 
 
57
#
 
58
# Bug #37742: HA_EXTRA_KEYREAD flag is set when key contains only prefix of
 
59
# requested column
 
60
#
 
61
 
 
62
CREATE TABLE foo (a int, b int, c char(10),
 
63
                  PRIMARY KEY (c(3)),
 
64
                  KEY b (b)
 
65
) engine=innodb;
 
66
 
 
67
CREATE TABLE foo2 (a int, b int, c char(10),
 
68
                  PRIMARY KEY (c),
 
69
                  KEY b (b)
 
70
) engine=innodb;
 
71
 
 
72
CREATE TABLE bar (a int, b int, c char(10),
 
73
                  PRIMARY KEY (c(3)),
 
74
                  KEY b (b)
 
75
) engine=myisam;
 
76
 
 
77
INSERT INTO foo VALUES
 
78
   (1,2,'abcdefghij'), (2,3,''), (3,4,'klmnopqrst'),
 
79
   (4,5,'uvwxyz'), (5,6,'meotnsyglt'), (4,5,'asfdewe');
 
80
 
 
81
INSERT INTO bar SELECT * FROM foo;
 
82
INSERT INTO foo2 SELECT * FROM foo;
 
83
 
 
84
--query_vertical EXPLAIN SELECT c FROM bar WHERE b>2;
 
85
--query_vertical EXPLAIN SELECT c FROM foo WHERE b>2;
 
86
--query_vertical EXPLAIN SELECT c FROM foo2 WHERE b>2;
 
87
 
 
88
--query_vertical EXPLAIN SELECT c FROM bar WHERE c>2;
 
89
--query_vertical EXPLAIN SELECT c FROM foo WHERE c>2;
 
90
--query_vertical EXPLAIN SELECT c FROM foo2 WHERE c>2;
 
91
 
 
92
DROP TABLE foo, bar, foo2;
 
93
 
 
94
 
 
95
#
 
96
# Bug#41348: INSERT INTO tbl SELECT * FROM temp_tbl overwrites locking type of temp table
 
97
#
 
98
 
 
99
--disable_warnings
 
100
DROP TABLE IF EXISTS t1,t3,t2;
 
101
DROP FUNCTION IF EXISTS f1;
 
102
--enable_warnings
 
103
 
 
104
DELIMITER |;
 
105
CREATE FUNCTION f1() RETURNS VARCHAR(250)
 
106
 BEGIN
 
107
     return 'hhhhhhh' ;
 
108
 END|
 
109
DELIMITER ;|
 
110
 
 
111
CREATE TABLE t1 (a VARCHAR(20), b VARCHAR(20), c VARCHAR(20)) ENGINE=INNODB;
 
112
 
 
113
BEGIN WORK;
 
114
 
 
115
CREATE TEMPORARY TABLE t2 (a VARCHAR(20), b VARCHAR(20), c varchar(20)) ENGINE=INNODB;
 
116
CREATE TEMPORARY TABLE t3 LIKE t2;
 
117
 
 
118
INSERT INTO t1 VALUES ('a','b',NULL),('c','d',NULL),('e','f',NULL);
 
119
 
 
120
SET @stmt := CONCAT('INSERT INTO t2 SELECT tbl.a, tbl.b, f1()',' FROM t1 tbl');
 
121
PREPARE stmt1 FROM @stmt;
 
122
 
 
123
SET @stmt := CONCAT('INSERT INTO t3', ' SELECT * FROM t2');
 
124
PREPARE stmt3 FROM @stmt;
 
125
 
 
126
EXECUTE stmt1;
 
127
 
 
128
COMMIT;
 
129
 
 
130
DEALLOCATE PREPARE stmt1;
 
131
DEALLOCATE PREPARE stmt3;
 
132
 
 
133
DROP TABLE t1,t3,t2;
 
134
DROP FUNCTION f1;
 
135
 
 
136
#
 
137
# Bug#37016: TRUNCATE TABLE removes some rows but not all
 
138
#
 
139
 
 
140
--disable_warnings
 
141
DROP TABLE IF EXISTS t1,t2;
 
142
--enable_warnings
 
143
 
 
144
CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
 
145
CREATE TABLE t2 (id INT PRIMARY KEY,
 
146
                 t1_id INT, INDEX par_ind (t1_id),
 
147
                 FOREIGN KEY (t1_id) REFERENCES t1(id)) ENGINE=INNODB;
 
148
INSERT INTO t1 VALUES (1),(2);
 
149
INSERT INTO t2 VALUES (3,2);
 
150
 
 
151
SET AUTOCOMMIT = 0;
 
152
 
 
153
START TRANSACTION;
 
154
--error ER_ROW_IS_REFERENCED_2
 
155
TRUNCATE TABLE t1;
 
156
SELECT * FROM t1;
 
157
COMMIT;
 
158
SELECT * FROM t1;
 
159
 
 
160
START TRANSACTION;
 
161
--error ER_ROW_IS_REFERENCED_2
 
162
TRUNCATE TABLE t1;
 
163
SELECT * FROM t1;
 
164
ROLLBACK;
 
165
SELECT * FROM t1;
 
166
 
 
167
SET AUTOCOMMIT = 1;
 
168
 
 
169
START TRANSACTION;
 
170
SELECT * FROM t1;
 
171
COMMIT;
 
172
 
 
173
--error ER_ROW_IS_REFERENCED_2
 
174
TRUNCATE TABLE t1;
 
175
SELECT * FROM t1;
 
176
DELETE FROM t2 WHERE id = 3;
 
177
 
 
178
START TRANSACTION;
 
179
SELECT * FROM t1;
 
180
TRUNCATE TABLE t1;
 
181
ROLLBACK;
 
182
SELECT * FROM t1;
 
183
TRUNCATE TABLE t2;
 
184
 
 
185
DROP TABLE t2;
 
186
DROP TABLE t1;
 
187
 
 
188
--echo #
 
189
--echo # Bug#40127 Multiple table DELETE IGNORE hangs on foreign key constraint violation on 5.0
 
190
--echo #
 
191
CREATE TABLE t1 (
 
192
        id INT UNSIGNED NOT NULL AUTO_INCREMENT,
 
193
        PRIMARY KEY (id)
 
194
) ENGINE=InnoDB;
 
195
 
 
196
CREATE TABLE t2 (
 
197
        id INT UNSIGNED NOT NULL AUTO_INCREMENT,
 
198
        aid INT UNSIGNED NOT NULL,
 
199
        PRIMARY KEY (id),
 
200
        FOREIGN KEY (aid) REFERENCES t1 (id)
 
201
) ENGINE=InnoDB;
 
202
 
 
203
CREATE TABLE t3 (
 
204
        bid INT UNSIGNED NOT NULL,
 
205
        FOREIGN KEY (bid) REFERENCES t2 (id)
 
206
) ENGINE=InnoDB;
 
207
 
 
208
CREATE TABLE t4 (
 
209
  a INT
 
210
) ENGINE=InnoDB;
 
211
 
 
212
CREATE TABLE t5 (
 
213
  a INT
 
214
) ENGINE=InnoDB;
 
215
 
 
216
INSERT INTO t1 (id) VALUES (1);
 
217
INSERT INTO t2 (id, aid) VALUES (1, 1),(2,1),(3,1),(4,1);
 
218
INSERT INTO t3 (bid) VALUES (1);
 
219
 
 
220
INSERT INTO t4 VALUES (1),(2),(3),(4),(5);
 
221
INSERT INTO t5 VALUES (1);
 
222
 
 
223
DELETE t5 FROM t4 LEFT JOIN t5 ON t4.a= t5.a;
 
224
 
 
225
--error ER_ROW_IS_REFERENCED_2
 
226
DELETE t2, t1 FROM t2 INNER JOIN t1 ON (t2.aid = t1.id) WHERE t2.id = 1;
 
227
--error ER_ROW_IS_REFERENCED_2
 
228
DELETE t2, t1 FROM t2 INNER JOIN t1 ON (t2.aid = t1.id) WHERE t2.id = 1;
 
229
 
 
230
DELETE IGNORE t2, t1 FROM t2 INNER JOIN t1 ON (t2.aid = t1.id) WHERE t2.id = 1;
 
231
 
 
232
DROP TABLE t3;
 
233
DROP TABLE t2;
 
234
DROP TABLE t1;
 
235
DROP TABLES t4,t5;
 
236
 
 
237
--echo # Bug#40127 Multiple table DELETE IGNORE hangs on foreign key constraint violation on 5.0
 
238
--echo # Testing for any side effects of IGNORE on AFTER DELETE triggers used with
 
239
--echo # transactional tables.
 
240
--echo #
 
241
CREATE TABLE t1 (i INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
 
242
CREATE TABLE t2 (a VARCHAR(100)) ENGINE=InnoDB;
 
243
CREATE TABLE t3 (i INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
 
244
CREATE TABLE t4 (i INT NOT NULL PRIMARY KEY, t1i INT, 
 
245
  FOREIGN KEY (t1i) REFERENCES t1(i))
 
246
  ENGINE=InnoDB;
 
247
delimiter ||;
 
248
CREATE TRIGGER trg AFTER DELETE ON t1 FOR EACH ROW
 
249
BEGIN
 
250
  SET @b:='EXECUTED TRIGGER';
 
251
  INSERT INTO t2 VALUES (@b);
 
252
  SET @a:= error_happens_here;
 
253
END||
 
254
delimiter ;||
 
255
 
 
256
SET @b:="";
 
257
SET @a:="";
 
258
INSERT INTO t1 VALUES (1),(2),(3),(4);
 
259
INSERT INTO t3 SELECT * FROM t1;
 
260
--echo ** An error in a trigger causes rollback of the statement.
 
261
--error ER_BAD_FIELD_ERROR
 
262
DELETE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i;
 
263
SELECT @a,@b;
 
264
SELECT * FROM t2;
 
265
SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i;
 
266
 
 
267
--echo ** Same happens with the IGNORE option
 
268
--error ER_BAD_FIELD_ERROR
 
269
DELETE IGNORE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i;
 
270
SELECT * FROM t2;
 
271
SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i;
 
272
 
 
273
--echo **
 
274
--echo ** The following is an attempt to demonstrate
 
275
--echo ** error handling inside a row iteration.
 
276
--echo **
 
277
DROP TRIGGER trg;
 
278
TRUNCATE TABLE t1;
 
279
TRUNCATE TABLE t2;
 
280
TRUNCATE TABLE t3;
 
281
 
 
282
INSERT INTO t1 VALUES (1),(2),(3),(4);
 
283
INSERT INTO t3 VALUES (1),(2),(3),(4);
 
284
INSERT INTO t4 VALUES (3,3),(4,4);
 
285
 
 
286
delimiter ||;
 
287
CREATE TRIGGER trg AFTER DELETE ON t1 FOR EACH ROW
 
288
BEGIN
 
289
  SET @b:= CONCAT('EXECUTED TRIGGER FOR ROW ',CAST(OLD.i AS CHAR));
 
290
  INSERT INTO t2 VALUES (@b);
 
291
END||
 
292
delimiter ;||
 
293
 
 
294
--echo ** DELETE is prevented by foreign key constrains but errors are silenced.
 
295
--echo ** The AFTER trigger isn't fired.
 
296
DELETE IGNORE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i;
 
297
--echo ** Tables are modified by best effort:
 
298
SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i;
 
299
--echo ** The AFTER trigger was only executed on successful rows:
 
300
SELECT * FROM t2;
 
301
 
 
302
DROP TRIGGER trg;
 
303
 
 
304
--echo **
 
305
--echo ** Induce an error midway through an AFTER-trigger
 
306
--echo **
 
307
TRUNCATE TABLE t4;
 
308
TRUNCATE TABLE t1;
 
309
TRUNCATE TABLE t3;
 
310
INSERT INTO t1 VALUES (1),(2),(3),(4);
 
311
INSERT INTO t3 VALUES (1),(2),(3),(4);
 
312
delimiter ||;
 
313
CREATE TRIGGER trg AFTER DELETE ON t1 FOR EACH ROW
 
314
BEGIN
 
315
  SET @a:= @a+1;
 
316
  IF @a > 2 THEN
 
317
    INSERT INTO t4 VALUES (5,5);
 
318
  END IF;
 
319
END||
 
320
delimiter ;||
 
321
 
 
322
SET @a:=0;
 
323
--echo ** Errors in the trigger causes the statement to abort.
 
324
--error ER_NO_REFERENCED_ROW_2
 
325
DELETE IGNORE t1 FROM t3 LEFT JOIN t1 ON t1.i=t3.i;
 
326
SELECT * FROM t1 LEFT JOIN t3 ON t1.i=t3.i;
 
327
SELECT * FROM t4;
 
328
 
 
329
DROP TRIGGER trg;
 
330
DROP TABLE t4;
 
331
DROP TABLE t1;
 
332
DROP TABLE t2;
 
333
DROP TABLE t3;
 
334
 
 
335
#
 
336
# Bug#43580: Issue with Innodb on multi-table update
 
337
#
 
338
CREATE TABLE t1 (a INT, b INT, KEY (a)) ENGINE = INNODB;
 
339
CREATE TABLE t2 (a INT KEY, b INT, KEY (b)) ENGINE = INNODB;
 
340
 
 
341
CREATE TABLE t3 (a INT, b INT KEY, KEY (a)) ENGINE = INNODB;
 
342
CREATE TABLE t4 (a INT KEY, b INT, KEY (b)) ENGINE = INNODB;
 
343
 
 
344
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6);
 
345
INSERT INTO t2 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
 
346
 
 
347
INSERT INTO t3 VALUES (1, 101), (2, 102), (3, 103), (4, 104), (5, 105), (6, 106);
 
348
INSERT INTO t4 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
 
349
 
 
350
UPDATE t1, t2 SET t1.a = t1.a + 100, t2.b = t1.a + 10 
 
351
WHERE t1.a BETWEEN 2 AND 4 AND t2.a = t1.b;
 
352
--sorted_result
 
353
SELECT * FROM t2;
 
354
 
 
355
UPDATE t3, t4 SET t3.a = t3.a + 100, t4.b = t3.a + 10 
 
356
WHERE t3.a BETWEEN 2 AND 4 AND t4.a = t3.b - 100;
 
357
--sorted_result
 
358
SELECT * FROM t4;
 
359
 
 
360
DROP TABLE t1, t2, t3, t4;
 
361
 
 
362
--echo #
 
363
--echo # Bug#44886: SIGSEGV in test_if_skip_sort_order() -
 
364
--echo #            uninitialized variable used as subscript 
 
365
--echo #
 
366
 
 
367
CREATE TABLE t1 (a INT, b INT, c INT, d INT, PRIMARY KEY (b), KEY (a,c))
 
368
  ENGINE=InnoDB;
 
369
INSERT INTO t1 VALUES (1,1,1,0);
 
370
 
 
371
CREATE TABLE t2 (a INT, b INT, e INT, KEY (e)) ENGINE=InnoDB;
 
372
INSERT INTO t2 VALUES (1,1,2);
 
373
 
 
374
CREATE TABLE t3 (a INT, b INT) ENGINE=MyISAM;
 
375
INSERT INTO t3 VALUES (1, 1);
 
376
 
 
377
SELECT * FROM t1, t2, t3
 
378
  WHERE t1.a = t3.a AND (t1.b = t3.b OR t1.d) AND t2.b = t1.b AND t2.e = 2
 
379
  GROUP BY t1.b;
 
380
 
 
381
DROP TABLE t1, t2, t3;
 
382
 
 
383
--echo #
 
384
--echo # Bug #45828: Optimizer won't use partial primary key if another 
 
385
--echo # index can prevent filesort
 
386
--echo #
 
387
 
 
388
# Create the table
 
389
CREATE TABLE `t1` (
 
390
  c1 int NOT NULL,
 
391
  c2 int NOT NULL,
 
392
  c3 int NOT NULL,
 
393
  PRIMARY KEY (c1,c2),
 
394
  KEY  (c3)
 
395
) ENGINE=InnoDB;
 
396
 
 
397
# populate with data
 
398
INSERT INTO t1 VALUES (5,2,1246276747);
 
399
INSERT INTO t1 VALUES (2,1,1246281721);
 
400
INSERT INTO t1 VALUES (7,3,1246281756);
 
401
INSERT INTO t1 VALUES (4,2,1246282139);
 
402
INSERT INTO t1 VALUES (3,1,1246282230);
 
403
INSERT INTO t1 VALUES (1,0,1246282712);
 
404
INSERT INTO t1 VALUES (8,3,1246282765);
 
405
INSERT INTO t1 SELECT c1+10,c2+10,c3+10 FROM t1;
 
406
INSERT INTO t1 SELECT c1+100,c2+100,c3+100 from t1;
 
407
INSERT INTO t1 SELECT c1+1000,c2+1000,c3+1000 from t1;
 
408
INSERT INTO t1 SELECT c1+10000,c2+10000,c3+10000 from t1;
 
409
INSERT INTO t1 SELECT c1+100000,c2+100000,c3+100000 from t1;
 
410
INSERT INTO t1 SELECT c1+1000000,c2+1000000,c3+1000000 from t1;
 
411
 
 
412
# query and no rows will match the c1 condition, whereas all will match c3
 
413
SELECT * FROM t1 WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3;
 
414
 
 
415
# SHOULD use the pk.
 
416
# index on c3 will be used instead of primary key
 
417
EXPLAIN SELECT * FROM t1 WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3;
 
418
 
 
419
# if we force the primary key, we can see the estimate is 1 
 
420
EXPLAIN SELECT * FROM t1 FORCE INDEX (PRIMARY) WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3;
 
421
 
 
422
 
 
423
CREATE TABLE t2 (
 
424
  c1 int NOT NULL,
 
425
  c2 int NOT NULL,
 
426
  c3 int NOT NULL,
 
427
  KEY (c1,c2),
 
428
  KEY (c3)
 
429
) ENGINE=InnoDB;
 
430
 
 
431
# SHOULD use the pk.
 
432
# if we switch it from a primary key to a regular index, it works correctly as well
 
433
explain SELECT * FROM t2 WHERE c1 = 99999999 AND c3 > 1 ORDER BY c3;
 
434
 
 
435
DROP TABLE t1,t2;
 
436
 
 
437
 
 
438
--echo #
 
439
--echo # 36259: Optimizing with ORDER BY
 
440
--echo #
 
441
 
 
442
CREATE TABLE t1 (
 
443
  a INT NOT NULL AUTO_INCREMENT,
 
444
  b INT NOT NULL,
 
445
  c INT NOT NULL,
 
446
  d VARCHAR(5),
 
447
  e INT NOT NULL,
 
448
  PRIMARY KEY (a), KEY i2 (b,c,d)
 
449
) ENGINE=InnoDB;
 
450
 
 
451
INSERT INTO t1 (b,c,d,e) VALUES (1,1,'a',1), (2,2,'b',2);
 
452
INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
 
453
INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
 
454
INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
 
455
INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
 
456
INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
 
457
INSERT INTO t1 (b,c,d,e) SELECT RAND()*10000, RAND()*10000, d, e FROM t1;
 
458
EXPLAIN SELECT * FROM t1 WHERE b=1 AND c=1 ORDER BY a;
 
459
EXPLAIN SELECT * FROM t1 FORCE INDEX(i2) WHERE b=1 and c=1 ORDER BY a;
 
460
EXPLAIN SELECT * FROM t1 FORCE INDEX(PRIMARY) WHERE b=1 AND c=1 ORDER BY a;
 
461
 
 
462
DROP TABLE t1;
 
463
 
 
464
--echo #
 
465
--echo # Bug #47963: Wrong results when index is used
 
466
--echo #
 
467
CREATE TABLE t1(
 
468
  a VARCHAR(5) NOT NULL, 
 
469
  b VARCHAR(5) NOT NULL,
 
470
  c DATETIME NOT NULL,
 
471
  KEY (c) 
 
472
) ENGINE=InnoDB;
 
473
INSERT INTO t1 VALUES('TEST', 'TEST', '2009-10-09 00:00:00');
 
474
SELECT * FROM t1 WHERE a = 'TEST' AND 
 
475
  c >= '2009-10-09 00:00:00' AND c <= '2009-10-09 00:00:00';
 
476
SELECT * FROM t1 WHERE a = 'TEST' AND 
 
477
  c >= '2009-10-09 00:00:00.0' AND c <= '2009-10-09 00:00:00.0';
 
478
SELECT * FROM t1 WHERE a = 'TEST' AND 
 
479
  c >= '2009-10-09 00:00:00.0' AND c <= '2009-10-09 00:00:00';
 
480
SELECT * FROM t1 WHERE a = 'TEST' AND 
 
481
  c >= '2009-10-09 00:00:00' AND c <= '2009-10-09 00:00:00.0';
 
482
SELECT * FROM t1 WHERE a = 'TEST' AND 
 
483
  c >= '2009-10-09 00:00:00.000' AND c <= '2009-10-09 00:00:00.000';
 
484
SELECT * FROM t1 WHERE a = 'TEST' AND 
 
485
  c >= '2009-10-09 00:00:00.00' AND c <= '2009-10-09 00:00:00.001';
 
486
SELECT * FROM t1 WHERE a = 'TEST' AND 
 
487
  c >= '2009-10-09 00:00:00.001' AND c <= '2009-10-09 00:00:00.00';
 
488
EXPLAIN SELECT * FROM t1 WHERE a = 'TEST' AND 
 
489
  c >= '2009-10-09 00:00:00.001' AND c <= '2009-10-09 00:00:00.00';
 
490
DROP TABLE t1;
 
491
 
 
492
--echo #
 
493
--echo # Bug #46175: NULL read_view and consistent read assertion
 
494
--echo #
 
495
 
 
496
CREATE TABLE t1(a CHAR(13),KEY(a)) ENGINE=innodb;
 
497
CREATE TABLE t2(b DATETIME,KEY(b)) ENGINE=innodb;
 
498
INSERT INTO t1 VALUES (),();
 
499
INSERT INTO t2 VALUES (),();
 
500
CREATE OR REPLACE VIEW v1 AS SELECT 1 FROM t2 
 
501
  WHERE b =(SELECT a FROM t1 LIMIT 1);
 
502
 
 
503
--disable_query_log
 
504
--disable_result_log
 
505
CONNECT (con1, localhost, root,,);
 
506
--enable_query_log
 
507
--enable_result_log
 
508
CONNECTION default;
 
509
 
 
510
DELIMITER |;
 
511
CREATE PROCEDURE p1(num INT)
 
512
BEGIN
 
513
  DECLARE i INT DEFAULT 0;
 
514
  REPEAT
 
515
    SHOW CREATE VIEW v1;
 
516
    SET i:=i+1;
 
517
  UNTIL i>num END REPEAT;
 
518
END|
 
519
DELIMITER ;|
 
520
 
 
521
--echo # Should not crash
 
522
--disable_query_log
 
523
--disable_result_log
 
524
--send CALL p1(1000)
 
525
CONNECTION con1;
 
526
--echo # Should not crash
 
527
CALL p1(1000);
 
528
 
 
529
CONNECTION default;
 
530
--reap
 
531
--enable_query_log
 
532
--enable_result_log
 
533
 
 
534
DISCONNECT con1;
 
535
DROP PROCEDURE p1;
 
536
DROP VIEW v1;
 
537
DROP TABLE t1,t2;
 
538
 
 
539
 
 
540
--echo #
 
541
--echo # Bug #49324: more valgrind errors in test_if_skip_sort_order
 
542
--echo #
 
543
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=innodb ;
 
544
--echo #should not cause valgrind warnings
 
545
SELECT 1 FROM t1 JOIN t1 a USING(a) GROUP BY t1.a,t1.a;
 
546
DROP TABLE t1;
 
547
 
 
548
--echo #
 
549
--echo # Bug#50843: Filesort used instead of clustered index led to
 
550
--echo #            performance degradation.
 
551
--echo #
 
552
create table t1(f1 int not null primary key, f2 int) engine=innodb;
 
553
create table t2(f1 int not null, key (f1)) engine=innodb;
 
554
insert into t1 values (1,1),(2,2),(3,3);
 
555
insert into t2 values (1),(2),(3);
 
556
explain select t1.* from t1 left join t2 using(f1) group by t1.f1;
 
557
drop table t1,t2;
 
558
--echo #
 
559
 
 
560
 
 
561
--echo End of 5.1 tests