~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/mysql_upgrade.test

  • Committer: Padraig O'Sullivan
  • Date: 2009-06-29 17:24:02 UTC
  • mto: This revision was merged to the branch mainline in revision 1081.
  • Revision ID: osullivan.padraig@gmail.com-20090629172402-9c5n1kr7ry7xgau7
Removed the dependency on knowing the position of an I_S table in the
schema_tables array defined in show.cc. This issue crops up in
prepare_schema_table. An issue with my design is that it increases the time
complexity from O(1) to O(n) in numerous places to determine an I_S table to
work on since we don't have an explicit index into the array and instead
need to search by name. However, as n is the number of I_S tables and this
number is quite small (at the moment n is < 30), we don't see this causing
any issue. This design makes the code much more maintainable and easier to
understand. Previously, modifying anything to do with the I_S tables meant
having to tip-toe around the issue of hard-coded indexes into the
schema_tables array.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Only run test if "mysql_upgrade" is found
2
 
--require r/have_mysql_upgrade.result
3
 
--disable_query_log
4
 
select LENGTH("$DRIZZLE_UPGRADE")>0 as have_mysql_upgrade;
5
 
--enable_query_log
6
 
 
7
 
#
8
 
# Basic test that we can run mysql_upgrde and that it finds the
9
 
# expected binaries it uses.
10
 
#
11
 
--echo Run mysql_upgrade once
12
 
--exec $DRIZZLE_UPGRADE --skip-verbose 2>&1
13
 
 
14
 
# It should have created a file in the MySQL Servers datadir
15
 
file_exists $MYSQLTEST_VARDIR/master-data/mysql_upgrade_info;
16
 
 
17
 
--echo Run it again - should say already completed
18
 
--replace_result $DRIZZLE_SERVER_VERSION VERSION
19
 
--error 1
20
 
--exec $DRIZZLE_UPGRADE --skip-verbose 2>&1
21
 
 
22
 
# It should have created a file in the MySQL Servers datadir
23
 
file_exists $MYSQLTEST_VARDIR/master-data/mysql_upgrade_info;
24
 
 
25
 
--echo Force should run it regardless of wether it's been run before
26
 
--exec $DRIZZLE_UPGRADE --skip-verbose --force 2>&1
27
 
 
28
 
# It should have created a file in the MySQL Servers datadir
29
 
file_exists $MYSQLTEST_VARDIR/master-data/mysql_upgrade_info;
30
 
 
31
 
 
32
 
#
33
 
# Bug #25452 mysql_upgrade access denied.
34
 
#
35
 
 
36
 
# Password protect a root account and run mysql_upgrade
37
 
 
38
 
CREATE USER mysqltest1@'%' IDENTIFIED by 'sakila';
39
 
GRANT ALL ON *.* TO mysqltest1@'%';
40
 
--echo Run mysql_upgrade with password protected account
41
 
--exec $DRIZZLE_UPGRADE --skip-verbose --force --user=mysqltest1 --password=sakila 2>&1
42
 
 
43
 
DROP USER mysqltest1@'%';
44
 
 
45
 
 
46
 
#
47
 
# Bug #26639 mysql_upgrade exits successfully even if external command failed
48
 
#
49
 
 
50
 
--echo Run mysql_upgrade with a non existing server socket
51
 
--replace_result $MYSQLTEST_VARDIR var
52
 
--replace_regex /.*mysqlcheck.*: Got/mysqlcheck: Got/ /\([0-9]*\)/(errno)/
53
 
--error 1
54
 
--exec $DRIZZLE_UPGRADE --skip-verbose --force --host=not_existing_host 2>&1
55
 
 
56
 
#
57
 
# Bug #28401 mysql_upgrade Failed with STRICT_ALL_TABLES, ANSI_QUOTES and NO_ZERO_DATE
58
 
#
59
 
 
60
 
# The SQL commands used by mysql_upgrade are written to be run
61
 
# with sql_mode set to '' - thus the scripts should change sql_mode
62
 
# for the session to make sure the SQL is legal.
63
 
 
64
 
# Test by setting sql_mode before running mysql_upgrade
65
 
set GLOBAL sql_mode='STRICT_ALL_TABLES,ANSI_QUOTES,NO_ZERO_DATE';
66
 
--exec $DRIZZLE_UPGRADE --skip-verbose --force 2>&1
67
 
eval set GLOBAL sql_mode=default;