mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 05:52:27 +01:00
a4fff491eb
Fall back to use ALTER TABLE for engines that doesn't support REPAIR when doing repair for upgrade. Nicer output from mysql_upgrade and mysql_check Updated all arrays that used NAME_LEN to use SAFE_NAME_LEN to ensure that we don't break things accidently as names can now have a #mysql50# prefix. client/mysql_upgrade.c: If we are using verbose, also run mysqlcheck in verbose mode. client/mysqlcheck.c: Add more information if running in verbose mode Print 'Needs upgrade' instead of complex error if table needs to be upgraded Don't write connect information if verbose is not 2 or above mysql-test/r/drop.result: Updated test and results as we now support full table names mysql-test/r/grant.result: Now you get a correct error message if using #mysql with paths mysql-test/r/show_check.result: Update results as table names can temporarly be bigger than NAME_LEN (during upgrade) mysql-test/r/upgrade.result: Test upgrade for long table names. mysql-test/suite/funcs_1/r/is_tables_is.result: Updated old test result (had note been updated in a while) mysql-test/t/drop.test: Updated test and results as we now support full table names mysql-test/t/grant.test: Now you get a correct error message if using #mysql with paths mysql-test/t/upgrade.test: Test upgrade for long table names. sql/ha_partition.cc: NAME_LEN -> SAFE_NAME_LEN sql/item.cc: NAME_LEN -> SAFE_NAME_LEN sql/log_event.cc: NAME_LEN -> SAFE_NAME_LEN sql/mysql_priv.h: Added SAFE_NAME_LEN sql/rpl_filter.cc: NAME_LEN -> SAFE_NAME_LEN sql/sp.cc: NAME_LEN -> SAFE_NAME_LEN sql/sp_head.cc: NAME_LEN -> SAFE_NAME_LEN sql/sql_acl.cc: NAME_LEN -> SAFE_NAME_LEN sql/sql_base.cc: NAME_LEN -> SAFE_NAME_LEN sql/sql_connect.cc: NAME_LEN -> SAFE_NAME_LEN sql/sql_parse.cc: NAME_LEN -> SAFE_NAME_LEN sql/sql_prepare.cc: NAME_LEN -> SAFE_NAME_LEN sql/sql_select.cc: NAME_LEN -> SAFE_NAME_LEN sql/sql_show.cc: NAME_LEN -> SAFE_NAME_LEN Enlarge table names for SHOW TABLES to also include optional #mysql50# sql/sql_table.cc: Fall back to use ALTER TABLE for engines that doesn't support REPAIR when doing repair for upgrade. sql/sql_trigger.cc: NAME_LEN -> SAFE_NAME_LEN sql/sql_udf.cc: NAME_LEN -> SAFE_NAME_LEN sql/sql_view.cc: NAME_LEN -> SAFE_NAME_LEN sql/table.cc: Fixed check_table_name() to not count #mysql50# as part of name If #mysql50# is part of the name, don't allow path characters in name.
150 lines
5.4 KiB
Text
150 lines
5.4 KiB
Text
drop database if exists `mysqltest1`;
|
|
drop database if exists `mysqltest-1`;
|
|
drop database if exists `#mysql50#mysqltest-1`;
|
|
create database `mysqltest1`;
|
|
create database `#mysql50#mysqltest-1`;
|
|
create table `mysqltest1`.`t1` (a int);
|
|
create table `mysqltest1`.`#mysql50#t-1` (a int);
|
|
create table `#mysql50#mysqltest-1`.`t1` (a int);
|
|
create table `#mysql50#mysqltest-1`.`#mysql50#t-1` (a int);
|
|
show create database `mysqltest1`;
|
|
Database Create Database
|
|
mysqltest1 CREATE DATABASE `mysqltest1` /*!40100 DEFAULT CHARACTER SET latin1 */
|
|
show create database `mysqltest-1`;
|
|
ERROR 42000: Unknown database 'mysqltest-1'
|
|
show create database `#mysql50#mysqltest-1`;
|
|
Database Create Database
|
|
#mysql50#mysqltest-1 CREATE DATABASE `#mysql50#mysqltest-1` /*!40100 DEFAULT CHARACTER SET latin1 */
|
|
show tables in `mysqltest1`;
|
|
Tables_in_mysqltest1
|
|
#mysql50#t-1
|
|
t1
|
|
show tables in `#mysql50#mysqltest-1`;
|
|
Tables_in_#mysql50#mysqltest-1
|
|
#mysql50#t-1
|
|
t1
|
|
show create database `mysqltest1`;
|
|
Database Create Database
|
|
mysqltest1 CREATE DATABASE `mysqltest1` /*!40100 DEFAULT CHARACTER SET latin1 */
|
|
show create database `mysqltest-1`;
|
|
Database Create Database
|
|
mysqltest-1 CREATE DATABASE `mysqltest-1` /*!40100 DEFAULT CHARACTER SET latin1 */
|
|
show create database `#mysql50#mysqltest-1`;
|
|
ERROR 42000: Unknown database '#mysql50#mysqltest-1'
|
|
show tables in `mysqltest1`;
|
|
Tables_in_mysqltest1
|
|
t1
|
|
t-1
|
|
show tables in `mysqltest-1`;
|
|
Tables_in_mysqltest-1
|
|
t1
|
|
t-1
|
|
drop database `mysqltest1`;
|
|
drop database `mysqltest-1`;
|
|
drop table if exists `txu@0023p@0023p1`;
|
|
drop table if exists `txu#p#p1`;
|
|
create table `txu#p#p1` (s1 int);
|
|
insert into `txu#p#p1` values (1);
|
|
select * from `txu@0023p@0023p1`;
|
|
ERROR 42S02: Table 'test.txu@0023p@0023p1' doesn't exist
|
|
create table `txu@0023p@0023p1` (s1 int);
|
|
insert into `txu@0023p@0023p1` values (2);
|
|
select * from `txu@0023p@0023p1`;
|
|
s1
|
|
2
|
|
select * from `txu#p#p1`;
|
|
s1
|
|
1
|
|
drop table `txu@0023p@0023p1`;
|
|
drop table `txu#p#p1`;
|
|
#
|
|
# Bug#37631 Incorrect key file for table after upgrading from 5.0 to 5.1
|
|
#
|
|
# copy table created using mysql4.0 into the data dir
|
|
# check the table created using mysql 4.0
|
|
CHECK TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check error Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
|
|
# query the table created using mysql 4.0
|
|
SELECT * FROM t1;
|
|
c1 c2 c3
|
|
DROP TABLE t1;
|
|
truncate t1;
|
|
drop table t1;
|
|
drop database if exists `tabc`;
|
|
drop database if exists `a-b-c`;
|
|
create database `tabc` default character set latin2;
|
|
create table tabc.t1 (a int);
|
|
FLUSH TABLES;
|
|
show databases like '%a-b-c%';
|
|
Database (%a-b-c%)
|
|
#mysql50#a-b-c
|
|
ALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME;
|
|
show databases like '%a-b-c%';
|
|
Database (%a-b-c%)
|
|
a-b-c
|
|
show create database `a-b-c`;
|
|
Database Create Database
|
|
a-b-c CREATE DATABASE `a-b-c` /*!40100 DEFAULT CHARACTER SET latin2 */
|
|
show tables in `a-b-c`;
|
|
Tables_in_a-b-c
|
|
t1
|
|
show create table `a-b-c`.`t1`;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin2
|
|
drop database `a-b-c`;
|
|
drop database `tabc`;
|
|
use `#mysql50#a-b-c`;
|
|
create table t1(f1 char(10));
|
|
show databases like '%a-b-c%';
|
|
Database (%a-b-c%)
|
|
#mysql50#a-b-c
|
|
ALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME;
|
|
show databases like '%a-b-c%';
|
|
Database (%a-b-c%)
|
|
a-b-c
|
|
show create view `a-b-c`.v1;
|
|
View Create View character_set_client collation_connection
|
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `a`.`f1` AS `f1` from (`a-b-c`.`t1` `a` join `information_schema`.`tables` `b`) where (convert(`a`.`f1` using utf8) = `b`.`TABLE_NAME`) utf8 utf8_general_ci
|
|
select * from `a-b-c`.v1;
|
|
f1
|
|
drop database `a-b-c`;
|
|
use test;
|
|
# End of 5.0 tests
|
|
#
|
|
# Bug #53804: serious flaws in the alter database .. upgrade data
|
|
# directory name command
|
|
#
|
|
ALTER DATABASE `#mysql50#:` UPGRADE DATA DIRECTORY NAME;
|
|
ERROR 42000: Unknown database '#mysql50#:'
|
|
ALTER DATABASE `#mysql50#.` UPGRADE DATA DIRECTORY NAME;
|
|
ERROR 42000: Incorrect database name '#mysql50#.'
|
|
ALTER DATABASE `#mysql50#../` UPGRADE DATA DIRECTORY NAME;
|
|
ERROR 42000: Incorrect database name '#mysql50#../'
|
|
ALTER DATABASE `#mysql50#../..` UPGRADE DATA DIRECTORY NAME;
|
|
ERROR 42000: Incorrect database name '#mysql50#../..'
|
|
ALTER DATABASE `#mysql50#../../` UPGRADE DATA DIRECTORY NAME;
|
|
ERROR 42000: Incorrect database name '#mysql50#../../'
|
|
ALTER DATABASE `#mysql50#./blablabla` UPGRADE DATA DIRECTORY NAME;
|
|
ERROR 42000: Incorrect database name '#mysql50#./blablabla'
|
|
ALTER DATABASE `#mysql50#../blablabla` UPGRADE DATA DIRECTORY NAME;
|
|
ERROR 42000: Incorrect database name '#mysql50#../blablabla'
|
|
ALTER DATABASE `#mysql50#/` UPGRADE DATA DIRECTORY NAME;
|
|
ERROR 42000: Incorrect database name '#mysql50#/'
|
|
ALTER DATABASE `#mysql50#/.` UPGRADE DATA DIRECTORY NAME;
|
|
ERROR 42000: Incorrect database name '#mysql50#/.'
|
|
USE `#mysql50#.`;
|
|
ERROR 42000: Incorrect database name '#mysql50#.'
|
|
USE `#mysql50#../blablabla`;
|
|
ERROR 42000: Incorrect database name '#mysql50#../blablabla'
|
|
show full tables;
|
|
Tables_in_test Table_type
|
|
#mysql50#ltoriaeinnovacionendesarrolloempres?9120761097220077376?cio_com BASE TABLE
|
|
rename table `#mysql50#ltoriaeinnovacionendesarrolloempres?9120761097220077376?cio_com` to `ltoriaeinnovacionendesarrolloempres?9120761097220077376?cio_com`;
|
|
show full tables;
|
|
Tables_in_test Table_type
|
|
ltoriaeinnovacionendesarrolloempres?9120761097220077376?cio_com BASE TABLE
|
|
drop table `ltoriaeinnovacionendesarrolloempres?9120761097220077376?cio_com`;
|
|
# End of 5.1 tests
|