The reason for the bug above is unclear but
- Modify pfs_upgrade so that it's result is easier to analyze in case something fails
- Fix several minor weaknesses which could cause that a successing test (either an
already existing or a to be developed one) fails because of imperfect cleanup,
too slow disconnected sessions etc.
should either fix the bug or reduce it's probability or at least
make the analysis of failures easier.
mysql-test/suite/perfschema/include/upgrade_check.inc:
New include file which contains redundant stuff taken from pfs_upgrade.test.
Remove any file which might harm analysis of suspicious results.
mysql-test/suite/perfschema/r/query_cache.result:
Updated results
mysql-test/suite/perfschema/r/selects.result:
Updated results
mysql-test/suite/perfschema/t/bad_option_1.test:
Add the missing remove_file at beginning and end of test.
mysql-test/suite/perfschema/t/bad_option_2.test:
Add the missing remove_file at beginning and end of test.
mysql-test/suite/perfschema/t/global_read_lock.test:
Add a wait routine which ensures that the disconnect is really completed when the test ends.
mysql-test/suite/perfschema/t/pfs_upgrade.test:
- Move redundant actions to include/upgrade_check.inc
- Add preemptive removal of files
mysql-test/suite/perfschema/t/privilege.test:
Add a wait routine which ensures that the disconnect is really completed when the test ends.
mysql-test/suite/perfschema/t/query_cache.test:
Add "flush status" so that counters are reset. (./mtr --repeat=2 perfschema.query_cache failed)
mysql-test/suite/perfschema/t/read_only.test:
Add a wait routine which ensures that the disconnect is really completed when the test ends.
mysql-test/suite/perfschema/t/selects-master.opt:
Needed for running with enabled event-scheduler
mysql-test/suite/perfschema/t/selects.test:
- Correct the sub test for the EVENT scheduler
- Replace "sleep" by wait_routine
- Add premptive cleanups like "DROP ... IF EXISTS ..."
DATABASE with open HANDLER"
Remove LOCK_create_db, database name locks, and use metadata locks instead.
This exposes CREATE/DROP/ALTER DATABASE statements to the graph-based
deadlock detector in MDL, and paves the way for a safe, deadlock-free
implementation of RENAME DATABASE.
Database DDL statements will now take exclusive metadata locks on
the database name, while table/view/routine DDL statements take
intention exclusive locks on the database name. This prevents race
conditions between database DDL and table/view/routine DDL.
(e.g. DROP DATABASE with concurrent CREATE/ALTER/DROP TABLE)
By adding database name locks, this patch implements
WL#4450 "DDL locking: CREATE/DROP DATABASE must use database locks" and
WL#4985 "DDL locking: namespace/hierarchical locks".
The patch also changes code to use init_one_table() where appropriate.
The new lock_table_names() function requires TABLE_LIST::db_length to
be set correctly, and this is taken care of by init_one_table().
This patch also adds a simple template to help work with
the mysys HASH data structure.
Most of the patch was written by Konstantin Osipov.
mysql-test/suite/perfschema/t/no_threads-master.opt:
Innodb will start multiple threads, which is
not compatible with --one-thread. Disable
innodb to be able to run the test case.
Before this fix, mysql_upgrade would always drop and re create
the performance_schema database.
This in theory could destroy user data created using 5.1 or older versions.
With this fix, mysql_upgrade checks the content of the
performance_schema database before droping it.
Before this fix, the performance schema file instrumentation would treat:
- a relative path to a file
- an absolute path to the same file
as two different files.
This would lead to:
- separate aggregation counters
- file leaks when a file is removed.
With this fix, a relative and absolute path are resolved to the same file instrument.
When compiling wiht ./configure --with-ssl=/usr,
which used OPEN_SSL but not YASSL, the code in sql/mysqld.cc
failed to build because of an incomplete performance schema instrumentation.
This fix implements properly the instrumentation for the rwlock
used in openssl_lock_t.
Verified that the code builds, and the ssl + performance schema tests
do pass.
Problem: The test case failed because: (i) warning text in
result file differed from the warning output by the
server, and (ii) binlog contents in result file did
not show the statements logged wrapped in BEGIN/COMMIT
as it is the case after WL 2687.
Solution: We update the result file, but first we change the
unsafe warning text to also refer to performance_schema
table(s). This required changing the result files for
existing test cases that provide output for warnings
related to ER_BINLOG_UNSAFE_SYSTEM_TABLE. "Grepping" in
result files, shows that only binlog_unsafe contained
reference to such a warning.
We also update the result file with the missing
BEGIN/COMMIT statements.