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
f3f4e41c
Commit
f3f4e41c
authored
Oct 21, 2009
by
Mikael Ronstrom
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added checks for no NULL values in VALUES LESS THAN, added tests for no MAXVALUE in VALUES IN
parent
540015aa
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
46 additions
and
19 deletions
+46
-19
mysql-test/r/partition_column.result
mysql-test/r/partition_column.result
+18
-10
mysql-test/t/partition_column.test
mysql-test/t/partition_column.test
+15
-5
sql/partition_info.cc
sql/partition_info.cc
+10
-1
sql/share/errmsg.txt
sql/share/errmsg.txt
+2
-2
sql/sql_yacc.yy
sql/sql_yacc.yy
+1
-1
No files found.
mysql-test/r/partition_column.result
View file @
f3f4e41c
drop table if exists t1;
drop table if exists t1;
create table t1 (a int, b int)
create table t1 (a int, b int)
partition by range column_list (a,b)
(partition p0 values less than (NULL, maxvalue));
ERROR HY000: Not allowed to use NULL value in VALUES LESS THAN
create table t1 (a int, b int)
partition by list column_list(a,b)
( partition p0 values in ((maxvalue, 0)));
Got one of the listed errors
create table t1 (a int, b int)
partition by key (a,a);
partition by key (a,a);
ERROR HY000: Duplicate partition field name a
ERROR HY000: Duplicate partition field name a
create table t1 (a int, b int)
create table t1 (a int, b int)
...
@@ -144,17 +152,17 @@ create table t1 (a int, b char(10), c varchar(25), d datetime)
...
@@ -144,17 +152,17 @@ create table t1 (a int, b char(10), c varchar(25), d datetime)
partition by range column_list(a,b,c,d)
partition by range column_list(a,b,c,d)
subpartition by hash (to_seconds(d))
subpartition by hash (to_seconds(d))
subpartitions 4
subpartitions 4
( partition p0 values less than (1,
NULL, MAXVALUE, NULL
),
( partition p0 values less than (1,
0, MAXVALUE, 0
),
partition p1 values less than (1, 'a', MAXVALUE, TO_DAYS('1999-01-01')),
partition p1 values less than (1, 'a', MAXVALUE, TO_DAYS('1999-01-01')),
partition p2 values less than (1, 'a', MAXVALUE, MAXVALUE),
partition p2 values less than (1, 'a', MAXVALUE, MAXVALUE),
partition p3 values less than (1, MAXVALUE, MAXVALUE, MAXVALUE));
partition p3 values less than (1, MAXVALUE, MAXVALUE, MAXVALUE));
select partition_method, partition_expression, partition_description
select partition_method, partition_expression, partition_description
from information_schema.partitions where table_name = "t1";
from information_schema.partitions where table_name = "t1";
partition_method partition_expression partition_description
partition_method partition_expression partition_description
RANGE COLUMN_LIST a,b,c,d 1,
NULL,MAXVALUE,NULL
RANGE COLUMN_LIST a,b,c,d 1,
0,MAXVALUE,0
RANGE COLUMN_LIST a,b,c,d 1,
NULL,MAXVALUE,NULL
RANGE COLUMN_LIST a,b,c,d 1,
0,MAXVALUE,0
RANGE COLUMN_LIST a,b,c,d 1,
NULL,MAXVALUE,NULL
RANGE COLUMN_LIST a,b,c,d 1,
0,MAXVALUE,0
RANGE COLUMN_LIST a,b,c,d 1,
NULL,MAXVALUE,NULL
RANGE COLUMN_LIST a,b,c,d 1,
0,MAXVALUE,0
RANGE COLUMN_LIST a,b,c,d 1,'a',MAXVALUE,730120
RANGE COLUMN_LIST a,b,c,d 1,'a',MAXVALUE,730120
RANGE COLUMN_LIST a,b,c,d 1,'a',MAXVALUE,730120
RANGE COLUMN_LIST a,b,c,d 1,'a',MAXVALUE,730120
RANGE COLUMN_LIST a,b,c,d 1,'a',MAXVALUE,730120
RANGE COLUMN_LIST a,b,c,d 1,'a',MAXVALUE,730120
...
@@ -233,7 +241,7 @@ partition p1 values less than ('2040-01-01'));
...
@@ -233,7 +241,7 @@ partition p1 values less than ('2040-01-01'));
ERROR HY000: Partition column values of incorrect type
ERROR HY000: Partition column values of incorrect type
create table t1 (a int, b int)
create table t1 (a int, b int)
partition by range column_list(a,b)
partition by range column_list(a,b)
(partition p0 values less than (
null
, 10));
(partition p0 values less than (
maxvalue
, 10));
drop table t1;
drop table t1;
create table t1 (d date)
create table t1 (d date)
partition by range column_list(d)
partition by range column_list(d)
...
@@ -268,7 +276,7 @@ drop table t1;
...
@@ -268,7 +276,7 @@ drop table t1;
create table t1 (a int, b int)
create table t1 (a int, b int)
partition by list column_list(a,b)
partition by list column_list(a,b)
(partition p0 values in ((maxvalue,maxvalue)));
(partition p0 values in ((maxvalue,maxvalue)));
ERROR 42000: Cannot use MAXVALUE as value in
List partitioning
near 'maxvalue,maxvalue)))' at line 3
ERROR 42000: Cannot use MAXVALUE as value in
VALUES IN
near 'maxvalue,maxvalue)))' at line 3
create table t1 (a int, b int)
create table t1 (a int, b int)
partition by range column_list(a,b)
partition by range column_list(a,b)
(partition p0 values less than (maxvalue,maxvalue));
(partition p0 values less than (maxvalue,maxvalue));
...
@@ -309,11 +317,11 @@ partition by range column_list(a,b)
...
@@ -309,11 +317,11 @@ partition by range column_list(a,b)
ERROR HY000: Inconsistency in usage of column lists for partitioning
ERROR HY000: Inconsistency in usage of column lists for partitioning
create table t1 (a int, b int)
create table t1 (a int, b int)
partition by range column_list(a,b)
partition by range column_list(a,b)
(partition p0 values less than (1,
NULL
),
(partition p0 values less than (1,
0
),
partition p1 values less than (2, maxvalue),
partition p1 values less than (2, maxvalue),
partition p2 values less than (3, 3),
partition p2 values less than (3, 3),
partition p3 values less than (10,
NULL
));
partition p3 values less than (10,
maxvalue
));
insert into t1 values (1
0
,0);
insert into t1 values (1
1
,0);
ERROR HY000: Table has no partition for value from column_list
ERROR HY000: Table has no partition for value from column_list
insert into t1 values (0,1),(1,1),(2,1),(3,1),(3,4),(4,9),(9,1);
insert into t1 values (0,1),(1,1),(2,1),(3,1),(3,4),(4,9),(9,1);
select * from t1;
select * from t1;
...
...
mysql-test/t/partition_column.test
View file @
f3f4e41c
...
@@ -8,6 +8,16 @@
...
@@ -8,6 +8,16 @@
drop
table
if
exists
t1
;
drop
table
if
exists
t1
;
--
enable_warnings
--
enable_warnings
--
error
ER_NULL_IN_VALUES_LESS_THAN
create
table
t1
(
a
int
,
b
int
)
partition
by
range
column_list
(
a
,
b
)
(
partition
p0
values
less
than
(
NULL
,
maxvalue
));
--
error
ER_MAXVALUE_IN_VALUES_IN
,
ER_PARSE_ERROR
create
table
t1
(
a
int
,
b
int
)
partition
by
list
column_list
(
a
,
b
)
(
partition
p0
values
in
((
maxvalue
,
0
)));
#
#
# BUG#47837, Crash when two same fields in column list processing
# BUG#47837, Crash when two same fields in column list processing
#
#
...
@@ -115,7 +125,7 @@ create table t1 (a int, b char(10), c varchar(25), d datetime)
...
@@ -115,7 +125,7 @@ create table t1 (a int, b char(10), c varchar(25), d datetime)
partition
by
range
column_list
(
a
,
b
,
c
,
d
)
partition
by
range
column_list
(
a
,
b
,
c
,
d
)
subpartition
by
hash
(
to_seconds
(
d
))
subpartition
by
hash
(
to_seconds
(
d
))
subpartitions
4
subpartitions
4
(
partition
p0
values
less
than
(
1
,
NULL
,
MAXVALUE
,
NULL
),
(
partition
p0
values
less
than
(
1
,
0
,
MAXVALUE
,
0
),
partition
p1
values
less
than
(
1
,
'a'
,
MAXVALUE
,
TO_DAYS
(
'1999-01-01'
)),
partition
p1
values
less
than
(
1
,
'a'
,
MAXVALUE
,
TO_DAYS
(
'1999-01-01'
)),
partition
p2
values
less
than
(
1
,
'a'
,
MAXVALUE
,
MAXVALUE
),
partition
p2
values
less
than
(
1
,
'a'
,
MAXVALUE
,
MAXVALUE
),
partition
p3
values
less
than
(
1
,
MAXVALUE
,
MAXVALUE
,
MAXVALUE
));
partition
p3
values
less
than
(
1
,
MAXVALUE
,
MAXVALUE
,
MAXVALUE
));
...
@@ -168,7 +178,7 @@ partition by range column_list(d)
...
@@ -168,7 +178,7 @@ partition by range column_list(d)
create
table
t1
(
a
int
,
b
int
)
create
table
t1
(
a
int
,
b
int
)
partition
by
range
column_list
(
a
,
b
)
partition
by
range
column_list
(
a
,
b
)
(
partition
p0
values
less
than
(
null
,
10
));
(
partition
p0
values
less
than
(
maxvalue
,
10
));
drop
table
t1
;
drop
table
t1
;
create
table
t1
(
d
date
)
create
table
t1
(
d
date
)
...
@@ -250,13 +260,13 @@ partition by range column_list(a,b)
...
@@ -250,13 +260,13 @@ partition by range column_list(a,b)
create
table
t1
(
a
int
,
b
int
)
create
table
t1
(
a
int
,
b
int
)
partition
by
range
column_list
(
a
,
b
)
partition
by
range
column_list
(
a
,
b
)
(
partition
p0
values
less
than
(
1
,
NULL
),
(
partition
p0
values
less
than
(
1
,
0
),
partition
p1
values
less
than
(
2
,
maxvalue
),
partition
p1
values
less
than
(
2
,
maxvalue
),
partition
p2
values
less
than
(
3
,
3
),
partition
p2
values
less
than
(
3
,
3
),
partition
p3
values
less
than
(
10
,
NULL
));
partition
p3
values
less
than
(
10
,
maxvalue
));
--
error
ER_NO_PARTITION_FOR_GIVEN_VALUE
--
error
ER_NO_PARTITION_FOR_GIVEN_VALUE
insert
into
t1
values
(
1
0
,
0
);
insert
into
t1
values
(
1
1
,
0
);
insert
into
t1
values
(
0
,
1
),(
1
,
1
),(
2
,
1
),(
3
,
1
),(
3
,
4
),(
4
,
9
),(
9
,
1
);
insert
into
t1
values
(
0
,
1
),(
1
,
1
),(
2
,
1
),(
3
,
1
),(
3
,
4
),(
4
,
9
),(
9
,
1
);
select
*
from
t1
;
select
*
from
t1
;
...
...
sql/partition_info.cc
View file @
f3f4e41c
...
@@ -1992,7 +1992,7 @@ int partition_info::fix_parser_data(THD *thd)
...
@@ -1992,7 +1992,7 @@ int partition_info::fix_parser_data(THD *thd)
partition_element
*
part_elem
;
partition_element
*
part_elem
;
part_elem_value
*
val
;
part_elem_value
*
val
;
uint
num_elements
;
uint
num_elements
;
uint
i
=
0
,
j
;
uint
i
=
0
,
j
,
k
;
int
result
;
int
result
;
DBUG_ENTER
(
"partition_info::fix_parser_data"
);
DBUG_ENTER
(
"partition_info::fix_parser_data"
);
...
@@ -2020,6 +2020,15 @@ int partition_info::fix_parser_data(THD *thd)
...
@@ -2020,6 +2020,15 @@ int partition_info::fix_parser_data(THD *thd)
my_error
(
ER_PARTITION_COLUMN_LIST_ERROR
,
MYF
(
0
));
my_error
(
ER_PARTITION_COLUMN_LIST_ERROR
,
MYF
(
0
));
DBUG_RETURN
(
TRUE
);
DBUG_RETURN
(
TRUE
);
}
}
for
(
k
=
0
;
k
<
num_columns
;
k
++
)
{
part_column_list_val
*
col_val
=
&
val
->
col_val_array
[
k
];
if
(
col_val
->
null_value
&&
part_type
==
RANGE_PARTITION
)
{
my_error
(
ER_NULL_IN_VALUES_LESS_THAN
,
MYF
(
0
));
DBUG_RETURN
(
TRUE
);
}
}
}
}
else
else
{
{
...
...
sql/share/errmsg.txt
View file @
f3f4e41c
...
@@ -6214,8 +6214,8 @@ ER_WRONG_TYPE_COLUMN_VALUE_ERROR
...
@@ -6214,8 +6214,8 @@ ER_WRONG_TYPE_COLUMN_VALUE_ERROR
eng "Partition column values of incorrect type"
eng "Partition column values of incorrect type"
ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR
ER_TOO_MANY_PARTITION_FUNC_FIELDS_ERROR
eng "Too many fields in '%-.192s'"
eng "Too many fields in '%-.192s'"
ER_MAXVALUE_IN_
LIST_PARTITIONING_ERROR
ER_MAXVALUE_IN_
VALUES_IN
eng "Cannot use MAXVALUE as value in
List partitioning
"
eng "Cannot use MAXVALUE as value in
VALUES IN
"
ER_TOO_MANY_VALUES_ERROR
ER_TOO_MANY_VALUES_ERROR
eng "Cannot have more than one value for this type of %-.64s partitioning"
eng "Cannot have more than one value for this type of %-.64s partitioning"
ER_ROW_SINGLE_PARTITION_FIELD_ERROR
ER_ROW_SINGLE_PARTITION_FIELD_ERROR
...
...
sql/sql_yacc.yy
View file @
f3f4e41c
...
@@ -4229,7 +4229,7 @@ part_value_expr_item:
...
@@ -4229,7 +4229,7 @@ part_value_expr_item:
part_column_list_val *col_val;
part_column_list_val *col_val;
if (part_info->part_type == LIST_PARTITION)
if (part_info->part_type == LIST_PARTITION)
{
{
my_parse_error(ER(ER_MAXVALUE_IN_
LIST_PARTITIONING_ERROR
));
my_parse_error(ER(ER_MAXVALUE_IN_
VALUES_IN
));
MYSQL_YYABORT;
MYSQL_YYABORT;
}
}
if (part_info->add_max_value())
if (part_info->add_max_value())
...
...
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