summaryrefslogtreecommitdiff
path: root/mysql-test/main/fix_priv_tables.test
blob: 293d3915a0529765b250f36b276b6efaa3834691 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# Embedded server doesn't support external clients
--source include/not_embedded.inc

# Don't run this test if $MYSQL_FIX_PRIVILEGE_TABLES isn't set
# to the location of mysql_fix_privilege_tables.sql
if (!$MYSQL_FIX_PRIVILEGE_TABLES)
{
  skip Test need MYSQL_FIX_PRIVILEGE_TABLES;
}

#
# This is the test for mysql_fix_privilege_tables
# It checks that a system tables from mysql 4.1.23
# can be upgraded to current system table format
#
# Note: If this test fails, don't be confused about the errors reported
# by mysql-test-run This shows warnings generated by
# mysql_fix_system_tables which should be ignored.
# Instead, concentrate on the errors in r/system_mysql_db.reject

--disable_warnings
drop table if exists t1,t1aa,t2aa;
--enable_warnings

set sql_mode="";

#
# Bug #20589 Missing some table level privileges after upgrade
#
# Add some grants that should survive the "upgrade"

--disable_warnings
DROP DATABASE IF EXISTS testdb;
--enable_warnings
CREATE DATABASE testdb;
CREATE TABLE testdb.t1 (
  c1 INT,
  c3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);

CREATE VIEW testdb.v1 AS
        SELECT * FROM testdb.t1;

GRANT CREATE VIEW, SHOW VIEW ON testdb.v1 TO 'show_view_tbl'@'localhost';
SHOW GRANTS FOR 'show_view_tbl'@'localhost';
echo;

# Some extra GRANTS for more complete test
GRANT SELECT(c1) on testdb.v1 to 'select_only_c1'@localhost;
SHOW GRANTS FOR 'select_only_c1'@'localhost';
echo;

-- disable_result_log
-- disable_query_log

# Run the mysql_fix_privilege_tables.sql using "mysql --force"
# Determine the number of open sessions
--source include/count_sessions.inc
--exec $MYSQL --force mysql < $MYSQL_FIX_PRIVILEGE_TABLES > $MYSQLTEST_VARDIR/tmp/fix_priv_tables.log 2>&1
--remove_file $MYSQLTEST_VARDIR/tmp/fix_priv_tables.log
# Wait till the number of open sessions is <= the number before the run with $MYSQL
# = The session caused by mysql has finished its disconnect
--source include/wait_until_count_sessions.inc

-- enable_query_log
-- enable_result_log

echo "after fix privs";

SHOW GRANTS FOR 'show_view_tbl'@'localhost';
echo;
SHOW GRANTS FOR 'select_only_c1'@'localhost';
echo;

DROP USER 'show_view_tbl'@'localhost';
DROP USER 'select_only_c1'@'localhost';

DROP VIEW testdb.v1;
DROP TABLE testdb.t1;
DROP DATABASE testdb;

# End of 4.1 tests