merge from 5.1
This commit is contained in:
commit
06c43adcad
@ -1778,7 +1778,7 @@ c1 bigint,
|
||||
c2 set('sweet'),
|
||||
key (c2,c1,c0),
|
||||
key(c0)
|
||||
) engine=myisam partition by hash (month(c0)) partitions 5;
|
||||
) engine=myisam partition by hash (c0) partitions 5;
|
||||
insert ignore into t1 set c0 = -6502262, c1 = 3992917, c2 = 35019;
|
||||
insert ignore into t1 set c0 = 241221, c1 = -6862346, c2 = 56644;
|
||||
select c1 from t1 group by (select c0 from t1 limit 1);
|
||||
|
@ -1,5 +1,643 @@
|
||||
drop table if exists t1;
|
||||
#
|
||||
# Bug#54483: valgrind errors when making warnings for multiline inserts
|
||||
# into partition
|
||||
#
|
||||
CREATE TABLE t1 (a VARBINARY(10))
|
||||
PARTITION BY RANGE (DAYOFWEEK(a))
|
||||
(PARTITION a1 VALUES LESS THAN (60));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a CHAR(10))
|
||||
PARTITION BY RANGE (DAYOFWEEK(a))
|
||||
(PARTITION a1 VALUES LESS THAN (60));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY RANGE (DAYOFWEEK(a))
|
||||
(PARTITION a1 VALUES LESS THAN (60));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIMESTAMP)
|
||||
PARTITION BY RANGE (DAYOFWEEK(a))
|
||||
(PARTITION a1 VALUES LESS THAN (60));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY RANGE (DAYOFWEEK(a))
|
||||
(PARTITION a1 VALUES LESS THAN (60));
|
||||
INSERT INTO t1 VALUES ('test'),('a'),('5');
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'a' at row 1
|
||||
Warning 1265 Data truncated for column 'a' at row 2
|
||||
Warning 1265 Data truncated for column 'a' at row 3
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1265 Data truncated for column 'a' at row 1
|
||||
Warning 1265 Data truncated for column 'a' at row 2
|
||||
Warning 1265 Data truncated for column 'a' at row 3
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY RANGE (DAYOFWEEK(a))
|
||||
(PARTITION a1 VALUES LESS THAN (60));
|
||||
INSERT INTO t1 VALUES ('test'),('a'),('5');
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
Warning 1264 Out of range value for column 'a' at row 2
|
||||
Warning 1264 Out of range value for column 'a' at row 3
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
Warning 1264 Out of range value for column 'a' at row 2
|
||||
Warning 1264 Out of range value for column 'a' at row 3
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY RANGE (DAYOFWEEK(a))
|
||||
(PARTITION a1 VALUES LESS THAN (60));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Error 1486 Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (TO_DAYS(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (TO_DAYS(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (TO_DAYS(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (TO_DAYS(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (TO_DAYS(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (DAYOFMONTH(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (DAYOFMONTH(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (DAYOFMONTH(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (DAYOFMONTH(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (DAYOFMONTH(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (MONTH(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (MONTH(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (MONTH(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (MONTH(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (MONTH(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (DAYOFYEAR(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (DAYOFYEAR(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (DAYOFYEAR(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (DAYOFYEAR(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (DAYOFYEAR(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (HOUR(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (HOUR(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (HOUR(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (HOUR(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (HOUR(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (MINUTE(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (MINUTE(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (MINUTE(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (MINUTE(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (MINUTE(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (QUARTER(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (QUARTER(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (QUARTER(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (QUARTER(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (QUARTER(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (SECOND(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (SECOND(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (SECOND(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (SECOND(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (SECOND(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (YEARWEEK(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (YEARWEEK(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (YEARWEEK(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (YEARWEEK(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (YEARWEEK(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (WEEKDAY(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (WEEKDAY(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (WEEKDAY(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (WEEKDAY(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (WEEKDAY(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
# TO_SECONDS() is added in 5.5.
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (TO_SECONDS(a));
|
||||
ERROR 42000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed near ')' at line 2
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (FROM_DAYS(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (FROM_DAYS(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (FROM_DAYS(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (TO_DAYS(FROM_DAYS(a)));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (FROM_DAYS(a));
|
||||
ERROR HY000: The PARTITION function returns the wrong type
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (TO_DAYS(FROM_DAYS(a)));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (FROM_DAYS(a));
|
||||
ERROR HY000: The PARTITION function returns the wrong type
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (MICROSECOND(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (MICROSECOND(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (MICROSECOND(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (MICROSECOND(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (MICROSECOND(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
# Bug#57071
|
||||
CREATE TABLE t1
|
||||
(`date` date,
|
||||
`extracted_week` int,
|
||||
`yearweek` int,
|
||||
`week` int,
|
||||
`default_week_format` int)
|
||||
PARTITION BY LIST (EXTRACT(WEEK FROM date) % 3)
|
||||
(PARTITION p0 VALUES IN (0),
|
||||
PARTITION p1 VALUES IN (1),
|
||||
PARTITION p2 VALUES IN (2));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1
|
||||
(`date` date,
|
||||
`extracted_week` int,
|
||||
`yearweek` int,
|
||||
`week` int,
|
||||
`default_week_format` int);
|
||||
SET @old_default_week_format := @@default_week_format;
|
||||
SET default_week_format = 0;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SET default_week_format = 1;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SET default_week_format = 2;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SET default_week_format = 3;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SET default_week_format = 4;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SET default_week_format = 5;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SET default_week_format = 6;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SET default_week_format = 7;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SELECT * FROM t1;
|
||||
date extracted_week yearweek week default_week_format
|
||||
2000-01-01 0 199952 0 0
|
||||
2000-01-01 0 199952 0 1
|
||||
2000-01-01 52 199952 52 2
|
||||
2000-01-01 52 199952 52 3
|
||||
2000-01-01 0 199952 0 4
|
||||
2000-01-01 0 199952 0 5
|
||||
2000-01-01 52 199952 52 6
|
||||
2000-01-01 52 199952 52 7
|
||||
SET default_week_format = @old_default_week_format;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(YEAR FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(YEAR FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(YEAR FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(YEAR FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(YEAR FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(YEAR_MONTH FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(YEAR_MONTH FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(YEAR_MONTH FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(YEAR_MONTH FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(YEAR_MONTH FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(QUARTER FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(QUARTER FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(QUARTER FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(QUARTER FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(QUARTER FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(MONTH FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(MONTH FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(MONTH FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(MONTH FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(MONTH FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
# EXTRACT(WEEK...) is disallowed, see bug#57071.
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(WEEK FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(WEEK FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(WEEK FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(WEEK FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(WEEK FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(DAY FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(DAY FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(DAY FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_HOUR FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(DAY_HOUR FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_HOUR FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(DAY_HOUR FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(DAY_HOUR FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MINUTE FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MINUTE FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MINUTE FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(DAY_MINUTE FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MINUTE FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_SECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(DAY_SECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_SECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(DAY_SECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(DAY_SECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(HOUR FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(HOUR FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(HOUR FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MINUTE FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MINUTE FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MINUTE FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MINUTE FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MINUTE FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_SECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_SECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_SECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(HOUR_SECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_SECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(MINUTE FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_SECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_SECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_SECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_SECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_SECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(SECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(SECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(SECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(SECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(SECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(DAY_MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(SECOND_MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(SECOND_MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(SECOND_MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(SECOND_MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(SECOND_MICROSECOND FROM a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME, b DATE)
|
||||
PARTITION BY HASH (DATEDIFF(a, b));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATE, b DATETIME)
|
||||
PARTITION BY HASH (DATEDIFF(a, b));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME, b DATE)
|
||||
PARTITION BY HASH (DATEDIFF(a, b));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE, b VARCHAR(10))
|
||||
PARTITION BY HASH (DATEDIFF(a, b));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT, b DATETIME)
|
||||
PARTITION BY HASH (DATEDIFF(a, b));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
ERROR HY000: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
|
||||
#
|
||||
# Bug#49161: Out of memory; restart server and try again (needed 2 bytes)
|
||||
#
|
||||
CREATE TABLE t1 (a INT) PARTITION BY HASH (a);
|
||||
|
@ -164,5 +164,16 @@ a b
|
||||
2 NULL
|
||||
DROP TABLE t1, t2, t3, t4, t5;
|
||||
#
|
||||
# Bug#58207: invalid memory reads when using default column value and
|
||||
# tmptable needed
|
||||
#
|
||||
CREATE TABLE t(a VARCHAR(245) DEFAULT
|
||||
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
||||
INSERT INTO t VALUES (''),(''),(''),(''),(''),(''),(''),(''),(''),(''),('');
|
||||
SELECT * FROM (SELECT default(a) FROM t GROUP BY a) d;
|
||||
default(a)
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
DROP TABLE t;
|
||||
#
|
||||
# End of 5.1 tests.
|
||||
#
|
||||
|
@ -1248,3 +1248,129 @@ Note 1449 The user specified as a definer ('unknown'@'unknown') does not exist
|
||||
LOCK TABLES v1 READ;
|
||||
ERROR HY000: The user specified as a definer ('unknown'@'unknown') does not exist
|
||||
DROP VIEW v1;
|
||||
#
|
||||
# Bug #58499 "DEFINER-security view selecting from INVOKER-security view
|
||||
# access check wrong".
|
||||
#
|
||||
# Check that we correctly handle privileges for various combinations
|
||||
# of INVOKER and DEFINER-security views using each other.
|
||||
DROP DATABASE IF EXISTS mysqltest1;
|
||||
CREATE DATABASE mysqltest1;
|
||||
USE mysqltest1;
|
||||
CREATE TABLE t1 (i INT);
|
||||
CREATE TABLE t2 (j INT);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2);
|
||||
#
|
||||
# 1) DEFINER-security view uses INVOKER-security view (covers
|
||||
# scenario originally described in the bug report).
|
||||
CREATE SQL SECURITY INVOKER VIEW v1_uses_t1 AS SELECT * FROM t1;
|
||||
CREATE SQL SECURITY INVOKER VIEW v1_uses_t2 AS SELECT * FROM t2;
|
||||
CREATE USER 'mysqluser1'@'%';
|
||||
GRANT CREATE VIEW ON mysqltest1.* TO 'mysqluser1'@'%';
|
||||
GRANT SELECT ON t1 TO 'mysqluser1'@'%';
|
||||
# To be able create 'v2_uses_t2' we also need select on t2.
|
||||
GRANT SELECT ON t2 TO 'mysqluser1'@'%';
|
||||
GRANT SELECT ON v1_uses_t1 TO 'mysqluser1'@'%';
|
||||
GRANT SELECT ON v1_uses_t2 TO 'mysqluser1'@'%';
|
||||
#
|
||||
# Connection 'mysqluser1'.
|
||||
CREATE SQL SECURITY DEFINER VIEW v2_uses_t1 AS SELECT * FROM v1_uses_t1;
|
||||
CREATE SQL SECURITY DEFINER VIEW v2_uses_t2 AS SELECT * FROM v1_uses_t2;
|
||||
#
|
||||
# Connection 'default'.
|
||||
CREATE USER 'mysqluser2'@'%';
|
||||
GRANT SELECT ON v2_uses_t1 TO 'mysqluser2'@'%';
|
||||
GRANT SELECT ON v2_uses_t2 TO 'mysqluser2'@'%';
|
||||
GRANT SELECT ON t2 TO 'mysqluser2'@'%';
|
||||
GRANT CREATE VIEW ON mysqltest1.* TO 'mysqluser2'@'%';
|
||||
# Make 'mysqluser1' unable to access t2.
|
||||
REVOKE SELECT ON t2 FROM 'mysqluser1'@'%';
|
||||
#
|
||||
# Connection 'mysqluser2'.
|
||||
# The below statement should succeed thanks to suid nature of v2_uses_t1.
|
||||
SELECT * FROM v2_uses_t1;
|
||||
i
|
||||
1
|
||||
# The below statement should fail due to suid nature of v2_uses_t2.
|
||||
SELECT * FROM v2_uses_t2;
|
||||
ERROR HY000: View 'mysqltest1.v2_uses_t2' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
#
|
||||
# 2) INVOKER-security view uses INVOKER-security view.
|
||||
#
|
||||
# Connection 'default'.
|
||||
DROP VIEW v2_uses_t1, v2_uses_t2;
|
||||
CREATE SQL SECURITY INVOKER VIEW v2_uses_t1 AS SELECT * FROM v1_uses_t1;
|
||||
CREATE SQL SECURITY INVOKER VIEW v2_uses_t2 AS SELECT * FROM v1_uses_t2;
|
||||
GRANT SELECT ON v2_uses_t1 TO 'mysqluser1'@'%';
|
||||
GRANT SELECT ON v2_uses_t2 TO 'mysqluser1'@'%';
|
||||
GRANT SELECT ON v1_uses_t1 TO 'mysqluser2'@'%';
|
||||
GRANT SELECT ON v1_uses_t2 TO 'mysqluser2'@'%';
|
||||
#
|
||||
# Connection 'mysqluser1'.
|
||||
# For both versions of 'v2' 'mysqluser1' privileges should be used.
|
||||
SELECT * FROM v2_uses_t1;
|
||||
i
|
||||
1
|
||||
SELECT * FROM v2_uses_t2;
|
||||
ERROR HY000: View 'mysqltest1.v2_uses_t2' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
#
|
||||
# Connection 'mysqluser2'.
|
||||
# And now for both versions of 'v2' 'mysqluser2' privileges should
|
||||
# be used.
|
||||
SELECT * FROM v2_uses_t1;
|
||||
ERROR HY000: View 'mysqltest1.v2_uses_t1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
SELECT * FROM v2_uses_t2;
|
||||
j
|
||||
2
|
||||
#
|
||||
# 3) INVOKER-security view uses DEFINER-security view.
|
||||
#
|
||||
# Connection 'default'.
|
||||
DROP VIEW v1_uses_t1, v1_uses_t2;
|
||||
# To be able create 'v1_uses_t2' we also need select on t2.
|
||||
GRANT SELECT ON t2 TO 'mysqluser1'@'%';
|
||||
#
|
||||
# Connection 'mysqluser1'.
|
||||
CREATE SQL SECURITY DEFINER VIEW v1_uses_t1 AS SELECT * FROM t1;
|
||||
CREATE SQL SECURITY DEFINER VIEW v1_uses_t2 AS SELECT * FROM t2;
|
||||
#
|
||||
# Connection 'default'.
|
||||
# Make 'mysqluser1' unable to access t2.
|
||||
REVOKE SELECT ON t2 FROM 'mysqluser1'@'%';
|
||||
#
|
||||
# Connection 'mysqluser2'.
|
||||
# Due to suid nature of v1_uses_t1 and v1_uses_t2 the first
|
||||
# select should succeed and the second select should fail.
|
||||
SELECT * FROM v2_uses_t1;
|
||||
i
|
||||
1
|
||||
SELECT * FROM v2_uses_t2;
|
||||
ERROR HY000: View 'mysqltest1.v2_uses_t2' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
#
|
||||
# 4) DEFINER-security view uses DEFINER-security view.
|
||||
#
|
||||
# Connection 'default'.
|
||||
DROP VIEW v2_uses_t1, v2_uses_t2;
|
||||
# To be able create 'v2_uses_t2' we also need select on t2.
|
||||
GRANT SELECT ON t2 TO 'mysqluser1'@'%';
|
||||
#
|
||||
# Connection 'mysqluser2'.
|
||||
CREATE SQL SECURITY DEFINER VIEW v2_uses_t1 AS SELECT * FROM v1_uses_t1;
|
||||
CREATE SQL SECURITY DEFINER VIEW v2_uses_t2 AS SELECT * FROM v1_uses_t2;
|
||||
#
|
||||
# Connection 'default'.
|
||||
# Make 'mysqluser1' unable to access t2.
|
||||
REVOKE SELECT ON t2 FROM 'mysqluser1'@'%';
|
||||
#
|
||||
# Connection 'mysqluser2'.
|
||||
# Again privileges of creator of innermost views should apply.
|
||||
SELECT * FROM v2_uses_t1;
|
||||
i
|
||||
1
|
||||
SELECT * FROM v2_uses_t2;
|
||||
ERROR HY000: View 'mysqltest1.v2_uses_t2' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
USE test;
|
||||
DROP DATABASE mysqltest1;
|
||||
DROP USER 'mysqluser1'@'%';
|
||||
DROP USER 'mysqluser2'@'%';
|
||||
|
@ -88,8 +88,9 @@ let $val2 = '2006-01-17';
|
||||
let $val3 = '2006-02-25';
|
||||
let $val4 = '2006-02-05';
|
||||
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||
let $coltype = char(30);
|
||||
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||
# Disabled after fixing bug#54483.
|
||||
#let $coltype = char(30);
|
||||
#--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||
|
||||
let $sqlfunc = extract(month from col1);
|
||||
let $valsqlfunc = extract(year from '1998-11-23');
|
||||
@ -139,8 +140,9 @@ let $val2 = '14:30:20';
|
||||
let $val3 = '21:59:22';
|
||||
let $val4 = '10:22:33';
|
||||
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||
let $coltype = char(30);
|
||||
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||
# second(non_time_col) is disabled after bug#54483.
|
||||
#let $coltype = char(30);
|
||||
#--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||
|
||||
let $sqlfunc = month(col1);
|
||||
let $valsqlfunc = month('2006-10-14');
|
||||
@ -172,26 +174,28 @@ let $val3 = '21:59:22';
|
||||
let $val4 = '10:33:11';
|
||||
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||
|
||||
let $sqlfunc = to_days(col1)-to_days('2006-01-01');
|
||||
let $valsqlfunc = to_days('2006-02-02')-to_days('2006-01-01');
|
||||
let $coltype = date;
|
||||
let $infile = part_supported_sql_funcs_int_date.inc;
|
||||
let $val1 = '2006-02-03';
|
||||
let $val2 = '2006-01-17';
|
||||
let $val3 = '2006-01-25';
|
||||
let $val4 = '2006-02-06';
|
||||
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||
# to_days(non_date_col) is disabled after bug#54483.
|
||||
#let $sqlfunc = to_days(col1)-to_days('2006-01-01');
|
||||
#let $valsqlfunc = to_days('2006-02-02')-to_days('2006-01-01');
|
||||
#let $coltype = date;
|
||||
#let $infile = part_supported_sql_funcs_int_date.inc;
|
||||
#let $val1 = '2006-02-03';
|
||||
#let $val2 = '2006-01-17';
|
||||
#let $val3 = '2006-01-25';
|
||||
#let $val4 = '2006-02-06';
|
||||
#--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||
|
||||
# to_days(non_date_col) is disabled after bug#54483.
|
||||
# DATEDIFF() is implemented as (TO_DAYS(d1) - TO_DAYS(d2))
|
||||
let $sqlfunc = datediff(col1, '2006-01-01');
|
||||
let $valsqlfunc = datediff('2006-02-02', '2006-01-01');
|
||||
let $coltype = date;
|
||||
let $infile = part_supported_sql_funcs_int_date.inc;
|
||||
let $val1 = '2006-02-03';
|
||||
let $val2 = '2006-01-17';
|
||||
let $val3 = '2006-01-25';
|
||||
let $val4 = '2006-02-06';
|
||||
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||
#let $sqlfunc = datediff(col1, '2006-01-01');
|
||||
#let $valsqlfunc = datediff('2006-02-02', '2006-01-01');
|
||||
#let $coltype = date;
|
||||
#let $infile = part_supported_sql_funcs_int_date.inc;
|
||||
#let $val1 = '2006-02-03';
|
||||
#let $val2 = '2006-01-17';
|
||||
#let $val3 = '2006-01-25';
|
||||
#let $val4 = '2006-02-06';
|
||||
#--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||
|
||||
let $sqlfunc = weekday(col1);
|
||||
let $valsqlfunc = weekday('2006-10-14');
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1821,15 +1821,16 @@ while ($cnt)
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG#32272: partition crash 1: enum column
|
||||
# BUG#32772: partition crash 1: enum column
|
||||
#
|
||||
# Note that month(int_col) is disallowed after bug#54483.
|
||||
create table t1 (
|
||||
c0 int,
|
||||
c1 bigint,
|
||||
c2 set('sweet'),
|
||||
key (c2,c1,c0),
|
||||
key(c0)
|
||||
) engine=myisam partition by hash (month(c0)) partitions 5;
|
||||
) engine=myisam partition by hash (c0) partitions 5;
|
||||
|
||||
--disable_warnings
|
||||
insert ignore into t1 set c0 = -6502262, c1 = 3992917, c2 = 35019;
|
||||
|
@ -10,6 +10,670 @@ drop table if exists t1;
|
||||
|
||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#54483: valgrind errors when making warnings for multiline inserts
|
||||
--echo # into partition
|
||||
--echo #
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARBINARY(10))
|
||||
PARTITION BY RANGE (DAYOFWEEK(a))
|
||||
(PARTITION a1 VALUES LESS THAN (60));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a CHAR(10))
|
||||
PARTITION BY RANGE (DAYOFWEEK(a))
|
||||
(PARTITION a1 VALUES LESS THAN (60));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY RANGE (DAYOFWEEK(a))
|
||||
(PARTITION a1 VALUES LESS THAN (60));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIMESTAMP)
|
||||
PARTITION BY RANGE (DAYOFWEEK(a))
|
||||
(PARTITION a1 VALUES LESS THAN (60));
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY RANGE (DAYOFWEEK(a))
|
||||
(PARTITION a1 VALUES LESS THAN (60));
|
||||
INSERT INTO t1 VALUES ('test'),('a'),('5');
|
||||
SHOW WARNINGS;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY RANGE (DAYOFWEEK(a))
|
||||
(PARTITION a1 VALUES LESS THAN (60));
|
||||
INSERT INTO t1 VALUES ('test'),('a'),('5');
|
||||
SHOW WARNINGS;
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY RANGE (DAYOFWEEK(a))
|
||||
(PARTITION a1 VALUES LESS THAN (60));
|
||||
SHOW WARNINGS;
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (TO_DAYS(a));
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (TO_DAYS(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (TO_DAYS(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (TO_DAYS(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (TO_DAYS(a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (DAYOFMONTH(a));
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (DAYOFMONTH(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (DAYOFMONTH(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (DAYOFMONTH(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (DAYOFMONTH(a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (MONTH(a));
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (MONTH(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (MONTH(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (MONTH(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (MONTH(a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (DAYOFYEAR(a));
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (DAYOFYEAR(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (DAYOFYEAR(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (DAYOFYEAR(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (DAYOFYEAR(a));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (HOUR(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (HOUR(a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (HOUR(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (HOUR(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (HOUR(a));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (MINUTE(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (MINUTE(a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (MINUTE(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (MINUTE(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (MINUTE(a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (QUARTER(a));
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (QUARTER(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (QUARTER(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (QUARTER(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (QUARTER(a));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (SECOND(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (SECOND(a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (SECOND(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (SECOND(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (SECOND(a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (YEARWEEK(a));
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (YEARWEEK(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (YEARWEEK(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (YEARWEEK(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (YEARWEEK(a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (WEEKDAY(a));
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (WEEKDAY(a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (WEEKDAY(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (WEEKDAY(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (WEEKDAY(a));
|
||||
--echo # TO_SECONDS() is added in 5.5.
|
||||
|
||||
--error ER_PARSE_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (TO_SECONDS(a));
|
||||
#--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
#CREATE TABLE t1 (a TIME)
|
||||
#PARTITION BY HASH (TO_SECONDS(a));
|
||||
#CREATE TABLE t1 (a DATE)
|
||||
#PARTITION BY HASH (TO_SECONDS(a));
|
||||
#DROP TABLE t1;
|
||||
#CREATE TABLE t1 (a DATETIME)
|
||||
#PARTITION BY HASH (TO_SECONDS(a));
|
||||
#DROP TABLE t1;
|
||||
#--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
#CREATE TABLE t1 (a VARCHAR(10))
|
||||
#PARTITION BY HASH (TO_SECONDS(a));
|
||||
#--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
#CREATE TABLE t1 (a INT)
|
||||
#PARTITION BY HASH (TO_SECONDS(a));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (FROM_DAYS(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (FROM_DAYS(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (FROM_DAYS(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (TO_DAYS(FROM_DAYS(a)));
|
||||
--error ER_PARTITION_FUNC_NOT_ALLOWED_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (FROM_DAYS(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (TO_DAYS(FROM_DAYS(a)));
|
||||
--error ER_PARTITION_FUNC_NOT_ALLOWED_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (FROM_DAYS(a));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (MICROSECOND(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (MICROSECOND(a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (MICROSECOND(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (MICROSECOND(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (MICROSECOND(a));
|
||||
--echo # Bug#57071
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1
|
||||
(`date` date,
|
||||
`extracted_week` int,
|
||||
`yearweek` int,
|
||||
`week` int,
|
||||
`default_week_format` int)
|
||||
PARTITION BY LIST (EXTRACT(WEEK FROM date) % 3)
|
||||
(PARTITION p0 VALUES IN (0),
|
||||
PARTITION p1 VALUES IN (1),
|
||||
PARTITION p2 VALUES IN (2));
|
||||
CREATE TABLE t1
|
||||
(`date` date,
|
||||
`extracted_week` int,
|
||||
`yearweek` int,
|
||||
`week` int,
|
||||
`default_week_format` int);
|
||||
SET @old_default_week_format := @@default_week_format;
|
||||
SET default_week_format = 0;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SET default_week_format = 1;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SET default_week_format = 2;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SET default_week_format = 3;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SET default_week_format = 4;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SET default_week_format = 5;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SET default_week_format = 6;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SET default_week_format = 7;
|
||||
INSERT INTO t1 VALUES ('2000-01-01', EXTRACT(WEEK FROM '2000-01-01'), YEARWEEK('2000-01-01'), WEEK('2000-01-01'), @@default_week_format);
|
||||
SELECT * FROM t1;
|
||||
SET default_week_format = @old_default_week_format;
|
||||
DROP TABLE t1;
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(YEAR FROM a));
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(YEAR FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(YEAR FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(YEAR FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(YEAR FROM a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(YEAR_MONTH FROM a));
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(YEAR_MONTH FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(YEAR_MONTH FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(YEAR_MONTH FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(YEAR_MONTH FROM a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(QUARTER FROM a));
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(QUARTER FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(QUARTER FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(QUARTER FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(QUARTER FROM a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(MONTH FROM a));
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(MONTH FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(MONTH FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(MONTH FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(MONTH FROM a));
|
||||
|
||||
--echo # EXTRACT(WEEK...) is disallowed, see bug#57071.
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(WEEK FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(WEEK FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(WEEK FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(WEEK FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(WEEK FROM a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY FROM a));
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(DAY FROM a));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(DAY FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(DAY FROM a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_HOUR FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(DAY_HOUR FROM a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_HOUR FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(DAY_HOUR FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(DAY_HOUR FROM a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MINUTE FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MINUTE FROM a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MINUTE FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(DAY_MINUTE FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MINUTE FROM a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_SECOND FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(DAY_SECOND FROM a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_SECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(DAY_SECOND FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(DAY_SECOND FROM a));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(HOUR FROM a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(HOUR FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(HOUR FROM a));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MINUTE FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MINUTE FROM a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MINUTE FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MINUTE FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MINUTE FROM a));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_SECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_SECOND FROM a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_SECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(HOUR_SECOND FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_SECOND FROM a));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE FROM a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(MINUTE FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE FROM a));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_SECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_SECOND FROM a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_SECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_SECOND FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_SECOND FROM a));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(SECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(SECOND FROM a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(SECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(SECOND FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(SECOND FROM a));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(MICROSECOND FROM a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(MICROSECOND FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(MICROSECOND FROM a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MICROSECOND FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MICROSECOND FROM a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(DAY_MICROSECOND FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(DAY_MICROSECOND FROM a));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MICROSECOND FROM a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MICROSECOND FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(HOUR_MICROSECOND FROM a));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_MICROSECOND FROM a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_MICROSECOND FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(MINUTE_MICROSECOND FROM a));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (EXTRACT(SECOND_MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (EXTRACT(SECOND_MICROSECOND FROM a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (EXTRACT(SECOND_MICROSECOND FROM a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (EXTRACT(SECOND_MICROSECOND FROM a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (EXTRACT(SECOND_MICROSECOND FROM a));
|
||||
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a TIME, b DATE)
|
||||
PARTITION BY HASH (DATEDIFF(a, b));
|
||||
CREATE TABLE t1 (a DATE, b DATETIME)
|
||||
PARTITION BY HASH (DATEDIFF(a, b));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DATETIME, b DATE)
|
||||
PARTITION BY HASH (DATEDIFF(a, b));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE, b VARCHAR(10))
|
||||
PARTITION BY HASH (DATEDIFF(a, b));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT, b DATETIME)
|
||||
PARTITION BY HASH (DATEDIFF(a, b));
|
||||
|
||||
CREATE TABLE t1 (a TIME)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a DATE)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
CREATE TABLE t1 (a DATETIME)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
DROP TABLE t1;
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a VARCHAR(10))
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
--error ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
|
||||
CREATE TABLE t1 (a INT)
|
||||
PARTITION BY HASH (TIME_TO_SEC(a));
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#49161: Out of memory; restart server and try again (needed 2 bytes)
|
||||
--echo #
|
||||
|
@ -136,6 +136,16 @@ SELECT * FROM t1 WHERE NULL NOT IN ( SELECT c FROM t2 WHERE c = 1 AND c <> 1 );
|
||||
|
||||
DROP TABLE t1, t2, t3, t4, t5;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#58207: invalid memory reads when using default column value and
|
||||
--echo # tmptable needed
|
||||
--echo #
|
||||
CREATE TABLE t(a VARCHAR(245) DEFAULT
|
||||
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
||||
INSERT INTO t VALUES (''),(''),(''),(''),(''),(''),(''),(''),(''),(''),('');
|
||||
SELECT * FROM (SELECT default(a) FROM t GROUP BY a) d;
|
||||
DROP TABLE t;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 5.1 tests.
|
||||
|
@ -1503,8 +1503,6 @@ SHOW CREATE VIEW v1;
|
||||
DROP TABLE t1;
|
||||
DROP VIEW v1;
|
||||
|
||||
# Wait till we reached the initial number of concurrent sessions
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
--echo #
|
||||
--echo # Bug #46019: ERROR 1356 When selecting from within another
|
||||
@ -1546,3 +1544,145 @@ CREATE DEFINER=`unknown`@`unknown` SQL SECURITY DEFINER VIEW v1 AS SELECT 1;
|
||||
--error ER_NO_SUCH_USER
|
||||
LOCK TABLES v1 READ;
|
||||
DROP VIEW v1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug #58499 "DEFINER-security view selecting from INVOKER-security view
|
||||
--echo # access check wrong".
|
||||
--echo #
|
||||
--echo # Check that we correctly handle privileges for various combinations
|
||||
--echo # of INVOKER and DEFINER-security views using each other.
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS mysqltest1;
|
||||
--enable_warnings
|
||||
CREATE DATABASE mysqltest1;
|
||||
USE mysqltest1;
|
||||
CREATE TABLE t1 (i INT);
|
||||
CREATE TABLE t2 (j INT);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2);
|
||||
--echo #
|
||||
--echo # 1) DEFINER-security view uses INVOKER-security view (covers
|
||||
--echo # scenario originally described in the bug report).
|
||||
CREATE SQL SECURITY INVOKER VIEW v1_uses_t1 AS SELECT * FROM t1;
|
||||
CREATE SQL SECURITY INVOKER VIEW v1_uses_t2 AS SELECT * FROM t2;
|
||||
CREATE USER 'mysqluser1'@'%';
|
||||
GRANT CREATE VIEW ON mysqltest1.* TO 'mysqluser1'@'%';
|
||||
GRANT SELECT ON t1 TO 'mysqluser1'@'%';
|
||||
--echo # To be able create 'v2_uses_t2' we also need select on t2.
|
||||
GRANT SELECT ON t2 TO 'mysqluser1'@'%';
|
||||
GRANT SELECT ON v1_uses_t1 TO 'mysqluser1'@'%';
|
||||
GRANT SELECT ON v1_uses_t2 TO 'mysqluser1'@'%';
|
||||
--echo #
|
||||
--echo # Connection 'mysqluser1'.
|
||||
--connect (mysqluser1, localhost, mysqluser1,,mysqltest1)
|
||||
CREATE SQL SECURITY DEFINER VIEW v2_uses_t1 AS SELECT * FROM v1_uses_t1;
|
||||
CREATE SQL SECURITY DEFINER VIEW v2_uses_t2 AS SELECT * FROM v1_uses_t2;
|
||||
--echo #
|
||||
--echo # Connection 'default'.
|
||||
--connection default
|
||||
CREATE USER 'mysqluser2'@'%';
|
||||
GRANT SELECT ON v2_uses_t1 TO 'mysqluser2'@'%';
|
||||
GRANT SELECT ON v2_uses_t2 TO 'mysqluser2'@'%';
|
||||
GRANT SELECT ON t2 TO 'mysqluser2'@'%';
|
||||
GRANT CREATE VIEW ON mysqltest1.* TO 'mysqluser2'@'%';
|
||||
--echo # Make 'mysqluser1' unable to access t2.
|
||||
REVOKE SELECT ON t2 FROM 'mysqluser1'@'%';
|
||||
--echo #
|
||||
--echo # Connection 'mysqluser2'.
|
||||
--connect (mysqluser2, localhost, mysqluser2,,mysqltest1)
|
||||
--echo # The below statement should succeed thanks to suid nature of v2_uses_t1.
|
||||
SELECT * FROM v2_uses_t1;
|
||||
--echo # The below statement should fail due to suid nature of v2_uses_t2.
|
||||
--error ER_VIEW_INVALID
|
||||
SELECT * FROM v2_uses_t2;
|
||||
--echo #
|
||||
--echo # 2) INVOKER-security view uses INVOKER-security view.
|
||||
--echo #
|
||||
--echo # Connection 'default'.
|
||||
--connection default
|
||||
DROP VIEW v2_uses_t1, v2_uses_t2;
|
||||
CREATE SQL SECURITY INVOKER VIEW v2_uses_t1 AS SELECT * FROM v1_uses_t1;
|
||||
CREATE SQL SECURITY INVOKER VIEW v2_uses_t2 AS SELECT * FROM v1_uses_t2;
|
||||
GRANT SELECT ON v2_uses_t1 TO 'mysqluser1'@'%';
|
||||
GRANT SELECT ON v2_uses_t2 TO 'mysqluser1'@'%';
|
||||
GRANT SELECT ON v1_uses_t1 TO 'mysqluser2'@'%';
|
||||
GRANT SELECT ON v1_uses_t2 TO 'mysqluser2'@'%';
|
||||
--echo #
|
||||
--echo # Connection 'mysqluser1'.
|
||||
--connection mysqluser1
|
||||
--echo # For both versions of 'v2' 'mysqluser1' privileges should be used.
|
||||
SELECT * FROM v2_uses_t1;
|
||||
--error ER_VIEW_INVALID
|
||||
SELECT * FROM v2_uses_t2;
|
||||
--echo #
|
||||
--echo # Connection 'mysqluser2'.
|
||||
--connection mysqluser2
|
||||
--echo # And now for both versions of 'v2' 'mysqluser2' privileges should
|
||||
--echo # be used.
|
||||
--error ER_VIEW_INVALID
|
||||
SELECT * FROM v2_uses_t1;
|
||||
SELECT * FROM v2_uses_t2;
|
||||
--echo #
|
||||
--echo # 3) INVOKER-security view uses DEFINER-security view.
|
||||
--echo #
|
||||
--echo # Connection 'default'.
|
||||
--connection default
|
||||
DROP VIEW v1_uses_t1, v1_uses_t2;
|
||||
--echo # To be able create 'v1_uses_t2' we also need select on t2.
|
||||
GRANT SELECT ON t2 TO 'mysqluser1'@'%';
|
||||
--echo #
|
||||
--echo # Connection 'mysqluser1'.
|
||||
--connection mysqluser1
|
||||
CREATE SQL SECURITY DEFINER VIEW v1_uses_t1 AS SELECT * FROM t1;
|
||||
CREATE SQL SECURITY DEFINER VIEW v1_uses_t2 AS SELECT * FROM t2;
|
||||
--echo #
|
||||
--echo # Connection 'default'.
|
||||
--connection default
|
||||
--echo # Make 'mysqluser1' unable to access t2.
|
||||
REVOKE SELECT ON t2 FROM 'mysqluser1'@'%';
|
||||
--echo #
|
||||
--echo # Connection 'mysqluser2'.
|
||||
--connection mysqluser2
|
||||
--echo # Due to suid nature of v1_uses_t1 and v1_uses_t2 the first
|
||||
--echo # select should succeed and the second select should fail.
|
||||
SELECT * FROM v2_uses_t1;
|
||||
--error ER_VIEW_INVALID
|
||||
SELECT * FROM v2_uses_t2;
|
||||
--echo #
|
||||
--echo # 4) DEFINER-security view uses DEFINER-security view.
|
||||
--echo #
|
||||
--echo # Connection 'default'.
|
||||
--connection default
|
||||
DROP VIEW v2_uses_t1, v2_uses_t2;
|
||||
--echo # To be able create 'v2_uses_t2' we also need select on t2.
|
||||
GRANT SELECT ON t2 TO 'mysqluser1'@'%';
|
||||
--echo #
|
||||
--echo # Connection 'mysqluser2'.
|
||||
--connection mysqluser2
|
||||
CREATE SQL SECURITY DEFINER VIEW v2_uses_t1 AS SELECT * FROM v1_uses_t1;
|
||||
CREATE SQL SECURITY DEFINER VIEW v2_uses_t2 AS SELECT * FROM v1_uses_t2;
|
||||
--echo #
|
||||
--echo # Connection 'default'.
|
||||
--connection default
|
||||
--echo # Make 'mysqluser1' unable to access t2.
|
||||
REVOKE SELECT ON t2 FROM 'mysqluser1'@'%';
|
||||
--echo #
|
||||
--echo # Connection 'mysqluser2'.
|
||||
--connection mysqluser2
|
||||
--echo # Again privileges of creator of innermost views should apply.
|
||||
SELECT * FROM v2_uses_t1;
|
||||
--error ER_VIEW_INVALID
|
||||
SELECT * FROM v2_uses_t2;
|
||||
|
||||
--disconnect mysqluser1
|
||||
--disconnect mysqluser2
|
||||
--connection default
|
||||
USE test;
|
||||
DROP DATABASE mysqltest1;
|
||||
DROP USER 'mysqluser1'@'%';
|
||||
DROP USER 'mysqluser2'@'%';
|
||||
|
||||
|
||||
# Wait till we reached the initial number of concurrent sessions
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
@ -170,7 +170,13 @@ ulonglong my_micro_time_and_time(time_t *time_arg)
|
||||
|
||||
pthread_mutex_lock(&THR_LOCK_time);
|
||||
cur_gethrtime= gethrtime();
|
||||
if ((cur_gethrtime - prev_gethrtime) > DELTA_FOR_SECONDS)
|
||||
/*
|
||||
Due to bugs in the Solaris (x86) implementation of gethrtime(),
|
||||
the time returned by it might not be monotonic. Don't use the
|
||||
cached time(2) value if this is a case.
|
||||
*/
|
||||
if ((prev_gethrtime > cur_gethrtime) ||
|
||||
((cur_gethrtime - prev_gethrtime) > DELTA_FOR_SECONDS))
|
||||
{
|
||||
cur_time= time(0);
|
||||
prev_gethrtime= cur_gethrtime;
|
||||
|
@ -4657,6 +4657,7 @@ int handler::ha_reset()
|
||||
free_io_cache(table);
|
||||
/* reset the bitmaps to point to defaults */
|
||||
table->default_column_bitmaps();
|
||||
pushed_cond= NULL;
|
||||
DBUG_RETURN(reset());
|
||||
}
|
||||
|
||||
|
@ -966,11 +966,11 @@ public:
|
||||
virtual bool set_no_const_sub(uchar *arg) { return FALSE; }
|
||||
virtual Item *replace_equal_field(uchar * arg) { return this; }
|
||||
/*
|
||||
Check if an expression value depends on the current timezone. Used by
|
||||
partitioning code to reject timezone-dependent expressions in a
|
||||
(sub)partitioning function.
|
||||
Check if an expression value has allowed arguments, like DATE/DATETIME
|
||||
for date functions. Also used by partitioning code to reject
|
||||
timezone-dependent expressions in a (sub)partitioning function.
|
||||
*/
|
||||
virtual bool is_timezone_dependent_processor(uchar *bool_arg)
|
||||
virtual bool check_valid_arguments_processor(uchar *bool_arg)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -189,6 +189,7 @@ public:
|
||||
null_value=1;
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
bool has_timestamp_args()
|
||||
{
|
||||
DBUG_ASSERT(fixed == TRUE);
|
||||
@ -200,6 +201,45 @@ public:
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool has_date_args()
|
||||
{
|
||||
DBUG_ASSERT(fixed == TRUE);
|
||||
for (uint i= 0; i < arg_count; i++)
|
||||
{
|
||||
if (args[i]->type() == Item::FIELD_ITEM &&
|
||||
(args[i]->field_type() == MYSQL_TYPE_DATE ||
|
||||
args[i]->field_type() == MYSQL_TYPE_DATETIME))
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool has_time_args()
|
||||
{
|
||||
DBUG_ASSERT(fixed == TRUE);
|
||||
for (uint i= 0; i < arg_count; i++)
|
||||
{
|
||||
if (args[i]->type() == Item::FIELD_ITEM &&
|
||||
(args[i]->field_type() == MYSQL_TYPE_TIME ||
|
||||
args[i]->field_type() == MYSQL_TYPE_DATETIME))
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool has_datetime_args()
|
||||
{
|
||||
DBUG_ASSERT(fixed == TRUE);
|
||||
for (uint i= 0; i < arg_count; i++)
|
||||
{
|
||||
if (args[i]->type() == Item::FIELD_ITEM &&
|
||||
args[i]->field_type() == MYSQL_TYPE_DATETIME)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
We assume the result of any function that has a TIMESTAMP argument to be
|
||||
timezone-dependent, since a TIMESTAMP value in both numeric and string
|
||||
@ -208,7 +248,7 @@ public:
|
||||
representation of a TIMESTAMP argument verbatim, and thus does not depend on
|
||||
the timezone.
|
||||
*/
|
||||
virtual bool is_timezone_dependent_processor(uchar *bool_arg)
|
||||
virtual bool check_valid_arguments_processor(uchar *bool_arg)
|
||||
{
|
||||
return has_timestamp_args();
|
||||
}
|
||||
|
@ -70,6 +70,10 @@ public:
|
||||
enum_monotonicity_info get_monotonicity_info() const;
|
||||
longlong val_int_endpoint(bool left_endp, bool *incl_endp);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
return !has_date_args();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -86,6 +90,10 @@ public:
|
||||
maybe_null=1;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
return !has_date_args();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -111,6 +119,10 @@ public:
|
||||
maybe_null=1;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
return !has_date_args();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -140,6 +152,10 @@ public:
|
||||
maybe_null=1;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
return !has_date_args();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -156,6 +172,10 @@ public:
|
||||
maybe_null=1;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
return !has_time_args();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -172,6 +192,10 @@ public:
|
||||
maybe_null=1;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
return !has_time_args();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -188,6 +212,10 @@ public:
|
||||
maybe_null=1;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
return !has_date_args();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -204,6 +232,10 @@ public:
|
||||
maybe_null=1;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
return !has_time_args();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -234,6 +266,10 @@ public:
|
||||
maybe_null=1;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
return !has_date_args();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -252,6 +288,10 @@ public:
|
||||
maybe_null=1;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
return !has_date_args();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -282,6 +322,10 @@ public:
|
||||
maybe_null=1;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
return !has_date_args();
|
||||
}
|
||||
};
|
||||
|
||||
class Item_func_dayname :public Item_func_weekday
|
||||
@ -311,7 +355,7 @@ public:
|
||||
(and thus may not be used as a partitioning function)
|
||||
when its argument is NOT of the TIMESTAMP type.
|
||||
*/
|
||||
bool is_timezone_dependent_processor(uchar *int_arg)
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
return !has_timestamp_args();
|
||||
}
|
||||
@ -336,6 +380,10 @@ public:
|
||||
max_length=10*MY_CHARSET_BIN_MB_MAXLEN;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
return !has_time_args();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -589,6 +637,10 @@ public:
|
||||
const char *func_name() const { return "from_days"; }
|
||||
bool get_date(MYSQL_TIME *res, uint fuzzy_date);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
return has_date_args() || has_time_args();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -715,6 +767,42 @@ class Item_extract :public Item_int_func
|
||||
bool eq(const Item *item, bool binary_cmp) const;
|
||||
virtual void print(String *str, enum_query_type query_type);
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
switch (int_type) {
|
||||
case INTERVAL_YEAR:
|
||||
case INTERVAL_YEAR_MONTH:
|
||||
case INTERVAL_QUARTER:
|
||||
case INTERVAL_MONTH:
|
||||
/* case INTERVAL_WEEK: Not allowed as partitioning function, bug#57071 */
|
||||
case INTERVAL_DAY:
|
||||
return !has_date_args();
|
||||
case INTERVAL_DAY_HOUR:
|
||||
case INTERVAL_DAY_MINUTE:
|
||||
case INTERVAL_DAY_SECOND:
|
||||
case INTERVAL_DAY_MICROSECOND:
|
||||
return !has_datetime_args();
|
||||
case INTERVAL_HOUR:
|
||||
case INTERVAL_HOUR_MINUTE:
|
||||
case INTERVAL_HOUR_SECOND:
|
||||
case INTERVAL_MINUTE:
|
||||
case INTERVAL_MINUTE_SECOND:
|
||||
case INTERVAL_SECOND:
|
||||
case INTERVAL_MICROSECOND:
|
||||
case INTERVAL_HOUR_MICROSECOND:
|
||||
case INTERVAL_MINUTE_MICROSECOND:
|
||||
case INTERVAL_SECOND_MICROSECOND:
|
||||
return !has_time_args();
|
||||
default:
|
||||
/*
|
||||
INTERVAL_LAST is only an end marker,
|
||||
INTERVAL_WEEK depends on default_week_format which is a session
|
||||
variable and cannot be used for partitioning. See bug#57071.
|
||||
*/
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -965,6 +1053,10 @@ public:
|
||||
maybe_null=1;
|
||||
}
|
||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
||||
bool check_valid_arguments_processor(uchar *int_arg)
|
||||
{
|
||||
return !has_time_args();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
@ -170,17 +170,7 @@ my_bool net_realloc(NET *net, size_t length)
|
||||
DBUG_ENTER("net_realloc");
|
||||
DBUG_PRINT("enter",("length: %lu", (ulong) length));
|
||||
|
||||
/*
|
||||
When compression is off, net->where_b is always 0.
|
||||
With compression turned on, net->where_b may indicate
|
||||
that we still have a piece of the previous logical
|
||||
packet in the buffer, unprocessed. Take it into account
|
||||
when checking that max_allowed_packet is not exceeded.
|
||||
This ensures that the client treats max_allowed_packet
|
||||
limit identically, regardless of compression being on
|
||||
or off.
|
||||
*/
|
||||
if (length >= (net->max_packet_size + net->where_b))
|
||||
if (length >= net->max_packet_size)
|
||||
{
|
||||
DBUG_PRINT("error", ("Packet too large. Max size: %lu",
|
||||
net->max_packet_size));
|
||||
|
@ -2993,6 +2993,11 @@ TABLE *open_table(THD *thd, TABLE_LIST *table_list, MEM_ROOT *mem_root,
|
||||
table->insert_values= 0;
|
||||
table->fulltext_searched= 0;
|
||||
table->file->ft_handler= 0;
|
||||
/*
|
||||
Check that there is no reference to a condtion from an earlier query
|
||||
(cf. Bug#58553).
|
||||
*/
|
||||
DBUG_ASSERT(table->file->pushed_cond == NULL);
|
||||
table->reginfo.impossible_range= 0;
|
||||
/* Catch wrong handling of the auto_increment_field_not_null. */
|
||||
DBUG_ASSERT(!table->auto_increment_field_not_null);
|
||||
|
@ -1014,12 +1014,13 @@ static bool fix_fields_part_func(THD *thd, Item* func_expr, TABLE *table,
|
||||
}
|
||||
|
||||
/*
|
||||
We don't allow creating partitions with timezone-dependent expressions as
|
||||
a (sub)partitioning function, but we want to allow such expressions when
|
||||
opening existing tables for easier maintenance. This exception should be
|
||||
deprecated at some point in future so that we always throw an error.
|
||||
We don't allow creating partitions with expressions with non matching
|
||||
arguments as a (sub)partitioning function,
|
||||
but we want to allow such expressions when opening existing tables for
|
||||
easier maintenance. This exception should be deprecated at some point
|
||||
in future so that we always throw an error.
|
||||
*/
|
||||
if (func_expr->walk(&Item::is_timezone_dependent_processor,
|
||||
if (func_expr->walk(&Item::check_valid_arguments_processor,
|
||||
0, NULL))
|
||||
{
|
||||
if (is_create_table_ind)
|
||||
|
@ -6380,7 +6380,6 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
|
||||
tab->select_cond=sel->cond=tmp;
|
||||
/* Push condition to storage engine if this is enabled
|
||||
and the condition is not guarded */
|
||||
tab->table->file->pushed_cond= NULL;
|
||||
if (thd->variables.engine_condition_pushdown)
|
||||
{
|
||||
COND *push_cond=
|
||||
@ -9817,7 +9816,12 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type,
|
||||
convert_blob_length);
|
||||
if (orig_type == Item::REF_ITEM && orig_modify)
|
||||
((Item_ref*)orig_item)->set_result_field(result);
|
||||
if (field->field->eq_def(result))
|
||||
/*
|
||||
Fields that are used as arguments to the DEFAULT() function already have
|
||||
their data pointers set to the default value during name resulotion. See
|
||||
Item_default_value::fix_fields.
|
||||
*/
|
||||
if (orig_type != Item::DEFAULT_VALUE_ITEM && field->field->eq_def(result))
|
||||
*default_field= field->field;
|
||||
return result;
|
||||
}
|
||||
|
@ -1255,6 +1255,7 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table,
|
||||
TABLE_LIST *view_tables= lex->query_tables;
|
||||
TABLE_LIST *view_tables_tail= 0;
|
||||
TABLE_LIST *tbl;
|
||||
Security_context *security_ctx;
|
||||
|
||||
/*
|
||||
Check rights to run commands (EXPLAIN SELECT & SHOW CREATE) which show
|
||||
@ -1396,25 +1397,38 @@ bool mysql_make_view(THD *thd, File_parser *parser, TABLE_LIST *table,
|
||||
if (table->view_suid)
|
||||
{
|
||||
/*
|
||||
Prepare a security context to check underlying objects of the view
|
||||
For suid views prepare a security context for checking underlying
|
||||
objects of the view.
|
||||
*/
|
||||
if (!(table->view_sctx= (Security_context *)
|
||||
thd->stmt_arena->alloc(sizeof(Security_context))))
|
||||
goto err;
|
||||
/* Assign the context to the tables referenced in the view */
|
||||
if (view_tables)
|
||||
{
|
||||
DBUG_ASSERT(view_tables_tail);
|
||||
for (tbl= view_tables; tbl != view_tables_tail->next_global;
|
||||
tbl= tbl->next_global)
|
||||
tbl->security_ctx= table->view_sctx;
|
||||
}
|
||||
/* assign security context to SELECT name resolution contexts of view */
|
||||
for(SELECT_LEX *sl= lex->all_selects_list;
|
||||
sl;
|
||||
sl= sl->next_select_in_list())
|
||||
sl->context.security_ctx= table->view_sctx;
|
||||
security_ctx= table->view_sctx;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
For non-suid views inherit security context from view's table list.
|
||||
This allows properly handle situation when non-suid view is used
|
||||
from within suid view.
|
||||
*/
|
||||
security_ctx= table->security_ctx;
|
||||
}
|
||||
|
||||
/* Assign the context to the tables referenced in the view */
|
||||
if (view_tables)
|
||||
{
|
||||
DBUG_ASSERT(view_tables_tail);
|
||||
for (tbl= view_tables; tbl != view_tables_tail->next_global;
|
||||
tbl= tbl->next_global)
|
||||
tbl->security_ctx= security_ctx;
|
||||
}
|
||||
|
||||
/* assign security context to SELECT name resolution contexts of view */
|
||||
for(SELECT_LEX *sl= lex->all_selects_list;
|
||||
sl;
|
||||
sl= sl->next_select_in_list())
|
||||
sl->context.security_ctx= security_ctx;
|
||||
|
||||
/*
|
||||
Setup an error processor to hide error messages issued by stored
|
||||
|
@ -1867,8 +1867,8 @@ int open_table_from_share(THD *thd, TABLE_SHARE *share, const char *alias,
|
||||
{
|
||||
if (work_part_info_used)
|
||||
tmp= fix_partition_func(thd, outparam, is_create_table);
|
||||
outparam->part_info->item_free_list= part_func_arena.free_list;
|
||||
}
|
||||
outparam->part_info->item_free_list= part_func_arena.free_list;
|
||||
partititon_err:
|
||||
if (tmp)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user