Commit a81116ee authored by joerg@trift-lap.fambruehe's avatar joerg@trift-lap.fambruehe

Merge jbruehe@bk-internal.mysql.com:/home/bk/mysql-5.1-target-5.1.22

into  trift-lap.fambruehe:/MySQL/M51/antony-5.1
parents 0f36ce8f 0b59871b
...@@ -1211,7 +1211,7 @@ TABLE_TYPE BASE TABLE ...@@ -1211,7 +1211,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 37
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -1232,7 +1232,7 @@ TABLE_TYPE BASE TABLE ...@@ -1232,7 +1232,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 424
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -1253,7 +1253,7 @@ TABLE_TYPE BASE TABLE ...@@ -1253,7 +1253,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 901
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -1274,7 +1274,7 @@ TABLE_TYPE BASE TABLE ...@@ -1274,7 +1274,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Dynamic ROW_FORMAT Dynamic
TABLE_ROWS 0 TABLE_ROWS 479
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -3241,14 +3241,14 @@ NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE ...@@ -3241,14 +3241,14 @@ NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE
NULL mysql event 0 mysql PRIMARY 1 db A NULL NULL NULL BTREE NULL mysql event 0 mysql PRIMARY 1 db A NULL NULL NULL BTREE
NULL mysql event 0 mysql PRIMARY 2 name A 0 NULL NULL BTREE NULL mysql event 0 mysql PRIMARY 2 name A 0 NULL NULL BTREE
NULL mysql func 0 mysql PRIMARY 1 name A 0 NULL NULL BTREE NULL mysql func 0 mysql PRIMARY 1 name A 0 NULL NULL BTREE
NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A 0 NULL NULL BTREE NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A 37 NULL NULL BTREE
NULL mysql help_category 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_category 0 mysql name 1 name A 37 NULL NULL BTREE
NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A 0 NULL NULL BTREE NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A 424 NULL NULL BTREE
NULL mysql help_keyword 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_keyword 0 mysql name 1 name A 424 NULL NULL BTREE
NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A NULL NULL NULL BTREE NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A NULL NULL NULL BTREE
NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A 0 NULL NULL BTREE NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A 901 NULL NULL BTREE
NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A 0 NULL NULL BTREE NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A 479 NULL NULL BTREE
NULL mysql help_topic 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_topic 0 mysql name 1 name A 479 NULL NULL BTREE
NULL mysql host 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE NULL mysql host 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE
NULL mysql host 0 mysql PRIMARY 2 Db A 0 NULL NULL BTREE NULL mysql host 0 mysql PRIMARY 2 Db A 0 NULL NULL BTREE
NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A 0 NULL NULL BTREE NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A 0 NULL NULL BTREE
...@@ -3481,7 +3481,7 @@ max_recs ...@@ -3481,7 +3481,7 @@ max_recs
45 45
select max(cardinality) from statistics; select max(cardinality) from statistics;
max(cardinality) max(cardinality)
393 901
select concat("View '", select concat("View '",
table_name, "' is associated with the database '", table_schema, "'.") table_name, "' is associated with the database '", table_schema, "'.")
AS "Who is Who for the Views" AS "Who is Who for the Views"
...@@ -4547,7 +4547,7 @@ TABLE_TYPE BASE TABLE ...@@ -4547,7 +4547,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 37
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -4568,7 +4568,7 @@ TABLE_TYPE BASE TABLE ...@@ -4568,7 +4568,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 424
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -4589,7 +4589,7 @@ TABLE_TYPE BASE TABLE ...@@ -4589,7 +4589,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 901
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -4610,7 +4610,7 @@ TABLE_TYPE BASE TABLE ...@@ -4610,7 +4610,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Dynamic ROW_FORMAT Dynamic
TABLE_ROWS 0 TABLE_ROWS 479
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -5826,7 +5826,7 @@ routine_definition ...@@ -5826,7 +5826,7 @@ routine_definition
select * from statistics group by index_name asc limit 0, 5; select * from statistics group by index_name asc limit 0, 5;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
NULL mysql procs_priv 1 mysql Grantor 1 Grantor A NULL NULL NULL BTREE NULL mysql procs_priv 1 mysql Grantor 1 Grantor A NULL NULL NULL BTREE
NULL mysql help_category 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_category 0 mysql name 1 name A 37 NULL NULL BTREE
NULL mysql columns_priv 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE NULL mysql columns_priv 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE
NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE
select concat(table_schema, ', ', table_name, ', ', view_definition) view_info select concat(table_schema, ', ', table_name, ', ', view_definition) view_info
...@@ -14347,10 +14347,10 @@ NULL mysql db BASE TABLE MyISAM 10 Fixed 3 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY- ...@@ -14347,10 +14347,10 @@ NULL mysql db BASE TABLE MyISAM 10 Fixed 3 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-
NULL mysql event BASE TABLE MyISAM 10 Dynamic 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL Events NULL mysql event BASE TABLE MyISAM 10 Dynamic 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL Events
NULL mysql func BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL User defined functions NULL mysql func BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL User defined functions
NULL mysql general_log BASE TABLE CSV 10 Dynamic 1 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL General log NULL mysql general_log BASE TABLE CSV 10 Dynamic 1 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL General log
NULL mysql help_category BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help categories NULL mysql help_category BASE TABLE MyISAM 10 Fixed 37 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help categories
NULL mysql help_keyword BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help keywords NULL mysql help_keyword BASE TABLE MyISAM 10 Fixed 424 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help keywords
NULL mysql help_relation BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL keyword-topic relation NULL mysql help_relation BASE TABLE MyISAM 10 Fixed 901 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL keyword-topic relation
NULL mysql help_topic BASE TABLE MyISAM 10 Dynamic 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help topics NULL mysql help_topic BASE TABLE MyISAM 10 Dynamic 479 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help topics
NULL mysql host BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL Host privileges; Merged with database privileges NULL mysql host BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL Host privileges; Merged with database privileges
NULL mysql ndb_binlog_index BASE TABLE MyISAM 10 Dynamic 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss latin1_swedish_ci NULL NULL mysql ndb_binlog_index BASE TABLE MyISAM 10 Dynamic 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss latin1_swedish_ci NULL
NULL mysql plugin BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL MySQL plugins NULL mysql plugin BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL MySQL plugins
...@@ -14601,14 +14601,14 @@ NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE ...@@ -14601,14 +14601,14 @@ NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE
NULL mysql event 0 mysql PRIMARY 1 db A NULL NULL NULL BTREE NULL mysql event 0 mysql PRIMARY 1 db A NULL NULL NULL BTREE
NULL mysql event 0 mysql PRIMARY 2 name A 0 NULL NULL BTREE NULL mysql event 0 mysql PRIMARY 2 name A 0 NULL NULL BTREE
NULL mysql func 0 mysql PRIMARY 1 name A 0 NULL NULL BTREE NULL mysql func 0 mysql PRIMARY 1 name A 0 NULL NULL BTREE
NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A 0 NULL NULL BTREE NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A 37 NULL NULL BTREE
NULL mysql help_category 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_category 0 mysql name 1 name A 37 NULL NULL BTREE
NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A 0 NULL NULL BTREE NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A 424 NULL NULL BTREE
NULL mysql help_keyword 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_keyword 0 mysql name 1 name A 424 NULL NULL BTREE
NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A NULL NULL NULL BTREE NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A NULL NULL NULL BTREE
NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A 0 NULL NULL BTREE NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A 901 NULL NULL BTREE
NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A 0 NULL NULL BTREE NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A 479 NULL NULL BTREE
NULL mysql help_topic 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_topic 0 mysql name 1 name A 479 NULL NULL BTREE
NULL mysql host 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE NULL mysql host 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE
NULL mysql host 0 mysql PRIMARY 2 Db A 0 NULL NULL BTREE NULL mysql host 0 mysql PRIMARY 2 Db A 0 NULL NULL BTREE
NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A 0 NULL NULL BTREE NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A 0 NULL NULL BTREE
......
...@@ -81,6 +81,7 @@ BEGIN ...@@ -81,6 +81,7 @@ BEGIN
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
END// END//
ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1' ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1'
USE db_storedproc_1;
root@localhost db_storedproc_1 root@localhost db_storedproc_1
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost'; GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
...@@ -92,6 +93,7 @@ CREATE PROCEDURE sp1(v1 char(20)) ...@@ -92,6 +93,7 @@ CREATE PROCEDURE sp1(v1 char(20))
BEGIN BEGIN
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
END// END//
USE db_storedproc_1;
root@localhost db_storedproc_1 root@localhost db_storedproc_1
DROP USER 'user_1'@'localhost'; DROP USER 'user_1'@'localhost';
...@@ -117,6 +119,7 @@ CREATE FUNCTION fn1(v1 int) returns int ...@@ -117,6 +119,7 @@ CREATE FUNCTION fn1(v1 int) returns int
BEGIN BEGIN
return v1; return v1;
END// END//
USE db_storedproc_1;
root@localhost db_storedproc_1 root@localhost db_storedproc_1
drop user 'user_1'@'localhost'; drop user 'user_1'@'localhost';
......
...@@ -58,7 +58,6 @@ load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; ...@@ -58,7 +58,6 @@ load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11;
Section 3.1.10 - CALL checks: Section 3.1.10 - CALL checks:
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
USE db_storedproc;
Testcase 3.1.10.2 + 3.1.10.5: Testcase 3.1.10.2 + 3.1.10.5:
----------------------------- -----------------------------
...@@ -95,6 +94,7 @@ CALL sp31102(); ...@@ -95,6 +94,7 @@ CALL sp31102();
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102'
SELECT fn31105( 9 ); SELECT fn31105( 9 );
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105'
USE db_storedproc;
root@localhost db_storedproc root@localhost db_storedproc
CALL sp31102(); CALL sp31102();
...@@ -114,6 +114,7 @@ a` a` 1000-01-01 -5000 a` -5000 ...@@ -114,6 +114,7 @@ a` a` 1000-01-01 -5000 a` -5000
SELECT fn31105( 9 ); SELECT fn31105( 9 );
fn31105( 9 ) fn31105( 9 )
81 81
USE db_storedproc;
root@localhost db_storedproc root@localhost db_storedproc
REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost'; REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost';
...@@ -131,6 +132,7 @@ CALL sp31102(); ...@@ -131,6 +132,7 @@ CALL sp31102();
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102'
SELECT fn31105( 9 ); SELECT fn31105( 9 );
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105'
USE db_storedproc;
root@localhost db_storedproc root@localhost db_storedproc
DROP PROCEDURE sp31102; DROP PROCEDURE sp31102;
......
...@@ -1209,7 +1209,7 @@ TABLE_TYPE BASE TABLE ...@@ -1209,7 +1209,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 37
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -1230,7 +1230,7 @@ TABLE_TYPE BASE TABLE ...@@ -1230,7 +1230,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 424
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -1251,7 +1251,7 @@ TABLE_TYPE BASE TABLE ...@@ -1251,7 +1251,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 901
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -1272,7 +1272,7 @@ TABLE_TYPE BASE TABLE ...@@ -1272,7 +1272,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Dynamic ROW_FORMAT Dynamic
TABLE_ROWS 0 TABLE_ROWS 479
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -3224,14 +3224,14 @@ NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE ...@@ -3224,14 +3224,14 @@ NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE
NULL mysql event 0 mysql PRIMARY 1 db A NULL NULL NULL BTREE NULL mysql event 0 mysql PRIMARY 1 db A NULL NULL NULL BTREE
NULL mysql event 0 mysql PRIMARY 2 name A 0 NULL NULL BTREE NULL mysql event 0 mysql PRIMARY 2 name A 0 NULL NULL BTREE
NULL mysql func 0 mysql PRIMARY 1 name A 0 NULL NULL BTREE NULL mysql func 0 mysql PRIMARY 1 name A 0 NULL NULL BTREE
NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A 0 NULL NULL BTREE NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A 37 NULL NULL BTREE
NULL mysql help_category 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_category 0 mysql name 1 name A 37 NULL NULL BTREE
NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A 0 NULL NULL BTREE NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A 424 NULL NULL BTREE
NULL mysql help_keyword 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_keyword 0 mysql name 1 name A 424 NULL NULL BTREE
NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A NULL NULL NULL BTREE NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A NULL NULL NULL BTREE
NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A 0 NULL NULL BTREE NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A 901 NULL NULL BTREE
NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A 0 NULL NULL BTREE NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A 479 NULL NULL BTREE
NULL mysql help_topic 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_topic 0 mysql name 1 name A 479 NULL NULL BTREE
NULL mysql host 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE NULL mysql host 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE
NULL mysql host 0 mysql PRIMARY 2 Db A 0 NULL NULL BTREE NULL mysql host 0 mysql PRIMARY 2 Db A 0 NULL NULL BTREE
NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A 0 NULL NULL BTREE NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A 0 NULL NULL BTREE
...@@ -3464,7 +3464,7 @@ max_recs ...@@ -3464,7 +3464,7 @@ max_recs
45 45
select max(cardinality) from statistics; select max(cardinality) from statistics;
max(cardinality) max(cardinality)
393 901
select concat("View '", select concat("View '",
table_name, "' is associated with the database '", table_schema, "'.") table_name, "' is associated with the database '", table_schema, "'.")
AS "Who is Who for the Views" AS "Who is Who for the Views"
...@@ -4530,7 +4530,7 @@ TABLE_TYPE BASE TABLE ...@@ -4530,7 +4530,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 37
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -4551,7 +4551,7 @@ TABLE_TYPE BASE TABLE ...@@ -4551,7 +4551,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 424
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -4572,7 +4572,7 @@ TABLE_TYPE BASE TABLE ...@@ -4572,7 +4572,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 901
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -4593,7 +4593,7 @@ TABLE_TYPE BASE TABLE ...@@ -4593,7 +4593,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Dynamic ROW_FORMAT Dynamic
TABLE_ROWS 0 TABLE_ROWS 479
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -5809,7 +5809,7 @@ routine_definition ...@@ -5809,7 +5809,7 @@ routine_definition
select * from statistics group by index_name asc limit 0, 5; select * from statistics group by index_name asc limit 0, 5;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
NULL mysql procs_priv 1 mysql Grantor 1 Grantor A NULL NULL NULL BTREE NULL mysql procs_priv 1 mysql Grantor 1 Grantor A NULL NULL NULL BTREE
NULL mysql help_category 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_category 0 mysql name 1 name A 37 NULL NULL BTREE
NULL mysql columns_priv 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE NULL mysql columns_priv 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE
NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE
select concat(table_schema, ', ', table_name, ', ', view_definition) view_info select concat(table_schema, ', ', table_name, ', ', view_definition) view_info
...@@ -14245,10 +14245,10 @@ NULL mysql db BASE TABLE MyISAM 10 Fixed 3 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY- ...@@ -14245,10 +14245,10 @@ NULL mysql db BASE TABLE MyISAM 10 Fixed 3 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-
NULL mysql event BASE TABLE MyISAM 10 Dynamic 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL Events NULL mysql event BASE TABLE MyISAM 10 Dynamic 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL Events
NULL mysql func BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL User defined functions NULL mysql func BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL User defined functions
NULL mysql general_log BASE TABLE CSV 10 Dynamic 1 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL General log NULL mysql general_log BASE TABLE CSV 10 Dynamic 1 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL General log
NULL mysql help_category BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help categories NULL mysql help_category BASE TABLE MyISAM 10 Fixed 37 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help categories
NULL mysql help_keyword BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help keywords NULL mysql help_keyword BASE TABLE MyISAM 10 Fixed 424 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help keywords
NULL mysql help_relation BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL keyword-topic relation NULL mysql help_relation BASE TABLE MyISAM 10 Fixed 901 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL keyword-topic relation
NULL mysql help_topic BASE TABLE MyISAM 10 Dynamic 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help topics NULL mysql help_topic BASE TABLE MyISAM 10 Dynamic 479 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help topics
NULL mysql host BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL Host privileges; Merged with database privileges NULL mysql host BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL Host privileges; Merged with database privileges
NULL mysql ndb_binlog_index BASE TABLE MyISAM 10 Dynamic 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss latin1_swedish_ci NULL NULL mysql ndb_binlog_index BASE TABLE MyISAM 10 Dynamic 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss latin1_swedish_ci NULL
NULL mysql plugin BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL MySQL plugins NULL mysql plugin BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL MySQL plugins
...@@ -14499,14 +14499,14 @@ NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE ...@@ -14499,14 +14499,14 @@ NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE
NULL mysql event 0 mysql PRIMARY 1 db A NULL NULL NULL BTREE NULL mysql event 0 mysql PRIMARY 1 db A NULL NULL NULL BTREE
NULL mysql event 0 mysql PRIMARY 2 name A 0 NULL NULL BTREE NULL mysql event 0 mysql PRIMARY 2 name A 0 NULL NULL BTREE
NULL mysql func 0 mysql PRIMARY 1 name A 0 NULL NULL BTREE NULL mysql func 0 mysql PRIMARY 1 name A 0 NULL NULL BTREE
NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A 0 NULL NULL BTREE NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A 37 NULL NULL BTREE
NULL mysql help_category 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_category 0 mysql name 1 name A 37 NULL NULL BTREE
NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A 0 NULL NULL BTREE NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A 424 NULL NULL BTREE
NULL mysql help_keyword 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_keyword 0 mysql name 1 name A 424 NULL NULL BTREE
NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A NULL NULL NULL BTREE NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A NULL NULL NULL BTREE
NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A 0 NULL NULL BTREE NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A 901 NULL NULL BTREE
NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A 0 NULL NULL BTREE NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A 479 NULL NULL BTREE
NULL mysql help_topic 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_topic 0 mysql name 1 name A 479 NULL NULL BTREE
NULL mysql host 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE NULL mysql host 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE
NULL mysql host 0 mysql PRIMARY 2 Db A 0 NULL NULL BTREE NULL mysql host 0 mysql PRIMARY 2 Db A 0 NULL NULL BTREE
NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A 0 NULL NULL BTREE NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A 0 NULL NULL BTREE
......
...@@ -81,6 +81,7 @@ BEGIN ...@@ -81,6 +81,7 @@ BEGIN
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
END// END//
ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1' ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1'
USE db_storedproc_1;
root@localhost db_storedproc_1 root@localhost db_storedproc_1
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost'; GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
...@@ -92,6 +93,7 @@ CREATE PROCEDURE sp1(v1 char(20)) ...@@ -92,6 +93,7 @@ CREATE PROCEDURE sp1(v1 char(20))
BEGIN BEGIN
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
END// END//
USE db_storedproc_1;
root@localhost db_storedproc_1 root@localhost db_storedproc_1
DROP USER 'user_1'@'localhost'; DROP USER 'user_1'@'localhost';
...@@ -117,6 +119,7 @@ CREATE FUNCTION fn1(v1 int) returns int ...@@ -117,6 +119,7 @@ CREATE FUNCTION fn1(v1 int) returns int
BEGIN BEGIN
return v1; return v1;
END// END//
USE db_storedproc_1;
root@localhost db_storedproc_1 root@localhost db_storedproc_1
drop user 'user_1'@'localhost'; drop user 'user_1'@'localhost';
......
...@@ -58,7 +58,6 @@ load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; ...@@ -58,7 +58,6 @@ load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11;
Section 3.1.10 - CALL checks: Section 3.1.10 - CALL checks:
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
USE db_storedproc;
Testcase 3.1.10.2 + 3.1.10.5: Testcase 3.1.10.2 + 3.1.10.5:
----------------------------- -----------------------------
...@@ -95,6 +94,7 @@ CALL sp31102(); ...@@ -95,6 +94,7 @@ CALL sp31102();
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102'
SELECT fn31105( 9 ); SELECT fn31105( 9 );
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105'
USE db_storedproc;
root@localhost db_storedproc root@localhost db_storedproc
CALL sp31102(); CALL sp31102();
...@@ -114,6 +114,7 @@ a` a` 1000-01-01 -5000 a` -5000 ...@@ -114,6 +114,7 @@ a` a` 1000-01-01 -5000 a` -5000
SELECT fn31105( 9 ); SELECT fn31105( 9 );
fn31105( 9 ) fn31105( 9 )
81 81
USE db_storedproc;
root@localhost db_storedproc root@localhost db_storedproc
REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost'; REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost';
...@@ -131,6 +132,7 @@ CALL sp31102(); ...@@ -131,6 +132,7 @@ CALL sp31102();
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102'
SELECT fn31105( 9 ); SELECT fn31105( 9 );
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105'
USE db_storedproc;
root@localhost db_storedproc root@localhost db_storedproc
DROP PROCEDURE sp31102; DROP PROCEDURE sp31102;
......
...@@ -1239,7 +1239,7 @@ TABLE_TYPE BASE TABLE ...@@ -1239,7 +1239,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 37
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -1260,7 +1260,7 @@ TABLE_TYPE BASE TABLE ...@@ -1260,7 +1260,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 424
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -1281,7 +1281,7 @@ TABLE_TYPE BASE TABLE ...@@ -1281,7 +1281,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 901
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -1302,7 +1302,7 @@ TABLE_TYPE BASE TABLE ...@@ -1302,7 +1302,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Dynamic ROW_FORMAT Dynamic
TABLE_ROWS 0 TABLE_ROWS 479
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -3294,14 +3294,14 @@ NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE ...@@ -3294,14 +3294,14 @@ NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE
NULL mysql event 0 mysql PRIMARY 1 db A NULL NULL NULL BTREE NULL mysql event 0 mysql PRIMARY 1 db A NULL NULL NULL BTREE
NULL mysql event 0 mysql PRIMARY 2 name A 0 NULL NULL BTREE NULL mysql event 0 mysql PRIMARY 2 name A 0 NULL NULL BTREE
NULL mysql func 0 mysql PRIMARY 1 name A 0 NULL NULL BTREE NULL mysql func 0 mysql PRIMARY 1 name A 0 NULL NULL BTREE
NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A 0 NULL NULL BTREE NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A 37 NULL NULL BTREE
NULL mysql help_category 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_category 0 mysql name 1 name A 37 NULL NULL BTREE
NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A 0 NULL NULL BTREE NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A 424 NULL NULL BTREE
NULL mysql help_keyword 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_keyword 0 mysql name 1 name A 424 NULL NULL BTREE
NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A NULL NULL NULL BTREE NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A NULL NULL NULL BTREE
NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A 0 NULL NULL BTREE NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A 901 NULL NULL BTREE
NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A 0 NULL NULL BTREE NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A 479 NULL NULL BTREE
NULL mysql help_topic 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_topic 0 mysql name 1 name A 479 NULL NULL BTREE
NULL mysql host 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE NULL mysql host 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE
NULL mysql host 0 mysql PRIMARY 2 Db A 0 NULL NULL BTREE NULL mysql host 0 mysql PRIMARY 2 Db A 0 NULL NULL BTREE
NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A 0 NULL NULL BTREE NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A 0 NULL NULL BTREE
...@@ -3534,7 +3534,7 @@ max_recs ...@@ -3534,7 +3534,7 @@ max_recs
45 45
select max(cardinality) from statistics; select max(cardinality) from statistics;
max(cardinality) max(cardinality)
393 901
select concat("View '", select concat("View '",
table_name, "' is associated with the database '", table_schema, "'.") table_name, "' is associated with the database '", table_schema, "'.")
AS "Who is Who for the Views" AS "Who is Who for the Views"
...@@ -4600,7 +4600,7 @@ TABLE_TYPE BASE TABLE ...@@ -4600,7 +4600,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 37
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -4621,7 +4621,7 @@ TABLE_TYPE BASE TABLE ...@@ -4621,7 +4621,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 424
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -4642,7 +4642,7 @@ TABLE_TYPE BASE TABLE ...@@ -4642,7 +4642,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Fixed ROW_FORMAT Fixed
TABLE_ROWS 0 TABLE_ROWS 901
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -4663,7 +4663,7 @@ TABLE_TYPE BASE TABLE ...@@ -4663,7 +4663,7 @@ TABLE_TYPE BASE TABLE
ENGINE MyISAM ENGINE MyISAM
VERSION 10 VERSION 10
ROW_FORMAT Dynamic ROW_FORMAT Dynamic
TABLE_ROWS 0 TABLE_ROWS 479
AVG_ROW_LENGTH #ARL# AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL# DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL# MAX_DATA_LENGTH #MDL#
...@@ -5879,7 +5879,7 @@ routine_definition ...@@ -5879,7 +5879,7 @@ routine_definition
select * from statistics group by index_name asc limit 0, 5; select * from statistics group by index_name asc limit 0, 5;
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT TABLE_CATALOG TABLE_SCHEMA TABLE_NAME NON_UNIQUE INDEX_SCHEMA INDEX_NAME SEQ_IN_INDEX COLUMN_NAME COLLATION CARDINALITY SUB_PART PACKED NULLABLE INDEX_TYPE COMMENT
NULL mysql procs_priv 1 mysql Grantor 1 Grantor A NULL NULL NULL BTREE NULL mysql procs_priv 1 mysql Grantor 1 Grantor A NULL NULL NULL BTREE
NULL mysql help_category 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_category 0 mysql name 1 name A 37 NULL NULL BTREE
NULL mysql columns_priv 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE NULL mysql columns_priv 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE
NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE
select concat(table_schema, ', ', table_name, ', ', view_definition) view_info select concat(table_schema, ', ', table_name, ', ', view_definition) view_info
...@@ -14499,10 +14499,10 @@ NULL mysql db BASE TABLE MyISAM 10 Fixed 3 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY- ...@@ -14499,10 +14499,10 @@ NULL mysql db BASE TABLE MyISAM 10 Fixed 3 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-
NULL mysql event BASE TABLE MyISAM 10 Dynamic 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL Events NULL mysql event BASE TABLE MyISAM 10 Dynamic 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL Events
NULL mysql func BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL User defined functions NULL mysql func BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL User defined functions
NULL mysql general_log BASE TABLE CSV 10 Dynamic 1 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL General log NULL mysql general_log BASE TABLE CSV 10 Dynamic 1 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL General log
NULL mysql help_category BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help categories NULL mysql help_category BASE TABLE MyISAM 10 Fixed 37 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help categories
NULL mysql help_keyword BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help keywords NULL mysql help_keyword BASE TABLE MyISAM 10 Fixed 424 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help keywords
NULL mysql help_relation BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL keyword-topic relation NULL mysql help_relation BASE TABLE MyISAM 10 Fixed 901 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL keyword-topic relation
NULL mysql help_topic BASE TABLE MyISAM 10 Dynamic 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help topics NULL mysql help_topic BASE TABLE MyISAM 10 Dynamic 479 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_general_ci NULL help topics
NULL mysql host BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL Host privileges; Merged with database privileges NULL mysql host BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL Host privileges; Merged with database privileges
NULL mysql ndb_binlog_index BASE TABLE MyISAM 10 Dynamic 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss latin1_swedish_ci NULL NULL mysql ndb_binlog_index BASE TABLE MyISAM 10 Dynamic 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss latin1_swedish_ci NULL
NULL mysql plugin BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL MySQL plugins NULL mysql plugin BASE TABLE MyISAM 10 Fixed 0 #ARL# #DL# #MDL# #IL# #DF# NULL YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss utf8_bin NULL MySQL plugins
...@@ -14753,14 +14753,14 @@ NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE ...@@ -14753,14 +14753,14 @@ NULL mysql db 1 mysql User 1 User A 1 NULL NULL BTREE
NULL mysql event 0 mysql PRIMARY 1 db A NULL NULL NULL BTREE NULL mysql event 0 mysql PRIMARY 1 db A NULL NULL NULL BTREE
NULL mysql event 0 mysql PRIMARY 2 name A 0 NULL NULL BTREE NULL mysql event 0 mysql PRIMARY 2 name A 0 NULL NULL BTREE
NULL mysql func 0 mysql PRIMARY 1 name A 0 NULL NULL BTREE NULL mysql func 0 mysql PRIMARY 1 name A 0 NULL NULL BTREE
NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A 0 NULL NULL BTREE NULL mysql help_category 0 mysql PRIMARY 1 help_category_id A 37 NULL NULL BTREE
NULL mysql help_category 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_category 0 mysql name 1 name A 37 NULL NULL BTREE
NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A 0 NULL NULL BTREE NULL mysql help_keyword 0 mysql PRIMARY 1 help_keyword_id A 424 NULL NULL BTREE
NULL mysql help_keyword 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_keyword 0 mysql name 1 name A 424 NULL NULL BTREE
NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A NULL NULL NULL BTREE NULL mysql help_relation 0 mysql PRIMARY 1 help_keyword_id A NULL NULL NULL BTREE
NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A 0 NULL NULL BTREE NULL mysql help_relation 0 mysql PRIMARY 2 help_topic_id A 901 NULL NULL BTREE
NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A 0 NULL NULL BTREE NULL mysql help_topic 0 mysql PRIMARY 1 help_topic_id A 479 NULL NULL BTREE
NULL mysql help_topic 0 mysql name 1 name A 0 NULL NULL BTREE NULL mysql help_topic 0 mysql name 1 name A 479 NULL NULL BTREE
NULL mysql host 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE NULL mysql host 0 mysql PRIMARY 1 Host A NULL NULL NULL BTREE
NULL mysql host 0 mysql PRIMARY 2 Db A 0 NULL NULL BTREE NULL mysql host 0 mysql PRIMARY 2 Db A 0 NULL NULL BTREE
NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A 0 NULL NULL BTREE NULL mysql ndb_binlog_index 0 mysql PRIMARY 1 epoch A 0 NULL NULL BTREE
......
...@@ -81,6 +81,7 @@ BEGIN ...@@ -81,6 +81,7 @@ BEGIN
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
END// END//
ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1' ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1'
USE db_storedproc_1;
root@localhost db_storedproc_1 root@localhost db_storedproc_1
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost'; GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
...@@ -92,6 +93,7 @@ CREATE PROCEDURE sp1(v1 char(20)) ...@@ -92,6 +93,7 @@ CREATE PROCEDURE sp1(v1 char(20))
BEGIN BEGIN
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
END// END//
USE db_storedproc_1;
root@localhost db_storedproc_1 root@localhost db_storedproc_1
DROP USER 'user_1'@'localhost'; DROP USER 'user_1'@'localhost';
...@@ -117,6 +119,7 @@ CREATE FUNCTION fn1(v1 int) returns int ...@@ -117,6 +119,7 @@ CREATE FUNCTION fn1(v1 int) returns int
BEGIN BEGIN
return v1; return v1;
END// END//
USE db_storedproc_1;
root@localhost db_storedproc_1 root@localhost db_storedproc_1
drop user 'user_1'@'localhost'; drop user 'user_1'@'localhost';
......
...@@ -58,7 +58,6 @@ load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; ...@@ -58,7 +58,6 @@ load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11;
Section 3.1.10 - CALL checks: Section 3.1.10 - CALL checks:
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
USE db_storedproc;
Testcase 3.1.10.2 + 3.1.10.5: Testcase 3.1.10.2 + 3.1.10.5:
----------------------------- -----------------------------
...@@ -95,6 +94,7 @@ CALL sp31102(); ...@@ -95,6 +94,7 @@ CALL sp31102();
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102'
SELECT fn31105( 9 ); SELECT fn31105( 9 );
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105'
USE db_storedproc;
root@localhost db_storedproc root@localhost db_storedproc
CALL sp31102(); CALL sp31102();
...@@ -114,6 +114,7 @@ a` a` 1000-01-01 -5000 a` -5000 ...@@ -114,6 +114,7 @@ a` a` 1000-01-01 -5000 a` -5000
SELECT fn31105( 9 ); SELECT fn31105( 9 );
fn31105( 9 ) fn31105( 9 )
81 81
USE db_storedproc;
root@localhost db_storedproc root@localhost db_storedproc
REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost'; REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost';
...@@ -131,6 +132,7 @@ CALL sp31102(); ...@@ -131,6 +132,7 @@ CALL sp31102();
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102'
SELECT fn31105( 9 ); SELECT fn31105( 9 );
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105'
USE db_storedproc;
root@localhost db_storedproc root@localhost db_storedproc
DROP PROCEDURE sp31102; DROP PROCEDURE sp31102;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -81,6 +81,7 @@ BEGIN ...@@ -81,6 +81,7 @@ BEGIN
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
END// END//
ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1' ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1'
USE db_storedproc_1;
root@localhost db_storedproc_1 root@localhost db_storedproc_1
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost'; GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
...@@ -92,6 +93,7 @@ CREATE PROCEDURE sp1(v1 char(20)) ...@@ -92,6 +93,7 @@ CREATE PROCEDURE sp1(v1 char(20))
BEGIN BEGIN
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
END// END//
USE db_storedproc_1;
root@localhost db_storedproc_1 root@localhost db_storedproc_1
DROP USER 'user_1'@'localhost'; DROP USER 'user_1'@'localhost';
...@@ -117,6 +119,7 @@ CREATE FUNCTION fn1(v1 int) returns int ...@@ -117,6 +119,7 @@ CREATE FUNCTION fn1(v1 int) returns int
BEGIN BEGIN
return v1; return v1;
END// END//
USE db_storedproc_1;
root@localhost db_storedproc_1 root@localhost db_storedproc_1
drop user 'user_1'@'localhost'; drop user 'user_1'@'localhost';
......
...@@ -58,7 +58,6 @@ load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; ...@@ -58,7 +58,6 @@ load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11;
Section 3.1.10 - CALL checks: Section 3.1.10 - CALL checks:
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
USE db_storedproc;
Testcase 3.1.10.2 + 3.1.10.5: Testcase 3.1.10.2 + 3.1.10.5:
----------------------------- -----------------------------
...@@ -95,6 +94,7 @@ CALL sp31102(); ...@@ -95,6 +94,7 @@ CALL sp31102();
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102'
SELECT fn31105( 9 ); SELECT fn31105( 9 );
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105'
USE db_storedproc;
root@localhost db_storedproc root@localhost db_storedproc
CALL sp31102(); CALL sp31102();
...@@ -114,6 +114,7 @@ a` a` 1000-01-01 -5000 a` -5000 ...@@ -114,6 +114,7 @@ a` a` 1000-01-01 -5000 a` -5000
SELECT fn31105( 9 ); SELECT fn31105( 9 );
fn31105( 9 ) fn31105( 9 )
81 81
USE db_storedproc;
root@localhost db_storedproc root@localhost db_storedproc
REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost'; REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost';
...@@ -131,6 +132,7 @@ CALL sp31102(); ...@@ -131,6 +132,7 @@ CALL sp31102();
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102'
SELECT fn31105( 9 ); SELECT fn31105( 9 );
ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105'
USE db_storedproc;
root@localhost db_storedproc root@localhost db_storedproc
DROP PROCEDURE sp31102; DROP PROCEDURE sp31102;
......
...@@ -18,9 +18,9 @@ ...@@ -18,9 +18,9 @@
let $message= Section 3.1.6 - Privilege Checks:; let $message= Section 3.1.6 - Privilege Checks:;
--source include/show_msg80.inc --source include/show_msg80.inc
USE db_storedproc_1;
connection default; connection default;
USE db_storedproc_1;
--source suite/funcs_1/include/show_connection.inc --source suite/funcs_1/include/show_connection.inc
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
...@@ -58,6 +58,7 @@ disconnect user1a; ...@@ -58,6 +58,7 @@ disconnect user1a;
# add privilege again and check # add privilege again and check
connection default; connection default;
USE db_storedproc_1;
--source suite/funcs_1/include/show_connection.inc --source suite/funcs_1/include/show_connection.inc
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost'; GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
...@@ -77,6 +78,7 @@ disconnect user1b; ...@@ -77,6 +78,7 @@ disconnect user1b;
# cleanup # cleanup
connection default; connection default;
USE db_storedproc_1;
--source suite/funcs_1/include/show_connection.inc --source suite/funcs_1/include/show_connection.inc
DROP USER 'user_1'@'localhost'; DROP USER 'user_1'@'localhost';
...@@ -132,6 +134,7 @@ disconnect user2; ...@@ -132,6 +134,7 @@ disconnect user2;
# cleanup # cleanup
connection default; connection default;
USE db_storedproc_1;
--source suite/funcs_1/include/show_connection.inc --source suite/funcs_1/include/show_connection.inc
drop user 'user_1'@'localhost'; drop user 'user_1'@'localhost';
......
...@@ -21,7 +21,6 @@ let $message= Section 3.1.10 - CALL checks:; ...@@ -21,7 +21,6 @@ let $message= Section 3.1.10 - CALL checks:;
--source include/show_msg80.inc --source include/show_msg80.inc
USE db_storedproc;
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
let $message= Testcase 3.1.10.2 + 3.1.10.5:; let $message= Testcase 3.1.10.2 + 3.1.10.5:;
...@@ -80,6 +79,7 @@ SELECT fn31105( 9 ); ...@@ -80,6 +79,7 @@ SELECT fn31105( 9 );
# now 'add' EXECUTE to INVOKER # now 'add' EXECUTE to INVOKER
connection default; connection default;
USE db_storedproc;
--source suite/funcs_1/include/show_connection.inc --source suite/funcs_1/include/show_connection.inc
# root can execute ... # root can execute ...
CALL sp31102(); CALL sp31102();
...@@ -98,6 +98,7 @@ disconnect user2_3; ...@@ -98,6 +98,7 @@ disconnect user2_3;
# now 'remove' SELECT from INVOKER # now 'remove' SELECT from INVOKER
connection default; connection default;
USE db_storedproc;
--source suite/funcs_1/include/show_connection.inc --source suite/funcs_1/include/show_connection.inc
REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost'; REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost';
FLUSH PRIVILEGES; FLUSH PRIVILEGES;
...@@ -115,6 +116,7 @@ disconnect user2_4; ...@@ -115,6 +116,7 @@ disconnect user2_4;
# cleanup # cleanup
connection default; connection default;
USE db_storedproc;
--source suite/funcs_1/include/show_connection.inc --source suite/funcs_1/include/show_connection.inc
DROP PROCEDURE sp31102; DROP PROCEDURE sp31102;
......
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
use test;
CREATE TABLE test.regular_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
fkid MEDIUMINT, filler VARCHAR(255),
PRIMARY KEY(id)) ENGINE='innodb';
CREATE TABLE test.bykey_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
fkid MEDIUMINT, filler VARCHAR(255),
PRIMARY KEY(id)) ENGINE='innodb'
PARTITION BY KEY(id) partitions 5;
CREATE TABLE test.byrange_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
fkid MEDIUMINT, filler VARCHAR(255),
PRIMARY KEY(id)) ENGINE='innodb'
PARTITION BY RANGE(id)
SUBPARTITION BY hash(id) subpartitions 2
(PARTITION pa1 values less than (10),
PARTITION pa2 values less than (20),
PARTITION pa3 values less than (30),
PARTITION pa4 values less than (40),
PARTITION pa5 values less than (50),
PARTITION pa6 values less than (60),
PARTITION pa7 values less than (70),
PARTITION pa8 values less than (80),
PARTITION pa9 values less than (90),
PARTITION pa10 values less than (100),
PARTITION pa11 values less than MAXVALUE);
CREATE PROCEDURE test.proc_norm()
BEGIN
DECLARE ins_count INT DEFAULT 1000;
DECLARE del_count INT;
DECLARE cur_user VARCHAR(255);
DECLARE local_uuid VARCHAR(255);
DECLARE local_time TIMESTAMP;
SET local_time= NOW();
SET cur_user= CURRENT_USER();
SET local_uuid= UUID();
WHILE ins_count > 0 DO
INSERT INTO test.regular_tbl VALUES (NULL, NOW(), USER() , UUID(),
ins_count,'Going to test MBR for MySQL');
SET ins_count = ins_count - 1;
END WHILE;
SELECT MAX(id) FROM test.regular_tbl INTO del_count;
WHILE del_count > 0 DO
DELETE FROM test.regular_tbl WHERE id = del_count;
SET del_count = del_count - 2;
END WHILE;
END|
CREATE PROCEDURE test.proc_bykey()
BEGIN
DECLARE ins_count INT DEFAULT 1000;
DECLARE del_count INT;
DECLARE cur_user VARCHAR(255);
DECLARE local_uuid VARCHAR(255);
DECLARE local_time TIMESTAMP;
SET local_time= NOW();
SET cur_user= CURRENT_USER();
SET local_uuid= UUID();
WHILE ins_count > 0 DO
INSERT INTO test.bykey_tbl VALUES (NULL, NOW(), USER() , UUID(),
ins_count,'Going to test MBR for MySQL');
SET ins_count = ins_count - 1;
END WHILE;
SELECT MAX(id) FROM test.bykey_tbl INTO del_count;
WHILE del_count > 0 DO
DELETE FROM test.bykey_tbl WHERE id = del_count;
SET del_count = del_count - 2;
END WHILE;
END|
CREATE PROCEDURE test.proc_byrange()
BEGIN
DECLARE ins_count INT DEFAULT 1000;
DECLARE del_count INT;
DECLARE cur_user VARCHAR(255);
DECLARE local_uuid VARCHAR(255);
DECLARE local_time TIMESTAMP;
SET local_time= NOW();
SET cur_user = CURRENT_USER();
SET local_uuid=UUID();
WHILE ins_count > 0 DO
INSERT INTO test.byrange_tbl VALUES (NULL, NOW(), USER(), UUID(),
ins_count,'Going to test MBR for MySQL');
SET ins_count = ins_count - 1;
END WHILE;
SELECT MAX(id) FROM test.byrange_tbl INTO del_count;
WHILE del_count > 0 DO
DELETE FROM test.byrange_tbl WHERE id = del_count;
SET del_count = del_count - 2;
END WHILE;
END|
CALL test.proc_norm();
SELECT count(*) as "Master regular" FROM test.regular_tbl;
Master regular 500
CALL test.proc_bykey();
SELECT count(*) as "Master bykey" FROM test.bykey_tbl;
Master bykey 500
CALL test.proc_byrange();
SELECT count(*) as "Master byrange" FROM test.byrange_tbl;
Master byrange 500
show create table test.byrange_tbl;
Table byrange_tbl
Create Table CREATE TABLE `byrange_tbl` (
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
`dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`user` char(255) DEFAULT NULL,
`uuidf` longblob,
`fkid` mediumint(9) DEFAULT NULL,
`filler` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (id) SUBPARTITION BY HASH (id) SUBPARTITIONS 2 (PARTITION pa1 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION pa2 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION pa3 VALUES LESS THAN (30) ENGINE = InnoDB, PARTITION pa4 VALUES LESS THAN (40) ENGINE = InnoDB, PARTITION pa5 VALUES LESS THAN (50) ENGINE = InnoDB, PARTITION pa6 VALUES LESS THAN (60) ENGINE = InnoDB, PARTITION pa7 VALUES LESS THAN (70) ENGINE = InnoDB, PARTITION pa8 VALUES LESS THAN (80) ENGINE = InnoDB, PARTITION pa9 VALUES LESS THAN (90) ENGINE = InnoDB, PARTITION pa10 VALUES LESS THAN (100) ENGINE = InnoDB, PARTITION pa11 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
show slave status;
Slave_IO_State Waiting for master to send event
Master_Host 127.0.0.1
Master_User root
Master_Port MASTER_PORT
Connect_Retry 1
Master_Log_File master-bin.000001
Read_Master_Log_Pos 945470
Relay_Log_File slave-relay-bin.000003
Relay_Log_Pos 945616
Relay_Master_Log_File master-bin.000001
Slave_IO_Running Yes
Slave_SQL_Running Yes
Replicate_Do_DB
Replicate_Ignore_DB
Replicate_Do_Table
Replicate_Ignore_Table
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
Exec_Master_Log_Pos 945470
Relay_Log_Space 945771
Until_Condition None
Until_Log_File
Until_Log_Pos 0
Master_SSL_Allowed No
Master_SSL_CA_File
Master_SSL_CA_Path
Master_SSL_Cert
Master_SSL_Cipher
Master_SSL_Key
Seconds_Behind_Master #
Master_SSL_Verify_Server_Cert No
Last_IO_Errno 0
Last_IO_Error
Last_SQL_Errno 0
Last_SQL_Error
SELECT count(*) "Slave norm" FROM test.regular_tbl;
Slave norm 500
SELECT count(*) "Slave bykey" FROM test.bykey_tbl;
Slave bykey 500
SELECT count(*) "Slave byrange" FROM test.byrange_tbl;
Slave byrange 500
DROP PROCEDURE test.proc_norm;
DROP PROCEDURE test.proc_bykey;
DROP PROCEDURE test.proc_byrange;
DROP TABLE test.regular_tbl;
DROP TABLE test.bykey_tbl;
DROP TABLE test.byrange_tbl;
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
use test;
CREATE TABLE test.regular_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
fkid MEDIUMINT, filler VARCHAR(255),
PRIMARY KEY(id)) ENGINE='innodb';
CREATE PROCEDURE test.proc_norm()
BEGIN
DECLARE ins_count INT DEFAULT 1000;
DECLARE del_count INT;
DECLARE cur_user VARCHAR(255);
DECLARE local_uuid VARCHAR(255);
DECLARE local_time TIMESTAMP;
SET local_time= NOW();
SET cur_user= CURRENT_USER();
SET local_uuid= UUID();
WHILE ins_count > 0 DO
INSERT INTO test.regular_tbl VALUES (NULL, NOW(), USER() , UUID(),
ins_count,'Going to test MBR for MySQL');
SET ins_count = ins_count - 1;
END WHILE;
SELECT MAX(id) FROM test.regular_tbl INTO del_count;
WHILE del_count > 0 DO
DELETE FROM test.regular_tbl WHERE id = del_count;
SET del_count = del_count - 2;
END WHILE;
END|
CALL test.proc_norm();
DROP PROCEDURE test.proc_norm;
DROP TABLE test.regular_tbl;
This diff is collapsed.
--innodb --innodb_autoinc_lock_mode=0
--innodb --innodb_autoinc_lock_mode=0
--innodb --innodb_autoinc_lock_mode=0
--source include/have_innodb.inc
--source include/have_binlog_format_mixed_or_row.inc
--source include/master-slave.inc
# Set the default connection to 'master'
--vertical_results
let $engine_type= 'innodb';
######## Creat Table Section #########
use test;
eval CREATE TABLE test.regular_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
fkid MEDIUMINT, filler VARCHAR(255),
PRIMARY KEY(id)) ENGINE=$engine_type;
eval CREATE TABLE test.bykey_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
fkid MEDIUMINT, filler VARCHAR(255),
PRIMARY KEY(id)) ENGINE=$engine_type
PARTITION BY KEY(id) partitions 5;
eval CREATE TABLE test.byrange_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
fkid MEDIUMINT, filler VARCHAR(255),
PRIMARY KEY(id)) ENGINE=$engine_type
PARTITION BY RANGE(id)
SUBPARTITION BY hash(id) subpartitions 2
(PARTITION pa1 values less than (10),
PARTITION pa2 values less than (20),
PARTITION pa3 values less than (30),
PARTITION pa4 values less than (40),
PARTITION pa5 values less than (50),
PARTITION pa6 values less than (60),
PARTITION pa7 values less than (70),
PARTITION pa8 values less than (80),
PARTITION pa9 values less than (90),
PARTITION pa10 values less than (100),
PARTITION pa11 values less than MAXVALUE);
######## Create SPs, Functions, Views and Triggers Section ##############
delimiter |;
CREATE PROCEDURE test.proc_norm()
BEGIN
DECLARE ins_count INT DEFAULT 1000;
DECLARE del_count INT;
DECLARE cur_user VARCHAR(255);
DECLARE local_uuid VARCHAR(255);
DECLARE local_time TIMESTAMP;
SET local_time= NOW();
SET cur_user= CURRENT_USER();
SET local_uuid= UUID();
WHILE ins_count > 0 DO
INSERT INTO test.regular_tbl VALUES (NULL, NOW(), USER() , UUID(),
ins_count,'Going to test MBR for MySQL');
SET ins_count = ins_count - 1;
END WHILE;
SELECT MAX(id) FROM test.regular_tbl INTO del_count;
WHILE del_count > 0 DO
DELETE FROM test.regular_tbl WHERE id = del_count;
SET del_count = del_count - 2;
END WHILE;
END|
CREATE PROCEDURE test.proc_bykey()
BEGIN
DECLARE ins_count INT DEFAULT 1000;
DECLARE del_count INT;
DECLARE cur_user VARCHAR(255);
DECLARE local_uuid VARCHAR(255);
DECLARE local_time TIMESTAMP;
SET local_time= NOW();
SET cur_user= CURRENT_USER();
SET local_uuid= UUID();
WHILE ins_count > 0 DO
INSERT INTO test.bykey_tbl VALUES (NULL, NOW(), USER() , UUID(),
ins_count,'Going to test MBR for MySQL');
SET ins_count = ins_count - 1;
END WHILE;
SELECT MAX(id) FROM test.bykey_tbl INTO del_count;
WHILE del_count > 0 DO
DELETE FROM test.bykey_tbl WHERE id = del_count;
SET del_count = del_count - 2;
END WHILE;
END|
CREATE PROCEDURE test.proc_byrange()
BEGIN
DECLARE ins_count INT DEFAULT 1000;
DECLARE del_count INT;
DECLARE cur_user VARCHAR(255);
DECLARE local_uuid VARCHAR(255);
DECLARE local_time TIMESTAMP;
SET local_time= NOW();
SET cur_user = CURRENT_USER();
SET local_uuid=UUID();
WHILE ins_count > 0 DO
INSERT INTO test.byrange_tbl VALUES (NULL, NOW(), USER(), UUID(),
ins_count,'Going to test MBR for MySQL');
SET ins_count = ins_count - 1;
END WHILE;
SELECT MAX(id) FROM test.byrange_tbl INTO del_count;
WHILE del_count > 0 DO
DELETE FROM test.byrange_tbl WHERE id = del_count;
SET del_count = del_count - 2;
END WHILE;
END|
delimiter ;|
############ Finish Setup Section ###################
############ Test Section ###################
CALL test.proc_norm();
SELECT count(*) as "Master regular" FROM test.regular_tbl;
CALL test.proc_bykey();
SELECT count(*) as "Master bykey" FROM test.bykey_tbl;
CALL test.proc_byrange();
SELECT count(*) as "Master byrange" FROM test.byrange_tbl;
--sync_slave_with_master
connection slave;
show create table test.byrange_tbl;
--replace_column 4 MASTER_PORT 33 #
show slave status;
SELECT count(*) "Slave norm" FROM test.regular_tbl;
SELECT count(*) "Slave bykey" FROM test.bykey_tbl;
SELECT count(*) "Slave byrange" FROM test.byrange_tbl;
###### CLEAN UP SECTION ##############
connection master;
DROP PROCEDURE test.proc_norm;
DROP PROCEDURE test.proc_bykey;
DROP PROCEDURE test.proc_byrange;
DROP TABLE test.regular_tbl;
DROP TABLE test.bykey_tbl;
DROP TABLE test.byrange_tbl;
--source include/master-slave-end.inc
--source include/have_innodb.inc
--source include/have_binlog_format_mixed_or_row.inc
--source include/master-slave.inc
# Set the default connection to 'master'
--vertical_results
#let $engine_type= 'myisam';
let $engine_type= 'innodb';
######## Creat Table Section #########
use test;
eval CREATE TABLE test.regular_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
fkid MEDIUMINT, filler VARCHAR(255),
PRIMARY KEY(id)) ENGINE=$engine_type;
######## Create SPs, Functions, Views and Triggers Section ##############
delimiter |;
CREATE PROCEDURE test.proc_norm()
BEGIN
DECLARE ins_count INT DEFAULT 1000;
DECLARE del_count INT;
DECLARE cur_user VARCHAR(255);
DECLARE local_uuid VARCHAR(255);
DECLARE local_time TIMESTAMP;
SET local_time= NOW();
SET cur_user= CURRENT_USER();
SET local_uuid= UUID();
WHILE ins_count > 0 DO
INSERT INTO test.regular_tbl VALUES (NULL, NOW(), USER() , UUID(),
ins_count,'Going to test MBR for MySQL');
SET ins_count = ins_count - 1;
END WHILE;
SELECT MAX(id) FROM test.regular_tbl INTO del_count;
WHILE del_count > 0 DO
DELETE FROM test.regular_tbl WHERE id = del_count;
SET del_count = del_count - 2;
END WHILE;
END|
delimiter ;|
############ Finish Setup Section ###################
############ Test Section ###################
CALL test.proc_norm();
--sync_slave_with_master
###### CLEAN UP SECTION ##############
connection master;
DROP PROCEDURE test.proc_norm;
DROP TABLE test.regular_tbl;
--source include/master-slave-end.inc
--innodb --innodb_autoinc_lock_mode=0
--source include/have_innodb.inc
--vertical_results
let $engine_type= 'innodb';
######## Creat Table Section #########
use test;
eval CREATE TABLE test.part_tbl(id MEDIUMINT NOT NULL AUTO_INCREMENT,
dt TIMESTAMP, user CHAR(255), uuidf LONGBLOB,
fkid MEDIUMINT, filler VARCHAR(255),
PRIMARY KEY(id)) ENGINE=$engine_type
PARTITION BY RANGE(id)
SUBPARTITION BY hash(id) subpartitions 2
(PARTITION pa3 values less than (42),
PARTITION pa6 values less than (60),
PARTITION pa7 values less than (70),
PARTITION pa8 values less than (80),
PARTITION pa9 values less than (90),
PARTITION pa10 values less than (100),
PARTITION pa11 values less than MAXVALUE);
######## Create SPs, Functions, Views and Triggers Section ##############
delimiter |;
CREATE PROCEDURE test.proc_part()
BEGIN
DECLARE ins_count INT DEFAULT 1000;
DECLARE del_count INT;
DECLARE cur_user VARCHAR(255);
DECLARE local_uuid VARCHAR(255);
DECLARE local_time TIMESTAMP;
SET local_time= NOW();
SET cur_user= CURRENT_USER();
SET local_uuid= UUID();
WHILE ins_count > 0 DO
INSERT INTO test.part_tbl VALUES (NULL, NOW(), USER() , UUID(),
ins_count,'Going to test MBR for MySQL');
SET ins_count = ins_count - 1;
END WHILE;
SELECT MAX(id) FROM test.part_tbl INTO del_count;
WHILE del_count > 0 DO
DELETE FROM test.part_tbl WHERE id = del_count;
select count(*) as internal_count, del_count -- these two lines are for
FROM test.part_tbl; -- debug to show the problem
SET del_count = del_count - 2;
END WHILE;
END|
delimiter ;|
############ Finish Setup Section ###################
############ Test Section ###################
--horizontal_results
CALL test.proc_part();
select count(*) as Part from test.part_tbl;
###### CLEAN UP SECTION ##############
DROP PROCEDURE test.proc_part;
DROP TABLE test.part_tbl;
...@@ -56,6 +56,7 @@ static void set_no_inherit(int socket) ...@@ -56,6 +56,7 @@ static void set_no_inherit(int socket)
#endif #endif
} }
const int Listener::LISTEN_BACK_LOG_SIZE= 5; /* standard backlog size */
Listener::Listener(Thread_registry *thread_registry_arg, Listener::Listener(Thread_registry *thread_registry_arg,
User_map *user_map_arg) User_map *user_map_arg)
......
...@@ -39,7 +39,7 @@ protected: ...@@ -39,7 +39,7 @@ protected:
virtual void run(); virtual void run();
private: private:
static const int LISTEN_BACK_LOG_SIZE= 5; /* standard backlog size */ static const int LISTEN_BACK_LOG_SIZE;
private: private:
Thread_info thread_info; Thread_info thread_info;
......
...@@ -145,6 +145,8 @@ static uint alter_table_flags(uint flags __attribute__((unused))) ...@@ -145,6 +145,8 @@ static uint alter_table_flags(uint flags __attribute__((unused)))
HA_FAST_CHANGE_PARTITION); HA_FAST_CHANGE_PARTITION);
} }
const uint ha_partition::NO_CURRENT_PART_ID= 0xFFFFFFFF;
/* /*
Constructor method Constructor method
...@@ -2705,7 +2707,15 @@ int ha_partition::write_row(uchar * buf) ...@@ -2705,7 +2707,15 @@ int ha_partition::write_row(uchar * buf)
*/ */
autoincrement_lock= true; autoincrement_lock= true;
pthread_mutex_lock(&table_share->mutex); pthread_mutex_lock(&table_share->mutex);
update_auto_increment(); error= update_auto_increment();
/*
If we have failed to set the auto-increment value for this row,
it is highly likely that we will not be able to insert it into
the correct partition. We must check and fail if neccessary.
*/
if (error)
DBUG_RETURN(error);
} }
my_bitmap_map *old_map= dbug_tmp_use_all_columns(table, table->read_set); my_bitmap_map *old_map= dbug_tmp_use_all_columns(table, table->read_set);
...@@ -5498,8 +5508,10 @@ void ha_partition::get_auto_increment(ulonglong offset, ulonglong increment, ...@@ -5498,8 +5508,10 @@ void ha_partition::get_auto_increment(ulonglong offset, ulonglong increment,
ulonglong first_value_part, last_value_part, nb_reserved_values_part, ulonglong first_value_part, last_value_part, nb_reserved_values_part,
last_value= ~ (ulonglong) 0; last_value= ~ (ulonglong) 0;
handler **pos, **end; handler **pos, **end;
bool retry= TRUE;
DBUG_ENTER("ha_partition::get_auto_increment"); DBUG_ENTER("ha_partition::get_auto_increment");
again:
for (pos=m_file, end= m_file+ m_tot_parts; pos != end ; pos++) for (pos=m_file, end= m_file+ m_tot_parts; pos != end ; pos++)
{ {
first_value_part= *first_value; first_value_part= *first_value;
...@@ -5508,7 +5520,8 @@ void ha_partition::get_auto_increment(ulonglong offset, ulonglong increment, ...@@ -5508,7 +5520,8 @@ void ha_partition::get_auto_increment(ulonglong offset, ulonglong increment,
if (first_value_part == ~(ulonglong)(0)) // error in one partition if (first_value_part == ~(ulonglong)(0)) // error in one partition
{ {
*first_value= first_value_part; *first_value= first_value_part;
break; sql_print_error("Partition failed to reserve auto_increment value");
DBUG_VOID_RETURN;
} }
/* /*
Partition has reserved an interval. Intersect it with the intervals Partition has reserved an interval. Intersect it with the intervals
...@@ -5521,6 +5534,25 @@ void ha_partition::get_auto_increment(ulonglong offset, ulonglong increment, ...@@ -5521,6 +5534,25 @@ void ha_partition::get_auto_increment(ulonglong offset, ulonglong increment,
} }
if (last_value < *first_value) /* empty intersection, error */ if (last_value < *first_value) /* empty intersection, error */
{ {
/*
When we have an empty intersection, it means that one or more
partitions may have a significantly different autoinc next value.
We should not fail here - it just means that we should try to
find a new reservation making use of the current *first_value
wbich should now be compatible with all partitions.
*/
if (retry)
{
retry= FALSE;
last_value= ~ (ulonglong) 0;
release_auto_increment();
goto again;
}
/*
We should not get here.
*/
sql_print_error("Failed to calculate auto_increment value for partition");
*first_value= ~(ulonglong)(0); *first_value= ~(ulonglong)(0);
} }
if (increment) // If not check for values if (increment) // If not check for values
......
...@@ -469,7 +469,7 @@ public: ...@@ -469,7 +469,7 @@ public:
virtual int reset(void); virtual int reset(void);
private: private:
static const uint NO_CURRENT_PART_ID= 0xFFFFFFFF; static const uint NO_CURRENT_PART_ID;
int loop_extra(enum ha_extra_function operation); int loop_extra(enum ha_extra_function operation);
void late_extra_cache(uint partition_id); void late_extra_cache(uint partition_id);
void late_extra_no_cache(uint partition_id); void late_extra_no_cache(uint partition_id);
......
...@@ -510,7 +510,7 @@ unsigned int ZEXPORT azread ( azio_stream *s, voidp buf, unsigned int len, int * ...@@ -510,7 +510,7 @@ unsigned int ZEXPORT azread ( azio_stream *s, voidp buf, unsigned int len, int *
Writes the given number of uncompressed bytes into the compressed file. Writes the given number of uncompressed bytes into the compressed file.
azwrite returns the number of bytes actually written (0 in case of error). azwrite returns the number of bytes actually written (0 in case of error).
*/ */
unsigned int azwrite (azio_stream *s, voidpc buf, unsigned int len) unsigned int azwrite (azio_stream *s, const voidp buf, unsigned int len)
{ {
s->stream.next_in = (Bytef*)buf; s->stream.next_in = (Bytef*)buf;
s->stream.avail_in = len; s->stream.avail_in = len;
......
...@@ -273,7 +273,7 @@ extern unsigned int azread ( azio_stream *s, voidp buf, unsigned int len, int *e ...@@ -273,7 +273,7 @@ extern unsigned int azread ( azio_stream *s, voidp buf, unsigned int len, int *e
gzread returns the number of uncompressed bytes actually read (0 for gzread returns the number of uncompressed bytes actually read (0 for
end of file, -1 for error). */ end of file, -1 for error). */
extern unsigned int azwrite (azio_stream *s, voidpc buf, unsigned int len); extern unsigned int azwrite (azio_stream *s, const voidp buf, unsigned int len);
/* /*
Writes the given number of uncompressed bytes into the compressed file. Writes the given number of uncompressed bytes into the compressed file.
azwrite returns the number of uncompressed bytes actually written azwrite returns the number of uncompressed bytes actually written
......
...@@ -1903,12 +1903,11 @@ retry: ...@@ -1903,12 +1903,11 @@ retry:
/* We just mark the SQL statement ended and do not do a /* We just mark the SQL statement ended and do not do a
transaction commit */ transaction commit */
if (trx->auto_inc_lock) {
/* If we had reserved the auto-inc lock for some /* If we had reserved the auto-inc lock for some
table in this SQL statement we release it now */ table in this SQL statement we release it now */
row_unlock_table_autoinc_for_mysql(trx); row_unlock_table_autoinc_for_mysql(trx);
}
/* Store the current undo_no of the transaction so that we /* Store the current undo_no of the transaction so that we
know where to roll back if we have to roll back the next know where to roll back if we have to roll back the next
SQL statement */ SQL statement */
...@@ -1961,13 +1960,11 @@ innobase_rollback( ...@@ -1961,13 +1960,11 @@ innobase_rollback(
innobase_release_stat_resources(trx); innobase_release_stat_resources(trx);
if (trx->auto_inc_lock) {
/* If we had reserved the auto-inc lock for some table (if /* If we had reserved the auto-inc lock for some table (if
we come here to roll back the latest SQL statement) we we come here to roll back the latest SQL statement) we
release it now before a possibly lengthy rollback */ release it now before a possibly lengthy rollback */
row_unlock_table_autoinc_for_mysql(trx); row_unlock_table_autoinc_for_mysql(trx);
}
if (all if (all
|| !thd_test_options(thd, OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)) { || !thd_test_options(thd, OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)) {
...@@ -2001,13 +1998,11 @@ innobase_rollback_trx( ...@@ -2001,13 +1998,11 @@ innobase_rollback_trx(
innobase_release_stat_resources(trx); innobase_release_stat_resources(trx);
if (trx->auto_inc_lock) {
/* If we had reserved the auto-inc lock for some table (if /* If we had reserved the auto-inc lock for some table (if
we come here to roll back the latest SQL statement) we we come here to roll back the latest SQL statement) we
release it now before a possibly lengthy rollback */ release it now before a possibly lengthy rollback */
row_unlock_table_autoinc_for_mysql(trx); row_unlock_table_autoinc_for_mysql(trx);
}
error = trx_rollback_for_mysql(trx); error = trx_rollback_for_mysql(trx);
...@@ -7167,7 +7162,7 @@ ha_innobase::innobase_read_and_init_auto_inc( ...@@ -7167,7 +7162,7 @@ ha_innobase::innobase_read_and_init_auto_inc(
if (auto_inc == 0) { if (auto_inc == 0) {
dict_index_t* index; dict_index_t* index;
ulint error = DB_SUCCESS; ulint error;
const char* autoinc_col_name; const char* autoinc_col_name;
ut_a(!innodb_table->autoinc_inited); ut_a(!innodb_table->autoinc_inited);
...@@ -7239,12 +7234,10 @@ ha_innobase::innobase_get_auto_increment( ...@@ -7239,12 +7234,10 @@ ha_innobase::innobase_get_auto_increment(
trx = prebuilt->trx; trx = prebuilt->trx;
dict_table_autoinc_unlock(prebuilt->table); dict_table_autoinc_unlock(prebuilt->table);
if (trx->auto_inc_lock) {
/* If we had reserved the AUTO-INC /* If we had reserved the AUTO-INC
lock in this SQL statement we release lock in this SQL statement we release
it before retrying.*/ it before retrying.*/
row_unlock_table_autoinc_for_mysql(trx); row_unlock_table_autoinc_for_mysql(trx);
}
/* Just to make sure */ /* Just to make sure */
ut_a(!trx->auto_inc_lock); ut_a(!trx->auto_inc_lock);
...@@ -7286,6 +7279,7 @@ ha_innobase::get_auto_increment( ...@@ -7286,6 +7279,7 @@ ha_innobase::get_auto_increment(
ulonglong *first_value, /* out: the autoinc value */ ulonglong *first_value, /* out: the autoinc value */
ulonglong *nb_reserved_values) /* out: count of reserved values */ ulonglong *nb_reserved_values) /* out: count of reserved values */
{ {
trx_t* trx;
ulint error; ulint error;
ulonglong autoinc = 0; ulonglong autoinc = 0;
...@@ -7312,37 +7306,29 @@ ha_innobase::get_auto_increment( ...@@ -7312,37 +7306,29 @@ ha_innobase::get_auto_increment(
this method for the same statement results in different values which this method for the same statement results in different values which
don't make sense. Therefore we store the value the first time we are don't make sense. Therefore we store the value the first time we are
called and count down from that as rows are written (see write_row()). called and count down from that as rows are written (see write_row()).
*/
We make one exception, if the *first_value is precomputed by MySQL trx = prebuilt->trx;
we use that value. And set the number of reserved values to 1 if
this is the first time we were called for the SQL statement, this
will force MySQL to call us for the next value. If we are in the
middle of a multi-row insert we preserve the existing counter.*/
if (*first_value == 0) {
/* Called for the first time ? */ /* Called for the first time ? */
if (prebuilt->trx->n_autoinc_rows == 0) { if (trx->n_autoinc_rows == 0) {
prebuilt->trx->n_autoinc_rows = (ulint) nb_desired_values; trx->n_autoinc_rows = (ulint) nb_desired_values;
/* It's possible for nb_desired_values to be 0: /* It's possible for nb_desired_values to be 0:
e.g., INSERT INTO T1(C) SELECT C FROM T2; */ e.g., INSERT INTO T1(C) SELECT C FROM T2; */
if (nb_desired_values == 0) { if (nb_desired_values == 0) {
++prebuilt->trx->n_autoinc_rows; trx->n_autoinc_rows = 1;
}
} }
*first_value = autoinc; set_if_bigger(*first_value, autoinc);
/* Not in the middle of a mult-row INSERT. */
} else if (prebuilt->trx->n_autoinc_rows == 0) { } else if (prebuilt->last_value == 0) {
set_if_bigger(*first_value, autoinc);
prebuilt->trx->n_autoinc_rows = 1;
} }
ut_a(prebuilt->trx->n_autoinc_rows > 0); *nb_reserved_values = trx->n_autoinc_rows;
*nb_reserved_values = prebuilt->trx->n_autoinc_rows;
/* With old style AUTOINC locking we only update the table's /* With old style AUTOINC locking we only update the table's
AUTOINC counter after attempting to insert the row. */ AUTOINC counter after attempting to insert the row. */
...@@ -7669,12 +7655,10 @@ innobase_xa_prepare( ...@@ -7669,12 +7655,10 @@ innobase_xa_prepare(
/* We just mark the SQL statement ended and do not do a /* We just mark the SQL statement ended and do not do a
transaction prepare */ transaction prepare */
if (trx->auto_inc_lock) {
/* If we had reserved the auto-inc lock for some /* If we had reserved the auto-inc lock for some
table in this SQL statement we release it now */ table in this SQL statement we release it now */
row_unlock_table_autoinc_for_mysql(trx); row_unlock_table_autoinc_for_mysql(trx);
}
/* Store the current undo_no of the transaction so that we /* Store the current undo_no of the transaction so that we
know where to roll back if we have to roll back the next know where to roll back if we have to roll back the next
...@@ -8025,7 +8009,7 @@ static MYSQL_SYSVAR_STR(data_file_path, innobase_data_file_path, ...@@ -8025,7 +8009,7 @@ static MYSQL_SYSVAR_STR(data_file_path, innobase_data_file_path,
NULL, NULL, NULL); NULL, NULL, NULL);
static MYSQL_SYSVAR_LONG(autoinc_lock_mode, innobase_autoinc_lock_mode, static MYSQL_SYSVAR_LONG(autoinc_lock_mode, innobase_autoinc_lock_mode,
PLUGIN_VAR_RQCMDARG, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
"The AUTOINC lock modes supported by InnoDB:\n" "The AUTOINC lock modes supported by InnoDB:\n"
" 0 => Old style AUTOINC locking (for backward compatibility)\n" " 0 => Old style AUTOINC locking (for backward compatibility)\n"
" 1 => New style AUTOINC locking\n" " 1 => New style AUTOINC locking\n"
......
...@@ -4533,7 +4533,6 @@ row_search_autoinc_read_column( ...@@ -4533,7 +4533,6 @@ row_search_autoinc_read_column(
ibool unsigned_type) /* in: signed or unsigned flag */ ibool unsigned_type) /* in: signed or unsigned flag */
{ {
ulint len; ulint len;
byte* ptr;
const byte* data; const byte* data;
ib_longlong value; ib_longlong value;
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
...@@ -4555,49 +4554,20 @@ row_search_autoinc_read_column( ...@@ -4555,49 +4554,20 @@ row_search_autoinc_read_column(
ut_a(len != UNIV_SQL_NULL); ut_a(len != UNIV_SQL_NULL);
ut_a(len <= sizeof value); ut_a(len <= sizeof value);
#ifdef WORDS_BIGENDIAN
/* Copy integer data and restore sign bit */ /* Copy integer data and restore sign bit */
if (unsigned_type || (data[0] & 128))
memset(dest, 0x00, sizeof(dest));
else
memset(dest, 0xff, sizeof(dest));
memcpy((ptr = dest), data, len); memcpy(dest + (sizeof(value) - len), data, len);
if (!unsigned_type) {
dest[0] ^= 128;
}
#else
/* Convert integer data from Innobase to a little-endian format,
sign bit restored to normal */
for (ptr = dest + len; ptr != dest; ++data) {
--ptr;
*ptr = *data;
}
if (!unsigned_type) { if (!unsigned_type)
dest[len - 1] ^= 128; dest[sizeof(value) - len] ^= 128;
}
#endif
/* The assumption here is that the AUTOINC value can't be negative.*/ /* The assumption here is that the AUTOINC value can't be negative.*/
switch (len) { value = (((ib_longlong) mach_read_from_4(dest)) << 32) |
case 8: ((ib_longlong) mach_read_from_4(dest + 4));
value = *(ib_longlong*) ptr;
break;
case 4:
value = *(ib_uint32_t*) ptr;
break;
case 2:
value = *(uint16 *) ptr;
break;
case 1:
value = *ptr;
break;
default:
ut_error;
}
if (UNIV_LIKELY_NULL(heap)) { if (UNIV_LIKELY_NULL(heap)) {
mem_heap_free(heap); mem_heap_free(heap);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment