mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 03:21:53 +01:00
e76bb8c665
warnings) Before this fix, several places in the code would raise a warning with an error code 0, making it impossible for a stored procedure, a connector, or a client application to trigger logic to handle the warning. Also, the warning text was hard coded, and therefore not translated. With this fix, new errors numbers have been created to represent these warnings, and the warning text is coded in the errmsg.txt file.
121 lines
3.3 KiB
Text
121 lines
3.3 KiB
Text
DROP TABLE IF EXISTS t1;
|
|
DROP DATABASE IF EXISTS mysqltest2;
|
|
# Creating two non colliding tables mysqltest2.t1 and test.t1
|
|
# test.t1 have partitions in mysqltest2-directory!
|
|
# user root:
|
|
CREATE USER mysqltest_1@localhost;
|
|
CREATE DATABASE mysqltest2;
|
|
USE mysqltest2;
|
|
CREATE TABLE t1 (a INT);
|
|
INSERT INTO t1 VALUES (0);
|
|
# user mysqltest_1:
|
|
USE test;
|
|
CREATE TABLE t1 (a INT)
|
|
PARTITION BY LIST (a) (
|
|
PARTITION p0 VALUES IN (0)
|
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp',
|
|
PARTITION p1 VALUES IN (1)
|
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp',
|
|
PARTITION p2 VALUES IN (2)
|
|
);
|
|
# without the patch for bug#32091 this would create
|
|
# files mysqltest2/t1.MYD + .MYI and possible overwrite
|
|
# the mysqltest2.t1 table (depending on bug#32111)
|
|
ALTER TABLE t1 REMOVE PARTITIONING;
|
|
INSERT INTO t1 VALUES (1);
|
|
SELECT * FROM t1;
|
|
a
|
|
1
|
|
# user root:
|
|
USE mysqltest2;
|
|
FLUSH TABLES;
|
|
# if the patch works, this should be different
|
|
# and before the patch they were the same!
|
|
SELECT * FROM t1;
|
|
a
|
|
0
|
|
USE test;
|
|
SELECT * FROM t1;
|
|
a
|
|
1
|
|
DROP TABLE t1;
|
|
DROP DATABASE mysqltest2;
|
|
# test that symlinks can not overwrite files when CREATE TABLE
|
|
# user root:
|
|
CREATE DATABASE mysqltest2;
|
|
USE mysqltest2;
|
|
CREATE TABLE t1 (a INT)
|
|
PARTITION BY LIST (a) (
|
|
PARTITION p0 VALUES IN (0)
|
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp',
|
|
PARTITION p1 VALUES IN (1)
|
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
|
);
|
|
# user mysqltest_1:
|
|
USE test;
|
|
CREATE TABLE t1 (a INT)
|
|
PARTITION BY LIST (a) (
|
|
PARTITION p0 VALUES IN (0)
|
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp',
|
|
PARTITION p1 VALUES IN (1)
|
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
|
);
|
|
Got one of the listed errors
|
|
CREATE TABLE t1 (a INT)
|
|
PARTITION BY LIST (a) (
|
|
PARTITION p0 VALUES IN (0)
|
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp',
|
|
PARTITION p1 VALUES IN (1)
|
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
|
);
|
|
Got one of the listed errors
|
|
# user root (cleanup):
|
|
DROP DATABASE mysqltest2;
|
|
USE test;
|
|
DROP USER mysqltest_1@localhost;
|
|
create table t2 (i int )
|
|
partition by range (i)
|
|
(
|
|
partition p01 values less than (1000)
|
|
data directory="MYSQLTEST_VARDIR/tmp"
|
|
index directory="MYSQLTEST_VARDIR/tmp"
|
|
);
|
|
set @org_mode=@@sql_mode;
|
|
set @@sql_mode='NO_DIR_IN_CREATE';
|
|
select @@sql_mode;
|
|
@@sql_mode
|
|
NO_DIR_IN_CREATE
|
|
create table t1 (i int )
|
|
partition by range (i)
|
|
(
|
|
partition p01 values less than (1000)
|
|
data directory='/not/existing'
|
|
index directory='/not/existing'
|
|
);
|
|
Warnings:
|
|
Warning 1616 <DATA DIRECTORY> option ignored
|
|
Warning 1616 <INDEX DIRECTORY> option ignored
|
|
show create table t2;
|
|
Table Create Table
|
|
t2 CREATE TABLE `t2` (
|
|
`i` int(11) DEFAULT NULL
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (i) (PARTITION p01 VALUES LESS THAN (1000) ENGINE = MyISAM) */
|
|
DROP TABLE t1, t2;
|
|
set @@sql_mode=@org_mode;
|
|
create table t1 (a int)
|
|
partition by key (a)
|
|
(partition p0 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data');
|
|
Got one of the listed errors
|
|
create table t1 (a int)
|
|
partition by key (a)
|
|
(partition p0,
|
|
partition p1 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data');
|
|
Got one of the listed errors
|