polardbxengine/mysql-test/t/dd_is_debug.test

114 lines
4.2 KiB
Plaintext

#
# Tests for INFORMATION_SCHEMA system views requiring debug build of server.
#
--source include/have_debug.inc
# Warning is generated when default file (NULL) is used
CALL mtr.add_suppression("Could not parse key-value pairs in property string.*");
--echo #
--echo # Bug#26318759 ASSERT IN ROW_DROP_TABLE_FOR_MYSQL IN ROW/ROW0MYSQL.CC
--echo #
SET SESSION information_schema_stats_expiry=0;
SET SESSION debug= "+d,information_schema_fetch_table_stats";
CREATE TABLE t1 (a VARCHAR(200), b TEXT, FULLTEXT (a,b));
INSERT INTO t1 VALUES ('a','b');
# This SELECT should dump if it end-ups calling SE API. (Without fix).
SELECT table_name, cardinality FROM INFORMATION_SCHEMA.STATISTICS
WHERE cardinality > 0 and table_schema='test';
DROP TABLE t1;
SET SESSION debug= "-d,information_schema_fetch_table_stats";
SET SESSION information_schema_stats_expiry=default;
--echo #
--echo # Bug #27569314: ASSERTION `(UCHAR *)TABLE->DEF_READ_SET.BITMAP +
--echo # TABLE->S->COLUMN_BITMAP_SIZE
--echo #
--echo # RQG bug, not directly re-producible. Provoking same issue using
--echo # fault injection. Without fix, this would trigger same assert as seen
--echo # in RQG. Triggered by a failure to call tmp_restore_column_map in case
--echo # of errors.
CREATE TABLE t1(i INT);
SET SESSION debug="+d,sim_acq_fail_in_store_ci";
--error ER_DA_UNKNOWN_ERROR_NUMBER
SHOW CREATE TABLE t1;
SET SESSION debug="";
DROP TABLE t1;
--echo #
--echo # Bug#28460158 SIG 11 IN ITEM_FUNC_GET_DD_CREATE_OPTIONS::VAL_STR AT SQL/ITEM_STRFUNC.CC:4167
--echo #
CREATE TABLE t1(f1 INT, s VARCHAR(10));
SELECT TABLE_NAME, CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME='t1';
SET debug = '+d,skip_dd_table_access_check';
update mysql.tables set options=concat(options,"abc") where name='t1';
SET debug = '+d,continue_on_property_string_parse_failure';
SELECT TABLE_NAME, CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME='t1';
SET debug = DEFAULT;
DROP TABLE t1;
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
--let SEARCH_PATTERN= Could not parse key-value pairs in property string.*
--source include/search_pattern.inc
--echo #
--echo # Bug#28875646 - ASSERTION `THD->GET_TRANSACTION()->IS_EMPTY(TRANSACTION_CTX::STMT) || (THD->STAT
--echo #
CREATE TABLE t1 (f1 INT );
--echo # Case 1: Test case to verify re-prepare of a prepared statement using
--echo # INFORMATION_SCHEMA table in LOCK TABLE mode does not add a SE
--echo # to the transaction while opening query tables.
--echo # (Scenario reported in the bug page)
PREPARE stmt FROM 'show events';
EXECUTE stmt;
FLUSH TABLES;
LOCK TABLE t1 READ;
SET DEBUG_SYNC="after_statement_reprepare SIGNAL flush_tables WAIT_FOR continue";
--SEND EXECUTE stmt
CONNECT (con1, localhost, root);
SET DEBUG_SYNC="now WAIT_FOR flush_tables";
SET DEBUG="+d,skip_dd_table_access_check";
FLUSH TABLES mysql.events;
SET DEBUG="-d,skip_dd_table_access_check";
SET DEBUG_SYNC="now SIGNAL continue";
CONNECTION default;
--echo # Without fix, execution of a prepared statement in the debug build will
--echo # hit the assert condition to check no SEs added to the transaction while
--echo # opening query tables. In non-debug build execution continues without
--echo # any issues.
--echo # With fix, in debug build "stmt" execution succeeds.
--reap
--echo # Case 2: Test case added for the coverage.
--echo # Test case to verify no SEs added to the transaction when open
--echo # table fails after opening INFORMATION_SCHEMA tables in LOCK TABLE
--echo # mode. In debug build, assert condition mentioned in the bug
--echo # report fails if there are any SEs added to the transaction.
--error ER_TABLE_NOT_LOCKED
SELECT * FROM INFORMATION_SCHEMA.EVENTS, t2;
UNLOCK TABLES;
--echo # Case 3: Test case added for the coverage.
--echo # Test case to verify no SEs added to the transaction when open
--echo # table fails after opening INFORMATION_SCHEMA tables. In debug
--echo # build, assert condition mentioned in the bug report fails if
--echo # there are any SEs added to the transaction.
--error ER_NO_SUCH_TABLE
SELECT * FROM INFORMATION_SCHEMA.EVENTS, t2;
# Cleanup
DISCONNECT con1;
DROP TABLE t1;
DROP PREPARE stmt;
SET DEBUG_SYNC=RESET;