# Tests for PERFORMANCE_SCHEMA
#
# Check that
# - a regular user can not update setup_ tables under --read-only
# - a user with SUPER privileges can

--source include/not_embedded.inc
--source include/have_perfschema.inc

use performance_schema;

set @start_read_only= @@global.read_only;

grant SELECT, UPDATE on performance_schema.* to pfsuser@localhost;
flush privileges;

--echo connect (con1, localhost, pfsuser, , test);
connect (con1, localhost, pfsuser, , test);

--echo connection default;
connection default;

set global read_only=0;

--echo connection con1;
connection con1;

select @@global.read_only;
show grants;
--disable_result_log
select * from performance_schema.setup_instruments;
update performance_schema.setup_instruments set enabled='NO';
update performance_schema.setup_instruments set enabled='YES';
--enable_result_log

--echo connection default;
connection default;

set global read_only=1;

--echo connection con1;
connection con1;

select @@global.read_only;
show grants;
--disable_result_log
select * from performance_schema.setup_instruments;
--error ER_OPTION_PREVENTS_STATEMENT
update performance_schema.setup_instruments set enabled='NO';
--error ER_OPTION_PREVENTS_STATEMENT
update performance_schema.setup_instruments set enabled='YES';
--enable_result_log

--echo connection default;
connection default;

grant super on *.* to pfsuser@localhost;
flush privileges;

disconnect con1;
--echo connect (con1, localhost, pfsuser, , test);
connect (con1, localhost, pfsuser, , test);

select @@global.read_only;
show grants;
--disable_result_log
select * from performance_schema.setup_instruments;
update performance_schema.setup_instruments set enabled='NO';
update performance_schema.setup_instruments set enabled='YES';
--enable_result_log

disconnect con1;
--source include/wait_until_disconnected.inc

--echo connection default;
connection default;

set global read_only= @start_read_only;

drop user pfsuser@localhost;
flush privileges;

