2013-01-10 23:53:07 +01:00
--
-- PERFORMANCE SCHEMA INSTALLATION
-- Note that this script is also reused by mysql_upgrade,
-- so we have to be very careful here to not destroy any
-- existing database named 'performance_schema' if it
-- can contain user data.
-- In case of downgrade, it's ok to drop unknown tables
-- from a future version, as long as they belong to the
-- performance schema engine.
--
set @ have_old_pfs = ( select count ( * ) from information_schema . schemata where schema_name = ' performance_schema ' ) ;
2013-01-31 09:48:19 +01:00
SET @ cmd = " SET @broken_tables = (select count(*) from information_schema.tables where engine != 'PERFORMANCE_SCHEMA' and table_schema='performance_schema') " ;
2013-01-10 23:53:07 +01:00
-- Work around for bug#49542
SET @ str = IF ( @ have_old_pfs = 1 , @ cmd , ' SET @broken_tables = 0 ' ) ;
PREPARE stmt FROM @ str ;
EXECUTE stmt ;
DROP PREPARE stmt ;
2013-01-31 09:48:19 +01:00
SET @ cmd = " SET @broken_views = (select count(*) from information_schema.views where table_schema='performance_schema') " ;
2013-01-10 23:53:07 +01:00
-- Work around for bug#49542
SET @ str = IF ( @ have_old_pfs = 1 , @ cmd , ' SET @broken_views = 0 ' ) ;
PREPARE stmt FROM @ str ;
EXECUTE stmt ;
DROP PREPARE stmt ;
SET @ broken_routines = ( select count ( * ) from mysql . proc where db = ' performance_schema ' ) ;
SET @ broken_events = ( select count ( * ) from mysql . event where db = ' performance_schema ' ) ;
SET @ broken_pfs = ( select @ broken_tables + @ broken_views + @ broken_routines + @ broken_events ) ;
--
-- The performance schema database.
-- Only drop and create the database if this is safe (no broken_pfs).
-- This database is created, even in --without-perfschema builds,
-- so that the database name is always reserved by the MySQL implementation.
--
SET @ cmd = " DROP DATABASE IF EXISTS performance_schema " ;
SET @ str = IF ( @ broken_pfs = 0 , @ cmd , ' SET @dummy = 0 ' ) ;
PREPARE stmt FROM @ str ;
EXECUTE stmt ;
DROP PREPARE stmt ;
SET @ cmd = " CREATE DATABASE performance_schema character set utf8 " ;
SET @ str = IF ( @ broken_pfs = 0 , @ cmd , ' SET @dummy = 0 ' ) ;
PREPARE stmt FROM @ str ;
EXECUTE stmt ;
DROP PREPARE stmt ;