mariadb/mysql-test/r/grant_cache_ps_prot.result

222 lines
5.6 KiB
Text
Raw Normal View History

drop table if exists test.t1,mysqltest.t1,mysqltest.t2;
drop database if exists mysqltest;
set GLOBAL query_cache_size=1355776;
reset query cache;
flush status;
This changeset belongs to the fix of Bug#735 Prepared Statements: there is no support for Query Cache - Create "--ps-protocol" and no "--<whatever>-protocol" variants of the former tests t/grant_cache.test and t/query_cache_sql_prepare.test. - Some additional subtest and fixes of bugs - Minor improvements mysql-test/include/grant_cache.inc: - Rename mysql-test/t/grant_cache.test to include/grant_cache.inc - Toplevel scripts running variants of this test are t/grant_cache_ps_prot.test (runs only with "--ps-protocol") t/grant_cache_no_prot.test (skipped if any protocol is assigned) - Modifications to include/grant_cache.inc: - Minor improvements like replace --error <number> by --error <name> - enable that some subtests are run with "--ps-protocol" mysql-test/include/query_cache_sql_prepare.inc: - Rename t/query_cache_sql_prepare.test to include/query_cache_sql_prepare.inc - Toplevel scripts running variants of this test are query_cache_ps_ps_prot.test (skipped if other protocol than --ps-protocol is used.) query_cache_ps_no_prot.test (skipped if --<whatever>-protocol is used) - Modifications to include/query_cache_sql_prepare.inc: - Minor improvements like add drop table - Add tests checking that - another connection gets the same amount of QC hits - statements running via ps-protocol do not hit QC results of preceding sql EXECUTEs mysql-test/r/grant_cache_no_prot.result: Updated result mysql-test/r/query_cache_ps_no_prot.result: Updated result tests/mysql_client_test.c: - correct wrong sized "for" loop - add some missing tests of query cache hit numbers mysql-test/r/grant_cache_ps_prot.result: New BitKeeper file ``mysql-test/r/grant_cache_ps_prot.result'' mysql-test/r/query_cache_ps_ps_prot.result: New BitKeeper file ``mysql-test/r/query_cache_ps_ps_prot.result'' mysql-test/t/grant_cache_no_prot.test: Variant of the test grant_cache to be run without any "--<whatever>-protocol" mysql-test/t/grant_cache_ps_prot.test: Variant of the test grant_cache to be run with "--ps-protocol" only mysql-test/t/query_cache_ps_no_prot.test: Variant of the test query_cache_sql_prepare to be run without any "--<whatever>-protocol" mysql-test/t/query_cache_ps_ps_prot.test: Variant of the test query_cache_sql_prepare to be run with "--ps-protocol" only
2007-05-24 22:13:49 +02:00
----- establish connection root -----
show grants for current_user;
Grants for root@localhost
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION
show grants;
Grants for root@localhost
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION
create database if not exists mysqltest;
create table mysqltest.t1 (a int,b int,c int);
create table mysqltest.t2 (a int,b int,c int);
insert into mysqltest.t1 values (1,1,1),(2,2,2);
insert into mysqltest.t2 values (3,3,3);
create table test.t1 (a char (10));
insert into test.t1 values ("test.t1");
select * from t1;
a
test.t1
This changeset belongs to the fix of Bug#735 Prepared Statements: there is no support for Query Cache - Create "--ps-protocol" and no "--<whatever>-protocol" variants of the former tests t/grant_cache.test and t/query_cache_sql_prepare.test. - Some additional subtest and fixes of bugs - Minor improvements mysql-test/include/grant_cache.inc: - Rename mysql-test/t/grant_cache.test to include/grant_cache.inc - Toplevel scripts running variants of this test are t/grant_cache_ps_prot.test (runs only with "--ps-protocol") t/grant_cache_no_prot.test (skipped if any protocol is assigned) - Modifications to include/grant_cache.inc: - Minor improvements like replace --error <number> by --error <name> - enable that some subtests are run with "--ps-protocol" mysql-test/include/query_cache_sql_prepare.inc: - Rename t/query_cache_sql_prepare.test to include/query_cache_sql_prepare.inc - Toplevel scripts running variants of this test are query_cache_ps_ps_prot.test (skipped if other protocol than --ps-protocol is used.) query_cache_ps_no_prot.test (skipped if --<whatever>-protocol is used) - Modifications to include/query_cache_sql_prepare.inc: - Minor improvements like add drop table - Add tests checking that - another connection gets the same amount of QC hits - statements running via ps-protocol do not hit QC results of preceding sql EXECUTEs mysql-test/r/grant_cache_no_prot.result: Updated result mysql-test/r/query_cache_ps_no_prot.result: Updated result tests/mysql_client_test.c: - correct wrong sized "for" loop - add some missing tests of query cache hit numbers mysql-test/r/grant_cache_ps_prot.result: New BitKeeper file ``mysql-test/r/grant_cache_ps_prot.result'' mysql-test/r/query_cache_ps_ps_prot.result: New BitKeeper file ``mysql-test/r/query_cache_ps_ps_prot.result'' mysql-test/t/grant_cache_no_prot.test: Variant of the test grant_cache to be run without any "--<whatever>-protocol" mysql-test/t/grant_cache_ps_prot.test: Variant of the test grant_cache to be run with "--ps-protocol" only mysql-test/t/query_cache_ps_no_prot.test: Variant of the test query_cache_sql_prepare to be run without any "--<whatever>-protocol" mysql-test/t/query_cache_ps_ps_prot.test: Variant of the test query_cache_sql_prepare to be run with "--ps-protocol" only
2007-05-24 22:13:49 +02:00
----- establish connection root2 -----
select * from t1;
a b c
1 1 1
2 2 2
select a from t1;
a
1
2
select c from t1;
c
1
2
select * from t2;
a b c
3 3 3
select * from mysqltest.t1,test.t1;
a b c a
1 1 1 test.t1
2 2 2 test.t1
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 6
show status like "Qcache_hits%";
Variable_name Value
Qcache_hits 0
grant SELECT on mysqltest.* to mysqltest_1@localhost;
grant SELECT on mysqltest.t1 to mysqltest_2@localhost;
grant SELECT on test.t1 to mysqltest_2@localhost;
grant SELECT(a) on mysqltest.t1 to mysqltest_3@localhost;
This changeset belongs to the fix of Bug#735 Prepared Statements: there is no support for Query Cache - Create "--ps-protocol" and no "--<whatever>-protocol" variants of the former tests t/grant_cache.test and t/query_cache_sql_prepare.test. - Some additional subtest and fixes of bugs - Minor improvements mysql-test/include/grant_cache.inc: - Rename mysql-test/t/grant_cache.test to include/grant_cache.inc - Toplevel scripts running variants of this test are t/grant_cache_ps_prot.test (runs only with "--ps-protocol") t/grant_cache_no_prot.test (skipped if any protocol is assigned) - Modifications to include/grant_cache.inc: - Minor improvements like replace --error <number> by --error <name> - enable that some subtests are run with "--ps-protocol" mysql-test/include/query_cache_sql_prepare.inc: - Rename t/query_cache_sql_prepare.test to include/query_cache_sql_prepare.inc - Toplevel scripts running variants of this test are query_cache_ps_ps_prot.test (skipped if other protocol than --ps-protocol is used.) query_cache_ps_no_prot.test (skipped if --<whatever>-protocol is used) - Modifications to include/query_cache_sql_prepare.inc: - Minor improvements like add drop table - Add tests checking that - another connection gets the same amount of QC hits - statements running via ps-protocol do not hit QC results of preceding sql EXECUTEs mysql-test/r/grant_cache_no_prot.result: Updated result mysql-test/r/query_cache_ps_no_prot.result: Updated result tests/mysql_client_test.c: - correct wrong sized "for" loop - add some missing tests of query cache hit numbers mysql-test/r/grant_cache_ps_prot.result: New BitKeeper file ``mysql-test/r/grant_cache_ps_prot.result'' mysql-test/r/query_cache_ps_ps_prot.result: New BitKeeper file ``mysql-test/r/query_cache_ps_ps_prot.result'' mysql-test/t/grant_cache_no_prot.test: Variant of the test grant_cache to be run without any "--<whatever>-protocol" mysql-test/t/grant_cache_ps_prot.test: Variant of the test grant_cache to be run with "--ps-protocol" only mysql-test/t/query_cache_ps_no_prot.test: Variant of the test query_cache_sql_prepare to be run without any "--<whatever>-protocol" mysql-test/t/query_cache_ps_ps_prot.test: Variant of the test query_cache_sql_prepare to be run with "--ps-protocol" only
2007-05-24 22:13:49 +02:00
----- establish connection user1 (user=mysqltest_1) -----
show grants for current_user();
Grants for mysqltest_1@localhost
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 6
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 0
show status like "Qcache_not_cached";
Variable_name Value
SHOW STATUS does not anymore change local status variables (except com_show_status). Global status variables are still updated. SHOW STATUS are not anymore put in slow query log because of no index usage. Implemntation done by removing orig_sql_command and moving logic of SHOW STATUS to mysql_excute_command() This simplifies code and allows us to remove some if statements all over the code. Upgraded uc_update_queries[] to sql_command_flags and added more bitmaps to better categorize commands. This allowed some overall simplifaction when testing sql_command. Fixes bugs: Bug#10210: running SHOW STATUS increments counters it shouldn't Bug#19764: SHOW commands end up in the slow log as table scans mysql-test/r/grant_cache.result: Fixed results after SHOW STATUS doesn't anymore affect status variables mysql-test/r/information_schema.result: Added extra test to cover more code mysql-test/r/query_cache.result: Remove resuts from previous tests mysql-test/r/status.result: Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables. (Bug#10210) mysql-test/r/temp_table.result: Fixed results after SHOW STATUS doesn't anymore affect status variables mysql-test/r/union.result: Fixed results after SHOW STATUS is not logged to slow query log (Bug#19764) mysql-test/t/events_microsec.test: Disable warnings at init mysql-test/t/information_schema.test: Added extra test to cover more code mysql-test/t/query_cache.test: Remove resuts from previous tests mysql-test/t/status.test: Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables. (Bug #10210) sql/mysql_priv.h: Added 'sql_command_flags' sql/sql_class.cc: New function add_diff_to_status(), used to update global status variables when using SHOW STATUS sql/sql_class.h: New function 'fill_information_schema_tables()' (One could not anymore use fill_derived_tables() for this as only_view_structures() is not relevant for information schema tables) Added defines for bit flags in sql_command_flags[] sql/sql_lex.cc: Remove orig_sql_command sql/sql_lex.h: Remove orig_sql_command sql/sql_parse.cc: Rename uc_update_queries -> sql_command_flags. Enhanced 'sql_command_flags' to better classify SQL commands uc_update_queries[] != 0 is changed to (sql_command_flags[] & CF_CHANGES_DATA) lex->orig_sql_command == SQLCOM_END is changed to (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0) Simplify incrementing of thd->status_var.com_stat[] as we don't have to do special handling for SHOW commands. Split SQLCOM_SELECT handling in mysql_execute_command() to a separate function. Added special handling of SHOW STATUS commands in mysql_execute_command() and call common SQLCOM_SELECT handling. These changes allows us to easily fix that we save and restore status variables during execution of a SHOW STATUS command. Don't log SHOW STATUS commands to slow query log. This fixes Bug#10210 and Bug#19764 without adding additional 'if' code. (The new code is faster than the original as we now have fewer if's than before) sql/sql_prepare.cc: Clean up prepare-check handling of SQLCOM commands by using sql_command_flags[] This simplifes code and ensures that code works even if someone forgets to put a new status commands into the switch statement. sql/sql_select.cc: Remove special handling of SHOW STATUS. (This is now done in SQLCOM_SHOW_STATUS part in mysql_execute_command()) sql/sql_show.cc: Remove orig_sql_command Only change sql_command during 'open_normal_and_derived_tables()' (for views) and not for the full duration of generating data. Changed 'show status' to use thd->initial_status_var to ensure that the current statement is not affecting the to-be-used values. Use thd->fill_information_schema_tables() instead of 'thd->fill_derived_tables()' as the later wrongly checks the value of sql_command. sql/sql_yacc.yy: Remove usage of orig_sql_command. One side effect of this is that we need to test for cursors if the current command is a SELECT or a SHOW command. sql/structs.h: Updated comment
2006-06-20 12:20:32 +02:00
Qcache_not_cached 0
select "user1";
user1
user1
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 6
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 0
show status like "Qcache_not_cached";
Variable_name Value
SHOW STATUS does not anymore change local status variables (except com_show_status). Global status variables are still updated. SHOW STATUS are not anymore put in slow query log because of no index usage. Implemntation done by removing orig_sql_command and moving logic of SHOW STATUS to mysql_excute_command() This simplifies code and allows us to remove some if statements all over the code. Upgraded uc_update_queries[] to sql_command_flags and added more bitmaps to better categorize commands. This allowed some overall simplifaction when testing sql_command. Fixes bugs: Bug#10210: running SHOW STATUS increments counters it shouldn't Bug#19764: SHOW commands end up in the slow log as table scans mysql-test/r/grant_cache.result: Fixed results after SHOW STATUS doesn't anymore affect status variables mysql-test/r/information_schema.result: Added extra test to cover more code mysql-test/r/query_cache.result: Remove resuts from previous tests mysql-test/r/status.result: Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables. (Bug#10210) mysql-test/r/temp_table.result: Fixed results after SHOW STATUS doesn't anymore affect status variables mysql-test/r/union.result: Fixed results after SHOW STATUS is not logged to slow query log (Bug#19764) mysql-test/t/events_microsec.test: Disable warnings at init mysql-test/t/information_schema.test: Added extra test to cover more code mysql-test/t/query_cache.test: Remove resuts from previous tests mysql-test/t/status.test: Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables. (Bug #10210) sql/mysql_priv.h: Added 'sql_command_flags' sql/sql_class.cc: New function add_diff_to_status(), used to update global status variables when using SHOW STATUS sql/sql_class.h: New function 'fill_information_schema_tables()' (One could not anymore use fill_derived_tables() for this as only_view_structures() is not relevant for information schema tables) Added defines for bit flags in sql_command_flags[] sql/sql_lex.cc: Remove orig_sql_command sql/sql_lex.h: Remove orig_sql_command sql/sql_parse.cc: Rename uc_update_queries -> sql_command_flags. Enhanced 'sql_command_flags' to better classify SQL commands uc_update_queries[] != 0 is changed to (sql_command_flags[] & CF_CHANGES_DATA) lex->orig_sql_command == SQLCOM_END is changed to (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0) Simplify incrementing of thd->status_var.com_stat[] as we don't have to do special handling for SHOW commands. Split SQLCOM_SELECT handling in mysql_execute_command() to a separate function. Added special handling of SHOW STATUS commands in mysql_execute_command() and call common SQLCOM_SELECT handling. These changes allows us to easily fix that we save and restore status variables during execution of a SHOW STATUS command. Don't log SHOW STATUS commands to slow query log. This fixes Bug#10210 and Bug#19764 without adding additional 'if' code. (The new code is faster than the original as we now have fewer if's than before) sql/sql_prepare.cc: Clean up prepare-check handling of SQLCOM commands by using sql_command_flags[] This simplifes code and ensures that code works even if someone forgets to put a new status commands into the switch statement. sql/sql_select.cc: Remove special handling of SHOW STATUS. (This is now done in SQLCOM_SHOW_STATUS part in mysql_execute_command()) sql/sql_show.cc: Remove orig_sql_command Only change sql_command during 'open_normal_and_derived_tables()' (for views) and not for the full duration of generating data. Changed 'show status' to use thd->initial_status_var to ensure that the current statement is not affecting the to-be-used values. Use thd->fill_information_schema_tables() instead of 'thd->fill_derived_tables()' as the later wrongly checks the value of sql_command. sql/sql_yacc.yy: Remove usage of orig_sql_command. One side effect of this is that we need to test for cursors if the current command is a SELECT or a SHOW command. sql/structs.h: Updated comment
2006-06-20 12:20:32 +02:00
Qcache_not_cached 1
select * from t1;
a b c
1 1 1
2 2 2
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 6
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 1
show status like "Qcache_not_cached";
Variable_name Value
SHOW STATUS does not anymore change local status variables (except com_show_status). Global status variables are still updated. SHOW STATUS are not anymore put in slow query log because of no index usage. Implemntation done by removing orig_sql_command and moving logic of SHOW STATUS to mysql_excute_command() This simplifies code and allows us to remove some if statements all over the code. Upgraded uc_update_queries[] to sql_command_flags and added more bitmaps to better categorize commands. This allowed some overall simplifaction when testing sql_command. Fixes bugs: Bug#10210: running SHOW STATUS increments counters it shouldn't Bug#19764: SHOW commands end up in the slow log as table scans mysql-test/r/grant_cache.result: Fixed results after SHOW STATUS doesn't anymore affect status variables mysql-test/r/information_schema.result: Added extra test to cover more code mysql-test/r/query_cache.result: Remove resuts from previous tests mysql-test/r/status.result: Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables. (Bug#10210) mysql-test/r/temp_table.result: Fixed results after SHOW STATUS doesn't anymore affect status variables mysql-test/r/union.result: Fixed results after SHOW STATUS is not logged to slow query log (Bug#19764) mysql-test/t/events_microsec.test: Disable warnings at init mysql-test/t/information_schema.test: Added extra test to cover more code mysql-test/t/query_cache.test: Remove resuts from previous tests mysql-test/t/status.test: Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables. (Bug #10210) sql/mysql_priv.h: Added 'sql_command_flags' sql/sql_class.cc: New function add_diff_to_status(), used to update global status variables when using SHOW STATUS sql/sql_class.h: New function 'fill_information_schema_tables()' (One could not anymore use fill_derived_tables() for this as only_view_structures() is not relevant for information schema tables) Added defines for bit flags in sql_command_flags[] sql/sql_lex.cc: Remove orig_sql_command sql/sql_lex.h: Remove orig_sql_command sql/sql_parse.cc: Rename uc_update_queries -> sql_command_flags. Enhanced 'sql_command_flags' to better classify SQL commands uc_update_queries[] != 0 is changed to (sql_command_flags[] & CF_CHANGES_DATA) lex->orig_sql_command == SQLCOM_END is changed to (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0) Simplify incrementing of thd->status_var.com_stat[] as we don't have to do special handling for SHOW commands. Split SQLCOM_SELECT handling in mysql_execute_command() to a separate function. Added special handling of SHOW STATUS commands in mysql_execute_command() and call common SQLCOM_SELECT handling. These changes allows us to easily fix that we save and restore status variables during execution of a SHOW STATUS command. Don't log SHOW STATUS commands to slow query log. This fixes Bug#10210 and Bug#19764 without adding additional 'if' code. (The new code is faster than the original as we now have fewer if's than before) sql/sql_prepare.cc: Clean up prepare-check handling of SQLCOM commands by using sql_command_flags[] This simplifes code and ensures that code works even if someone forgets to put a new status commands into the switch statement. sql/sql_select.cc: Remove special handling of SHOW STATUS. (This is now done in SQLCOM_SHOW_STATUS part in mysql_execute_command()) sql/sql_show.cc: Remove orig_sql_command Only change sql_command during 'open_normal_and_derived_tables()' (for views) and not for the full duration of generating data. Changed 'show status' to use thd->initial_status_var to ensure that the current statement is not affecting the to-be-used values. Use thd->fill_information_schema_tables() instead of 'thd->fill_derived_tables()' as the later wrongly checks the value of sql_command. sql/sql_yacc.yy: Remove usage of orig_sql_command. One side effect of this is that we need to test for cursors if the current command is a SELECT or a SHOW command. sql/structs.h: Updated comment
2006-06-20 12:20:32 +02:00
Qcache_not_cached 1
select a from t1 ;
a
1
2
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 6
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 2
show status like "Qcache_not_cached";
Variable_name Value
SHOW STATUS does not anymore change local status variables (except com_show_status). Global status variables are still updated. SHOW STATUS are not anymore put in slow query log because of no index usage. Implemntation done by removing orig_sql_command and moving logic of SHOW STATUS to mysql_excute_command() This simplifies code and allows us to remove some if statements all over the code. Upgraded uc_update_queries[] to sql_command_flags and added more bitmaps to better categorize commands. This allowed some overall simplifaction when testing sql_command. Fixes bugs: Bug#10210: running SHOW STATUS increments counters it shouldn't Bug#19764: SHOW commands end up in the slow log as table scans mysql-test/r/grant_cache.result: Fixed results after SHOW STATUS doesn't anymore affect status variables mysql-test/r/information_schema.result: Added extra test to cover more code mysql-test/r/query_cache.result: Remove resuts from previous tests mysql-test/r/status.result: Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables. (Bug#10210) mysql-test/r/temp_table.result: Fixed results after SHOW STATUS doesn't anymore affect status variables mysql-test/r/union.result: Fixed results after SHOW STATUS is not logged to slow query log (Bug#19764) mysql-test/t/events_microsec.test: Disable warnings at init mysql-test/t/information_schema.test: Added extra test to cover more code mysql-test/t/query_cache.test: Remove resuts from previous tests mysql-test/t/status.test: Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables. (Bug #10210) sql/mysql_priv.h: Added 'sql_command_flags' sql/sql_class.cc: New function add_diff_to_status(), used to update global status variables when using SHOW STATUS sql/sql_class.h: New function 'fill_information_schema_tables()' (One could not anymore use fill_derived_tables() for this as only_view_structures() is not relevant for information schema tables) Added defines for bit flags in sql_command_flags[] sql/sql_lex.cc: Remove orig_sql_command sql/sql_lex.h: Remove orig_sql_command sql/sql_parse.cc: Rename uc_update_queries -> sql_command_flags. Enhanced 'sql_command_flags' to better classify SQL commands uc_update_queries[] != 0 is changed to (sql_command_flags[] & CF_CHANGES_DATA) lex->orig_sql_command == SQLCOM_END is changed to (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0) Simplify incrementing of thd->status_var.com_stat[] as we don't have to do special handling for SHOW commands. Split SQLCOM_SELECT handling in mysql_execute_command() to a separate function. Added special handling of SHOW STATUS commands in mysql_execute_command() and call common SQLCOM_SELECT handling. These changes allows us to easily fix that we save and restore status variables during execution of a SHOW STATUS command. Don't log SHOW STATUS commands to slow query log. This fixes Bug#10210 and Bug#19764 without adding additional 'if' code. (The new code is faster than the original as we now have fewer if's than before) sql/sql_prepare.cc: Clean up prepare-check handling of SQLCOM commands by using sql_command_flags[] This simplifes code and ensures that code works even if someone forgets to put a new status commands into the switch statement. sql/sql_select.cc: Remove special handling of SHOW STATUS. (This is now done in SQLCOM_SHOW_STATUS part in mysql_execute_command()) sql/sql_show.cc: Remove orig_sql_command Only change sql_command during 'open_normal_and_derived_tables()' (for views) and not for the full duration of generating data. Changed 'show status' to use thd->initial_status_var to ensure that the current statement is not affecting the to-be-used values. Use thd->fill_information_schema_tables() instead of 'thd->fill_derived_tables()' as the later wrongly checks the value of sql_command. sql/sql_yacc.yy: Remove usage of orig_sql_command. One side effect of this is that we need to test for cursors if the current command is a SELECT or a SHOW command. sql/structs.h: Updated comment
2006-06-20 12:20:32 +02:00
Qcache_not_cached 1
select c from t1;
c
1
2
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 6
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 3
show status like "Qcache_not_cached";
Variable_name Value
SHOW STATUS does not anymore change local status variables (except com_show_status). Global status variables are still updated. SHOW STATUS are not anymore put in slow query log because of no index usage. Implemntation done by removing orig_sql_command and moving logic of SHOW STATUS to mysql_excute_command() This simplifies code and allows us to remove some if statements all over the code. Upgraded uc_update_queries[] to sql_command_flags and added more bitmaps to better categorize commands. This allowed some overall simplifaction when testing sql_command. Fixes bugs: Bug#10210: running SHOW STATUS increments counters it shouldn't Bug#19764: SHOW commands end up in the slow log as table scans mysql-test/r/grant_cache.result: Fixed results after SHOW STATUS doesn't anymore affect status variables mysql-test/r/information_schema.result: Added extra test to cover more code mysql-test/r/query_cache.result: Remove resuts from previous tests mysql-test/r/status.result: Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables. (Bug#10210) mysql-test/r/temp_table.result: Fixed results after SHOW STATUS doesn't anymore affect status variables mysql-test/r/union.result: Fixed results after SHOW STATUS is not logged to slow query log (Bug#19764) mysql-test/t/events_microsec.test: Disable warnings at init mysql-test/t/information_schema.test: Added extra test to cover more code mysql-test/t/query_cache.test: Remove resuts from previous tests mysql-test/t/status.test: Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables. (Bug #10210) sql/mysql_priv.h: Added 'sql_command_flags' sql/sql_class.cc: New function add_diff_to_status(), used to update global status variables when using SHOW STATUS sql/sql_class.h: New function 'fill_information_schema_tables()' (One could not anymore use fill_derived_tables() for this as only_view_structures() is not relevant for information schema tables) Added defines for bit flags in sql_command_flags[] sql/sql_lex.cc: Remove orig_sql_command sql/sql_lex.h: Remove orig_sql_command sql/sql_parse.cc: Rename uc_update_queries -> sql_command_flags. Enhanced 'sql_command_flags' to better classify SQL commands uc_update_queries[] != 0 is changed to (sql_command_flags[] & CF_CHANGES_DATA) lex->orig_sql_command == SQLCOM_END is changed to (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0) Simplify incrementing of thd->status_var.com_stat[] as we don't have to do special handling for SHOW commands. Split SQLCOM_SELECT handling in mysql_execute_command() to a separate function. Added special handling of SHOW STATUS commands in mysql_execute_command() and call common SQLCOM_SELECT handling. These changes allows us to easily fix that we save and restore status variables during execution of a SHOW STATUS command. Don't log SHOW STATUS commands to slow query log. This fixes Bug#10210 and Bug#19764 without adding additional 'if' code. (The new code is faster than the original as we now have fewer if's than before) sql/sql_prepare.cc: Clean up prepare-check handling of SQLCOM commands by using sql_command_flags[] This simplifes code and ensures that code works even if someone forgets to put a new status commands into the switch statement. sql/sql_select.cc: Remove special handling of SHOW STATUS. (This is now done in SQLCOM_SHOW_STATUS part in mysql_execute_command()) sql/sql_show.cc: Remove orig_sql_command Only change sql_command during 'open_normal_and_derived_tables()' (for views) and not for the full duration of generating data. Changed 'show status' to use thd->initial_status_var to ensure that the current statement is not affecting the to-be-used values. Use thd->fill_information_schema_tables() instead of 'thd->fill_derived_tables()' as the later wrongly checks the value of sql_command. sql/sql_yacc.yy: Remove usage of orig_sql_command. One side effect of this is that we need to test for cursors if the current command is a SELECT or a SHOW command. sql/structs.h: Updated comment
2006-06-20 12:20:32 +02:00
Qcache_not_cached 1
This changeset belongs to the fix of Bug#735 Prepared Statements: there is no support for Query Cache - Create "--ps-protocol" and no "--<whatever>-protocol" variants of the former tests t/grant_cache.test and t/query_cache_sql_prepare.test. - Some additional subtest and fixes of bugs - Minor improvements mysql-test/include/grant_cache.inc: - Rename mysql-test/t/grant_cache.test to include/grant_cache.inc - Toplevel scripts running variants of this test are t/grant_cache_ps_prot.test (runs only with "--ps-protocol") t/grant_cache_no_prot.test (skipped if any protocol is assigned) - Modifications to include/grant_cache.inc: - Minor improvements like replace --error <number> by --error <name> - enable that some subtests are run with "--ps-protocol" mysql-test/include/query_cache_sql_prepare.inc: - Rename t/query_cache_sql_prepare.test to include/query_cache_sql_prepare.inc - Toplevel scripts running variants of this test are query_cache_ps_ps_prot.test (skipped if other protocol than --ps-protocol is used.) query_cache_ps_no_prot.test (skipped if --<whatever>-protocol is used) - Modifications to include/query_cache_sql_prepare.inc: - Minor improvements like add drop table - Add tests checking that - another connection gets the same amount of QC hits - statements running via ps-protocol do not hit QC results of preceding sql EXECUTEs mysql-test/r/grant_cache_no_prot.result: Updated result mysql-test/r/query_cache_ps_no_prot.result: Updated result tests/mysql_client_test.c: - correct wrong sized "for" loop - add some missing tests of query cache hit numbers mysql-test/r/grant_cache_ps_prot.result: New BitKeeper file ``mysql-test/r/grant_cache_ps_prot.result'' mysql-test/r/query_cache_ps_ps_prot.result: New BitKeeper file ``mysql-test/r/query_cache_ps_ps_prot.result'' mysql-test/t/grant_cache_no_prot.test: Variant of the test grant_cache to be run without any "--<whatever>-protocol" mysql-test/t/grant_cache_ps_prot.test: Variant of the test grant_cache to be run with "--ps-protocol" only mysql-test/t/query_cache_ps_no_prot.test: Variant of the test query_cache_sql_prepare to be run without any "--<whatever>-protocol" mysql-test/t/query_cache_ps_ps_prot.test: Variant of the test query_cache_sql_prepare to be run with "--ps-protocol" only
2007-05-24 22:13:49 +02:00
----- establish connection unkuser (user=unkuser) -----
show grants for current_user();
Grants for @localhost
GRANT USAGE ON *.* TO ''@'localhost'
This changeset belongs to the fix of Bug#735 Prepared Statements: there is no support for Query Cache - Create "--ps-protocol" and no "--<whatever>-protocol" variants of the former tests t/grant_cache.test and t/query_cache_sql_prepare.test. - Some additional subtest and fixes of bugs - Minor improvements mysql-test/include/grant_cache.inc: - Rename mysql-test/t/grant_cache.test to include/grant_cache.inc - Toplevel scripts running variants of this test are t/grant_cache_ps_prot.test (runs only with "--ps-protocol") t/grant_cache_no_prot.test (skipped if any protocol is assigned) - Modifications to include/grant_cache.inc: - Minor improvements like replace --error <number> by --error <name> - enable that some subtests are run with "--ps-protocol" mysql-test/include/query_cache_sql_prepare.inc: - Rename t/query_cache_sql_prepare.test to include/query_cache_sql_prepare.inc - Toplevel scripts running variants of this test are query_cache_ps_ps_prot.test (skipped if other protocol than --ps-protocol is used.) query_cache_ps_no_prot.test (skipped if --<whatever>-protocol is used) - Modifications to include/query_cache_sql_prepare.inc: - Minor improvements like add drop table - Add tests checking that - another connection gets the same amount of QC hits - statements running via ps-protocol do not hit QC results of preceding sql EXECUTEs mysql-test/r/grant_cache_no_prot.result: Updated result mysql-test/r/query_cache_ps_no_prot.result: Updated result tests/mysql_client_test.c: - correct wrong sized "for" loop - add some missing tests of query cache hit numbers mysql-test/r/grant_cache_ps_prot.result: New BitKeeper file ``mysql-test/r/grant_cache_ps_prot.result'' mysql-test/r/query_cache_ps_ps_prot.result: New BitKeeper file ``mysql-test/r/query_cache_ps_ps_prot.result'' mysql-test/t/grant_cache_no_prot.test: Variant of the test grant_cache to be run without any "--<whatever>-protocol" mysql-test/t/grant_cache_ps_prot.test: Variant of the test grant_cache to be run with "--ps-protocol" only mysql-test/t/query_cache_ps_no_prot.test: Variant of the test query_cache_sql_prepare to be run without any "--<whatever>-protocol" mysql-test/t/query_cache_ps_ps_prot.test: Variant of the test query_cache_sql_prepare to be run with "--ps-protocol" only
2007-05-24 22:13:49 +02:00
----- establish connection user2 (user=mysqltest_2) -----
select "user2";
user2
user2
select * from t1;
a b c
1 1 1
2 2 2
select a from t1;
a
1
2
select c from t1;
c
1
2
select * from mysqltest.t1,test.t1;
a b c a
1 1 1 test.t1
2 2 2 test.t1
select * from t2;
ERROR 42000: SELECT command denied to user 'mysqltest_2'@'localhost' for table 't2'
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 6
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 7
show status like "Qcache_not_cached";
Variable_name Value
SHOW STATUS does not anymore change local status variables (except com_show_status). Global status variables are still updated. SHOW STATUS are not anymore put in slow query log because of no index usage. Implemntation done by removing orig_sql_command and moving logic of SHOW STATUS to mysql_excute_command() This simplifies code and allows us to remove some if statements all over the code. Upgraded uc_update_queries[] to sql_command_flags and added more bitmaps to better categorize commands. This allowed some overall simplifaction when testing sql_command. Fixes bugs: Bug#10210: running SHOW STATUS increments counters it shouldn't Bug#19764: SHOW commands end up in the slow log as table scans mysql-test/r/grant_cache.result: Fixed results after SHOW STATUS doesn't anymore affect status variables mysql-test/r/information_schema.result: Added extra test to cover more code mysql-test/r/query_cache.result: Remove resuts from previous tests mysql-test/r/status.result: Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables. (Bug#10210) mysql-test/r/temp_table.result: Fixed results after SHOW STATUS doesn't anymore affect status variables mysql-test/r/union.result: Fixed results after SHOW STATUS is not logged to slow query log (Bug#19764) mysql-test/t/events_microsec.test: Disable warnings at init mysql-test/t/information_schema.test: Added extra test to cover more code mysql-test/t/query_cache.test: Remove resuts from previous tests mysql-test/t/status.test: Added more tests for testing of last_query_cost and how SHOW STATUS affects status variables. (Bug #10210) sql/mysql_priv.h: Added 'sql_command_flags' sql/sql_class.cc: New function add_diff_to_status(), used to update global status variables when using SHOW STATUS sql/sql_class.h: New function 'fill_information_schema_tables()' (One could not anymore use fill_derived_tables() for this as only_view_structures() is not relevant for information schema tables) Added defines for bit flags in sql_command_flags[] sql/sql_lex.cc: Remove orig_sql_command sql/sql_lex.h: Remove orig_sql_command sql/sql_parse.cc: Rename uc_update_queries -> sql_command_flags. Enhanced 'sql_command_flags' to better classify SQL commands uc_update_queries[] != 0 is changed to (sql_command_flags[] & CF_CHANGES_DATA) lex->orig_sql_command == SQLCOM_END is changed to (sql_command_flags[lex->sql_command] & CF_STATUS_COMMAND) == 0) Simplify incrementing of thd->status_var.com_stat[] as we don't have to do special handling for SHOW commands. Split SQLCOM_SELECT handling in mysql_execute_command() to a separate function. Added special handling of SHOW STATUS commands in mysql_execute_command() and call common SQLCOM_SELECT handling. These changes allows us to easily fix that we save and restore status variables during execution of a SHOW STATUS command. Don't log SHOW STATUS commands to slow query log. This fixes Bug#10210 and Bug#19764 without adding additional 'if' code. (The new code is faster than the original as we now have fewer if's than before) sql/sql_prepare.cc: Clean up prepare-check handling of SQLCOM commands by using sql_command_flags[] This simplifes code and ensures that code works even if someone forgets to put a new status commands into the switch statement. sql/sql_select.cc: Remove special handling of SHOW STATUS. (This is now done in SQLCOM_SHOW_STATUS part in mysql_execute_command()) sql/sql_show.cc: Remove orig_sql_command Only change sql_command during 'open_normal_and_derived_tables()' (for views) and not for the full duration of generating data. Changed 'show status' to use thd->initial_status_var to ensure that the current statement is not affecting the to-be-used values. Use thd->fill_information_schema_tables() instead of 'thd->fill_derived_tables()' as the later wrongly checks the value of sql_command. sql/sql_yacc.yy: Remove usage of orig_sql_command. One side effect of this is that we need to test for cursors if the current command is a SELECT or a SHOW command. sql/structs.h: Updated comment
2006-06-20 12:20:32 +02:00
Qcache_not_cached 2
This changeset belongs to the fix of Bug#735 Prepared Statements: there is no support for Query Cache - Create "--ps-protocol" and no "--<whatever>-protocol" variants of the former tests t/grant_cache.test and t/query_cache_sql_prepare.test. - Some additional subtest and fixes of bugs - Minor improvements mysql-test/include/grant_cache.inc: - Rename mysql-test/t/grant_cache.test to include/grant_cache.inc - Toplevel scripts running variants of this test are t/grant_cache_ps_prot.test (runs only with "--ps-protocol") t/grant_cache_no_prot.test (skipped if any protocol is assigned) - Modifications to include/grant_cache.inc: - Minor improvements like replace --error <number> by --error <name> - enable that some subtests are run with "--ps-protocol" mysql-test/include/query_cache_sql_prepare.inc: - Rename t/query_cache_sql_prepare.test to include/query_cache_sql_prepare.inc - Toplevel scripts running variants of this test are query_cache_ps_ps_prot.test (skipped if other protocol than --ps-protocol is used.) query_cache_ps_no_prot.test (skipped if --<whatever>-protocol is used) - Modifications to include/query_cache_sql_prepare.inc: - Minor improvements like add drop table - Add tests checking that - another connection gets the same amount of QC hits - statements running via ps-protocol do not hit QC results of preceding sql EXECUTEs mysql-test/r/grant_cache_no_prot.result: Updated result mysql-test/r/query_cache_ps_no_prot.result: Updated result tests/mysql_client_test.c: - correct wrong sized "for" loop - add some missing tests of query cache hit numbers mysql-test/r/grant_cache_ps_prot.result: New BitKeeper file ``mysql-test/r/grant_cache_ps_prot.result'' mysql-test/r/query_cache_ps_ps_prot.result: New BitKeeper file ``mysql-test/r/query_cache_ps_ps_prot.result'' mysql-test/t/grant_cache_no_prot.test: Variant of the test grant_cache to be run without any "--<whatever>-protocol" mysql-test/t/grant_cache_ps_prot.test: Variant of the test grant_cache to be run with "--ps-protocol" only mysql-test/t/query_cache_ps_no_prot.test: Variant of the test query_cache_sql_prepare to be run without any "--<whatever>-protocol" mysql-test/t/query_cache_ps_ps_prot.test: Variant of the test query_cache_sql_prepare to be run with "--ps-protocol" only
2007-05-24 22:13:49 +02:00
----- establish connection user3 (user=mysqltest_3) -----
select "user3";
user3
user3
select * from t1;
Bug#36086: SELECT * from views don't check column grants This patch also fixes bugs 36963 and 35600. - In many places a view was confused with an anonymous derived table, i.e. access checking was skipped. Fixed by introducing a predicate to tell the difference between named and anonymous derived tables. - When inserting fields for "SELECT * ", there was no distinction between base tables and views, where one should be made. View privileges are checked elsewhere. mysql-test/include/grant_cache.inc: Bug#36086: Changed test case. mysql-test/r/grant2.result: Bug#36086: Changed test result. mysql-test/r/grant_cache_no_prot.result: Bug#36086: Changed test result. mysql-test/r/grant_cache_ps_prot.result: Bug#36086: Changed test result. mysql-test/r/view_grant.result: Bug#36086: Test result. mysql-test/t/grant2.test: Bug#36086: Changed test case. mysql-test/t/view_grant.test: Bug#36086: Test case. sql/item.cc: Bug#36086: Replaced conditional with new methods. sql/sql_acl.cc: Bug no 35600: In mysql_table_grant: Replaced conditional with the new accessor method. In check_grant: - Changed the requirement table->derived != null to checking all anonymous derived tables. - Use of the accessor methods for getting object and database names. Bug#36086: In check_grant_all_columns: - Updated comment. This function is now called for views as well. - The error message should not disclose any column names unless the user has privilege to see all column names. - Changed names of Field_iterator_table_ref methods. sql/sql_base.cc: Bug no 36963: In insert_fields() - Commented. - We should call check_grant_all_columns() for views in this case. - Changed names of Field_iterator_table_ref methods. - We should not disclose column names in the error message when the user has no approprate privilege. sql/sql_cache.cc: Bug#36086: Replaced test with new predicate method. sql/sql_derived.cc: Bug#36086: commenting only. Updated and doxygenated comment for mysql_derived_prepare(). sql/sql_parse.cc: Bug no 35600: - In check_single_table_access: Due to the bug, check_grant would raise an error for a SHOW CREATE TABLE command for a TEMPTABLE view. It should in fact not be be invoked in this case. This table privilege is checked already. There is a test case for this in information_schema_db.test. - In check_access: replaced table->derived sql/table.cc: Bug#36086: - In TABLE_LIST::set_underlying_merge(): Commenting only. Doxygenated, corrected spelling, added. - Renamed table_name() and db_name() methods of Field_iterator_table_ref in order to be consistent with new methods in TABLE_LIST. sql/table.h: Bug#36086: - Commented GRANT_INFO. - Added a predicate is_anonymous_derived_table() to TABLE_LIST. - Added get_table_name() and get_db_name() to TABLE_LIST in order to hide the disparate representation of these properties.
2008-09-03 16:45:40 +02:00
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table 't1'
select a from t1;
a
1
2
select c from t1;
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'c' in table 't1'
select * from t2;
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table 't2'
select mysqltest.t1.c from test.t1,mysqltest.t1;
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'c' in table 't1'
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 6
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 7
show status like "Qcache_not_cached";
Variable_name Value
Qcache_not_cached 3
This changeset belongs to the fix of Bug#735 Prepared Statements: there is no support for Query Cache - Create "--ps-protocol" and no "--<whatever>-protocol" variants of the former tests t/grant_cache.test and t/query_cache_sql_prepare.test. - Some additional subtest and fixes of bugs - Minor improvements mysql-test/include/grant_cache.inc: - Rename mysql-test/t/grant_cache.test to include/grant_cache.inc - Toplevel scripts running variants of this test are t/grant_cache_ps_prot.test (runs only with "--ps-protocol") t/grant_cache_no_prot.test (skipped if any protocol is assigned) - Modifications to include/grant_cache.inc: - Minor improvements like replace --error <number> by --error <name> - enable that some subtests are run with "--ps-protocol" mysql-test/include/query_cache_sql_prepare.inc: - Rename t/query_cache_sql_prepare.test to include/query_cache_sql_prepare.inc - Toplevel scripts running variants of this test are query_cache_ps_ps_prot.test (skipped if other protocol than --ps-protocol is used.) query_cache_ps_no_prot.test (skipped if --<whatever>-protocol is used) - Modifications to include/query_cache_sql_prepare.inc: - Minor improvements like add drop table - Add tests checking that - another connection gets the same amount of QC hits - statements running via ps-protocol do not hit QC results of preceding sql EXECUTEs mysql-test/r/grant_cache_no_prot.result: Updated result mysql-test/r/query_cache_ps_no_prot.result: Updated result tests/mysql_client_test.c: - correct wrong sized "for" loop - add some missing tests of query cache hit numbers mysql-test/r/grant_cache_ps_prot.result: New BitKeeper file ``mysql-test/r/grant_cache_ps_prot.result'' mysql-test/r/query_cache_ps_ps_prot.result: New BitKeeper file ``mysql-test/r/query_cache_ps_ps_prot.result'' mysql-test/t/grant_cache_no_prot.test: Variant of the test grant_cache to be run without any "--<whatever>-protocol" mysql-test/t/grant_cache_ps_prot.test: Variant of the test grant_cache to be run with "--ps-protocol" only mysql-test/t/query_cache_ps_no_prot.test: Variant of the test query_cache_sql_prepare to be run without any "--<whatever>-protocol" mysql-test/t/query_cache_ps_ps_prot.test: Variant of the test query_cache_sql_prepare to be run with "--ps-protocol" only
2007-05-24 22:13:49 +02:00
----- establish connection user4 (user=mysqltest_1) -----
select "user4";
user4
user4
show grants;
Grants for mysqltest_1@localhost
GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost'
GRANT SELECT ON `mysqltest`.* TO 'mysqltest_1'@'localhost'
select a from t1;
ERROR 3D000: No database selected
select * from mysqltest.t1,test.t1;
a b c a
1 1 1 test.t1
2 2 2 test.t1
select a from mysqltest.t1;
a
1
2
select a from mysqltest.t1;
a
1
2
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 8
show status like "Qcache_hits";
Variable_name Value
Qcache_hits 8
show status like "Qcache_not_cached";
Variable_name Value
Qcache_not_cached 4
----- close connections -----
----- switch to connection default -----
set names binary;
delete from mysql.user where user in ("mysqltest_1","mysqltest_2","mysqltest_3");
delete from mysql.db where user in ("mysqltest_1","mysqltest_2","mysqltest_3");
delete from mysql.tables_priv where user in ("mysqltest_1","mysqltest_2","mysqltest_3");
delete from mysql.columns_priv where user in ("mysqltest_1","mysqltest_2","mysqltest_3");
flush privileges;
drop table test.t1,mysqltest.t1,mysqltest.t2;
drop database mysqltest;
set GLOBAL query_cache_size=default;