merge from 5.1
This commit is contained in:
commit
06c43adcad
@ -1778,7 +1778,7 @@ c1 bigint,
|
|||||||
c2 set('sweet'),
|
c2 set('sweet'),
|
||||||
key (c2,c1,c0),
|
key (c2,c1,c0),
|
||||||
key(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 = -6502262, c1 = 3992917, c2 = 35019;
|
||||||
insert ignore into t1 set c0 = 241221, c1 = -6862346, c2 = 56644;
|
insert ignore into t1 set c0 = 241221, c1 = -6862346, c2 = 56644;
|
||||||
select c1 from t1 group by (select c0 from t1 limit 1);
|
select c1 from t1 group by (select c0 from t1 limit 1);
|
||||||
|
@ -1,5 +1,643 @@
|
|||||||
drop table if exists t1;
|
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)
|
# Bug#49161: Out of memory; restart server and try again (needed 2 bytes)
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a INT) PARTITION BY HASH (a);
|
CREATE TABLE t1 (a INT) PARTITION BY HASH (a);
|
||||||
|
@ -164,5 +164,16 @@ a b
|
|||||||
2 NULL
|
2 NULL
|
||||||
DROP TABLE t1, t2, t3, t4, t5;
|
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.
|
# 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;
|
LOCK TABLES v1 READ;
|
||||||
ERROR HY000: The user specified as a definer ('unknown'@'unknown') does not exist
|
ERROR HY000: The user specified as a definer ('unknown'@'unknown') does not exist
|
||||||
DROP VIEW v1;
|
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 $val3 = '2006-02-25';
|
||||||
let $val4 = '2006-02-05';
|
let $val4 = '2006-02-05';
|
||||||
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||||
let $coltype = char(30);
|
# Disabled after fixing bug#54483.
|
||||||
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
#let $coltype = char(30);
|
||||||
|
#--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||||
|
|
||||||
let $sqlfunc = extract(month from col1);
|
let $sqlfunc = extract(month from col1);
|
||||||
let $valsqlfunc = extract(year from '1998-11-23');
|
let $valsqlfunc = extract(year from '1998-11-23');
|
||||||
@ -139,8 +140,9 @@ let $val2 = '14:30:20';
|
|||||||
let $val3 = '21:59:22';
|
let $val3 = '21:59:22';
|
||||||
let $val4 = '10:22:33';
|
let $val4 = '10:22:33';
|
||||||
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||||
let $coltype = char(30);
|
# second(non_time_col) is disabled after bug#54483.
|
||||||
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
#let $coltype = char(30);
|
||||||
|
#--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||||
|
|
||||||
let $sqlfunc = month(col1);
|
let $sqlfunc = month(col1);
|
||||||
let $valsqlfunc = month('2006-10-14');
|
let $valsqlfunc = month('2006-10-14');
|
||||||
@ -172,26 +174,28 @@ let $val3 = '21:59:22';
|
|||||||
let $val4 = '10:33:11';
|
let $val4 = '10:33:11';
|
||||||
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||||
|
|
||||||
let $sqlfunc = to_days(col1)-to_days('2006-01-01');
|
# to_days(non_date_col) is disabled after bug#54483.
|
||||||
let $valsqlfunc = to_days('2006-02-02')-to_days('2006-01-01');
|
#let $sqlfunc = to_days(col1)-to_days('2006-01-01');
|
||||||
let $coltype = date;
|
#let $valsqlfunc = to_days('2006-02-02')-to_days('2006-01-01');
|
||||||
let $infile = part_supported_sql_funcs_int_date.inc;
|
#let $coltype = date;
|
||||||
let $val1 = '2006-02-03';
|
#let $infile = part_supported_sql_funcs_int_date.inc;
|
||||||
let $val2 = '2006-01-17';
|
#let $val1 = '2006-02-03';
|
||||||
let $val3 = '2006-01-25';
|
#let $val2 = '2006-01-17';
|
||||||
let $val4 = '2006-02-06';
|
#let $val3 = '2006-01-25';
|
||||||
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
#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))
|
# DATEDIFF() is implemented as (TO_DAYS(d1) - TO_DAYS(d2))
|
||||||
let $sqlfunc = datediff(col1, '2006-01-01');
|
#let $sqlfunc = datediff(col1, '2006-01-01');
|
||||||
let $valsqlfunc = datediff('2006-02-02', '2006-01-01');
|
#let $valsqlfunc = datediff('2006-02-02', '2006-01-01');
|
||||||
let $coltype = date;
|
#let $coltype = date;
|
||||||
let $infile = part_supported_sql_funcs_int_date.inc;
|
#let $infile = part_supported_sql_funcs_int_date.inc;
|
||||||
let $val1 = '2006-02-03';
|
#let $val1 = '2006-02-03';
|
||||||
let $val2 = '2006-01-17';
|
#let $val2 = '2006-01-17';
|
||||||
let $val3 = '2006-01-25';
|
#let $val3 = '2006-01-25';
|
||||||
let $val4 = '2006-02-06';
|
#let $val4 = '2006-02-06';
|
||||||
--source suite/parts/inc/partition_supported_sql_funcs.inc
|
#--source suite/parts/inc/partition_supported_sql_funcs.inc
|
||||||
|
|
||||||
let $sqlfunc = weekday(col1);
|
let $sqlfunc = weekday(col1);
|
||||||
let $valsqlfunc = weekday('2006-10-14');
|
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;
|
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 (
|
create table t1 (
|
||||||
c0 int,
|
c0 int,
|
||||||
c1 bigint,
|
c1 bigint,
|
||||||
c2 set('sweet'),
|
c2 set('sweet'),
|
||||||
key (c2,c1,c0),
|
key (c2,c1,c0),
|
||||||
key(c0)
|
key(c0)
|
||||||
) engine=myisam partition by hash (month(c0)) partitions 5;
|
) engine=myisam partition by hash (c0) partitions 5;
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
insert ignore into t1 set c0 = -6502262, c1 = 3992917, c2 = 35019;
|
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`;
|
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 #
|
||||||
--echo # Bug#49161: Out of memory; restart server and try again (needed 2 bytes)
|
--echo # Bug#49161: Out of memory; restart server and try again (needed 2 bytes)
|
||||||
--echo #
|
--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;
|
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 #
|
||||||
--echo # End of 5.1 tests.
|
--echo # End of 5.1 tests.
|
||||||
|
@ -1503,8 +1503,6 @@ SHOW CREATE VIEW v1;
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
|
|
||||||
# Wait till we reached the initial number of concurrent sessions
|
|
||||||
--source include/wait_until_count_sessions.inc
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Bug #46019: ERROR 1356 When selecting from within another
|
--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
|
--error ER_NO_SUCH_USER
|
||||||
LOCK TABLES v1 READ;
|
LOCK TABLES v1 READ;
|
||||||
DROP VIEW v1;
|
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);
|
pthread_mutex_lock(&THR_LOCK_time);
|
||||||
cur_gethrtime= gethrtime();
|
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);
|
cur_time= time(0);
|
||||||
prev_gethrtime= cur_gethrtime;
|
prev_gethrtime= cur_gethrtime;
|
||||||
|
@ -4657,6 +4657,7 @@ int handler::ha_reset()
|
|||||||
free_io_cache(table);
|
free_io_cache(table);
|
||||||
/* reset the bitmaps to point to defaults */
|
/* reset the bitmaps to point to defaults */
|
||||||
table->default_column_bitmaps();
|
table->default_column_bitmaps();
|
||||||
|
pushed_cond= NULL;
|
||||||
DBUG_RETURN(reset());
|
DBUG_RETURN(reset());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -966,11 +966,11 @@ public:
|
|||||||
virtual bool set_no_const_sub(uchar *arg) { return FALSE; }
|
virtual bool set_no_const_sub(uchar *arg) { return FALSE; }
|
||||||
virtual Item *replace_equal_field(uchar * arg) { return this; }
|
virtual Item *replace_equal_field(uchar * arg) { return this; }
|
||||||
/*
|
/*
|
||||||
Check if an expression value depends on the current timezone. Used by
|
Check if an expression value has allowed arguments, like DATE/DATETIME
|
||||||
partitioning code to reject timezone-dependent expressions in a
|
for date functions. Also used by partitioning code to reject
|
||||||
(sub)partitioning function.
|
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;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -189,6 +189,7 @@ public:
|
|||||||
null_value=1;
|
null_value=1;
|
||||||
return 0.0;
|
return 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool has_timestamp_args()
|
bool has_timestamp_args()
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(fixed == TRUE);
|
DBUG_ASSERT(fixed == TRUE);
|
||||||
@ -200,6 +201,45 @@ public:
|
|||||||
}
|
}
|
||||||
return FALSE;
|
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
|
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
|
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
|
representation of a TIMESTAMP argument verbatim, and thus does not depend on
|
||||||
the timezone.
|
the timezone.
|
||||||
*/
|
*/
|
||||||
virtual bool is_timezone_dependent_processor(uchar *bool_arg)
|
virtual bool check_valid_arguments_processor(uchar *bool_arg)
|
||||||
{
|
{
|
||||||
return has_timestamp_args();
|
return has_timestamp_args();
|
||||||
}
|
}
|
||||||
|
@ -70,6 +70,10 @@ public:
|
|||||||
enum_monotonicity_info get_monotonicity_info() const;
|
enum_monotonicity_info get_monotonicity_info() const;
|
||||||
longlong val_int_endpoint(bool left_endp, bool *incl_endp);
|
longlong val_int_endpoint(bool left_endp, bool *incl_endp);
|
||||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
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;
|
maybe_null=1;
|
||||||
}
|
}
|
||||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
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;
|
maybe_null=1;
|
||||||
}
|
}
|
||||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
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;
|
maybe_null=1;
|
||||||
}
|
}
|
||||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
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;
|
maybe_null=1;
|
||||||
}
|
}
|
||||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
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;
|
maybe_null=1;
|
||||||
}
|
}
|
||||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
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;
|
maybe_null=1;
|
||||||
}
|
}
|
||||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
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;
|
maybe_null=1;
|
||||||
}
|
}
|
||||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
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;
|
maybe_null=1;
|
||||||
}
|
}
|
||||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
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;
|
maybe_null=1;
|
||||||
}
|
}
|
||||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
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;
|
maybe_null=1;
|
||||||
}
|
}
|
||||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
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
|
class Item_func_dayname :public Item_func_weekday
|
||||||
@ -311,7 +355,7 @@ public:
|
|||||||
(and thus may not be used as a partitioning function)
|
(and thus may not be used as a partitioning function)
|
||||||
when its argument is NOT of the TIMESTAMP type.
|
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();
|
return !has_timestamp_args();
|
||||||
}
|
}
|
||||||
@ -336,6 +380,10 @@ public:
|
|||||||
max_length=10*MY_CHARSET_BIN_MB_MAXLEN;
|
max_length=10*MY_CHARSET_BIN_MB_MAXLEN;
|
||||||
}
|
}
|
||||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
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"; }
|
const char *func_name() const { return "from_days"; }
|
||||||
bool get_date(MYSQL_TIME *res, uint fuzzy_date);
|
bool get_date(MYSQL_TIME *res, uint fuzzy_date);
|
||||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
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;
|
bool eq(const Item *item, bool binary_cmp) const;
|
||||||
virtual void print(String *str, enum_query_type query_type);
|
virtual void print(String *str, enum_query_type query_type);
|
||||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
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;
|
maybe_null=1;
|
||||||
}
|
}
|
||||||
bool check_partition_func_processor(uchar *int_arg) {return FALSE;}
|
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_ENTER("net_realloc");
|
||||||
DBUG_PRINT("enter",("length: %lu", (ulong) length));
|
DBUG_PRINT("enter",("length: %lu", (ulong) length));
|
||||||
|
|
||||||
/*
|
if (length >= net->max_packet_size)
|
||||||
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))
|
|
||||||
{
|
{
|
||||||
DBUG_PRINT("error", ("Packet too large. Max size: %lu",
|
DBUG_PRINT("error", ("Packet too large. Max size: %lu",
|
||||||
net->max_packet_size));
|
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->insert_values= 0;
|
||||||
table->fulltext_searched= 0;
|
table->fulltext_searched= 0;
|
||||||
table->file->ft_handler= 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;
|
table->reginfo.impossible_range= 0;
|
||||||
/* Catch wrong handling of the auto_increment_field_not_null. */
|
/* Catch wrong handling of the auto_increment_field_not_null. */
|
||||||
DBUG_ASSERT(!table->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
|
We don't allow creating partitions with expressions with non matching
|
||||||
a (sub)partitioning function, but we want to allow such expressions when
|
arguments as a (sub)partitioning function,
|
||||||
opening existing tables for easier maintenance. This exception should be
|
but we want to allow such expressions when opening existing tables for
|
||||||
deprecated at some point in future so that we always throw an error.
|
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))
|
0, NULL))
|
||||||
{
|
{
|
||||||
if (is_create_table_ind)
|
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;
|
tab->select_cond=sel->cond=tmp;
|
||||||
/* Push condition to storage engine if this is enabled
|
/* Push condition to storage engine if this is enabled
|
||||||
and the condition is not guarded */
|
and the condition is not guarded */
|
||||||
tab->table->file->pushed_cond= NULL;
|
|
||||||
if (thd->variables.engine_condition_pushdown)
|
if (thd->variables.engine_condition_pushdown)
|
||||||
{
|
{
|
||||||
COND *push_cond=
|
COND *push_cond=
|
||||||
@ -9817,7 +9816,12 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type,
|
|||||||
convert_blob_length);
|
convert_blob_length);
|
||||||
if (orig_type == Item::REF_ITEM && orig_modify)
|
if (orig_type == Item::REF_ITEM && orig_modify)
|
||||||
((Item_ref*)orig_item)->set_result_field(result);
|
((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;
|
*default_field= field->field;
|
||||||
return result;
|
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= lex->query_tables;
|
||||||
TABLE_LIST *view_tables_tail= 0;
|
TABLE_LIST *view_tables_tail= 0;
|
||||||
TABLE_LIST *tbl;
|
TABLE_LIST *tbl;
|
||||||
|
Security_context *security_ctx;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Check rights to run commands (EXPLAIN SELECT & SHOW CREATE) which show
|
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)
|
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 *)
|
if (!(table->view_sctx= (Security_context *)
|
||||||
thd->stmt_arena->alloc(sizeof(Security_context))))
|
thd->stmt_arena->alloc(sizeof(Security_context))))
|
||||||
goto err;
|
goto err;
|
||||||
/* Assign the context to the tables referenced in the view */
|
security_ctx= table->view_sctx;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
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
|
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)
|
if (work_part_info_used)
|
||||||
tmp= fix_partition_func(thd, outparam, is_create_table);
|
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:
|
partititon_err:
|
||||||
if (tmp)
|
if (tmp)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user