mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
f4b7c50d6e
Problem: the server missed the fact that one can read from 2 indexes alternately using HANDLER interface. Fix: check if the same (initialized) index is involved reading next/prev values from the index. mysql-test/r/handler_myisam.result: Fix for bug #54007: assert in ha_myisam::index_next, HANDLER - test result. mysql-test/t/handler_myisam.test: Fix for bug #54007: assert in ha_myisam::index_next, HANDLER - test case. sql/sql_handler.cc: Fix for bug #54007: assert in ha_myisam::index_next, HANDLER - check if we use the same (initialized) index to read next/prev values from the index.
100 lines
2.3 KiB
Text
100 lines
2.3 KiB
Text
# t/handler_myisam.test
|
|
#
|
|
# test of HANDLER ...
|
|
#
|
|
# Last update:
|
|
# 2006-07-31 ML test refactored (MySQL 5.1)
|
|
# code of t/handler.test and t/innodb_handler.test united
|
|
# main testing code put into include/handler.inc
|
|
# rename t/handler.test to t/handler_myisam.test
|
|
#
|
|
|
|
# should work in embedded server after mysqltest is fixed
|
|
--source include/not_embedded.inc
|
|
|
|
let $engine_type= MyISAM;
|
|
let $other_engine_type= MEMORY;
|
|
# There is unfortunately no other all time available storage engine
|
|
# which supports the handler interface
|
|
let $other_handler_engine_type= MyISAM;
|
|
|
|
--source include/handler.inc
|
|
|
|
--echo #
|
|
--echo # BUG #46456: HANDLER OPEN + TRUNCATE + DROP (temporary) TABLE, crash
|
|
--echo #
|
|
CREATE TABLE t1 AS SELECT 1 AS f1;
|
|
HANDLER t1 OPEN;
|
|
TRUNCATE t1;
|
|
--error ER_UNKNOWN_TABLE
|
|
HANDLER t1 READ FIRST;
|
|
DROP TABLE t1;
|
|
|
|
CREATE TEMPORARY TABLE t1 AS SELECT 1 AS f1;
|
|
HANDLER t1 OPEN;
|
|
TRUNCATE t1;
|
|
--error ER_UNKNOWN_TABLE
|
|
HANDLER t1 READ FIRST;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # BUG#51877 - HANDLER interface causes invalid memory read
|
|
--echo #
|
|
CREATE TABLE t1(a INT, KEY(a));
|
|
HANDLER t1 OPEN;
|
|
HANDLER t1 READ a FIRST;
|
|
INSERT INTO t1 VALUES(1);
|
|
HANDLER t1 READ a NEXT;
|
|
HANDLER t1 CLOSE;
|
|
DROP TABLE t1;
|
|
|
|
|
|
--echo #
|
|
--echo # Bug #54007: assert in ha_myisam::index_next , HANDLER
|
|
--echo #
|
|
CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a), KEY b(b), KEY ab(a, b));
|
|
|
|
HANDLER t1 OPEN;
|
|
HANDLER t1 READ FIRST;
|
|
HANDLER t1 READ `PRIMARY` NEXT;
|
|
HANDLER t1 READ ab NEXT;
|
|
HANDLER t1 READ b NEXT;
|
|
HANDLER t1 READ NEXT;
|
|
HANDLER t1 CLOSE;
|
|
|
|
INSERT INTO t1 VALUES (2, 20), (1, 10), (4, 40), (3, 30);
|
|
HANDLER t1 OPEN;
|
|
HANDLER t1 READ FIRST;
|
|
HANDLER t1 READ NEXT;
|
|
HANDLER t1 READ `PRIMARY` NEXT;
|
|
HANDLER t1 READ `PRIMARY` NEXT;
|
|
HANDLER t1 READ ab NEXT;
|
|
HANDLER t1 READ ab NEXT;
|
|
HANDLER t1 READ b NEXT;
|
|
HANDLER t1 READ b NEXT;
|
|
HANDLER t1 READ b NEXT;
|
|
HANDLER t1 READ b NEXT;
|
|
HANDLER t1 READ b NEXT;
|
|
HANDLER t1 READ NEXT;
|
|
HANDLER t1 READ NEXT;
|
|
HANDLER t1 READ NEXT;
|
|
HANDLER t1 CLOSE;
|
|
|
|
HANDLER t1 OPEN;
|
|
HANDLER t1 READ FIRST;
|
|
HANDLER t1 READ `PRIMARY` PREV;
|
|
HANDLER t1 READ `PRIMARY` PREV;
|
|
HANDLER t1 READ b PREV;
|
|
HANDLER t1 READ b PREV;
|
|
HANDLER t1 CLOSE;
|
|
|
|
HANDLER t1 OPEN;
|
|
HANDLER t1 READ FIRST;
|
|
HANDLER t1 READ `PRIMARY` PREV LIMIT 3;
|
|
HANDLER t1 READ b NEXT LIMIT 5;
|
|
HANDLER t1 CLOSE;
|
|
|
|
DROP TABLE t1;
|
|
|
|
|
|
--echo End of 5.1 tests
|