Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
f09fc500
Commit
f09fc500
authored
Aug 12, 2009
by
Mattias Jonsson
Browse files
Options
Browse Files
Download
Plain Diff
merge
parents
7b8d509b
48e0325c
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
261 additions
and
3 deletions
+261
-3
mysql-test/r/disabled_partition.require
mysql-test/r/disabled_partition.require
+2
-0
mysql-test/r/not_partition.result
mysql-test/r/not_partition.result
+45
-0
mysql-test/r/partition_disabled.result
mysql-test/r/partition_disabled.result
+93
-0
mysql-test/std_data/parts/t1.frm
mysql-test/std_data/parts/t1.frm
+0
-0
mysql-test/t/not_partition.test
mysql-test/t/not_partition.test
+24
-1
mysql-test/t/partition_disabled-master.opt
mysql-test/t/partition_disabled-master.opt
+1
-0
mysql-test/t/partition_disabled.test
mysql-test/t/partition_disabled.test
+85
-0
sql/sql_yacc.yy
sql/sql_yacc.yy
+2
-2
sql/table.cc
sql/table.cc
+9
-0
No files found.
mysql-test/r/disabled_partition.require
0 → 100644
View file @
f09fc500
Variable_name Value
have_partitioning DISABLED
mysql-test/r/not_partition.result
View file @
f09fc500
DROP TABLE IF EXISTS t1;
FLUSH TABLES;
SELECT * FROM t1;
ERROR 42000: Unknown table engine 'partition'
TRUNCATE TABLE t1;
ERROR 42000: Unknown table engine 'partition'
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze Error Unknown table engine 'partition'
test.t1 analyze error Corrupt
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check Error Unknown table engine 'partition'
test.t1 check error Corrupt
OPTIMIZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 optimize Error Unknown table engine 'partition'
test.t1 optimize error Corrupt
REPAIR TABLE t1;
Table Op Msg_type Msg_text
test.t1 repair Error Unknown table engine 'partition'
test.t1 repair error Corrupt
ALTER TABLE t1 REPAIR PARTITION ALL;
Table Op Msg_type Msg_text
test.t1 repair Error Unknown table engine 'partition'
test.t1 repair error Corrupt
ALTER TABLE t1 CHECK PARTITION ALL;
Table Op Msg_type Msg_text
test.t1 check Error Unknown table engine 'partition'
test.t1 check error Corrupt
ALTER TABLE t1 OPTIMIZE PARTITION ALL;
Table Op Msg_type Msg_text
test.t1 optimize Error Unknown table engine 'partition'
test.t1 optimize error Corrupt
ALTER TABLE t1 ANALYZE PARTITION ALL;
Table Op Msg_type Msg_text
test.t1 analyze Error Unknown table engine 'partition'
test.t1 analyze error Corrupt
ALTER TABLE t1 REBUILD PARTITION ALL;
ERROR 42000: Unknown table engine 'partition'
ALTER TABLE t1 ENGINE Memory;
ERROR 42000: Unknown table engine 'partition'
ALTER TABLE t1 ADD (new INT);
ERROR 42000: Unknown table engine 'partition'
DROP TABLE t1;
CREATE TABLE t1 (
firstname VARCHAR(25) NOT NULL,
lastname VARCHAR(25) NOT NULL,
...
...
mysql-test/r/partition_disabled.result
0 → 100644
View file @
f09fc500
DROP TABLE IF EXISTS t1;
FLUSH TABLES;
SELECT * FROM t1;
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
TRUNCATE TABLE t1;
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
ANALYZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 analyze Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
test.t1 analyze error Corrupt
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
test.t1 check error Corrupt
OPTIMIZE TABLE t1;
Table Op Msg_type Msg_text
test.t1 optimize Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
test.t1 optimize error Corrupt
REPAIR TABLE t1;
Table Op Msg_type Msg_text
test.t1 repair Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
test.t1 repair error Corrupt
ALTER TABLE t1 REPAIR PARTITION ALL;
Table Op Msg_type Msg_text
test.t1 repair Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
test.t1 repair error Corrupt
ALTER TABLE t1 CHECK PARTITION ALL;
Table Op Msg_type Msg_text
test.t1 check Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
test.t1 check error Corrupt
ALTER TABLE t1 OPTIMIZE PARTITION ALL;
Table Op Msg_type Msg_text
test.t1 optimize Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
test.t1 optimize error Corrupt
ALTER TABLE t1 ANALYZE PARTITION ALL;
Table Op Msg_type Msg_text
test.t1 analyze Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
test.t1 analyze error Corrupt
ALTER TABLE t1 REBUILD PARTITION ALL;
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
ALTER TABLE t1 ENGINE Memory;
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
ALTER TABLE t1 ADD (new INT);
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
DROP TABLE t1;
CREATE TABLE t1 (
firstname VARCHAR(25) NOT NULL,
lastname VARCHAR(25) NOT NULL,
username VARCHAR(16) NOT NULL,
email VARCHAR(35),
joined DATE NOT NULL
)
PARTITION BY KEY(joined)
PARTITIONS 6;
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
ALTER TABLE t1 PARTITION BY KEY(joined) PARTITIONS 2;
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
drop table t1;
ERROR 42S02: Unknown table 't1'
CREATE TABLE t1 (
firstname VARCHAR(25) NOT NULL,
lastname VARCHAR(25) NOT NULL,
username VARCHAR(16) NOT NULL,
email VARCHAR(35),
joined DATE NOT NULL
)
PARTITION BY RANGE( YEAR(joined) ) (
PARTITION p0 VALUES LESS THAN (1960),
PARTITION p1 VALUES LESS THAN (1970),
PARTITION p2 VALUES LESS THAN (1980),
PARTITION p3 VALUES LESS THAN (1990),
PARTITION p4 VALUES LESS THAN MAXVALUE
);
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
drop table t1;
ERROR 42S02: Unknown table 't1'
CREATE TABLE t1 (id INT, purchased DATE)
PARTITION BY RANGE( YEAR(purchased) )
SUBPARTITION BY HASH( TO_DAYS(purchased) )
SUBPARTITIONS 2 (
PARTITION p0 VALUES LESS THAN (1990),
PARTITION p1 VALUES LESS THAN (2000),
PARTITION p2 VALUES LESS THAN MAXVALUE
);
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
drop table t1;
ERROR 42S02: Unknown table 't1'
create table t1 (a varchar(10) charset latin1 collate latin1_bin);
insert into t1 values (''),(' '),('a'),('a '),('a ');
explain partitions select * from t1 where a='a ' OR a='a';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 5 Using where
drop table t1;
mysql-test/std_data/parts/t1.frm
0 → 100644
View file @
f09fc500
File added
mysql-test/t/not_partition.test
View file @
f09fc500
--
disable_abort_on_error
# Run this te
ts only when mysqld don't has partitioning
# Run this te
st only when mysqld don't has partitioning (not compiled with)
# the statements are not expected to work, just check that we
# can't crash the server
--
require
r
/
not_partition
.
require
disable_query_log
;
show
variables
like
"have_partitioning"
;
enable_query_log
;
--
disable_warnings
DROP
TABLE
IF
EXISTS
t1
;
--
enable_warnings
let
$MYSQLD_DATADIR
=
`SELECT @@datadir`
;
#
# Bug#39893: Crash if select on a partitioned table,
# when partitioning is disabled
FLUSH
TABLES
;
--
copy_file
$MYSQLTEST_VARDIR
/
std_data_ln
/
parts
/
t1
.
frm
$MYSQLD_DATADIR
/
test
/
t1
.
frm
SELECT
*
FROM
t1
;
TRUNCATE
TABLE
t1
;
ANALYZE
TABLE
t1
;
CHECK
TABLE
t1
;
OPTIMIZE
TABLE
t1
;
REPAIR
TABLE
t1
;
ALTER
TABLE
t1
REPAIR
PARTITION
ALL
;
ALTER
TABLE
t1
CHECK
PARTITION
ALL
;
ALTER
TABLE
t1
OPTIMIZE
PARTITION
ALL
;
ALTER
TABLE
t1
ANALYZE
PARTITION
ALL
;
ALTER
TABLE
t1
REBUILD
PARTITION
ALL
;
ALTER
TABLE
t1
ENGINE
Memory
;
ALTER
TABLE
t1
ADD
(
new
INT
);
DROP
TABLE
t1
;
--
error
ER_FEATURE_DISABLED
CREATE
TABLE
t1
(
...
...
mysql-test/t/partition_disabled-master.opt
0 → 100644
View file @
f09fc500
--loose-skip-partition
mysql-test/t/partition_disabled.test
0 → 100644
View file @
f09fc500
--
disable_abort_on_error
# Run this test only when mysqld has partitioning, but it is disabled.
# The statements are not expected to work, just check that we
# can't crash the server.
--
require
r
/
disabled_partition
.
require
--
disable_query_log
show
variables
like
"have_partitioning"
;
--
enable_query_log
--
disable_warnings
DROP
TABLE
IF
EXISTS
t1
;
--
enable_warnings
let
$MYSQLD_DATADIR
=
`SELECT @@datadir`
;
#
# Bug#39893: Crash if select on a partitioned table,
# when partitioning is disabled
FLUSH
TABLES
;
--
copy_file
$MYSQLTEST_VARDIR
/
std_data_ln
/
parts
/
t1
.
frm
$MYSQLD_DATADIR
/
test
/
t1
.
frm
SELECT
*
FROM
t1
;
TRUNCATE
TABLE
t1
;
ANALYZE
TABLE
t1
;
CHECK
TABLE
t1
;
OPTIMIZE
TABLE
t1
;
REPAIR
TABLE
t1
;
ALTER
TABLE
t1
REPAIR
PARTITION
ALL
;
ALTER
TABLE
t1
CHECK
PARTITION
ALL
;
ALTER
TABLE
t1
OPTIMIZE
PARTITION
ALL
;
ALTER
TABLE
t1
ANALYZE
PARTITION
ALL
;
ALTER
TABLE
t1
REBUILD
PARTITION
ALL
;
ALTER
TABLE
t1
ENGINE
Memory
;
ALTER
TABLE
t1
ADD
(
new
INT
);
DROP
TABLE
t1
;
--
error
ER_OPTION_PREVENTS_STATEMENT
CREATE
TABLE
t1
(
firstname
VARCHAR
(
25
)
NOT
NULL
,
lastname
VARCHAR
(
25
)
NOT
NULL
,
username
VARCHAR
(
16
)
NOT
NULL
,
email
VARCHAR
(
35
),
joined
DATE
NOT
NULL
)
PARTITION
BY
KEY
(
joined
)
PARTITIONS
6
;
--
error
ER_OPTION_PREVENTS_STATEMENT
ALTER
TABLE
t1
PARTITION
BY
KEY
(
joined
)
PARTITIONS
2
;
--
error
ER_BAD_TABLE_ERROR
drop
table
t1
;
--
error
ER_OPTION_PREVENTS_STATEMENT
CREATE
TABLE
t1
(
firstname
VARCHAR
(
25
)
NOT
NULL
,
lastname
VARCHAR
(
25
)
NOT
NULL
,
username
VARCHAR
(
16
)
NOT
NULL
,
email
VARCHAR
(
35
),
joined
DATE
NOT
NULL
)
PARTITION
BY
RANGE
(
YEAR
(
joined
)
)
(
PARTITION
p0
VALUES
LESS
THAN
(
1960
),
PARTITION
p1
VALUES
LESS
THAN
(
1970
),
PARTITION
p2
VALUES
LESS
THAN
(
1980
),
PARTITION
p3
VALUES
LESS
THAN
(
1990
),
PARTITION
p4
VALUES
LESS
THAN
MAXVALUE
);
--
error
ER_BAD_TABLE_ERROR
drop
table
t1
;
--
error
ER_OPTION_PREVENTS_STATEMENT
CREATE
TABLE
t1
(
id
INT
,
purchased
DATE
)
PARTITION
BY
RANGE
(
YEAR
(
purchased
)
)
SUBPARTITION
BY
HASH
(
TO_DAYS
(
purchased
)
)
SUBPARTITIONS
2
(
PARTITION
p0
VALUES
LESS
THAN
(
1990
),
PARTITION
p1
VALUES
LESS
THAN
(
2000
),
PARTITION
p2
VALUES
LESS
THAN
MAXVALUE
);
--
error
ER_BAD_TABLE_ERROR
drop
table
t1
;
# Create a table without partitions to test "EXPLAIN PARTITIONS"
create
table
t1
(
a
varchar
(
10
)
charset
latin1
collate
latin1_bin
);
insert
into
t1
values
(
''
),(
' '
),(
'a'
),(
'a '
),(
'a '
);
explain
partitions
select
*
from
t1
where
a
=
'a '
OR
a
=
'a'
;
drop
table
t1
;
sql/sql_yacc.yy
View file @
f09fc500
...
...
@@ -3757,8 +3757,8 @@ partitioning:
LEX_STRING partition_name={C_STRING_WITH_LEN("partition")};
if (!plugin_is_ready(&partition_name, MYSQL_STORAGE_ENGINE_PLUGIN))
{
my_error(ER_
FEATURE_DISABLED
, MYF(0),
"partitioning", "--with
-partition");
my_error(ER_
OPTION_PREVENTS_STATEMENT
, MYF(0),
"--skip
-partition");
MYSQL_YYABORT;
}
lex->part_info= new partition_info();
...
...
sql/table.cc
View file @
f09fc500
...
...
@@ -913,6 +913,15 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
we unlock the old value of share->db_plugin before
replacing it with a globally locked version of tmp_plugin
*/
/* Check if the partitioning engine is ready */
if
(
!
plugin_is_ready
(
&
name
,
MYSQL_STORAGE_ENGINE_PLUGIN
))
{
error
=
8
;
my_error
(
ER_OPTION_PREVENTS_STATEMENT
,
MYF
(
0
),
"--skip-partition"
);
my_free
(
buff
,
MYF
(
0
));
goto
err
;
}
plugin_unlock
(
NULL
,
share
->
db_plugin
);
share
->
db_plugin
=
ha_lock_engine
(
NULL
,
partition_hton
);
DBUG_PRINT
(
"info"
,
(
"setting dbtype to '%.*s' (%d)"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment