Commit ba28878b authored by Alexander Nozdrin's avatar Alexander Nozdrin

Auto-merge from mysql-next-mr.

parents 1d60eece 9af3a8bf
...@@ -260,7 +260,7 @@ extern ulong myisam_bulk_insert_tree_size, myisam_data_pointer_size; ...@@ -260,7 +260,7 @@ extern ulong myisam_bulk_insert_tree_size, myisam_data_pointer_size;
/* which is normally forbidden */ /* which is normally forbidden */
extern int (*myisam_test_invalid_symlink)(const char *filename); extern int (*myisam_test_invalid_symlink)(const char *filename);
extern ulonglong myisam_mmap_size, myisam_mmap_used; extern ulonglong myisam_mmap_size, myisam_mmap_used;
extern pthread_mutex_t THR_LOCK_myisam_mmap; extern mysql_mutex_t THR_LOCK_myisam_mmap;
/* Prototypes for myisam-functions */ /* Prototypes for myisam-functions */
......
...@@ -12,7 +12,6 @@ main.lock_multi_bug38499 # Bug#47448 2009-09-19 alik main.lock_m ...@@ -12,7 +12,6 @@ main.lock_multi_bug38499 # Bug#47448 2009-09-19 alik main.lock_m
main.lock_multi_bug38691 @solaris # Bug#47792 2009-10-02 alik main.lock_multi_bug38691 times out sporadically on Solaris 10 main.lock_multi_bug38691 @solaris # Bug#47792 2009-10-02 alik main.lock_multi_bug38691 times out sporadically on Solaris 10
main.log_tables # Bug#47924 2009-10-08 alik main.log_tables times out sporadically main.log_tables # Bug#47924 2009-10-08 alik main.log_tables times out sporadically
main.plugin # Bug#47146 Linking problem with example plugin when dtrace enabled main.plugin # Bug#47146 Linking problem with example plugin when dtrace enabled
main.plugin_load # Bug#47146
rpl.rpl_get_master_version_and_clock* # Bug#49191 2009-12-01 Daogang rpl_get_master_version_and_clock failed on PB2: COM_REGISTER_SLAVE failed rpl.rpl_get_master_version_and_clock* # Bug#49191 2009-12-01 Daogang rpl_get_master_version_and_clock failed on PB2: COM_REGISTER_SLAVE failed
rpl.rpl_heartbeat_basic # BUG#43828 2009-10-22 luis fails sporadically rpl.rpl_heartbeat_basic # BUG#43828 2009-10-22 luis fails sporadically
......
# include file for checking if variable key_reads is zero
let $key_reads= query_get_value(SHOW STATUS LIKE 'key_reads',Value,1);
--disable_query_log
eval SELECT IF($key_reads = 0, "Yes!", "No!") as 'Zero key reads?';
FLUSH STATUS;
--enable_query_log
# include file for checking if variable key_reads = key_read_requests
let $key_reads= query_get_value(SHOW STATUS LIKE 'key_reads',Value,1);
let $key_r_req= query_get_value(SHOW STATUS LIKE 'key_read_requests',Value,1);
let $key_writes= query_get_value(SHOW STATUS LIKE 'key_writes',Value,1);
let $key_w_req= query_get_value(SHOW STATUS LIKE 'key_write_requests',Value,1);
--disable_query_log
eval SELECT IF($key_reads = $key_r_req, "reads == requests", "reads != requests") as 'reads vs requests';
eval SELECT IF($key_writes = $key_w_req, "writes == requests", "writes != requests") as 'writes vs requests';
--enable_query_log
drop database if exists events_test;
drop database if exists events_test2;
drop table if exists t1;
CREATE TABLE t1 (
Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,
Varor_period smallint(4) unsigned DEFAULT '0' NOT NULL
) ENGINE=example;
drop table t1;
...@@ -9,6 +9,30 @@ partition by range columns (a,b,c) ...@@ -9,6 +9,30 @@ partition by range columns (a,b,c)
( partition p0 values less than (1, maxvalue, 10), ( partition p0 values less than (1, maxvalue, 10),
partition p1 values less than (1, maxvalue, maxvalue)); partition p1 values less than (1, maxvalue, maxvalue));
ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition
create table t1 (a varchar(5) character set ucs2 collate ucs2_bin)
partition by range columns (a)
(partition p0 values less than (0x0041));
insert into t1 values (0x00410000);
select hex(a) from t1 where a like 'A_';
hex(a)
00410000
explain partitions select hex(a) from t1 where a like 'A_';
id select_type table partitions type possible_keys key key_len ref rows Extra
1 SIMPLE t1 p0 system NULL NULL NULL NULL 1
alter table t1 remove partitioning;
select hex(a) from t1 where a like 'A_';
hex(a)
00410000
create index a on t1 (a);
select hex(a) from t1 where a like 'A_';
hex(a)
00410000
insert into t1 values ('A_');
select hex(a) from t1;
hex(a)
00410000
0041005F
drop table t1;
create table t1 (a varchar(1) character set latin1 collate latin1_general_ci) create table t1 (a varchar(1) character set latin1 collate latin1_general_ci)
partition by range columns(a) partition by range columns(a)
( partition p0 values less than ('a'), ( partition p0 values less than ('a'),
...@@ -69,7 +93,7 @@ Table Create Table ...@@ -69,7 +93,7 @@ Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`a` varchar(5) DEFAULT NULL `a` varchar(5) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST COLUMNS(a) /*!50500 PARTITION BY LIST COLUMNS(a)
(PARTITION p0 VALUES IN ('''') ENGINE = MyISAM, (PARTITION p0 VALUES IN ('''') ENGINE = MyISAM,
PARTITION p1 VALUES IN ('\\') ENGINE = MyISAM, PARTITION p1 VALUES IN ('\\') ENGINE = MyISAM,
PARTITION p2 VALUES IN ('\0') ENGINE = MyISAM) */ PARTITION p2 VALUES IN ('\0') ENGINE = MyISAM) */
...@@ -128,7 +152,7 @@ t1 CREATE TABLE `t1` ( ...@@ -128,7 +152,7 @@ t1 CREATE TABLE `t1` (
`c` varchar(25) DEFAULT NULL, `c` varchar(25) DEFAULT NULL,
`d` datetime DEFAULT NULL `d` datetime DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE COLUMNS(a,b,c,d) /*!50500 PARTITION BY RANGE COLUMNS(a,b,c,d)
SUBPARTITION BY HASH (to_seconds(d)) SUBPARTITION BY HASH (to_seconds(d))
SUBPARTITIONS 4 SUBPARTITIONS 4
(PARTITION p0 VALUES LESS THAN (1,'0',MAXVALUE,'1900-01-01') ENGINE = MyISAM, (PARTITION p0 VALUES LESS THAN (1,'0',MAXVALUE,'1900-01-01') ENGINE = MyISAM,
...@@ -211,7 +235,7 @@ t1 CREATE TABLE `t1` ( ...@@ -211,7 +235,7 @@ t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL, `a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL `b` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST COLUMNS(a,b) /*!50500 PARTITION BY LIST COLUMNS(a,b)
(PARTITION p0 VALUES IN ((1,NULL),(2,NULL),(NULL,NULL)) ENGINE = MyISAM, (PARTITION p0 VALUES IN ((1,NULL),(2,NULL),(NULL,NULL)) ENGINE = MyISAM,
PARTITION p1 VALUES IN ((1,1),(2,2)) ENGINE = MyISAM, PARTITION p1 VALUES IN ((1,1),(2,2)) ENGINE = MyISAM,
PARTITION p2 VALUES IN ((3,NULL),(NULL,1)) ENGINE = MyISAM) */ PARTITION p2 VALUES IN ((3,NULL),(NULL,1)) ENGINE = MyISAM) */
...@@ -245,7 +269,7 @@ t1 CREATE TABLE `t1` ( ...@@ -245,7 +269,7 @@ t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL, `a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL `b` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST COLUMNS(a,b) /*!50500 PARTITION BY LIST COLUMNS(a,b)
(PARTITION p0 VALUES IN ((1,NULL),(2,NULL),(NULL,NULL)) ENGINE = MyISAM, (PARTITION p0 VALUES IN ((1,NULL),(2,NULL),(NULL,NULL)) ENGINE = MyISAM,
PARTITION p1 VALUES IN ((1,1),(2,2)) ENGINE = MyISAM, PARTITION p1 VALUES IN ((1,1),(2,2)) ENGINE = MyISAM,
PARTITION p2 VALUES IN ((3,NULL),(NULL,1)) ENGINE = MyISAM) */ PARTITION p2 VALUES IN ((3,NULL),(NULL,1)) ENGINE = MyISAM) */
...@@ -299,7 +323,7 @@ Table Create Table ...@@ -299,7 +323,7 @@ Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL `a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST COLUMNS(a) /*!50500 PARTITION BY LIST COLUMNS(a)
(PARTITION p0 VALUES IN (2,1) ENGINE = MyISAM, (PARTITION p0 VALUES IN (2,1) ENGINE = MyISAM,
PARTITION p1 VALUES IN (4,NULL,3) ENGINE = MyISAM) */ PARTITION p1 VALUES IN (4,NULL,3) ENGINE = MyISAM) */
insert into t1 values (1); insert into t1 values (1);
...@@ -314,7 +338,7 @@ Table Create Table ...@@ -314,7 +338,7 @@ Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL `a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST COLUMNS(a) /*!50500 PARTITION BY LIST COLUMNS(a)
(PARTITION p0 VALUES IN (2,1) ENGINE = MyISAM, (PARTITION p0 VALUES IN (2,1) ENGINE = MyISAM,
PARTITION p1 VALUES IN (4,NULL,3) ENGINE = MyISAM) */ PARTITION p1 VALUES IN (4,NULL,3) ENGINE = MyISAM) */
drop table t1; drop table t1;
...@@ -349,7 +373,7 @@ t1 CREATE TABLE `t1` ( ...@@ -349,7 +373,7 @@ t1 CREATE TABLE `t1` (
`c` varchar(5) DEFAULT NULL, `c` varchar(5) DEFAULT NULL,
`d` int(11) DEFAULT NULL `d` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE COLUMNS(a,b,c) /*!50500 PARTITION BY RANGE COLUMNS(a,b,c)
SUBPARTITION BY KEY (c,d) SUBPARTITION BY KEY (c,d)
SUBPARTITIONS 3 SUBPARTITIONS 3
(PARTITION p0 VALUES LESS THAN (1,'abc','abc') ENGINE = MyISAM, (PARTITION p0 VALUES LESS THAN (1,'abc','abc') ENGINE = MyISAM,
...@@ -382,7 +406,7 @@ t1 CREATE TABLE `t1` ( ...@@ -382,7 +406,7 @@ t1 CREATE TABLE `t1` (
`b` varchar(2) DEFAULT NULL, `b` varchar(2) DEFAULT NULL,
`c` int(11) DEFAULT NULL `c` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY RANGE COLUMNS(a,b,c) /*!50500 PARTITION BY RANGE COLUMNS(a,b,c)
(PARTITION p0 VALUES LESS THAN (1,'A',1) ENGINE = MyISAM, (PARTITION p0 VALUES LESS THAN (1,'A',1) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN (1,'B',1) ENGINE = MyISAM) */ PARTITION p1 VALUES LESS THAN (1,'B',1) ENGINE = MyISAM) */
insert into t1 values (1, 'A', 1); insert into t1 values (1, 'A', 1);
......
This diff is collapsed.
drop table if exists t1, t2; drop table if exists t1, t2;
create table t1 (a int) create table t1 (a int)
partition by range (a) partition by range (a)
subpartition by hash(to_seconds(a))
(partition p0 values less than (1));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50500 PARTITION BY RANGE (a)
SUBPARTITION BY HASH (to_seconds(a))
(PARTITION p0 VALUES LESS THAN (1) ENGINE = MyISAM) */
drop table t1;
create table t1 (a int)
partition by range (a)
( partition p0 values less than (NULL), ( partition p0 values less than (NULL),
partition p1 values less than (MAXVALUE)); partition p1 values less than (MAXVALUE));
ERROR HY000: Not allowed to use NULL value in VALUES LESS THAN ERROR HY000: Not allowed to use NULL value in VALUES LESS THAN
...@@ -30,6 +43,14 @@ id select_type table partitions type possible_keys key key_len ref rows Extra ...@@ -30,6 +43,14 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
explain partitions select * from t1 where a < '2007-03-07 23:59:59'; explain partitions select * from t1 where a < '2007-03-07 23:59:59';
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 4 Using where 1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 4 Using where
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` datetime NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50500 PARTITION BY RANGE (TO_SECONDS(a))
(PARTITION p0 VALUES LESS THAN (63340531200) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN (63342604800) ENGINE = MyISAM) */
drop table t1; drop table t1;
create table t1 (a date) create table t1 (a date)
partition by range(to_seconds(a)) partition by range(to_seconds(a))
...@@ -53,6 +74,14 @@ select * from t1 where a <= '2005-01-01'; ...@@ -53,6 +74,14 @@ select * from t1 where a <= '2005-01-01';
a a
2003-12-30 2003-12-30
2004-12-31 2004-12-31
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50500 PARTITION BY RANGE (to_seconds(a))
(PARTITION p0 VALUES LESS THAN (63240134400) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN (63271756800) ENGINE = MyISAM) */
drop table t1; drop table t1;
create table t1 (a datetime) create table t1 (a datetime)
partition by range(to_seconds(a)) partition by range(to_seconds(a))
...@@ -75,6 +104,14 @@ id select_type table partitions type possible_keys key key_len ref rows Extra ...@@ -75,6 +104,14 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
select * from t1 where a <= '2005-01-01'; select * from t1 where a <= '2005-01-01';
a a
2004-01-01 11:59:29 2004-01-01 11:59:29
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` datetime DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50500 PARTITION BY RANGE (to_seconds(a))
(PARTITION p0 VALUES LESS THAN (63240177600) ENGINE = MyISAM,
PARTITION p1 VALUES LESS THAN (63271800000) ENGINE = MyISAM) */
drop table t1; drop table t1;
create table t1 (a int, b char(20)) create table t1 (a int, b char(20))
partition by range columns(a,b) partition by range columns(a,b)
......
...@@ -7,7 +7,7 @@ Table Create Table ...@@ -7,7 +7,7 @@ Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`a` varchar(2) CHARACTER SET cp1250 DEFAULT NULL `a` varchar(2) CHARACTER SET cp1250 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST COLUMNS(a) /*!50500 PARTITION BY LIST COLUMNS(a)
(PARTITION p0 VALUES IN (_cp1250 0x81) ENGINE = MyISAM) */ (PARTITION p0 VALUES IN (_cp1250 0x81) ENGINE = MyISAM) */
drop table t1; drop table t1;
create table t1 (a varchar(2) character set cp1250) create table t1 (a varchar(2) character set cp1250)
...@@ -18,7 +18,7 @@ Table Create Table ...@@ -18,7 +18,7 @@ Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`a` varchar(2) CHARACTER SET cp1250 DEFAULT NULL `a` varchar(2) CHARACTER SET cp1250 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST COLUMNS(a) /*!50500 PARTITION BY LIST COLUMNS(a)
(PARTITION p0 VALUES IN ('€') ENGINE = MyISAM) */ (PARTITION p0 VALUES IN ('€') ENGINE = MyISAM) */
drop table t1; drop table t1;
create table t1 (a varchar(1500), b varchar(1570)) create table t1 (a varchar(1500), b varchar(1570))
...@@ -45,7 +45,7 @@ Table Create Table ...@@ -45,7 +45,7 @@ Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`a` varchar(2) CHARACTER SET ucs2 DEFAULT NULL `a` varchar(2) CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY LIST COLUMNS(a) /*!50500 PARTITION BY LIST COLUMNS(a)
(PARTITION p0 VALUES IN ('†') ENGINE = MyISAM, (PARTITION p0 VALUES IN ('†') ENGINE = MyISAM,
PARTITION p1 VALUES IN ('') ENGINE = MyISAM) */ PARTITION p1 VALUES IN ('') ENGINE = MyISAM) */
insert into t1 values (''); insert into t1 values ('');
......
...@@ -176,21 +176,6 @@ a ...@@ -176,21 +176,6 @@ a
1 1
2 2
3 3
select * from t1 union select sql_cache * from t1;
a
1
2
3
select * from t1 where a IN (select sql_cache a from t1);
a
1
2
3
select * from t1 where a IN (select a from t1 union select sql_cache a from t1);
a
1
2
3
show status like "Qcache_hits"; show status like "Qcache_hits";
Variable_name Value Variable_name Value
Qcache_hits 4 Qcache_hits 4
...@@ -207,41 +192,6 @@ a ...@@ -207,41 +192,6 @@ a
1 1
2 2
3 3
select * from t1 union select sql_no_cache * from t1;
a
1
2
3
select * from t1 where a IN (select sql_no_cache a from t1);
a
1
2
3
select * from t1 where a IN (select a from t1 union select sql_no_cache a from t1);
a
1
2
3
select sql_cache sql_no_cache * from t1;
a
1
2
3
select sql_cache * from t1 union select sql_no_cache * from t1;
a
1
2
3
select sql_cache * from t1 where a IN (select sql_no_cache a from t1);
a
1
2
3
select sql_cache * from t1 where a IN (select a from t1 union select sql_no_cache a from t1);
a
1
2
3
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
Variable_name Value Variable_name Value
Qcache_queries_in_cache 0 Qcache_queries_in_cache 0
...@@ -1490,12 +1440,6 @@ insert into t1 values ('c'); ...@@ -1490,12 +1440,6 @@ insert into t1 values ('c');
a a
drop table t1; drop table t1;
set GLOBAL query_cache_size= default; set GLOBAL query_cache_size= default;
set GLOBAL query_cache_size=1000000;
create table t1 (a char);
insert into t1 values ('c');
a
drop table t1;
set GLOBAL query_cache_size= default;
SET GLOBAL query_cache_size=64*1024*1024; SET GLOBAL query_cache_size=64*1024*1024;
CREATE TABLE t1 (id INT); CREATE TABLE t1 (id INT);
CREATE PROCEDURE proc29856(IN theUPC TEXT) CREATE PROCEDURE proc29856(IN theUPC TEXT)
...@@ -1723,4 +1667,55 @@ SELECT 1 FROM t1 GROUP BY ...@@ -1723,4 +1667,55 @@ SELECT 1 FROM t1 GROUP BY
1 1
DROP TABLE t1; DROP TABLE t1;
SET GLOBAL query_cache_size= default; SET GLOBAL query_cache_size= default;
CREATE TABLE t1( a INT );
SET @v = ( SELECT SQL_CACHE 1 );
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1 )' at line 1
SET @v = ( SELECT SQL_NO_CACHE 1 );
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1 )' at line 1
SELECT a FROM t1 WHERE a IN ( SELECT SQL_CACHE a FROM t1 );
ERROR 42S22: Unknown column 'SQL_CACHE' in 'field list'
SELECT a FROM t1 WHERE a IN ( SELECT SQL_NO_CACHE a FROM t1 );
ERROR 42S22: Unknown column 'SQL_NO_CACHE' in 'field list'
SELECT ( SELECT SQL_CACHE a FROM t1 );
ERROR 42S22: Unknown column 'SQL_CACHE' in 'field list'
SELECT ( SELECT SQL_NO_CACHE a FROM t1 );
ERROR 42S22: Unknown column 'SQL_NO_CACHE' in 'field list'
SELECT SQL_CACHE * FROM t1;
a
SELECT SQL_NO_CACHE * FROM t1;
a
SELECT * FROM t1 UNION SELECT SQL_CACHE * FROM t1;
ERROR 42000: Incorrect usage/placement of 'SQL_CACHE'
SELECT * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
ERROR 42000: Incorrect usage/placement of 'SQL_NO_CACHE'
SELECT * FROM t1 WHERE a IN (SELECT SQL_CACHE a FROM t1);
ERROR 42S22: Unknown column 'SQL_CACHE' in 'field list'
SELECT * FROM t1 WHERE a IN (SELECT a FROM t1 UNION SELECT SQL_CACHE a FROM t1);
ERROR 42S22: Unknown column 'SQL_CACHE' in 'field list'
SELECT * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
ERROR 42000: Incorrect usage/placement of 'SQL_NO_CACHE'
SELECT * FROM t1 WHERE a IN (SELECT SQL_NO_CACHE a FROM t1);
ERROR 42S22: Unknown column 'SQL_NO_CACHE' in 'field list'
SELECT * FROM t1 WHERE a IN
(SELECT a FROM t1 UNION SELECT SQL_NO_CACHE a FROM t1);
ERROR 42S22: Unknown column 'SQL_NO_CACHE' in 'field list'
SELECT SQL_CACHE SQL_NO_CACHE * FROM t1;
ERROR HY000: Incorrect usage of SQL_CACHE and SQL_NO_CACHE
SELECT SQL_NO_CACHE SQL_CACHE * FROM t1;
ERROR HY000: Incorrect usage of SQL_NO_CACHE and SQL_CACHE
SELECT SQL_CACHE * FROM t1 UNION SELECT SQL_CACHE * FROM t1;
ERROR 42000: Incorrect usage/placement of 'SQL_CACHE'
SELECT SQL_CACHE * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
ERROR 42000: Incorrect usage/placement of 'SQL_NO_CACHE'
SELECT SQL_NO_CACHE * FROM t1 UNION SELECT SQL_CACHE * FROM t1;
ERROR 42000: Incorrect usage/placement of 'SQL_CACHE'
SELECT SQL_NO_CACHE * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
ERROR 42000: Incorrect usage/placement of 'SQL_NO_CACHE'
SELECT SQL_CACHE * FROM t1 WHERE a IN
(SELECT SQL_NO_CACHE a FROM t1);
ERROR 42S22: Unknown column 'SQL_NO_CACHE' in 'field list'
SELECT SQL_CACHE * FROM t1 WHERE a IN
(SELECT a FROM t1 UNION SELECT SQL_NO_CACHE a FROM t1);
ERROR 42S22: Unknown column 'SQL_NO_CACHE' in 'field list'
DROP TABLE t1;
End of 5.1 tests End of 5.1 tests
...@@ -737,20 +737,11 @@ View Create View character_set_client collation_connection ...@@ -737,20 +737,11 @@ View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sql_no_cache now() AS `NOW()` binary binary v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sql_no_cache now() AS `NOW()` binary binary
DROP VIEW v1; DROP VIEW v1;
CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE NOW(); CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE NOW();
SHOW CREATE VIEW v1; ERROR HY000: Incorrect usage of SQL_CACHE and SQL_NO_CACHE
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sql_no_cache now() AS `NOW()` binary binary
DROP VIEW v1;
CREATE VIEW v1 AS SELECT SQL_NO_CACHE SQL_CACHE NOW(); CREATE VIEW v1 AS SELECT SQL_NO_CACHE SQL_CACHE NOW();
SHOW CREATE VIEW v1; ERROR HY000: Incorrect usage of SQL_NO_CACHE and SQL_CACHE
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sql_no_cache now() AS `NOW()` binary binary
DROP VIEW v1;
CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE SQL_CACHE NOW(); CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE SQL_CACHE NOW();
SHOW CREATE VIEW v1; ERROR HY000: Incorrect usage of SQL_CACHE and SQL_NO_CACHE
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sql_no_cache now() AS `NOW()` binary binary
DROP VIEW v1;
CREATE PROCEDURE p1() CREATE PROCEDURE p1()
BEGIN BEGIN
SET @s= 'CREATE VIEW v1 AS SELECT SQL_CACHE 1'; SET @s= 'CREATE VIEW v1 AS SELECT SQL_CACHE 1';
......
...@@ -13,3 +13,4 @@ kill : Bug#37780 2008-12-03 HHunger need some changes to be ...@@ -13,3 +13,4 @@ kill : Bug#37780 2008-12-03 HHunger need some changes to be
query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadicallyr query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadicallyr
innodb-autoinc : Bug#49267 2009-12-02 test fails on windows because of different case mode innodb-autoinc : Bug#49267 2009-12-02 test fails on windows because of different case mode
innodb : Bug#49396 2009-12-03 test fails in embedded mode innodb : Bug#49396 2009-12-03 test fails in embedded mode
plugin_load : Bug#42144 2009-12-21 alik plugin_load fails
#
# Simple test for the example storage engine
# Taken fromm the select test
#
-- source include/have_exampledb.inc
--disable_warnings
# Clean up if event's test fails
drop database if exists events_test;
drop database if exists events_test2;
drop table if exists t1;
--enable_warnings
CREATE TABLE t1 (
Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,
Varor_period smallint(4) unsigned DEFAULT '0' NOT NULL
) ENGINE=example;
drop table t1;
# End of 4.1 tests
...@@ -23,6 +23,23 @@ partition by range columns (a,b,c) ...@@ -23,6 +23,23 @@ partition by range columns (a,b,c)
( partition p0 values less than (1, maxvalue, 10), ( partition p0 values less than (1, maxvalue, 10),
partition p1 values less than (1, maxvalue, maxvalue)); partition p1 values less than (1, maxvalue, maxvalue));
#
# BUG#48737, Search fails with ucs2
#
create table t1 (a varchar(5) character set ucs2 collate ucs2_bin)
partition by range columns (a)
(partition p0 values less than (0x0041));
insert into t1 values (0x00410000);
select hex(a) from t1 where a like 'A_';
explain partitions select hex(a) from t1 where a like 'A_';
alter table t1 remove partitioning;
select hex(a) from t1 where a like 'A_';
create index a on t1 (a);
select hex(a) from t1 where a like 'A_';
insert into t1 values ('A_');
select hex(a) from t1;
drop table t1;
# #
# BUG#48161, Delivering too few records using collate syntax with partitions # BUG#48161, Delivering too few records using collate syntax with partitions
# #
......
This diff is collapsed.
...@@ -9,6 +9,16 @@ ...@@ -9,6 +9,16 @@
drop table if exists t1, t2; drop table if exists t1, t2;
--enable_warnings --enable_warnings
#
#BUG#49591, Add proper version number to SHOW CREATE TABLE
#
create table t1 (a int)
partition by range (a)
subpartition by hash(to_seconds(a))
(partition p0 values less than (1));
show create table t1;
drop table t1;
--error ER_NULL_IN_VALUES_LESS_THAN --error ER_NULL_IN_VALUES_LESS_THAN
create table t1 (a int) create table t1 (a int)
partition by range (a) partition by range (a)
...@@ -30,6 +40,7 @@ explain partitions select * from t1 where a < '2007-03-08 00:00:01'; ...@@ -30,6 +40,7 @@ explain partitions select * from t1 where a < '2007-03-08 00:00:01';
explain partitions select * from t1 where a <= '2007-03-08 00:00:00'; explain partitions select * from t1 where a <= '2007-03-08 00:00:00';
explain partitions select * from t1 where a <= '2007-03-07 23:59:59'; explain partitions select * from t1 where a <= '2007-03-07 23:59:59';
explain partitions select * from t1 where a < '2007-03-07 23:59:59'; explain partitions select * from t1 where a < '2007-03-07 23:59:59';
show create table t1;
drop table t1; drop table t1;
# #
# New test cases for new function to_seconds # New test cases for new function to_seconds
...@@ -44,6 +55,7 @@ explain partitions select * from t1 where a <= '2003-12-31'; ...@@ -44,6 +55,7 @@ explain partitions select * from t1 where a <= '2003-12-31';
select * from t1 where a <= '2003-12-31'; select * from t1 where a <= '2003-12-31';
explain partitions select * from t1 where a <= '2005-01-01'; explain partitions select * from t1 where a <= '2005-01-01';
select * from t1 where a <= '2005-01-01'; select * from t1 where a <= '2005-01-01';
show create table t1;
drop table t1; drop table t1;
create table t1 (a datetime) create table t1 (a datetime)
...@@ -56,6 +68,7 @@ explain partitions select * from t1 where a <= '2004-01-01 11:59.59'; ...@@ -56,6 +68,7 @@ explain partitions select * from t1 where a <= '2004-01-01 11:59.59';
select * from t1 where a <= '2004-01-01 11:59:59'; select * from t1 where a <= '2004-01-01 11:59:59';
explain partitions select * from t1 where a <= '2005-01-01'; explain partitions select * from t1 where a <= '2005-01-01';
select * from t1 where a <= '2005-01-01'; select * from t1 where a <= '2005-01-01';
show create table t1;
drop table t1; drop table t1;
# #
......
...@@ -94,10 +94,6 @@ select sql_cache * from t1 union select * from t1; ...@@ -94,10 +94,6 @@ select sql_cache * from t1 union select * from t1;
set query_cache_type=2; set query_cache_type=2;
select sql_cache * from t1 union select * from t1; select sql_cache * from t1 union select * from t1;
# all sql_cache statements, except for the first select, are ignored.
select * from t1 union select sql_cache * from t1;
select * from t1 where a IN (select sql_cache a from t1);
select * from t1 where a IN (select a from t1 union select sql_cache a from t1);
show status like "Qcache_hits"; show status like "Qcache_hits";
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
set query_cache_type=on; set query_cache_type=on;
...@@ -110,15 +106,6 @@ show status like "Qcache_queries_in_cache"; ...@@ -110,15 +106,6 @@ show status like "Qcache_queries_in_cache";
# SELECT SQL_NO_CACHE # SELECT SQL_NO_CACHE
# #
select sql_no_cache * from t1; select sql_no_cache * from t1;
# sql_no_cache can occur in any nested select to turn on cacheing for the whole
# expression and it will always override a sql_cache statement.
select * from t1 union select sql_no_cache * from t1;
select * from t1 where a IN (select sql_no_cache a from t1);
select * from t1 where a IN (select a from t1 union select sql_no_cache a from t1);
select sql_cache sql_no_cache * from t1;
select sql_cache * from t1 union select sql_no_cache * from t1;
select sql_cache * from t1 where a IN (select sql_no_cache a from t1);
select sql_cache * from t1 where a IN (select a from t1 union select sql_no_cache a from t1);
show status like "Qcache_queries_in_cache"; show status like "Qcache_queries_in_cache";
drop table t1; drop table t1;
# #
...@@ -1044,22 +1031,25 @@ set GLOBAL query_cache_size= default; ...@@ -1044,22 +1031,25 @@ set GLOBAL query_cache_size= default;
# Bug #29053 SQL_CACHE in UNION causes non-deterministic functions to be cached # Bug #29053 SQL_CACHE in UNION causes non-deterministic functions to be cached
# #
set GLOBAL query_cache_size=1000000; # This syntax is no longer allowed, therefore the test case has been commented
# out.
create table t1 (a char); # See test for Bug#35020 below.
insert into t1 values ('c'); #set GLOBAL query_cache_size=1000000;
#
let $q1= `select RAND() from t1 union select sql_cache 1 from t1;`; #create table t1 (a char);
let $q2= `select RAND() from t1 union select sql_cache 1 from t1;`; #insert into t1 values ('c');
#
#let $q1= `select RAND() from t1 union select sql_cache 1 from t1;`;
#let $q2= `select RAND() from t1 union select sql_cache 1 from t1;`;
#
# disabling the logging of the query because the times are different each run. # disabling the logging of the query because the times are different each run.
--disable_query_log #--disable_query_log
eval select a from t1 where "$q1" = "$q2"; #eval select a from t1 where "$q1" = "$q2";
--enable_query_log #--enable_query_log
#
drop table t1; #drop table t1;
#
set GLOBAL query_cache_size= default; #set GLOBAL query_cache_size= default;
# #
# Bug#29856: Insufficient buffer space led to a server crash. # Bug#29856: Insufficient buffer space led to a server crash.
...@@ -1307,5 +1297,69 @@ SELECT 1 FROM t1 GROUP BY ...@@ -1307,5 +1297,69 @@ SELECT 1 FROM t1 GROUP BY
DROP TABLE t1; DROP TABLE t1;
SET GLOBAL query_cache_size= default; SET GLOBAL query_cache_size= default;
--echo End of 5.1 tests
#
# Bug#35020: illegal sql_cache select syntax
#
CREATE TABLE t1( a INT );
--error ER_PARSE_ERROR
SET @v = ( SELECT SQL_CACHE 1 );
--error ER_PARSE_ERROR
SET @v = ( SELECT SQL_NO_CACHE 1 );
#
# Keywords 'SQL_CACHE' and 'SQL_NO_CACHE' are allowed as column names.
# Hence the error messages are not intuitive.
#
--error ER_BAD_FIELD_ERROR
SELECT a FROM t1 WHERE a IN ( SELECT SQL_CACHE a FROM t1 );
--error ER_BAD_FIELD_ERROR
SELECT a FROM t1 WHERE a IN ( SELECT SQL_NO_CACHE a FROM t1 );
--error ER_BAD_FIELD_ERROR
SELECT ( SELECT SQL_CACHE a FROM t1 );
--error ER_BAD_FIELD_ERROR
SELECT ( SELECT SQL_NO_CACHE a FROM t1 );
SELECT SQL_CACHE * FROM t1;
SELECT SQL_NO_CACHE * FROM t1;
# SQL_CACHE is only allowed once in first top-level select.
--error ER_CANT_USE_OPTION_HERE
SELECT * FROM t1 UNION SELECT SQL_CACHE * FROM t1;
--error ER_CANT_USE_OPTION_HERE
SELECT * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
--error ER_BAD_FIELD_ERROR
SELECT * FROM t1 WHERE a IN (SELECT SQL_CACHE a FROM t1);
--error ER_BAD_FIELD_ERROR
SELECT * FROM t1 WHERE a IN (SELECT a FROM t1 UNION SELECT SQL_CACHE a FROM t1);
--error ER_CANT_USE_OPTION_HERE
SELECT * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
--error ER_BAD_FIELD_ERROR
SELECT * FROM t1 WHERE a IN (SELECT SQL_NO_CACHE a FROM t1);
--error ER_BAD_FIELD_ERROR
SELECT * FROM t1 WHERE a IN
(SELECT a FROM t1 UNION SELECT SQL_NO_CACHE a FROM t1);
--error ER_WRONG_USAGE
SELECT SQL_CACHE SQL_NO_CACHE * FROM t1;
--error ER_WRONG_USAGE
SELECT SQL_NO_CACHE SQL_CACHE * FROM t1;
--error ER_CANT_USE_OPTION_HERE
SELECT SQL_CACHE * FROM t1 UNION SELECT SQL_CACHE * FROM t1;
--error ER_CANT_USE_OPTION_HERE
SELECT SQL_CACHE * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
--error ER_CANT_USE_OPTION_HERE
SELECT SQL_NO_CACHE * FROM t1 UNION SELECT SQL_CACHE * FROM t1;
--error ER_CANT_USE_OPTION_HERE
SELECT SQL_NO_CACHE * FROM t1 UNION SELECT SQL_NO_CACHE * FROM t1;
--error ER_BAD_FIELD_ERROR
SELECT SQL_CACHE * FROM t1 WHERE a IN
(SELECT SQL_NO_CACHE a FROM t1);
--error ER_BAD_FIELD_ERROR
SELECT SQL_CACHE * FROM t1 WHERE a IN
(SELECT a FROM t1 UNION SELECT SQL_NO_CACHE a FROM t1);
DROP TABLE t1;
--echo End of 5.1 tests
...@@ -550,18 +550,14 @@ CREATE VIEW v1 AS SELECT SQL_NO_CACHE NOW(); ...@@ -550,18 +550,14 @@ CREATE VIEW v1 AS SELECT SQL_NO_CACHE NOW();
SHOW CREATE VIEW v1; SHOW CREATE VIEW v1;
DROP VIEW v1; DROP VIEW v1;
# Check that SQL_NO_CACHE always wins. --error ER_WRONG_USAGE
CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE NOW(); CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE NOW();
SHOW CREATE VIEW v1;
DROP VIEW v1;
--error ER_WRONG_USAGE
CREATE VIEW v1 AS SELECT SQL_NO_CACHE SQL_CACHE NOW(); CREATE VIEW v1 AS SELECT SQL_NO_CACHE SQL_CACHE NOW();
SHOW CREATE VIEW v1;
DROP VIEW v1;
--error ER_WRONG_USAGE
CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE SQL_CACHE NOW(); CREATE VIEW v1 AS SELECT SQL_CACHE SQL_NO_CACHE SQL_CACHE NOW();
SHOW CREATE VIEW v1;
DROP VIEW v1;
# Check CREATE VIEW in a prepared statement in a procedure. # Check CREATE VIEW in a prepared statement in a procedure.
delimiter |; delimiter |;
......
...@@ -15,9 +15,6 @@ ...@@ -15,9 +15,6 @@
# This is CMakeLists.txt for semi-sync replication plugins # This is CMakeLists.txt for semi-sync replication plugins
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
# Add common include directories # Add common include directories
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib
${CMAKE_SOURCE_DIR}/sql ${CMAKE_SOURCE_DIR}/sql
......
...@@ -894,6 +894,15 @@ class Item { ...@@ -894,6 +894,15 @@ class Item {
(*traverser)(this, arg); (*traverser)(this, arg);
} }
/*
This is used to get the most recent version of any function in
an item tree. The version is the version where a MySQL function
was introduced in. So any function which is added should use
this function and set the int_arg to maximum of the input data
and their own version info.
*/
virtual bool intro_version(uchar *int_arg) { return 0; }
virtual bool remove_dependence_processor(uchar * arg) { return 0; } virtual bool remove_dependence_processor(uchar * arg) { return 0; }
virtual bool remove_fixed(uchar * arg) { fixed= 0; return 0; } virtual bool remove_fixed(uchar * arg) { fixed= 0; return 0; }
virtual bool cleanup_processor(uchar *arg); virtual bool cleanup_processor(uchar *arg);
......
...@@ -91,6 +91,15 @@ class Item_func_to_seconds :public Item_int_func ...@@ -91,6 +91,15 @@ class Item_func_to_seconds :public Item_int_func
enum_monotonicity_info get_monotonicity_info() const; enum_monotonicity_info get_monotonicity_info() const;
longlong val_int_endpoint(bool left_endp, bool *incl_endp); longlong val_int_endpoint(bool left_endp, bool *incl_endp);
bool check_partition_func_processor(uchar *bool_arg) { return FALSE;} bool check_partition_func_processor(uchar *bool_arg) { return FALSE;}
bool intro_version(uchar *int_arg)
{
int *input_version= (int*)int_arg;
/* This function was introduced in 5.5 */
int output_version= (*input_version, 50500);
*input_version= output_version;
return 0;
}
}; };
......
...@@ -115,6 +115,42 @@ char *partition_info::create_default_partition_names(uint part_no, ...@@ -115,6 +115,42 @@ char *partition_info::create_default_partition_names(uint part_no,
} }
/*
Generate a version string for partition expression
This function must be updated every time there is a possibility for
a new function of a higher version number than 5.5.0.
SYNOPSIS
set_show_version_string()
RETURN VALUES
None
*/
void partition_info::set_show_version_string(String *packet)
{
int version= 0;
if (column_list)
packet->append(STRING_WITH_LEN("\n/*!50500"));
else
{
if (part_expr)
part_expr->walk(&Item::intro_version, 0, (uchar*)&version);
if (subpart_expr)
subpart_expr->walk(&Item::intro_version, 0, (uchar*)&version);
if (version == 0)
{
/* No new functions in partition function */
packet->append(STRING_WITH_LEN("\n/*!50100"));
}
else
{
char buf[65];
char *buf_ptr= longlong10_to_str((longlong)version, buf, 10);
packet->append(STRING_WITH_LEN("\n/*!"));
packet->append(buf, (size_t)(buf_ptr - buf));
}
}
}
/* /*
Create a unique name for the subpartition as part_name'sp''subpart_no' Create a unique name for the subpartition as part_name'sp''subpart_no'
SYNOPSIS SYNOPSIS
......
...@@ -302,6 +302,7 @@ class partition_info : public Sql_alloc ...@@ -302,6 +302,7 @@ class partition_info : public Sql_alloc
bool check_partition_field_length(); bool check_partition_field_length();
bool init_column_part(); bool init_column_part();
bool add_column_list_value(THD *thd, Item *item); bool add_column_list_value(THD *thd, Item *item);
void set_show_version_string(String *packet);
private: private:
static int list_part_cmp(const void* a, const void* b); static int list_part_cmp(const void* a, const void* b);
bool set_up_default_partitions(handler *file, HA_CREATE_INFO *info, bool set_up_default_partitions(handler *file, HA_CREATE_INFO *info,
......
...@@ -1468,7 +1468,7 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet, ...@@ -1468,7 +1468,7 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
show_table_options, show_table_options,
NULL, NULL)))) NULL, NULL))))
{ {
packet->append(STRING_WITH_LEN("\n/*!50100")); table->part_info->set_show_version_string(packet);
packet->append(part_syntax, part_syntax_len); packet->append(part_syntax, part_syntax_len);
packet->append(STRING_WITH_LEN(" */")); packet->append(STRING_WITH_LEN(" */"));
my_free(part_syntax, MYF(0)); my_free(part_syntax, MYF(0));
......
...@@ -763,10 +763,10 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); ...@@ -763,10 +763,10 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
%pure_parser /* We have threads */ %pure_parser /* We have threads */
/* /*
Currently there are 173 shift/reduce conflicts. Currently there are 172 shift/reduce conflicts.
We should not introduce new conflicts any more. We should not introduce new conflicts any more.
*/ */
%expect 173 %expect 172
/* /*
Comments for TOKENS. Comments for TOKENS.
...@@ -7151,50 +7151,63 @@ select_option_list: ...@@ -7151,50 +7151,63 @@ select_option_list:
; ;
select_option: select_option:
STRAIGHT_JOIN { Select->options|= SELECT_STRAIGHT_JOIN; } query_expression_option
| HIGH_PRIORITY | SQL_NO_CACHE_SYM
{ {
if (check_simple_select()) /*
Allow this flag only on the first top-level SELECT statement, if
SQL_CACHE wasn't specified, and only once per query.
*/
if (Lex->current_select != &Lex->select_lex)
{
my_error(ER_CANT_USE_OPTION_HERE, MYF(0), "SQL_NO_CACHE");
MYSQL_YYABORT; MYSQL_YYABORT;
Lex->lock_option= TL_READ_HIGH_PRIORITY; }
Lex->current_select->lock_option= TL_READ_HIGH_PRIORITY; else if (Lex->select_lex.sql_cache == SELECT_LEX::SQL_CACHE)
} {
| DISTINCT { Select->options|= SELECT_DISTINCT; } my_error(ER_WRONG_USAGE, MYF(0), "SQL_CACHE", "SQL_NO_CACHE");
| SQL_SMALL_RESULT { Select->options|= SELECT_SMALL_RESULT; }
| SQL_BIG_RESULT { Select->options|= SELECT_BIG_RESULT; }
| SQL_BUFFER_RESULT
{
if (check_simple_select())
MYSQL_YYABORT; MYSQL_YYABORT;
Select->options|= OPTION_BUFFER_RESULT; }
} else if (Lex->select_lex.sql_cache == SELECT_LEX::SQL_NO_CACHE)
| SQL_CALC_FOUND_ROWS {
{ my_error(ER_DUP_ARGUMENT, MYF(0), "SQL_NO_CACHE");
if (check_simple_select())
MYSQL_YYABORT; MYSQL_YYABORT;
Select->options|= OPTION_FOUND_ROWS; }
} else
| SQL_NO_CACHE_SYM {
{ Lex->safe_to_cache_query=0;
Lex->safe_to_cache_query=0; Lex->select_lex.options&= ~OPTION_TO_QUERY_CACHE;
Lex->select_lex.options&= ~OPTION_TO_QUERY_CACHE; Lex->select_lex.sql_cache= SELECT_LEX::SQL_NO_CACHE;
Lex->select_lex.sql_cache= SELECT_LEX::SQL_NO_CACHE; }
} }
| SQL_CACHE_SYM | SQL_CACHE_SYM
{ {
/* /*
Honor this flag only if SQL_NO_CACHE wasn't specified AND Allow this flag only on the first top-level SELECT statement, if
we are parsing the outermost SELECT in the query. SQL_NO_CACHE wasn't specified, and only once per query.
*/ */
if (Lex->select_lex.sql_cache != SELECT_LEX::SQL_NO_CACHE && if (Lex->current_select != &Lex->select_lex)
Lex->current_select == &Lex->select_lex) {
my_error(ER_CANT_USE_OPTION_HERE, MYF(0), "SQL_CACHE");
MYSQL_YYABORT;
}
else if (Lex->select_lex.sql_cache == SELECT_LEX::SQL_NO_CACHE)
{
my_error(ER_WRONG_USAGE, MYF(0), "SQL_NO_CACHE", "SQL_CACHE");
MYSQL_YYABORT;
}
else if (Lex->select_lex.sql_cache == SELECT_LEX::SQL_CACHE)
{
my_error(ER_DUP_ARGUMENT, MYF(0), "SQL_CACHE");
MYSQL_YYABORT;
}
else
{ {
Lex->safe_to_cache_query=1; Lex->safe_to_cache_query=1;
Lex->select_lex.options|= OPTION_TO_QUERY_CACHE; Lex->select_lex.options|= OPTION_TO_QUERY_CACHE;
Lex->select_lex.sql_cache= SELECT_LEX::SQL_CACHE; Lex->select_lex.sql_cache= SELECT_LEX::SQL_CACHE;
} }
} }
| ALL { Select->options|= SELECT_ALL; }
; ;
select_lock_type: select_lock_type:
...@@ -9266,7 +9279,7 @@ select_part2_derived: ...@@ -9266,7 +9279,7 @@ select_part2_derived:
mysql_init_select(lex); mysql_init_select(lex);
lex->current_select->parsing_place= SELECT_LIST; lex->current_select->parsing_place= SELECT_LIST;
} }
select_options select_item_list opt_query_expression_options select_item_list
{ {
Select->parsing_place= NO_MATTER; Select->parsing_place= NO_MATTER;
} }
...@@ -13614,6 +13627,43 @@ subselect_end: ...@@ -13614,6 +13627,43 @@ subselect_end:
} }
; ;
opt_query_expression_options:
/* empty */
| query_expression_option_list
;
query_expression_option_list:
query_expression_option_list query_expression_option
| query_expression_option
;
query_expression_option:
STRAIGHT_JOIN { Select->options|= SELECT_STRAIGHT_JOIN; }
| HIGH_PRIORITY
{
if (check_simple_select())
MYSQL_YYABORT;
Lex->lock_option= TL_READ_HIGH_PRIORITY;
Lex->current_select->lock_option= TL_READ_HIGH_PRIORITY;
}
| DISTINCT { Select->options|= SELECT_DISTINCT; }
| SQL_SMALL_RESULT { Select->options|= SELECT_SMALL_RESULT; }
| SQL_BIG_RESULT { Select->options|= SELECT_BIG_RESULT; }
| SQL_BUFFER_RESULT
{
if (check_simple_select())
MYSQL_YYABORT;
Select->options|= OPTION_BUFFER_RESULT;
}
| SQL_CALC_FOUND_ROWS
{
if (check_simple_select())
MYSQL_YYABORT;
Select->options|= OPTION_FOUND_ROWS;
}
| ALL { Select->options|= SELECT_ALL; }
;
/************************************************************************** /**************************************************************************
CREATE VIEW | TRIGGER | PROCEDURE statements. CREATE VIEW | TRIGGER | PROCEDURE statements.
......
...@@ -15,13 +15,6 @@ ...@@ -15,13 +15,6 @@
# This is the CMakeLists for InnoDB Plugin # This is the CMakeLists for InnoDB Plugin
# TODO: remove the two FLAGS_DEBUG settings when merging into
# 6.0-based trees, like is already the case for other engines in
# those trees.
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
# Starting at 5.1.38, MySQL CMake files are simplified. But the plugin # Starting at 5.1.38, MySQL CMake files are simplified. But the plugin
# CMakeLists.txt still needs to work with previous versions of MySQL. # CMakeLists.txt still needs to work with previous versions of MySQL.
IF (MYSQL_VERSION_ID GREATER "50137") IF (MYSQL_VERSION_ID GREATER "50137")
......
...@@ -1502,11 +1502,11 @@ my_bool _mi_memmap_file(MI_INFO *info) ...@@ -1502,11 +1502,11 @@ my_bool _mi_memmap_file(MI_INFO *info)
if (myisam_mmap_size != SIZE_T_MAX) if (myisam_mmap_size != SIZE_T_MAX)
{ {
pthread_mutex_lock(&THR_LOCK_myisam_mmap); mysql_mutex_lock(&THR_LOCK_myisam_mmap);
eom= data_file_length > myisam_mmap_size - myisam_mmap_used - MEMMAP_EXTRA_MARGIN; eom= data_file_length > myisam_mmap_size - myisam_mmap_used - MEMMAP_EXTRA_MARGIN;
if (!eom) if (!eom)
myisam_mmap_used+= data_file_length + MEMMAP_EXTRA_MARGIN; myisam_mmap_used+= data_file_length + MEMMAP_EXTRA_MARGIN;
pthread_mutex_unlock(&THR_LOCK_myisam_mmap); mysql_mutex_unlock(&THR_LOCK_myisam_mmap);
} }
else else
eom= data_file_length > myisam_mmap_size - MEMMAP_EXTRA_MARGIN; eom= data_file_length > myisam_mmap_size - MEMMAP_EXTRA_MARGIN;
...@@ -1522,9 +1522,9 @@ my_bool _mi_memmap_file(MI_INFO *info) ...@@ -1522,9 +1522,9 @@ my_bool _mi_memmap_file(MI_INFO *info)
DBUG_PRINT("warning",("File isn't extended for memmap")); DBUG_PRINT("warning",("File isn't extended for memmap"));
if (myisam_mmap_size != SIZE_T_MAX) if (myisam_mmap_size != SIZE_T_MAX)
{ {
pthread_mutex_lock(&THR_LOCK_myisam_mmap); mysql_mutex_lock(&THR_LOCK_myisam_mmap);
myisam_mmap_used-= data_file_length + MEMMAP_EXTRA_MARGIN; myisam_mmap_used-= data_file_length + MEMMAP_EXTRA_MARGIN;
pthread_mutex_unlock(&THR_LOCK_myisam_mmap); mysql_mutex_unlock(&THR_LOCK_myisam_mmap);
} }
DBUG_RETURN(0); DBUG_RETURN(0);
} }
...@@ -1534,9 +1534,9 @@ my_bool _mi_memmap_file(MI_INFO *info) ...@@ -1534,9 +1534,9 @@ my_bool _mi_memmap_file(MI_INFO *info)
{ {
if (myisam_mmap_size != SIZE_T_MAX) if (myisam_mmap_size != SIZE_T_MAX)
{ {
pthread_mutex_lock(&THR_LOCK_myisam_mmap); mysql_mutex_lock(&THR_LOCK_myisam_mmap);
myisam_mmap_used-= data_file_length + MEMMAP_EXTRA_MARGIN; myisam_mmap_used-= data_file_length + MEMMAP_EXTRA_MARGIN;
pthread_mutex_unlock(&THR_LOCK_myisam_mmap); mysql_mutex_unlock(&THR_LOCK_myisam_mmap);
} }
DBUG_RETURN(0); DBUG_RETURN(0);
} }
...@@ -1555,9 +1555,9 @@ void _mi_unmap_file(MI_INFO *info) ...@@ -1555,9 +1555,9 @@ void _mi_unmap_file(MI_INFO *info)
if (myisam_mmap_size != SIZE_T_MAX) if (myisam_mmap_size != SIZE_T_MAX)
{ {
pthread_mutex_lock(&THR_LOCK_myisam_mmap); mysql_mutex_lock(&THR_LOCK_myisam_mmap);
myisam_mmap_used-= info->s->mmaped_length + MEMMAP_EXTRA_MARGIN; myisam_mmap_used-= info->s->mmaped_length + MEMMAP_EXTRA_MARGIN;
pthread_mutex_unlock(&THR_LOCK_myisam_mmap); mysql_mutex_unlock(&THR_LOCK_myisam_mmap);
} }
} }
......
...@@ -41,7 +41,7 @@ my_off_t myisam_max_temp_length= MAX_FILE_SIZE; ...@@ -41,7 +41,7 @@ my_off_t myisam_max_temp_length= MAX_FILE_SIZE;
ulong myisam_bulk_insert_tree_size=8192*1024; ulong myisam_bulk_insert_tree_size=8192*1024;
ulong myisam_data_pointer_size=4; ulong myisam_data_pointer_size=4;
ulonglong myisam_mmap_size= SIZE_T_MAX, myisam_mmap_used= 0; ulonglong myisam_mmap_size= SIZE_T_MAX, myisam_mmap_used= 0;
pthread_mutex_t THR_LOCK_myisam_mmap; mysql_mutex_t THR_LOCK_myisam_mmap;
static int always_valid(const char *filename __attribute__((unused))) static int always_valid(const char *filename __attribute__((unused)))
{ {
......
...@@ -303,7 +303,7 @@ case "$mode" in ...@@ -303,7 +303,7 @@ case "$mode" in
then then
mysqld_pid=`cat "$mysqld_pid_file_path"` mysqld_pid=`cat "$mysqld_pid_file_path"`
if (kill -9 $mysqld_pid 2>/dev/null) if (kill -0 $mysqld_pid 2>/dev/null)
then then
echo $echo_n "Shutting down MySQL" echo $echo_n "Shutting down MySQL"
kill $mysqld_pid kill $mysqld_pid
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment