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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
8ccd9ee9
Commit
8ccd9ee9
authored
Jul 02, 2007
by
mikael@dator6.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge dator6.(none):/home/mikael/mysql_clones/mysql-5.1-opt
into dator6.(none):/home/mikael/mysql_clones/bug18198
parents
2efac224
4ab5e26d
Changes
25
Show whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
615 additions
and
335 deletions
+615
-335
mysql-test/r/partition_bug18198.result
mysql-test/r/partition_bug18198.result
+173
-0
mysql-test/r/partition_charset.result
mysql-test/r/partition_charset.result
+4
-0
mysql-test/r/partition_error.result
mysql-test/r/partition_error.result
+5
-5
mysql-test/r/partition_hash.result
mysql-test/r/partition_hash.result
+0
-14
mysql-test/r/partition_list.result
mysql-test/r/partition_list.result
+4
-0
mysql-test/r/partition_mgm.result
mysql-test/r/partition_mgm.result
+3
-3
mysql-test/r/partition_pruning.result
mysql-test/r/partition_pruning.result
+41
-25
mysql-test/r/partition_range.result
mysql-test/r/partition_range.result
+1
-77
mysql-test/t/partition_bug18198.test
mysql-test/t/partition_bug18198.test
+219
-0
mysql-test/t/partition_charset.test
mysql-test/t/partition_charset.test
+8
-0
mysql-test/t/partition_error.test
mysql-test/t/partition_error.test
+6
-5
mysql-test/t/partition_hash.test
mysql-test/t/partition_hash.test
+0
-12
mysql-test/t/partition_list.test
mysql-test/t/partition_list.test
+4
-0
mysql-test/t/partition_mgm.test
mysql-test/t/partition_mgm.test
+1
-1
mysql-test/t/partition_pruning.test
mysql-test/t/partition_pruning.test
+47
-21
mysql-test/t/partition_range.test
mysql-test/t/partition_range.test
+63
-65
sql/item.h
sql/item.h
+4
-6
sql/item_cmpfunc.h
sql/item_cmpfunc.h
+0
-14
sql/item_func.h
sql/item_func.h
+4
-28
sql/item_strfunc.h
sql/item_strfunc.h
+0
-14
sql/item_timefunc.h
sql/item_timefunc.h
+2
-15
sql/item_xmlfunc.h
sql/item_xmlfunc.h
+0
-1
sql/partition_info.cc
sql/partition_info.cc
+17
-27
sql/sql_partition.cc
sql/sql_partition.cc
+8
-0
sql/sql_yacc.yy
sql/sql_yacc.yy
+1
-2
No files found.
mysql-test/r/partition_bug18198.result
0 → 100644
View file @
8ccd9ee9
drop table if exists t1;
create table t1 (col1 datetime)
partition by range(datediff(col1,col1))
(partition p0 values less than (10), partition p1 values less than (30));
drop table t1;
create table t1 (col1 int)
partition by range(greatest(col1,10))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(isnull(col1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(least(col1,12))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(case when col1>0 then 10 else 20 end)
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(ifnull(col1,5))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(nullif(col1,5))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(bit_length(col1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 char(5))
partition by range(bit_length(col1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(char_length(col1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 char(5))
partition by range(char_length(col1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 char(5))
partition by range(character_length(col1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(find_in_set(col1,1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 char(5))
partition by range(find_in_set(col1,'1'))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(instr(col1,3))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 char(5))
partition by range(instr(col1,'3'))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 char(5))
partition by range(length(col1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 char(5))
partition by range(locate(1,col1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(locate(1,col1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 char(5))
partition by range(octet_length(col1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 char(5))
partition by range(position(1 in col1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(position(1 in col1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 char(5))
partition by range(strcmp(col1,2))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(strcmp(col1,2))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(crc32(col1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(round(col1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(sign(col1))
(partition p0 values less than (2), partition p1 values less than (6));
ERROR HY000: This partition function is not allowed
create table t1 (col1 datetime)
partition by range(period_add(col1,5))
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
create table t1 (col1 datetime, col2 datetime)
partition by range(period_diff(col1,col2))
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int, col2 int)
partition by range(period_diff(col1,col2))
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
create table t1 (col1 datetime)
partition by range(timestampdiff(day,5,col1))
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
create table t1 (col1 date)
partition by range(unix_timestamp(col1))
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
create table t1 (col1 datetime)
partition by range(week(col1))
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
create table t1 (col1 varchar(25))
partition by range(cast(col1 as signed))
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
create table t1 (col1 varchar(25))
partition by range(convert(col1,unsigned))
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(col1 | 20)
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(col1 & 20)
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(col1 ^ 20)
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(col1 << 20)
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(col1 >> 20)
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(~col1)
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(bit_count(col1))
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
create table t1 (col1 int)
partition by range(inet_aton(col1))
(partition p0 values less than (10), partition p1 values less than (30));
ERROR HY000: This partition function is not allowed
mysql-test/r/partition_charset.result
View file @
8ccd9ee9
...
@@ -16,3 +16,7 @@ s1
...
@@ -16,3 +16,7 @@ s1
1
1
3
3
drop table t1;
drop table t1;
create table t1 (a varchar(1), primary key (a))
partition by list (ascii(a))
(partition p1 values in (65));
ERROR HY000: This partition function is not allowed
mysql-test/r/partition_error.result
View file @
8ccd9ee9
...
@@ -25,7 +25,7 @@ partitions 3
...
@@ -25,7 +25,7 @@ partitions 3
(partition x1 values in (1,2,9,4) tablespace ts1,
(partition x1 values in (1,2,9,4) tablespace ts1,
partition x2 values in (3, 11, 5, 7) tablespace ts2,
partition x2 values in (3, 11, 5, 7) tablespace ts2,
partition x3 values in (16, 8, 5+19, 70-43) tablespace ts3);
partition x3 values in (16, 8, 5+19, 70-43) tablespace ts3);
ERROR HY000: Th
e PARTITION function returns the wrong type
ERROR HY000: Th
is partition function is not allowed
CREATE TABLE t1 (
CREATE TABLE t1 (
a int not null,
a int not null,
b int not null,
b int not null,
...
@@ -89,7 +89,7 @@ partitions 3
...
@@ -89,7 +89,7 @@ partitions 3
(partition x1 tablespace ts1,
(partition x1 tablespace ts1,
partition x2 tablespace ts2,
partition x2 tablespace ts2,
partition x3 tablespace ts3);
partition x3 tablespace ts3);
ERROR HY000: Th
e PARTITION function returns the wrong type
ERROR HY000: Th
is partition function is not allowed
CREATE TABLE t1 (
CREATE TABLE t1 (
a int not null,
a int not null,
b int not null,
b int not null,
...
@@ -422,7 +422,7 @@ partition by range (sin(a))
...
@@ -422,7 +422,7 @@ partition by range (sin(a))
partitions 2
partitions 2
(partition x1 values less than (4),
(partition x1 values less than (4),
partition x2 values less than (5));
partition x2 values less than (5));
ERROR HY000: Th
e PARTITION function returns the wrong type
ERROR HY000: Th
is partition function is not allowed
CREATE TABLE t1 (
CREATE TABLE t1 (
a int not null,
a int not null,
b int not null,
b int not null,
...
@@ -600,7 +600,7 @@ ERROR HY000: Partition constant is out of partition function domain
...
@@ -600,7 +600,7 @@ ERROR HY000: Partition constant is out of partition function domain
create table t1 (v varchar(12))
create table t1 (v varchar(12))
partition by range (ascii(v))
partition by range (ascii(v))
(partition p0 values less than (10));
(partition p0 values less than (10));
drop table t1;
ERROR HY000: This partition function is not allowed
create table t1 (a int)
create table t1 (a int)
partition by hash (rand(a));
partition by hash (rand(a));
ERROR 42000: Constant/Random expression in (sub)partitioning function is not allowed near ')' at line 2
ERROR 42000: Constant/Random expression in (sub)partitioning function is not allowed near ')' at line 2
...
@@ -619,4 +619,4 @@ partition by range (a + (select count(*) from t1))
...
@@ -619,4 +619,4 @@ partition by range (a + (select count(*) from t1))
ERROR HY000: This partition function is not allowed
ERROR HY000: This partition function is not allowed
create table t1 (a char(10))
create table t1 (a char(10))
partition by hash (extractvalue(a,'a'));
partition by hash (extractvalue(a,'a'));
ERROR HY000: Th
e PARTITION function returns the wrong type
ERROR HY000: Th
is partition function is not allowed
mysql-test/r/partition_hash.result
View file @
8ccd9ee9
drop table if exists t1;
drop table if exists t1;
create table t1 (a varchar(10) charset latin1 collate latin1_bin)
partition by hash(length(a))
partitions 10;
insert into t1 values (''),(' '),('a'),('a '),('a ');
explain partitions select * from t1 where a='a ';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where
explain partitions select * from t1 where a='a';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where
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 p0 ALL NULL NULL NULL NULL 5 Using where
drop table t1;
create table t1 (a int unsigned)
create table t1 (a int unsigned)
partition by hash(a div 2)
partition by hash(a div 2)
partitions 4;
partitions 4;
...
...
mysql-test/r/partition_list.result
View file @
8ccd9ee9
...
@@ -295,3 +295,7 @@ select * from t1;
...
@@ -295,3 +295,7 @@ select * from t1;
a
a
100
100
drop table t1;
drop table t1;
create table t1 (a char(1))
partition by list (ascii(ucase(a)))
(partition p1 values in (2));
ERROR HY000: This partition function is not allowed
mysql-test/r/partition_mgm.result
View file @
8ccd9ee9
...
@@ -10,13 +10,13 @@ subpartition sp01, subpartition sp02));
...
@@ -10,13 +10,13 @@ subpartition sp01, subpartition sp02));
ERROR HY000: Wrong number of subpartitions defined, mismatch with previous setting
ERROR HY000: Wrong number of subpartitions defined, mismatch with previous setting
drop table t1;
drop table t1;
CREATE TABLE t1 (f_date DATE, f_varchar VARCHAR(30))
CREATE TABLE t1 (f_date DATE, f_varchar VARCHAR(30))
PARTITION BY HASH(
CAST(YEAR(f_date) AS SIGNED INTEGER
)) PARTITIONS 2;
PARTITION BY HASH(
YEAR(f_date
)) PARTITIONS 2;
SHOW CREATE TABLE t1;
SHOW CREATE TABLE t1;
Table Create Table
Table Create Table
t1 CREATE TABLE `t1` (
t1 CREATE TABLE `t1` (
`f_date` date DEFAULT NULL,
`f_date` date DEFAULT NULL,
`f_varchar` varchar(30) DEFAULT NULL
`f_varchar` varchar(30) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (
CAST(YEAR(f_date) AS SIGNED INTEGER
)) PARTITIONS 2 */
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (
YEAR(f_date
)) PARTITIONS 2 */
hello/master-data/test/t1#P#p0.MYD
hello/master-data/test/t1#P#p0.MYD
hello/master-data/test/t1#P#p0.MYI
hello/master-data/test/t1#P#p0.MYI
hello/master-data/test/t1#P#p1.MYD
hello/master-data/test/t1#P#p1.MYD
...
@@ -29,7 +29,7 @@ Table Create Table
...
@@ -29,7 +29,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
t1 CREATE TABLE `t1` (
`f_date` date DEFAULT NULL,
`f_date` date DEFAULT NULL,
`f_varchar` varchar(30) DEFAULT NULL
`f_varchar` varchar(30) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (
CAST(YEAR(f_date) AS SIGNED INTEGER
)) PARTITIONS 1 */
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (
YEAR(f_date
)) PARTITIONS 1 */
hello/master-data/test/t1#P#p0.MYD
hello/master-data/test/t1#P#p0.MYD
hello/master-data/test/t1#P#p0.MYI
hello/master-data/test/t1#P#p0.MYI
hello/master-data/test/t1.frm
hello/master-data/test/t1.frm
...
...
mysql-test/r/partition_pruning.result
View file @
8ccd9ee9
...
@@ -676,25 +676,6 @@ f_int1 f_int2
...
@@ -676,25 +676,6 @@ f_int1 f_int2
8 8
8 8
9 9
9 9
drop table t1;
drop table t1;
create table t1 (a char(10) binary)
partition by list(length(a))
(partition p1 values in (1),
partition p2 values in (2),
partition p3 values in (3),
partition p4 values in (4),
partition p5 values in (5)
);
insert into t1 values ('a'),('bb'),('ccc'),('dddd'),('eeEee');
select * from t1 where a>='a' and a <= 'dddd';
a
a
bb
ccc
dddd
explain partitions select * from t1 where a>='a' and a <= 'dddd';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p1,p2,p3,p4,p5 ALL NULL NULL NULL NULL 5 Using where
drop table t1;
create table t1 (f_int1 integer) partition by list(abs(mod(f_int1,2)))
create table t1 (f_int1 integer) partition by list(abs(mod(f_int1,2)))
subpartition by hash(f_int1) subpartitions 2
subpartition by hash(f_int1) subpartitions 2
(
(
...
@@ -848,22 +829,57 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
...
@@ -848,22 +829,57 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
drop table t1;
drop table t1;
create table t1 (a int)
create table t1 (a int)
partition by range((a & 0xFF) << 56) (
partition by range(a) (
partition p0 values less than (0x40 << 56),
partition p0 values less than (64),
partition p1 values less than (0x80 << 56),
partition p1 values less than (128),
partition p2 values less than (0xFF << 56)
partition p2 values less than (255)
);
create table t2 (a int)
partition by range(a+0) (
partition p0 values less than (64),
partition p1 values less than (128),
partition p2 values less than (255)
);
);
insert into t1 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE);
insert into t1 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE);
insert into t2 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE);
explain partitions select * from t1 where a=0;
explain partitions select * from t1 where a=0;
id select_type table partitions type possible_keys key key_len ref rows Extra
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
explain partitions select * from t2 where a=0;
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where
explain partitions select * from t1 where a=0xFE;
explain partitions select * from t1 where a=0xFE;
id select_type table partitions type possible_keys key key_len ref rows Extra
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 2 Using where
1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 2 Using where
explain partitions select * from t1 where a>0xFE and a<= 0xFF;
explain partitions select * from t2 where a=0xFE;
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 2 Using where
explain partitions select * from t1 where a > 0xFE AND a <= 0xFF;
id select_type table partitions type possible_keys key key_len ref rows Extra
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
explain partitions select * from t2 where a > 0xFE AND a <= 0xFF;
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
explain partitions select * from t1 where a >= 0xFE AND a <= 0xFF;
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 2 Using where
explain partitions select * from t2 where a >= 0xFE AND a <= 0xFF;
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 2 Using where
explain partitions select * from t1 where a < 64 AND a >= 63;
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
explain partitions select * from t2 where a < 64 AND a >= 63;
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where
explain partitions select * from t1 where a <= 64 AND a >= 63;
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t2 where a <= 64 AND a >= 63;
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t2 p0,p1 ALL NULL NULL NULL NULL 4 Using where
drop table t1;
drop table t1;
drop table t2;
create table t1(a bigint unsigned not null) partition by range(a+0) (
create table t1(a bigint unsigned not null) partition by range(a+0) (
partition p1 values less than (10),
partition p1 values less than (10),
partition p2 values less than (20),
partition p2 values less than (20),
...
...
mysql-test/r/partition_range.result
View file @
8ccd9ee9
drop table if exists t1;
drop table if exists t1;
create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int)
partition by range (length(a) * b)
(partition p0 values less than (2), partition p1 values less than (400));
insert into t1 values ('a ', 2),('a',3);
drop table t1;
create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int)
partition by range (b* length(a) * b)
(partition p0 values less than (2), partition p1 values less than (400));
insert into t1 values ('a ', 2),('a',3);
drop table t1;
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
b varchar(10) charset latin1 collate latin1_bin)
partition by range (length(b) * length(a))
(partition p0 values less than (2), partition p1 values less than (400));
insert into t1 values ('a ', 'b '),('a','b');
drop table t1;
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
b varchar(10) charset latin1 collate latin1_bin)
partition by range (length(a) * length(b))
(partition p0 values less than (2), partition p1 values less than (400));
insert into t1 values ('a ', 'b '),('a','b');
drop table t1;
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
b varchar(10) charset latin1 collate latin1_bin, c int)
partition by range (length(a) * c)
(partition p0 values less than (2), partition p1 values less than (400));
insert into t1 values ('a ', 'b ', 2),('a','b', 3);
drop table t1;
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
b varchar(10) charset latin1 collate latin1_bin, c int)
partition by range (c * length(a))
(partition p0 values less than (2), partition p1 values less than (400));
insert into t1 values ('a ', 'b ', 2),('a','b', 3);
drop table t1;
create table t1 (a int unsigned)
create table t1 (a int unsigned)
partition by range (a)
partition by range (a)
(partition pnull values less than (0),
(partition pnull values less than (0),
...
@@ -109,7 +75,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
...
@@ -109,7 +75,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 pnull_pnullsp0,pnull_pnullsp1,p0_p0sp0,p0_p0sp1 ALL NULL NULL NULL NULL 4 Using where
1 SIMPLE t1 pnull_pnullsp0,pnull_pnullsp1,p0_p0sp0,p0_p0sp1 ALL NULL NULL NULL NULL 4 Using where
explain partitions select * from t1 where a > 1;
explain partitions select * from t1 where a > 1;
id select_type table partitions type possible_keys key key_len ref rows Extra
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE
t1 p1_p1sp0,p1_p1sp1 ALL NULL NULL NULL NULL 2 Using where
1 SIMPLE
NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
drop table t1;
drop table t1;
CREATE TABLE t1 (
CREATE TABLE t1 (
a int not null,
a int not null,
...
@@ -743,45 +709,3 @@ WHERE (a >= '2004-07-01' AND a <= '2004-09-30') OR
...
@@ -743,45 +709,3 @@ WHERE (a >= '2004-07-01' AND a <= '2004-09-30') OR
id select_type table partitions type possible_keys key key_len ref rows Extra
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p407,p408,p409,p507,p508,p509 ALL NULL NULL NULL NULL 18 Using where
1 SIMPLE t1 p407,p408,p409,p507,p508,p509 ALL NULL NULL NULL NULL 18 Using where
DROP TABLE t1;
DROP TABLE t1;
create table t1 (a varchar(20))
partition by range (crc32(md5(a)))
(partition p0 values less than (100),
partition p1 values less than maxvalue);
insert into t1 values ("12345678901234567890");
insert into t1 values ("A2345678901234567890");
insert into t1 values ("B2345678901234567890");
insert into t1 values ("1234567890123456789");
insert into t1 values ("1234567890123456");
select * from t1;
a
12345678901234567890
A2345678901234567890
B2345678901234567890
1234567890123456789
1234567890123456
explain partitions select * from t1 where a = "12345678901234567890";
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 5 Using where
explain partitions select * from t1 where a = "12345678901234567890" OR
a = "A2345678901234567890" OR
a = "B2345678901234567890" OR
a = "C2345678901234567890";
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 5 Using where
explain partitions select * from t1 where a = "01234567890123456";
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 5 Using where
select * from t1 where a = "01234567890123456";
a
select * from t1 where a = "12345678901234567890" OR
a = "A2345678901234567890" OR
a = "B2345678901234567890" OR
a = "C2345678901234567890";
a
12345678901234567890
A2345678901234567890
B2345678901234567890
select * from t1 where a = "12345678901234567890";
a
12345678901234567890
drop table t1;
mysql-test/t/partition_bug18198.test
0 → 100644
View file @
8ccd9ee9
--
source
include
/
have_partition
.
inc
--
disable_warnings
drop
table
if
exists
t1
;
--
enable_warnings
create
table
t1
(
col1
datetime
)
partition
by
range
(
datediff
(
col1
,
col1
))
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
drop
table
t1
;
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
greatest
(
col1
,
10
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
isnull
(
col1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
least
(
col1
,
12
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
case
when
col1
>
0
then
10
else
20
end
)
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
ifnull
(
col1
,
5
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
nullif
(
col1
,
5
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
bit_length
(
col1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
char
(
5
))
partition
by
range
(
bit_length
(
col1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
char_length
(
col1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
char
(
5
))
partition
by
range
(
char_length
(
col1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
char
(
5
))
partition
by
range
(
character_length
(
col1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
find_in_set
(
col1
,
1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
char
(
5
))
partition
by
range
(
find_in_set
(
col1
,
'1'
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
instr
(
col1
,
3
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
char
(
5
))
partition
by
range
(
instr
(
col1
,
'3'
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
char
(
5
))
partition
by
range
(
length
(
col1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
char
(
5
))
partition
by
range
(
locate
(
1
,
col1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
locate
(
1
,
col1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
char
(
5
))
partition
by
range
(
octet_length
(
col1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
char
(
5
))
partition
by
range
(
position
(
1
in
col1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
position
(
1
in
col1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
char
(
5
))
partition
by
range
(
strcmp
(
col1
,
2
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
strcmp
(
col1
,
2
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
crc32
(
col1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
round
(
col1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
sign
(
col1
))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
6
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
datetime
)
partition
by
range
(
period_add
(
col1
,
5
))
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
datetime
,
col2
datetime
)
partition
by
range
(
period_diff
(
col1
,
col2
))
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
,
col2
int
)
partition
by
range
(
period_diff
(
col1
,
col2
))
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
datetime
)
partition
by
range
(
timestampdiff
(
day
,
5
,
col1
))
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
date
)
partition
by
range
(
unix_timestamp
(
col1
))
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
datetime
)
partition
by
range
(
week
(
col1
))
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
varchar
(
25
))
partition
by
range
(
cast
(
col1
as
signed
))
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
varchar
(
25
))
partition
by
range
(
convert
(
col1
,
unsigned
))
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
col1
|
20
)
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
col1
&
20
)
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
col1
^
20
)
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
col1
<<
20
)
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
col1
>>
20
)
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
~
col1
)
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
bit_count
(
col1
))
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
col1
int
)
partition
by
range
(
inet_aton
(
col1
))
(
partition
p0
values
less
than
(
10
),
partition
p1
values
less
than
(
30
));
mysql-test/t/partition_charset.test
View file @
8ccd9ee9
...
@@ -19,3 +19,11 @@ flush tables;
...
@@ -19,3 +19,11 @@ flush tables;
set
names
latin1
;
set
names
latin1
;
select
*
from
t1
;
select
*
from
t1
;
drop
table
t1
;
drop
table
t1
;
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
a
varchar
(
1
),
primary
key
(
a
))
partition
by
list
(
ascii
(
a
))
(
partition
p1
values
in
(
65
));
#insert into t1 values ('A');
#replace into t1 values ('A');
#drop table t1;
mysql-test/t/partition_error.test
View file @
8ccd9ee9
...
@@ -33,7 +33,7 @@ partitions 2;
...
@@ -33,7 +33,7 @@ partitions 2;
#
#
# Partition by key list, wrong result type
# Partition by key list, wrong result type
#
#
--
error
ER_PARTITION_FUNC
_NOT_ALLOWED_ERROR
--
error
ER_PARTITION_FUNC
TION_IS_NOT_ALLOWED
CREATE
TABLE
t1
(
CREATE
TABLE
t1
(
a
int
not
null
,
a
int
not
null
,
b
int
not
null
,
b
int
not
null
,
...
@@ -109,7 +109,7 @@ partitions 3
...
@@ -109,7 +109,7 @@ partitions 3
#
#
# Partition by hash, invalid result type
# Partition by hash, invalid result type
#
#
--
error
ER_PARTITION_FUNC
_NOT_ALLOWED_ERROR
--
error
ER_PARTITION_FUNC
TION_IS_NOT_ALLOWED
CREATE
TABLE
t1
(
CREATE
TABLE
t1
(
a
int
not
null
,
a
int
not
null
,
b
int
not
null
,
b
int
not
null
,
...
@@ -533,7 +533,7 @@ partitions 2
...
@@ -533,7 +533,7 @@ partitions 2
#
#
# Partition by range, wrong result type of partition function
# Partition by range, wrong result type of partition function
#
#
--
error
ER_PARTITION_FUNC
_NOT_ALLOWED_ERROR
--
error
ER_PARTITION_FUNC
TION_IS_NOT_ALLOWED
CREATE
TABLE
t1
(
CREATE
TABLE
t1
(
a
int
not
null
,
a
int
not
null
,
b
int
not
null
,
b
int
not
null
,
...
@@ -769,10 +769,11 @@ partition by range (a)
...
@@ -769,10 +769,11 @@ partition by range (a)
#
#
# Bug 18198 Partitions: Verify that erroneus partition functions doesn't work
# Bug 18198 Partitions: Verify that erroneus partition functions doesn't work
#
#
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
v
varchar
(
12
))
create
table
t1
(
v
varchar
(
12
))
partition
by
range
(
ascii
(
v
))
partition
by
range
(
ascii
(
v
))
(
partition
p0
values
less
than
(
10
));
(
partition
p0
values
less
than
(
10
));
drop
table
t1
;
#
drop table t1;
--
error
1064
--
error
1064
create
table
t1
(
a
int
)
create
table
t1
(
a
int
)
...
@@ -790,7 +791,7 @@ partition by hash (extract(hour from convert_tz(a, '+00:00', '+00:00')));
...
@@ -790,7 +791,7 @@ partition by hash (extract(hour from convert_tz(a, '+00:00', '+00:00')));
create
table
t1
(
a
int
)
create
table
t1
(
a
int
)
partition
by
range
(
a
+
(
select
count
(
*
)
from
t1
))
partition
by
range
(
a
+
(
select
count
(
*
)
from
t1
))
(
partition
p1
values
less
than
(
1
));
(
partition
p1
values
less
than
(
1
));
--
error
ER_PARTITION_FUNC
_NOT_ALLOWED_ERROR
--
error
ER_PARTITION_FUNC
TION_IS_NOT_ALLOWED
create
table
t1
(
a
char
(
10
))
create
table
t1
(
a
char
(
10
))
partition
by
hash
(
extractvalue
(
a
,
'a'
));
partition
by
hash
(
extractvalue
(
a
,
'a'
));
...
...
mysql-test/t/partition_hash.test
View file @
8ccd9ee9
...
@@ -9,18 +9,6 @@
...
@@ -9,18 +9,6 @@
drop
table
if
exists
t1
;
drop
table
if
exists
t1
;
--
enable_warnings
--
enable_warnings
#
# BUG 18198: Partition functions handling
#
create
table
t1
(
a
varchar
(
10
)
charset
latin1
collate
latin1_bin
)
partition
by
hash
(
length
(
a
))
partitions
10
;
insert
into
t1
values
(
''
),(
' '
),(
'a'
),(
'a '
),(
'a '
);
explain
partitions
select
*
from
t1
where
a
=
'a '
;
explain
partitions
select
*
from
t1
where
a
=
'a'
;
explain
partitions
select
*
from
t1
where
a
=
'a '
OR
a
=
'a'
;
drop
table
t1
;
#
#
# More partition pruning tests, especially on interval walking
# More partition pruning tests, especially on interval walking
#
#
...
...
mysql-test/t/partition_list.test
View file @
8ccd9ee9
...
@@ -179,4 +179,8 @@ insert into t1 values (null);
...
@@ -179,4 +179,8 @@ insert into t1 values (null);
select
*
from
t1
;
select
*
from
t1
;
drop
table
t1
;
drop
table
t1
;
--
error
ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
create
table
t1
(
a
char
(
1
))
partition
by
list
(
ascii
(
ucase
(
a
)))
(
partition
p1
values
in
(
2
));
mysql-test/t/partition_mgm.test
View file @
8ccd9ee9
...
@@ -20,7 +20,7 @@ subpartition sp01, subpartition sp02));
...
@@ -20,7 +20,7 @@ subpartition sp01, subpartition sp02));
drop
table
t1
;
drop
table
t1
;
CREATE
TABLE
t1
(
f_date
DATE
,
f_varchar
VARCHAR
(
30
))
CREATE
TABLE
t1
(
f_date
DATE
,
f_varchar
VARCHAR
(
30
))
PARTITION
BY
HASH
(
CAST
(
YEAR
(
f_date
)
AS
SIGNED
INTEGER
))
PARTITIONS
2
;
PARTITION
BY
HASH
(
YEAR
(
f_date
))
PARTITIONS
2
;
SHOW
CREATE
TABLE
t1
;
SHOW
CREATE
TABLE
t1
;
--
replace_result
$MYSQLTEST_VARDIR
"hello"
--
replace_result
$MYSQLTEST_VARDIR
"hello"
...
...
mysql-test/t/partition_pruning.test
View file @
8ccd9ee9
...
@@ -538,18 +538,17 @@ select * from t1 where f_int1 between 5 and 15 order by f_int1;
...
@@ -538,18 +538,17 @@ select * from t1 where f_int1 between 5 and 15 order by f_int1;
drop
table
t1
;
drop
table
t1
;
# part2: bug in pruning code
# part2: bug in pruning code
create
table
t1
(
a
char
(
10
)
binary
)
#create table t1 (a char(10) binary)
partition
by
list
(
length
(
a
))
#partition by list(ascii(a))
(
partition
p1
values
in
(
1
),
# (partition p1 values in (ascii('a')),
partition
p2
values
in
(
2
),
# partition p2 values in (ascii('b')),
partition
p3
values
in
(
3
),
# partition p3 values in (ascii('c')),
partition
p4
values
in
(
4
),
# partition p4 values in (ascii('d')),
partition
p5
values
in
(
5
)
# partition p5 values in (ascii('e')));
);
#insert into t1 values ('a'),('bb'),('ccc'),('dddd'),('eeEee');
insert
into
t1
values
(
'a'
),(
'bb'
),(
'ccc'
),(
'dddd'
),(
'eeEee'
);
#select * from t1 where a>='a' and a <= 'dddd';
select
*
from
t1
where
a
>=
'a'
and
a
<=
'dddd'
;
#explain partitions select * from t1 where a>='a' and a <= 'dddd';
explain
partitions
select
*
from
t1
where
a
>=
'a'
and
a
<=
'dddd'
;
#drop table t1;
drop
table
t1
;
# BUG#18659: Assertion failure when subpartitioning is used and partition is
# BUG#18659: Assertion failure when subpartitioning is used and partition is
# "IS NULL"
# "IS NULL"
...
@@ -692,19 +691,46 @@ explain partitions select * from t1 where a = 18446744073709551000;
...
@@ -692,19 +691,46 @@ explain partitions select * from t1 where a = 18446744073709551000;
explain
partitions
select
*
from
t1
where
a
=
18446744073709551613
;
explain
partitions
select
*
from
t1
where
a
=
18446744073709551613
;
explain
partitions
select
*
from
t1
where
a
=
18446744073709551614
;
explain
partitions
select
*
from
t1
where
a
=
18446744073709551614
;
drop
table
t1
;
drop
table
t1
;
#
# Test all variants of usage for interval_via_mapping
# and interval_via_walking
#
# t1 will use interval_via_mapping since it uses a
# monotonic function, whereas t2 will use
# interval_via_walking since the intervals are short
# and the function isn't monotonic (it is, but it isn't
# discovered in this version).
#
create
table
t1
(
a
int
)
partition
by
range
(
a
)
(
partition
p0
values
less
than
(
64
),
partition
p1
values
less
than
(
128
),
partition
p2
values
less
than
(
255
)
);
create
table
t
1
(
a
int
)
create
table
t
2
(
a
int
)
partition
by
range
(
(
a
&
0xFF
)
<<
56
)
(
partition
by
range
(
a
+
0
)
(
partition
p0
values
less
than
(
0x40
<<
56
),
partition
p0
values
less
than
(
64
),
partition
p1
values
less
than
(
0x80
<<
56
),
partition
p1
values
less
than
(
128
),
partition
p2
values
less
than
(
0xFF
<<
56
)
partition
p2
values
less
than
(
255
)
);
);
insert
into
t1
values
(
0x20
),
(
0x20
),
(
0x41
),
(
0x41
),
(
0xFE
),
(
0xFE
);
insert
into
t1
values
(
0x20
),
(
0x20
),
(
0x41
),
(
0x41
),
(
0xFE
),
(
0xFE
);
insert
into
t2
values
(
0x20
),
(
0x20
),
(
0x41
),
(
0x41
),
(
0xFE
),
(
0xFE
);
explain
partitions
select
*
from
t1
where
a
=
0
;
explain
partitions
select
*
from
t1
where
a
=
0
;
explain
partitions
select
*
from
t2
where
a
=
0
;
explain
partitions
select
*
from
t1
where
a
=
0xFE
;
explain
partitions
select
*
from
t1
where
a
=
0xFE
;
explain
partitions
select
*
from
t1
where
a
>
0xFE
and
a
<=
0xFF
;
explain
partitions
select
*
from
t2
where
a
=
0xFE
;
explain
partitions
select
*
from
t1
where
a
>
0xFE
AND
a
<=
0xFF
;
explain
partitions
select
*
from
t2
where
a
>
0xFE
AND
a
<=
0xFF
;
explain
partitions
select
*
from
t1
where
a
>=
0xFE
AND
a
<=
0xFF
;
explain
partitions
select
*
from
t2
where
a
>=
0xFE
AND
a
<=
0xFF
;
explain
partitions
select
*
from
t1
where
a
<
64
AND
a
>=
63
;
explain
partitions
select
*
from
t2
where
a
<
64
AND
a
>=
63
;
explain
partitions
select
*
from
t1
where
a
<=
64
AND
a
>=
63
;
explain
partitions
select
*
from
t2
where
a
<=
64
AND
a
>=
63
;
drop
table
t1
;
drop
table
t1
;
drop
table
t2
;
create
table
t1
(
a
bigint
unsigned
not
null
)
partition
by
range
(
a
+
0
)
(
create
table
t1
(
a
bigint
unsigned
not
null
)
partition
by
range
(
a
+
0
)
(
partition
p1
values
less
than
(
10
),
partition
p1
values
less
than
(
10
),
...
...
mysql-test/t/partition_range.test
View file @
8ccd9ee9
...
@@ -12,45 +12,45 @@ drop table if exists t1;
...
@@ -12,45 +12,45 @@ drop table if exists t1;
#
#
# BUG 18198: Various tests for partition functions
# BUG 18198: Various tests for partition functions
#
#
create
table
t1
(
a
varchar
(
10
)
charset
latin1
collate
latin1_bin
,
b
int
)
#
create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int)
partition
by
range
(
length
(
a
)
*
b
)
#partition by range (ascii
(a) * b)
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
4
00
));
#(partition p0 values less than (2), partition p1 values less than (40
00));
insert
into
t1
values
(
'a '
,
2
),(
'a'
,
3
);
#
insert into t1 values ('a ', 2),('a',3);
drop
table
t1
;
#
drop table t1;
create
table
t1
(
a
varchar
(
10
)
charset
latin1
collate
latin1_bin
,
b
int
)
#
create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int)
partition
by
range
(
b
*
length
(
a
)
*
b
)
#partition by range (b* ascii
(a) * b)
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
4
00
));
#(partition p0 values less than (2), partition p1 values less than (40
00));
insert
into
t1
values
(
'a '
,
2
),(
'a'
,
3
);
#
insert into t1 values ('a ', 2),('a',3);
drop
table
t1
;
#
drop table t1;
create
table
t1
(
a
varchar
(
10
)
charset
latin1
collate
latin1_bin
,
#
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
b
varchar
(
10
)
charset
latin1
collate
latin1_bin
)
#
b varchar(10) charset latin1 collate latin1_bin)
partition
by
range
(
length
(
b
)
*
length
(
a
))
#partition by range (ascii(b) * ascii
(a))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
4
00
));
#(partition p0 values less than (2), partition p1 values less than (400
00));
insert
into
t1
values
(
'a '
,
'b '
),(
'a'
,
'b'
);
#
insert into t1 values ('a ', 'b '),('a','b');
drop
table
t1
;
#
drop table t1;
create
table
t1
(
a
varchar
(
10
)
charset
latin1
collate
latin1_bin
,
#
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
b
varchar
(
10
)
charset
latin1
collate
latin1_bin
)
#
b varchar(10) charset latin1 collate latin1_bin)
partition
by
range
(
length
(
a
)
*
length
(
b
))
#partition by range (ascii(a) * ascii
(b))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
4
00
));
#(partition p0 values less than (2), partition p1 values less than (400
00));
insert
into
t1
values
(
'a '
,
'b '
),(
'a'
,
'b'
);
#
insert into t1 values ('a ', 'b '),('a','b');
drop
table
t1
;
#
drop table t1;
create
table
t1
(
a
varchar
(
10
)
charset
latin1
collate
latin1_bin
,
#
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
b
varchar
(
10
)
charset
latin1
collate
latin1_bin
,
c
int
)
#
b varchar(10) charset latin1 collate latin1_bin, c int)
partition
by
range
(
length
(
a
)
*
c
)
#partition by range (ascii
(a) * c)
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
4
00
));
#(partition p0 values less than (2), partition p1 values less than (40
00));
insert
into
t1
values
(
'a '
,
'b '
,
2
),(
'a'
,
'b'
,
3
);
#
insert into t1 values ('a ', 'b ', 2),('a','b', 3);
drop
table
t1
;
#
drop table t1;
create
table
t1
(
a
varchar
(
10
)
charset
latin1
collate
latin1_bin
,
#
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
b
varchar
(
10
)
charset
latin1
collate
latin1_bin
,
c
int
)
#
b varchar(10) charset latin1 collate latin1_bin, c int)
partition
by
range
(
c
*
length
(
a
))
#partition by range (c * ascii
(a))
(
partition
p0
values
less
than
(
2
),
partition
p1
values
less
than
(
4
00
));
#(partition p0 values less than (2), partition p1 values less than (40
00));
insert
into
t1
values
(
'a '
,
'b '
,
2
),(
'a'
,
'b'
,
3
);
#
insert into t1 values ('a ', 'b ', 2),('a','b', 3);
drop
table
t1
;
#
drop table t1;
#
#
# More checks for partition pruning
# More checks for partition pruning
...
@@ -733,29 +733,27 @@ DROP TABLE t1;
...
@@ -733,29 +733,27 @@ DROP TABLE t1;
#
#
# Bug 18198: Try with a couple of cases using VARCHAR fields in
# Bug 18198: Try with a couple of cases using VARCHAR fields in
# partition function.
# partition function.
create
table
t1
(
a
varchar
(
20
))
#create table t1 (a varchar(20))
partition
by
range
(
crc32
(
md5
(
a
)))
#partition by range (ascii(a))
(
partition
p0
values
less
than
(
100
),
#(partition p0 values less than (100),
partition
p1
values
less
than
maxvalue
);
# partition p1 values less than maxvalue);
insert
into
t1
values
(
"12345678901234567890"
);
#insert into t1 values ("12345678901234567890");
insert
into
t1
values
(
"A2345678901234567890"
);
#insert into t1 values ("A2345678901234567890");
insert
into
t1
values
(
"B2345678901234567890"
);
#insert into t1 values ("B2345678901234567890");
insert
into
t1
values
(
"1234567890123456789"
);
#insert into t1 values ("1234567890123456789");
insert
into
t1
values
(
"1234567890123456"
);
#insert into t1 values ("1234567890123456");
select
*
from
t1
;
#select * from t1;
explain
partitions
select
*
from
t1
where
a
=
"12345678901234567890"
;
#explain partitions select * from t1 where a = "12345678901234567890";
explain
partitions
select
*
from
t1
where
a
=
"12345678901234567890"
OR
#explain partitions select * from t1 where a = "12345678901234567890" OR
a
=
"A2345678901234567890"
OR
# a = "A2345678901234567890" OR
a
=
"B2345678901234567890"
OR
# a = "B2345678901234567890" OR
a
=
"C2345678901234567890"
;
# a = "C2345678901234567890";
explain
partitions
select
*
from
t1
where
a
=
"01234567890123456"
;
#explain partitions select * from t1 where a = "01234567890123456";
select
*
from
t1
where
a
=
"01234567890123456"
;
#select * from t1 where a = "01234567890123456";
select
*
from
t1
where
a
=
"12345678901234567890"
OR
#select * from t1 where a = "12345678901234567890" OR
a
=
"A2345678901234567890"
OR
# a = "A2345678901234567890" OR
a
=
"B2345678901234567890"
OR
# a = "B2345678901234567890" OR
a
=
"C2345678901234567890"
;
# a = "C2345678901234567890";
select
*
from
t1
where
a
=
"12345678901234567890"
;
#select * from t1 where a = "12345678901234567890";
#drop table t1;
drop
table
t1
;
sql/item.h
View file @
8ccd9ee9
...
@@ -843,8 +843,7 @@ class Item {
...
@@ -843,8 +843,7 @@ class Item {
german character for double s is equal to 2 s.
german character for double s is equal to 2 s.
The default is that an item is not allowed
The default is that an item is not allowed
in a partition function. However all mathematical functions, string
in a partition function. Allowed functions
manipulation functions, date functions are allowed. Allowed functions
can never depend on server version, they cannot depend on anything
can never depend on server version, they cannot depend on anything
related to the environment. They can also only depend on a set of
related to the environment. They can also only depend on a set of
fields in the table itself. They cannot depend on other tables and
fields in the table itself. They cannot depend on other tables and
...
@@ -1633,6 +1632,7 @@ class Item_int :public Item_num
...
@@ -1633,6 +1632,7 @@ class Item_int :public Item_num
uint
decimal_precision
()
const
uint
decimal_precision
()
const
{
return
(
uint
)(
max_length
-
test
(
value
<
0
));
}
{
return
(
uint
)(
max_length
-
test
(
value
<
0
));
}
bool
eq
(
const
Item
*
,
bool
binary_cmp
)
const
;
bool
eq
(
const
Item
*
,
bool
binary_cmp
)
const
;
bool
check_partition_func_processor
(
uchar
*
bool_arg
)
{
return
FALSE
;}
};
};
...
@@ -1650,6 +1650,7 @@ class Item_uint :public Item_int
...
@@ -1650,6 +1650,7 @@ class Item_uint :public Item_int
void
print
(
String
*
str
);
void
print
(
String
*
str
);
Item_num
*
neg
();
Item_num
*
neg
();
uint
decimal_precision
()
const
{
return
max_length
;
}
uint
decimal_precision
()
const
{
return
max_length
;
}
bool
check_partition_func_processor
(
uchar
*
bool_arg
)
{
return
FALSE
;}
};
};
...
@@ -1692,6 +1693,7 @@ class Item_decimal :public Item_num
...
@@ -1692,6 +1693,7 @@ class Item_decimal :public Item_num
uint
decimal_precision
()
const
{
return
decimal_value
.
precision
();
}
uint
decimal_precision
()
const
{
return
decimal_value
.
precision
();
}
bool
eq
(
const
Item
*
,
bool
binary_cmp
)
const
;
bool
eq
(
const
Item
*
,
bool
binary_cmp
)
const
;
void
set_decimal_value
(
my_decimal
*
value_par
);
void
set_decimal_value
(
my_decimal
*
value_par
);
bool
check_partition_func_processor
(
uchar
*
bool_arg
)
{
return
FALSE
;}
};
};
...
@@ -1752,7 +1754,6 @@ class Item_static_float_func :public Item_float
...
@@ -1752,7 +1754,6 @@ class Item_static_float_func :public Item_float
{}
{}
void
print
(
String
*
str
)
{
str
->
append
(
func_name
);
}
void
print
(
String
*
str
)
{
str
->
append
(
func_name
);
}
Item
*
safe_charset_converter
(
CHARSET_INFO
*
tocs
);
Item
*
safe_charset_converter
(
CHARSET_INFO
*
tocs
);
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
TRUE
;}
};
};
...
@@ -1861,7 +1862,6 @@ class Item_partition_func_safe_string: public Item_string
...
@@ -1861,7 +1862,6 @@ class Item_partition_func_safe_string: public Item_string
CHARSET_INFO
*
cs
=
NULL
)
:
CHARSET_INFO
*
cs
=
NULL
)
:
Item_string
(
name
,
length
,
cs
)
Item_string
(
name
,
length
,
cs
)
{}
{}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
TRUE
;}
};
};
...
@@ -1909,7 +1909,6 @@ class Item_return_int :public Item_int
...
@@ -1909,7 +1909,6 @@ class Item_return_int :public Item_int
unsigned_flag
=
1
;
unsigned_flag
=
1
;
}
}
enum_field_types
field_type
()
const
{
return
int_field_type
;
}
enum_field_types
field_type
()
const
{
return
int_field_type
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
TRUE
;}
};
};
...
@@ -2231,7 +2230,6 @@ class Item_int_with_ref :public Item_int
...
@@ -2231,7 +2230,6 @@ class Item_int_with_ref :public Item_int
}
}
Item
*
clone_item
();
Item
*
clone_item
();
virtual
Item
*
real_item
()
{
return
ref
;
}
virtual
Item
*
real_item
()
{
return
ref
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
TRUE
;}
};
};
#ifdef MYSQL_SERVER
#ifdef MYSQL_SERVER
...
...
sql/item_cmpfunc.h
View file @
8ccd9ee9
...
@@ -355,7 +355,6 @@ class Item_bool_rowready_func2 :public Item_bool_func2
...
@@ -355,7 +355,6 @@ class Item_bool_rowready_func2 :public Item_bool_func2
}
}
Item
*
neg_transformer
(
THD
*
thd
);
Item
*
neg_transformer
(
THD
*
thd
);
virtual
Item
*
negated_item
();
virtual
Item
*
negated_item
();
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
bool
subst_argument_checker
(
uchar
**
arg
)
{
return
TRUE
;
}
bool
subst_argument_checker
(
uchar
**
arg
)
{
return
TRUE
;
}
};
};
...
@@ -367,7 +366,6 @@ class Item_func_not :public Item_bool_func
...
@@ -367,7 +366,6 @@ class Item_func_not :public Item_bool_func
enum
Functype
functype
()
const
{
return
NOT_FUNC
;
}
enum
Functype
functype
()
const
{
return
NOT_FUNC
;
}
const
char
*
func_name
()
const
{
return
"not"
;
}
const
char
*
func_name
()
const
{
return
"not"
;
}
Item
*
neg_transformer
(
THD
*
thd
);
Item
*
neg_transformer
(
THD
*
thd
);
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
void
print
(
String
*
str
);
void
print
(
String
*
str
);
};
};
...
@@ -598,7 +596,6 @@ class Item_func_between :public Item_func_opt_neg
...
@@ -598,7 +596,6 @@ class Item_func_between :public Item_func_opt_neg
bool
is_bool_func
()
{
return
1
;
}
bool
is_bool_func
()
{
return
1
;
}
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
uint
decimal_precision
()
const
{
return
1
;
}
uint
decimal_precision
()
const
{
return
1
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -610,7 +607,6 @@ class Item_func_strcmp :public Item_bool_func2
...
@@ -610,7 +607,6 @@ class Item_func_strcmp :public Item_bool_func2
optimize_type
select_optimize
()
const
{
return
OPTIMIZE_NONE
;
}
optimize_type
select_optimize
()
const
{
return
OPTIMIZE_NONE
;
}
const
char
*
func_name
()
const
{
return
"strcmp"
;
}
const
char
*
func_name
()
const
{
return
"strcmp"
;
}
void
print
(
String
*
str
)
{
Item_func
::
print
(
str
);
}
void
print
(
String
*
str
)
{
Item_func
::
print
(
str
);
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -673,7 +669,6 @@ class Item_func_ifnull :public Item_func_coalesce
...
@@ -673,7 +669,6 @@ class Item_func_ifnull :public Item_func_coalesce
const
char
*
func_name
()
const
{
return
"ifnull"
;
}
const
char
*
func_name
()
const
{
return
"ifnull"
;
}
Field
*
tmp_table_field
(
TABLE
*
table
);
Field
*
tmp_table_field
(
TABLE
*
table
);
uint
decimal_precision
()
const
;
uint
decimal_precision
()
const
;
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -714,7 +709,6 @@ class Item_func_nullif :public Item_bool_func2
...
@@ -714,7 +709,6 @@ class Item_func_nullif :public Item_bool_func2
void
print
(
String
*
str
)
{
Item_func
::
print
(
str
);
}
void
print
(
String
*
str
)
{
Item_func
::
print
(
str
);
}
table_map
not_null_tables
()
const
{
return
0
;
}
table_map
not_null_tables
()
const
{
return
0
;
}
bool
is_null
();
bool
is_null
();
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
/* Functions to handle the optimized IN */
/* Functions to handle the optimized IN */
...
@@ -1141,7 +1135,6 @@ class Item_func_case :public Item_func
...
@@ -1141,7 +1135,6 @@ class Item_func_case :public Item_func
void
print
(
String
*
str
);
void
print
(
String
*
str
);
Item
*
find_item
(
String
*
str
);
Item
*
find_item
(
String
*
str
);
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
bool
check_partition_func_processor
(
uchar
*
bool_arg
)
{
return
FALSE
;}
void
cleanup
();
void
cleanup
();
};
};
...
@@ -1211,7 +1204,6 @@ class Item_func_in :public Item_func_opt_neg
...
@@ -1211,7 +1204,6 @@ class Item_func_in :public Item_func_opt_neg
bool
nulls_in_row
();
bool
nulls_in_row
();
bool
is_bool_func
()
{
return
1
;
}
bool
is_bool_func
()
{
return
1
;
}
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
cmp_item_row
:
public
cmp_item
class
cmp_item_row
:
public
cmp_item
...
@@ -1283,7 +1275,6 @@ class Item_func_isnull :public Item_bool_func
...
@@ -1283,7 +1275,6 @@ class Item_func_isnull :public Item_bool_func
optimize_type
select_optimize
()
const
{
return
OPTIMIZE_NULL
;
}
optimize_type
select_optimize
()
const
{
return
OPTIMIZE_NULL
;
}
Item
*
neg_transformer
(
THD
*
thd
);
Item
*
neg_transformer
(
THD
*
thd
);
CHARSET_INFO
*
compare_collation
()
{
return
args
[
0
]
->
collation
.
collation
;
}
CHARSET_INFO
*
compare_collation
()
{
return
args
[
0
]
->
collation
.
collation
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
/* Functions used by HAVING for rewriting IN subquery */
/* Functions used by HAVING for rewriting IN subquery */
...
@@ -1310,7 +1301,6 @@ class Item_is_not_null_test :public Item_func_isnull
...
@@ -1310,7 +1301,6 @@ class Item_is_not_null_test :public Item_func_isnull
*/
*/
table_map
used_tables
()
const
table_map
used_tables
()
const
{
return
used_tables_cache
|
RAND_TABLE_BIT
;
}
{
return
used_tables_cache
|
RAND_TABLE_BIT
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
TRUE
;}
};
};
...
@@ -1333,7 +1323,6 @@ class Item_func_isnotnull :public Item_bool_func
...
@@ -1333,7 +1323,6 @@ class Item_func_isnotnull :public Item_bool_func
void
print
(
String
*
str
);
void
print
(
String
*
str
);
CHARSET_INFO
*
compare_collation
()
{
return
args
[
0
]
->
collation
.
collation
;
}
CHARSET_INFO
*
compare_collation
()
{
return
args
[
0
]
->
collation
.
collation
;
}
void
top_level_item
()
{
abort_on_null
=
1
;
}
void
top_level_item
()
{
abort_on_null
=
1
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -1372,7 +1361,6 @@ class Item_func_like :public Item_bool_func2
...
@@ -1372,7 +1361,6 @@ class Item_func_like :public Item_bool_func2
const
char
*
func_name
()
const
{
return
"like"
;
}
const
char
*
func_name
()
const
{
return
"like"
;
}
bool
fix_fields
(
THD
*
thd
,
Item
**
ref
);
bool
fix_fields
(
THD
*
thd
,
Item
**
ref
);
void
cleanup
();
void
cleanup
();
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
#ifdef USE_REGEX
#ifdef USE_REGEX
...
@@ -1395,7 +1383,6 @@ class Item_func_regex :public Item_bool_func
...
@@ -1395,7 +1383,6 @@ class Item_func_regex :public Item_bool_func
const
char
*
func_name
()
const
{
return
"regexp"
;
}
const
char
*
func_name
()
const
{
return
"regexp"
;
}
void
print
(
String
*
str
)
{
print_op
(
str
);
}
void
print
(
String
*
str
)
{
print_op
(
str
);
}
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
CHARSET_INFO
*
compare_collation
()
{
return
cmp_collation
.
collation
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
#else
#else
...
@@ -1452,7 +1439,6 @@ class Item_cond :public Item_bool_func
...
@@ -1452,7 +1439,6 @@ class Item_cond :public Item_bool_func
Item
*
transform
(
Item_transformer
transformer
,
uchar
*
arg
);
Item
*
transform
(
Item_transformer
transformer
,
uchar
*
arg
);
void
traverse_cond
(
Cond_traverser
,
void
*
arg
,
traverse_order
order
);
void
traverse_cond
(
Cond_traverser
,
void
*
arg
,
traverse_order
order
);
void
neg_arguments
(
THD
*
thd
);
void
neg_arguments
(
THD
*
thd
);
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
bool
subst_argument_checker
(
uchar
**
arg
)
{
return
TRUE
;
}
bool
subst_argument_checker
(
uchar
**
arg
)
{
return
TRUE
;
}
Item
*
compile
(
Item_analyzer
analyzer
,
uchar
**
arg_p
,
Item
*
compile
(
Item_analyzer
analyzer
,
uchar
**
arg_p
,
Item_transformer
transformer
,
uchar
*
arg_t
);
Item_transformer
transformer
,
uchar
*
arg_t
);
...
...
sql/item_func.h
View file @
8ccd9ee9
...
@@ -253,7 +253,6 @@ class Item_func_num1: public Item_func_numhybrid
...
@@ -253,7 +253,6 @@ class Item_func_num1: public Item_func_numhybrid
void
fix_num_length_and_dec
();
void
fix_num_length_and_dec
();
void
find_num_type
();
void
find_num_type
();
String
*
str_op
(
String
*
str
)
{
DBUG_ASSERT
(
0
);
return
0
;
}
String
*
str_op
(
String
*
str
)
{
DBUG_ASSERT
(
0
);
return
0
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -311,7 +310,6 @@ class Item_func_signed :public Item_int_func
...
@@ -311,7 +310,6 @@ class Item_func_signed :public Item_int_func
{
max_length
=
args
[
0
]
->
max_length
;
unsigned_flag
=
0
;
}
{
max_length
=
args
[
0
]
->
max_length
;
unsigned_flag
=
0
;
}
void
print
(
String
*
str
);
void
print
(
String
*
str
);
uint
decimal_precision
()
const
{
return
args
[
0
]
->
decimal_precision
();
}
uint
decimal_precision
()
const
{
return
args
[
0
]
->
decimal_precision
();
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -345,7 +343,6 @@ class Item_decimal_typecast :public Item_func
...
@@ -345,7 +343,6 @@ class Item_decimal_typecast :public Item_func
void
fix_length_and_dec
()
{};
void
fix_length_and_dec
()
{};
const
char
*
func_name
()
const
{
return
"decimal_typecast"
;
}
const
char
*
func_name
()
const
{
return
"decimal_typecast"
;
}
void
print
(
String
*
);
void
print
(
String
*
);
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -442,6 +439,7 @@ class Item_func_neg :public Item_func_num1
...
@@ -442,6 +439,7 @@ class Item_func_neg :public Item_func_num1
void
fix_length_and_dec
();
void
fix_length_and_dec
();
void
fix_num_length_and_dec
();
void
fix_num_length_and_dec
();
uint
decimal_precision
()
const
{
return
args
[
0
]
->
decimal_precision
();
}
uint
decimal_precision
()
const
{
return
args
[
0
]
->
decimal_precision
();
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -454,6 +452,7 @@ class Item_func_abs :public Item_func_num1
...
@@ -454,6 +452,7 @@ class Item_func_abs :public Item_func_num1
my_decimal
*
decimal_op
(
my_decimal
*
);
my_decimal
*
decimal_op
(
my_decimal
*
);
const
char
*
func_name
()
const
{
return
"abs"
;
}
const
char
*
func_name
()
const
{
return
"abs"
;
}
void
fix_length_and_dec
();
void
fix_length_and_dec
();
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
// A class to handle logarithmic and trigonometric functions
// A class to handle logarithmic and trigonometric functions
...
@@ -488,7 +487,6 @@ class Item_func_exp :public Item_dec_func
...
@@ -488,7 +487,6 @@ class Item_func_exp :public Item_dec_func
Item_func_exp
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_exp
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"exp"
;
}
const
char
*
func_name
()
const
{
return
"exp"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -498,7 +496,6 @@ class Item_func_ln :public Item_dec_func
...
@@ -498,7 +496,6 @@ class Item_func_ln :public Item_dec_func
Item_func_ln
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_ln
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"ln"
;
}
const
char
*
func_name
()
const
{
return
"ln"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -509,7 +506,6 @@ class Item_func_log :public Item_dec_func
...
@@ -509,7 +506,6 @@ class Item_func_log :public Item_dec_func
Item_func_log
(
Item
*
a
,
Item
*
b
)
:
Item_dec_func
(
a
,
b
)
{}
Item_func_log
(
Item
*
a
,
Item
*
b
)
:
Item_dec_func
(
a
,
b
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"log"
;
}
const
char
*
func_name
()
const
{
return
"log"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -519,7 +515,6 @@ class Item_func_log2 :public Item_dec_func
...
@@ -519,7 +515,6 @@ class Item_func_log2 :public Item_dec_func
Item_func_log2
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_log2
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"log2"
;
}
const
char
*
func_name
()
const
{
return
"log2"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -529,7 +524,6 @@ class Item_func_log10 :public Item_dec_func
...
@@ -529,7 +524,6 @@ class Item_func_log10 :public Item_dec_func
Item_func_log10
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_log10
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"log10"
;
}
const
char
*
func_name
()
const
{
return
"log10"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -539,7 +533,6 @@ class Item_func_sqrt :public Item_dec_func
...
@@ -539,7 +533,6 @@ class Item_func_sqrt :public Item_dec_func
Item_func_sqrt
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_sqrt
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"sqrt"
;
}
const
char
*
func_name
()
const
{
return
"sqrt"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -549,7 +542,6 @@ class Item_func_pow :public Item_dec_func
...
@@ -549,7 +542,6 @@ class Item_func_pow :public Item_dec_func
Item_func_pow
(
Item
*
a
,
Item
*
b
)
:
Item_dec_func
(
a
,
b
)
{}
Item_func_pow
(
Item
*
a
,
Item
*
b
)
:
Item_dec_func
(
a
,
b
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"pow"
;
}
const
char
*
func_name
()
const
{
return
"pow"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -559,7 +551,6 @@ class Item_func_acos :public Item_dec_func
...
@@ -559,7 +551,6 @@ class Item_func_acos :public Item_dec_func
Item_func_acos
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_acos
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"acos"
;
}
const
char
*
func_name
()
const
{
return
"acos"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_asin
:
public
Item_dec_func
class
Item_func_asin
:
public
Item_dec_func
...
@@ -568,7 +559,6 @@ class Item_func_asin :public Item_dec_func
...
@@ -568,7 +559,6 @@ class Item_func_asin :public Item_dec_func
Item_func_asin
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_asin
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"asin"
;
}
const
char
*
func_name
()
const
{
return
"asin"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_atan
:
public
Item_dec_func
class
Item_func_atan
:
public
Item_dec_func
...
@@ -578,7 +568,6 @@ class Item_func_atan :public Item_dec_func
...
@@ -578,7 +568,6 @@ class Item_func_atan :public Item_dec_func
Item_func_atan
(
Item
*
a
,
Item
*
b
)
:
Item_dec_func
(
a
,
b
)
{}
Item_func_atan
(
Item
*
a
,
Item
*
b
)
:
Item_dec_func
(
a
,
b
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"atan"
;
}
const
char
*
func_name
()
const
{
return
"atan"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_cos
:
public
Item_dec_func
class
Item_func_cos
:
public
Item_dec_func
...
@@ -587,7 +576,6 @@ class Item_func_cos :public Item_dec_func
...
@@ -587,7 +576,6 @@ class Item_func_cos :public Item_dec_func
Item_func_cos
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_cos
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"cos"
;
}
const
char
*
func_name
()
const
{
return
"cos"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_sin
:
public
Item_dec_func
class
Item_func_sin
:
public
Item_dec_func
...
@@ -596,7 +584,6 @@ class Item_func_sin :public Item_dec_func
...
@@ -596,7 +584,6 @@ class Item_func_sin :public Item_dec_func
Item_func_sin
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_sin
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"sin"
;
}
const
char
*
func_name
()
const
{
return
"sin"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_tan
:
public
Item_dec_func
class
Item_func_tan
:
public
Item_dec_func
...
@@ -605,7 +592,6 @@ class Item_func_tan :public Item_dec_func
...
@@ -605,7 +592,6 @@ class Item_func_tan :public Item_dec_func
Item_func_tan
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
Item_func_tan
(
Item
*
a
)
:
Item_dec_func
(
a
)
{}
double
val_real
();
double
val_real
();
const
char
*
func_name
()
const
{
return
"tan"
;
}
const
char
*
func_name
()
const
{
return
"tan"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_integer
:
public
Item_int_func
class
Item_func_integer
:
public
Item_int_func
...
@@ -633,6 +619,7 @@ class Item_func_ceiling :public Item_func_int_val
...
@@ -633,6 +619,7 @@ class Item_func_ceiling :public Item_func_int_val
longlong
int_op
();
longlong
int_op
();
double
real_op
();
double
real_op
();
my_decimal
*
decimal_op
(
my_decimal
*
);
my_decimal
*
decimal_op
(
my_decimal
*
);
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -644,6 +631,7 @@ class Item_func_floor :public Item_func_int_val
...
@@ -644,6 +631,7 @@ class Item_func_floor :public Item_func_int_val
longlong
int_op
();
longlong
int_op
();
double
real_op
();
double
real_op
();
my_decimal
*
decimal_op
(
my_decimal
*
);
my_decimal
*
decimal_op
(
my_decimal
*
);
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
/* This handles round and truncate */
/* This handles round and truncate */
...
@@ -684,7 +672,6 @@ class Item_func_sign :public Item_int_func
...
@@ -684,7 +672,6 @@ class Item_func_sign :public Item_int_func
Item_func_sign
(
Item
*
a
)
:
Item_int_func
(
a
)
{}
Item_func_sign
(
Item
*
a
)
:
Item_int_func
(
a
)
{}
const
char
*
func_name
()
const
{
return
"sign"
;
}
const
char
*
func_name
()
const
{
return
"sign"
;
}
longlong
val_int
();
longlong
val_int
();
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -699,7 +686,6 @@ class Item_func_units :public Item_real_func
...
@@ -699,7 +686,6 @@ class Item_func_units :public Item_real_func
const
char
*
func_name
()
const
{
return
name
;
}
const
char
*
func_name
()
const
{
return
name
;
}
void
fix_length_and_dec
()
void
fix_length_and_dec
()
{
decimals
=
NOT_FIXED_DEC
;
max_length
=
float_length
(
decimals
);
}
{
decimals
=
NOT_FIXED_DEC
;
max_length
=
float_length
(
decimals
);
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -725,7 +711,6 @@ class Item_func_min_max :public Item_func
...
@@ -725,7 +711,6 @@ class Item_func_min_max :public Item_func
void
fix_length_and_dec
();
void
fix_length_and_dec
();
enum
Item_result
result_type
()
const
{
return
cmp_type
;
}
enum
Item_result
result_type
()
const
{
return
cmp_type
;
}
bool
result_as_longlong
()
{
return
compare_as_dates
;
};
bool
result_as_longlong
()
{
return
compare_as_dates
;
};
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
uint
cmp_datetimes
(
ulonglong
*
value
);
uint
cmp_datetimes
(
ulonglong
*
value
);
};
};
...
@@ -781,7 +766,6 @@ class Item_func_length :public Item_int_func
...
@@ -781,7 +766,6 @@ class Item_func_length :public Item_int_func
longlong
val_int
();
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"length"
;
}
const
char
*
func_name
()
const
{
return
"length"
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_bit_length
:
public
Item_func_length
class
Item_func_bit_length
:
public
Item_func_length
...
@@ -801,7 +785,6 @@ class Item_func_char_length :public Item_int_func
...
@@ -801,7 +785,6 @@ class Item_func_char_length :public Item_int_func
longlong
val_int
();
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"char_length"
;
}
const
char
*
func_name
()
const
{
return
"char_length"
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_coercibility
:
public
Item_int_func
class
Item_func_coercibility
:
public
Item_int_func
...
@@ -825,7 +808,6 @@ class Item_func_locate :public Item_int_func
...
@@ -825,7 +808,6 @@ class Item_func_locate :public Item_int_func
longlong
val_int
();
longlong
val_int
();
void
fix_length_and_dec
();
void
fix_length_and_dec
();
void
print
(
String
*
str
);
void
print
(
String
*
str
);
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -850,7 +832,6 @@ class Item_func_ascii :public Item_int_func
...
@@ -850,7 +832,6 @@ class Item_func_ascii :public Item_int_func
longlong
val_int
();
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"ascii"
;
}
const
char
*
func_name
()
const
{
return
"ascii"
;
}
void
fix_length_and_dec
()
{
max_length
=
3
;
}
void
fix_length_and_dec
()
{
max_length
=
3
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_ord
:
public
Item_int_func
class
Item_func_ord
:
public
Item_int_func
...
@@ -860,7 +841,6 @@ class Item_func_ord :public Item_int_func
...
@@ -860,7 +841,6 @@ class Item_func_ord :public Item_int_func
Item_func_ord
(
Item
*
a
)
:
Item_int_func
(
a
)
{}
Item_func_ord
(
Item
*
a
)
:
Item_int_func
(
a
)
{}
longlong
val_int
();
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"ord"
;
}
const
char
*
func_name
()
const
{
return
"ord"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_find_in_set
:
public
Item_int_func
class
Item_func_find_in_set
:
public
Item_int_func
...
@@ -874,7 +854,6 @@ class Item_func_find_in_set :public Item_int_func
...
@@ -874,7 +854,6 @@ class Item_func_find_in_set :public Item_int_func
longlong
val_int
();
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"find_in_set"
;
}
const
char
*
func_name
()
const
{
return
"find_in_set"
;
}
void
fix_length_and_dec
();
void
fix_length_and_dec
();
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
/* Base class for all bit functions: '~', '|', '^', '&', '>>', '<<' */
/* Base class for all bit functions: '~', '|', '^', '&', '>>', '<<' */
...
@@ -886,7 +865,6 @@ class Item_func_bit: public Item_int_func
...
@@ -886,7 +865,6 @@ class Item_func_bit: public Item_int_func
Item_func_bit
(
Item
*
a
)
:
Item_int_func
(
a
)
{}
Item_func_bit
(
Item
*
a
)
:
Item_int_func
(
a
)
{}
void
fix_length_and_dec
()
{
unsigned_flag
=
1
;
}
void
fix_length_and_dec
()
{
unsigned_flag
=
1
;
}
void
print
(
String
*
str
)
{
print_op
(
str
);
}
void
print
(
String
*
str
)
{
print_op
(
str
);
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_bit_or
:
public
Item_func_bit
class
Item_func_bit_or
:
public
Item_func_bit
...
@@ -912,7 +890,6 @@ class Item_func_bit_count :public Item_int_func
...
@@ -912,7 +890,6 @@ class Item_func_bit_count :public Item_int_func
longlong
val_int
();
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"bit_count"
;
}
const
char
*
func_name
()
const
{
return
"bit_count"
;
}
void
fix_length_and_dec
()
{
max_length
=
2
;
}
void
fix_length_and_dec
()
{
max_length
=
2
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_shift_left
:
public
Item_func_bit
class
Item_func_shift_left
:
public
Item_func_bit
...
@@ -1363,7 +1340,6 @@ class Item_func_inet_aton : public Item_int_func
...
@@ -1363,7 +1340,6 @@ class Item_func_inet_aton : public Item_int_func
longlong
val_int
();
longlong
val_int
();
const
char
*
func_name
()
const
{
return
"inet_aton"
;
}
const
char
*
func_name
()
const
{
return
"inet_aton"
;
}
void
fix_length_and_dec
()
{
decimals
=
0
;
max_length
=
21
;
maybe_null
=
1
;
unsigned_flag
=
1
;}
void
fix_length_and_dec
()
{
decimals
=
0
;
max_length
=
21
;
maybe_null
=
1
;
unsigned_flag
=
1
;}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
...
sql/item_strfunc.h
View file @
8ccd9ee9
...
@@ -50,7 +50,6 @@ class Item_func_md5 :public Item_str_func
...
@@ -50,7 +50,6 @@ class Item_func_md5 :public Item_str_func
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
const
char
*
func_name
()
const
{
return
"md5"
;
}
const
char
*
func_name
()
const
{
return
"md5"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -94,7 +93,6 @@ class Item_func_concat :public Item_str_func
...
@@ -94,7 +93,6 @@ class Item_func_concat :public Item_str_func
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
const
char
*
func_name
()
const
{
return
"concat"
;
}
const
char
*
func_name
()
const
{
return
"concat"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_concat_ws
:
public
Item_str_func
class
Item_func_concat_ws
:
public
Item_str_func
...
@@ -116,7 +114,6 @@ class Item_func_reverse :public Item_str_func
...
@@ -116,7 +114,6 @@ class Item_func_reverse :public Item_str_func
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
const
char
*
func_name
()
const
{
return
"reverse"
;
}
const
char
*
func_name
()
const
{
return
"reverse"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -154,7 +151,6 @@ class Item_str_conv :public Item_str_func
...
@@ -154,7 +151,6 @@ class Item_str_conv :public Item_str_func
public:
public:
Item_str_conv
(
Item
*
item
)
:
Item_str_func
(
item
)
{}
Item_str_conv
(
Item
*
item
)
:
Item_str_func
(
item
)
{}
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -455,7 +451,6 @@ class Item_func_soundex :public Item_str_func
...
@@ -455,7 +451,6 @@ class Item_func_soundex :public Item_str_func
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
const
char
*
func_name
()
const
{
return
"soundex"
;
}
const
char
*
func_name
()
const
{
return
"soundex"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -549,7 +544,6 @@ class Item_func_rpad :public Item_str_func
...
@@ -549,7 +544,6 @@ class Item_func_rpad :public Item_str_func
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
const
char
*
func_name
()
const
{
return
"rpad"
;
}
const
char
*
func_name
()
const
{
return
"rpad"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -562,7 +556,6 @@ class Item_func_lpad :public Item_str_func
...
@@ -562,7 +556,6 @@ class Item_func_lpad :public Item_str_func
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
const
char
*
func_name
()
const
{
return
"lpad"
;
}
const
char
*
func_name
()
const
{
return
"lpad"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -577,7 +570,6 @@ class Item_func_conv :public Item_str_func
...
@@ -577,7 +570,6 @@ class Item_func_conv :public Item_str_func
collation
.
set
(
default_charset
());
collation
.
set
(
default_charset
());
max_length
=
64
;
max_length
=
64
;
}
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -594,7 +586,6 @@ class Item_func_hex :public Item_str_func
...
@@ -594,7 +586,6 @@ class Item_func_hex :public Item_str_func
decimals
=
0
;
decimals
=
0
;
max_length
=
args
[
0
]
->
max_length
*
2
*
collation
.
collation
->
mbmaxlen
;
max_length
=
args
[
0
]
->
max_length
*
2
*
collation
.
collation
->
mbmaxlen
;
}
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_unhex
:
public
Item_str_func
class
Item_func_unhex
:
public
Item_str_func
...
@@ -614,7 +605,6 @@ class Item_func_unhex :public Item_str_func
...
@@ -614,7 +605,6 @@ class Item_func_unhex :public Item_str_func
decimals
=
0
;
decimals
=
0
;
max_length
=
(
1
+
args
[
0
]
->
max_length
)
/
2
;
max_length
=
(
1
+
args
[
0
]
->
max_length
)
/
2
;
}
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -638,7 +628,6 @@ class Item_func_binary :public Item_str_func
...
@@ -638,7 +628,6 @@ class Item_func_binary :public Item_str_func
}
}
void
print
(
String
*
str
);
void
print
(
String
*
str
);
const
char
*
func_name
()
const
{
return
"cast_as_binary"
;
}
const
char
*
func_name
()
const
{
return
"cast_as_binary"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -678,7 +667,6 @@ class Item_func_inet_ntoa : public Item_str_func
...
@@ -678,7 +667,6 @@ class Item_func_inet_ntoa : public Item_str_func
String
*
val_str
(
String
*
str
);
String
*
val_str
(
String
*
str
);
const
char
*
func_name
()
const
{
return
"inet_ntoa"
;
}
const
char
*
func_name
()
const
{
return
"inet_ntoa"
;
}
void
fix_length_and_dec
()
{
decimals
=
0
;
max_length
=
3
*
8
+
7
;
}
void
fix_length_and_dec
()
{
decimals
=
0
;
max_length
=
3
*
8
+
7
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_quote
:
public
Item_str_func
class
Item_func_quote
:
public
Item_str_func
...
@@ -693,7 +681,6 @@ class Item_func_quote :public Item_str_func
...
@@ -693,7 +681,6 @@ class Item_func_quote :public Item_str_func
collation
.
set
(
args
[
0
]
->
collation
);
collation
.
set
(
args
[
0
]
->
collation
);
max_length
=
args
[
0
]
->
max_length
*
2
+
2
;
max_length
=
args
[
0
]
->
max_length
*
2
+
2
;
}
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_conv_charset
:
public
Item_str_func
class
Item_func_conv_charset
:
public
Item_str_func
...
@@ -794,7 +781,6 @@ class Item_func_crc32 :public Item_int_func
...
@@ -794,7 +781,6 @@ class Item_func_crc32 :public Item_int_func
const
char
*
func_name
()
const
{
return
"crc32"
;
}
const
char
*
func_name
()
const
{
return
"crc32"
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
}
void
fix_length_and_dec
()
{
max_length
=
10
;
}
longlong
val_int
();
longlong
val_int
();
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_uncompressed_length
:
public
Item_int_func
class
Item_func_uncompressed_length
:
public
Item_int_func
...
...
sql/item_timefunc.h
View file @
8ccd9ee9
...
@@ -38,7 +38,6 @@ class Item_func_period_add :public Item_int_func
...
@@ -38,7 +38,6 @@ class Item_func_period_add :public Item_int_func
{
{
max_length
=
6
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
6
*
MY_CHARSET_BIN_MB_MAXLEN
;
}
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -53,7 +52,6 @@ class Item_func_period_diff :public Item_int_func
...
@@ -53,7 +52,6 @@ class Item_func_period_diff :public Item_int_func
decimals
=
0
;
decimals
=
0
;
max_length
=
6
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
6
*
MY_CHARSET_BIN_MB_MAXLEN
;
}
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -129,6 +127,7 @@ class Item_func_monthname :public Item_func_month
...
@@ -129,6 +127,7 @@ class Item_func_monthname :public Item_func_month
max_length
=
10
*
my_charset_bin
.
mbmaxlen
;
max_length
=
10
*
my_charset_bin
.
mbmaxlen
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
TRUE
;}
};
};
...
@@ -224,7 +223,6 @@ class Item_func_week :public Item_int_func
...
@@ -224,7 +223,6 @@ class Item_func_week :public Item_int_func
max_length
=
2
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
2
*
MY_CHARSET_BIN_MB_MAXLEN
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_yearweek
:
public
Item_int_func
class
Item_func_yearweek
:
public
Item_int_func
...
@@ -303,6 +301,7 @@ class Item_func_dayname :public Item_func_weekday
...
@@ -303,6 +301,7 @@ class Item_func_dayname :public Item_func_weekday
max_length
=
9
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
9
*
MY_CHARSET_BIN_MB_MAXLEN
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
TRUE
;}
};
};
...
@@ -319,7 +318,6 @@ class Item_func_unix_timestamp :public Item_int_func
...
@@ -319,7 +318,6 @@ class Item_func_unix_timestamp :public Item_int_func
decimals
=
0
;
decimals
=
0
;
max_length
=
10
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
10
*
MY_CHARSET_BIN_MB_MAXLEN
;
}
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -603,7 +601,6 @@ class Item_func_date_format :public Item_str_func
...
@@ -603,7 +601,6 @@ class Item_func_date_format :public Item_str_func
void
fix_length_and_dec
();
void
fix_length_and_dec
();
uint
format_length
(
const
String
*
format
);
uint
format_length
(
const
String
*
format
);
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -617,7 +614,6 @@ class Item_func_from_unixtime :public Item_date_func
...
@@ -617,7 +614,6 @@ class Item_func_from_unixtime :public Item_date_func
const
char
*
func_name
()
const
{
return
"from_unixtime"
;
}
const
char
*
func_name
()
const
{
return
"from_unixtime"
;
}
void
fix_length_and_dec
();
void
fix_length_and_dec
();
bool
get_date
(
MYSQL_TIME
*
res
,
uint
fuzzy_date
);
bool
get_date
(
MYSQL_TIME
*
res
,
uint
fuzzy_date
);
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -676,7 +672,6 @@ class Item_func_sec_to_time :public Item_str_timefunc
...
@@ -676,7 +672,6 @@ class Item_func_sec_to_time :public Item_str_timefunc
}
}
const
char
*
func_name
()
const
{
return
"sec_to_time"
;
}
const
char
*
func_name
()
const
{
return
"sec_to_time"
;
}
bool
result_as_longlong
()
{
return
TRUE
;
}
bool
result_as_longlong
()
{
return
TRUE
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -698,7 +693,6 @@ class Item_date_add_interval :public Item_date_func
...
@@ -698,7 +693,6 @@ class Item_date_add_interval :public Item_date_func
bool
get_date
(
MYSQL_TIME
*
res
,
uint
fuzzy_date
);
bool
get_date
(
MYSQL_TIME
*
res
,
uint
fuzzy_date
);
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
bool
eq
(
const
Item
*
item
,
bool
binary_cmp
)
const
;
void
print
(
String
*
str
);
void
print
(
String
*
str
);
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -753,7 +747,6 @@ class Item_typecast_maybe_null :public Item_typecast
...
@@ -753,7 +747,6 @@ class Item_typecast_maybe_null :public Item_typecast
max_length
=
args
[
0
]
->
max_length
;
max_length
=
args
[
0
]
->
max_length
;
maybe_null
=
1
;
maybe_null
=
1
;
}
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -773,7 +766,6 @@ class Item_char_typecast :public Item_typecast
...
@@ -773,7 +766,6 @@ class Item_char_typecast :public Item_typecast
String
*
val_str
(
String
*
a
);
String
*
val_str
(
String
*
a
);
void
fix_length_and_dec
();
void
fix_length_and_dec
();
void
print
(
String
*
str
);
void
print
(
String
*
str
);
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -884,7 +876,6 @@ class Item_func_makedate :public Item_date_func
...
@@ -884,7 +876,6 @@ class Item_func_makedate :public Item_date_func
max_length
=
MAX_DATE_WIDTH
*
MY_CHARSET_BIN_MB_MAXLEN
;
max_length
=
MAX_DATE_WIDTH
*
MY_CHARSET_BIN_MB_MAXLEN
;
}
}
longlong
val_int
();
longlong
val_int
();
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -907,7 +898,6 @@ class Item_func_add_time :public Item_str_func
...
@@ -907,7 +898,6 @@ class Item_func_add_time :public Item_str_func
}
}
void
print
(
String
*
str
);
void
print
(
String
*
str
);
const
char
*
func_name
()
const
{
return
"add_time"
;
}
const
char
*
func_name
()
const
{
return
"add_time"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
double
val_real
()
{
return
val_real_from_decimal
();
}
double
val_real
()
{
return
val_real_from_decimal
();
}
my_decimal
*
val_decimal
(
my_decimal
*
decimal_value
)
my_decimal
*
val_decimal
(
my_decimal
*
decimal_value
)
{
{
...
@@ -949,7 +939,6 @@ class Item_func_maketime :public Item_str_timefunc
...
@@ -949,7 +939,6 @@ class Item_func_maketime :public Item_str_timefunc
:
Item_str_timefunc
(
a
,
b
,
c
)
{}
:
Item_str_timefunc
(
a
,
b
,
c
)
{}
String
*
val_str
(
String
*
str
);
String
*
val_str
(
String
*
str
);
const
char
*
func_name
()
const
{
return
"maketime"
;
}
const
char
*
func_name
()
const
{
return
"maketime"
;
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
class
Item_func_microsecond
:
public
Item_int_func
class
Item_func_microsecond
:
public
Item_int_func
...
@@ -981,7 +970,6 @@ class Item_func_timestamp_diff :public Item_int_func
...
@@ -981,7 +970,6 @@ class Item_func_timestamp_diff :public Item_int_func
maybe_null
=
1
;
maybe_null
=
1
;
}
}
void
print
(
String
*
str
);
void
print
(
String
*
str
);
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
@@ -1028,7 +1016,6 @@ class Item_func_str_to_date :public Item_str_func
...
@@ -1028,7 +1016,6 @@ class Item_func_str_to_date :public Item_str_func
{
{
return
tmp_table_field_from_field_type
(
table
,
1
);
return
tmp_table_field_from_field_type
(
table
,
1
);
}
}
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
...
sql/item_xmlfunc.h
View file @
8ccd9ee9
...
@@ -41,7 +41,6 @@ class Item_func_xml_extractvalue: public Item_xml_str_func
...
@@ -41,7 +41,6 @@ class Item_func_xml_extractvalue: public Item_xml_str_func
Item_func_xml_extractvalue
(
Item
*
a
,
Item
*
b
)
:
Item_xml_str_func
(
a
,
b
)
{}
Item_func_xml_extractvalue
(
Item
*
a
,
Item
*
b
)
:
Item_xml_str_func
(
a
,
b
)
{}
const
char
*
func_name
()
const
{
return
"extractvalue"
;
}
const
char
*
func_name
()
const
{
return
"extractvalue"
;
}
String
*
val_str
(
String
*
);
String
*
val_str
(
String
*
);
bool
check_partition_func_processor
(
uchar
*
int_arg
)
{
return
FALSE
;}
};
};
...
...
sql/partition_info.cc
View file @
8ccd9ee9
...
@@ -905,7 +905,6 @@ bool partition_info::set_up_charset_field_preps()
...
@@ -905,7 +905,6 @@ bool partition_info::set_up_charset_field_preps()
Field
*
field
,
**
ptr
;
Field
*
field
,
**
ptr
;
uchar
**
char_ptrs
;
uchar
**
char_ptrs
;
unsigned
i
;
unsigned
i
;
bool
found
;
size_t
size
;
size_t
size
;
uint
tot_fields
=
0
;
uint
tot_fields
=
0
;
uint
tot_part_fields
=
0
;
uint
tot_part_fields
=
0
;
...
@@ -918,7 +917,6 @@ bool partition_info::set_up_charset_field_preps()
...
@@ -918,7 +917,6 @@ bool partition_info::set_up_charset_field_preps()
{
{
ptr
=
part_field_array
;
ptr
=
part_field_array
;
/* Set up arrays and buffers for those fields */
/* Set up arrays and buffers for those fields */
i
=
0
;
while
((
field
=
*
(
ptr
++
)))
while
((
field
=
*
(
ptr
++
)))
{
{
if
(
field_is_partition_charset
(
field
))
if
(
field_is_partition_charset
(
field
))
...
@@ -954,7 +952,7 @@ bool partition_info::set_up_charset_field_preps()
...
@@ -954,7 +952,7 @@ bool partition_info::set_up_charset_field_preps()
}
}
part_charset_field_array
[
i
]
=
NULL
;
part_charset_field_array
[
i
]
=
NULL
;
}
}
if
(
is_sub_partitioned
()
&&
list_of_subpart_fields
&&
if
(
is_sub_partitioned
()
&&
!
list_of_subpart_fields
&&
check_part_func_fields
(
subpart_field_array
,
FALSE
))
check_part_func_fields
(
subpart_field_array
,
FALSE
))
{
{
/* Set up arrays and buffers for those fields */
/* Set up arrays and buffers for those fields */
...
@@ -962,7 +960,10 @@ bool partition_info::set_up_charset_field_preps()
...
@@ -962,7 +960,10 @@ bool partition_info::set_up_charset_field_preps()
while
((
field
=
*
(
ptr
++
)))
while
((
field
=
*
(
ptr
++
)))
{
{
if
(
field_is_partition_charset
(
field
))
if
(
field_is_partition_charset
(
field
))
{
tot_subpart_fields
++
;
tot_subpart_fields
++
;
tot_fields
++
;
}
}
}
size
=
tot_subpart_fields
*
sizeof
(
char
*
);
size
=
tot_subpart_fields
*
sizeof
(
char
*
);
if
(
!
(
char_ptrs
=
(
uchar
**
)
sql_calloc
(
size
)))
if
(
!
(
char_ptrs
=
(
uchar
**
)
sql_calloc
(
size
)))
...
@@ -975,10 +976,10 @@ bool partition_info::set_up_charset_field_preps()
...
@@ -975,10 +976,10 @@ bool partition_info::set_up_charset_field_preps()
if
(
!
(
char_ptrs
=
(
uchar
**
)
sql_alloc
(
size
)))
if
(
!
(
char_ptrs
=
(
uchar
**
)
sql_alloc
(
size
)))
goto
error
;
goto
error
;
subpart_charset_field_array
=
(
Field
**
)
char_ptrs
;
subpart_charset_field_array
=
(
Field
**
)
char_ptrs
;
ptr
=
subpart_field_array
;
i
=
0
;
i
=
0
;
while
((
field
=
*
(
ptr
++
)))
while
((
field
=
*
(
ptr
++
)))
{
{
unsigned
j
=
0
;
CHARSET_INFO
*
cs
;
CHARSET_INFO
*
cs
;
uchar
*
field_buf
;
uchar
*
field_buf
;
LINT_INIT
(
field_buf
);
LINT_INIT
(
field_buf
);
...
@@ -987,28 +988,16 @@ bool partition_info::set_up_charset_field_preps()
...
@@ -987,28 +988,16 @@ bool partition_info::set_up_charset_field_preps()
continue
;
continue
;
cs
=
((
Field_str
*
)
field
)
->
charset
();
cs
=
((
Field_str
*
)
field
)
->
charset
();
size
=
field
->
pack_length
();
size
=
field
->
pack_length
();
found
=
FALSE
;
for
(
j
=
0
;
j
<
tot_part_fields
;
j
++
)
{
if
(
field
==
part_charset_field_array
[
i
])
found
=
TRUE
;
}
if
(
!
found
)
{
tot_fields
++
;
if
(
!
(
field_buf
=
(
uchar
*
)
sql_calloc
(
size
)))
if
(
!
(
field_buf
=
(
uchar
*
)
sql_calloc
(
size
)))
goto
error
;
goto
error
;
}
subpart_charset_field_array
[
i
]
=
field
;
subpart_field_buffers
[
i
++
]
=
field_buf
;
subpart_field_buffers
[
i
++
]
=
field_buf
;
}
}
if
(
!
(
char_ptrs
=
(
uchar
**
)
sql_calloc
(
size
)))
subpart_charset_field_array
[
i
]
=
NULL
;
goto
error
;
restore_subpart_field_ptrs
=
char_ptrs
;
}
}
if
(
tot_fields
)
if
(
tot_fields
)
{
{
uint
j
,
k
,
l
;
uint
k
;
size
=
tot_fields
*
sizeof
(
char
**
);
size
=
tot_fields
*
sizeof
(
char
**
);
if
(
!
(
char_ptrs
=
(
uchar
**
)
sql_calloc
(
size
)))
if
(
!
(
char_ptrs
=
(
uchar
**
)
sql_calloc
(
size
)))
goto
error
;
goto
error
;
...
@@ -1026,11 +1015,12 @@ bool partition_info::set_up_charset_field_preps()
...
@@ -1026,11 +1015,12 @@ bool partition_info::set_up_charset_field_preps()
full_part_field_buffers
[
i
]
=
part_field_buffers
[
i
];
full_part_field_buffers
[
i
]
=
part_field_buffers
[
i
];
}
}
k
=
tot_part_fields
;
k
=
tot_part_fields
;
l
=
0
;
for
(
i
=
0
;
i
<
tot_subpart_fields
;
i
++
)
for
(
i
=
0
;
i
<
tot_subpart_fields
;
i
++
)
{
{
uint
j
;
bool
found
=
FALSE
;
field
=
subpart_charset_field_array
[
i
];
field
=
subpart_charset_field_array
[
i
];
found
=
FALSE
;
for
(
j
=
0
;
j
<
tot_part_fields
;
j
++
)
for
(
j
=
0
;
j
<
tot_part_fields
;
j
++
)
{
{
if
(
field
==
part_charset_field_array
[
i
])
if
(
field
==
part_charset_field_array
[
i
])
...
@@ -1038,12 +1028,12 @@ bool partition_info::set_up_charset_field_preps()
...
@@ -1038,12 +1028,12 @@ bool partition_info::set_up_charset_field_preps()
}
}
if
(
!
found
)
if
(
!
found
)
{
{
full_part_charset_field_array
[
l
]
=
subpart_charset_field_array
[
k
];
full_part_charset_field_array
[
k
]
=
subpart_charset_field_array
[
i
];
full_part_field_buffers
[
l
]
=
subpart_field_buffers
[
k
];
full_part_field_buffers
[
k
]
=
subpart_field_buffers
[
i
];
k
++
;
l
++
;
k
++
;
}
}
}
}
full_part_charset_field_array
[
tot_fields
]
=
NULL
;
full_part_charset_field_array
[
k
]
=
NULL
;
}
}
DBUG_RETURN
(
FALSE
);
DBUG_RETURN
(
FALSE
);
error:
error:
...
...
sql/sql_partition.cc
View file @
8ccd9ee9
...
@@ -2869,6 +2869,8 @@ uint32 get_partition_id_range_for_endpoint(partition_info *part_info,
...
@@ -2869,6 +2869,8 @@ uint32 get_partition_id_range_for_endpoint(partition_info *part_info,
}
}
if
(
unsigned_flag
)
if
(
unsigned_flag
)
part_func_value
-=
0x8000000000000000ULL
;
part_func_value
-=
0x8000000000000000ULL
;
if
(
left_endpoint
&&
!
include_endpoint
)
part_func_value
++
;
while
(
max_part_id
>
min_part_id
)
while
(
max_part_id
>
min_part_id
)
{
{
loc_part_id
=
(
max_part_id
+
min_part_id
+
1
)
>>
1
;
loc_part_id
=
(
max_part_id
+
min_part_id
+
1
)
>>
1
;
...
@@ -3294,7 +3296,9 @@ static uint32 get_sub_part_id_from_key(const TABLE *table,uchar *buf,
...
@@ -3294,7 +3296,9 @@ static uint32 get_sub_part_id_from_key(const TABLE *table,uchar *buf,
key_restore
(
buf
,
(
uchar
*
)
key_spec
->
key
,
key_info
,
key_spec
->
length
);
key_restore
(
buf
,
(
uchar
*
)
key_spec
->
key
,
key_info
,
key_spec
->
length
);
if
(
likely
(
rec0
==
buf
))
if
(
likely
(
rec0
==
buf
))
{
part_id
=
part_info
->
get_subpartition_id
(
part_info
);
part_id
=
part_info
->
get_subpartition_id
(
part_info
);
}
else
else
{
{
Field
**
part_field_array
=
part_info
->
subpart_field_array
;
Field
**
part_field_array
=
part_info
->
subpart_field_array
;
...
@@ -3337,8 +3341,10 @@ bool get_part_id_from_key(const TABLE *table, uchar *buf, KEY *key_info,
...
@@ -3337,8 +3341,10 @@ bool get_part_id_from_key(const TABLE *table, uchar *buf, KEY *key_info,
key_restore
(
buf
,
(
uchar
*
)
key_spec
->
key
,
key_info
,
key_spec
->
length
);
key_restore
(
buf
,
(
uchar
*
)
key_spec
->
key
,
key_info
,
key_spec
->
length
);
if
(
likely
(
rec0
==
buf
))
if
(
likely
(
rec0
==
buf
))
{
result
=
part_info
->
get_part_partition_id
(
part_info
,
part_id
,
result
=
part_info
->
get_part_partition_id
(
part_info
,
part_id
,
&
func_value
);
&
func_value
);
}
else
else
{
{
Field
**
part_field_array
=
part_info
->
part_field_array
;
Field
**
part_field_array
=
part_info
->
part_field_array
;
...
@@ -3384,8 +3390,10 @@ void get_full_part_id_from_key(const TABLE *table, uchar *buf,
...
@@ -3384,8 +3390,10 @@ void get_full_part_id_from_key(const TABLE *table, uchar *buf,
key_restore
(
buf
,
(
uchar
*
)
key_spec
->
key
,
key_info
,
key_spec
->
length
);
key_restore
(
buf
,
(
uchar
*
)
key_spec
->
key
,
key_info
,
key_spec
->
length
);
if
(
likely
(
rec0
==
buf
))
if
(
likely
(
rec0
==
buf
))
{
result
=
part_info
->
get_partition_id
(
part_info
,
&
part_spec
->
start_part
,
result
=
part_info
->
get_partition_id
(
part_info
,
&
part_spec
->
start_part
,
&
func_value
);
&
func_value
);
}
else
else
{
{
Field
**
part_field_array
=
part_info
->
full_part_field_array
;
Field
**
part_field_array
=
part_info
->
full_part_field_array
;
...
...
sql/sql_yacc.yy
View file @
8ccd9ee9
...
@@ -4097,8 +4097,7 @@ part_bit_expr:
...
@@ -4097,8 +4097,7 @@ part_bit_expr:
}
}
Lex->part_info->curr_part_elem->has_null_value= TRUE;
Lex->part_info->curr_part_elem->has_null_value= TRUE;
}
}
else if (part_expr->result_type() != INT_RESULT &&
else if (part_expr->result_type() != INT_RESULT)
!part_expr->null_value)
{
{
my_parse_error(ER(ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR));
my_parse_error(ER(ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR));
MYSQL_YYABORT;
MYSQL_YYABORT;
...
...
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