mirror of
https://github.com/MariaDB/server.git
synced 2025-11-16 20:23:18 +03:00
Fixed BUG#12963, BUG#13000: wrong VIEW creation with DAYNAME(),
DAYOFWEEK(), and WEEKDAY().
This commit is contained in:
@@ -686,7 +686,7 @@ explain extended select period_add("9602",-12),period_diff(199505,"9404"),from_d
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select sql_no_cache period_add(_latin1'9602',-(12)) AS `period_add("9602",-12)`,period_diff(199505,_latin1'9404') AS `period_diff(199505,"9404")`,from_days(to_days(_latin1'960101')) AS `from_days(to_days("960101"))`,dayofmonth(_latin1'1997-01-02') AS `dayofmonth("1997-01-02")`,month(_latin1'1997-01-02') AS `month("1997-01-02")`,monthname(_latin1'1972-03-04') AS `monthname("1972-03-04")`,dayofyear(_latin1'0000-00-00') AS `dayofyear("0000-00-00")`,hour(_latin1'1997-03-03 23:03:22') AS `HOUR("1997-03-03 23:03:22")`,minute(_latin1'23:03:22') AS `MINUTE("23:03:22")`,second(230322) AS `SECOND(230322)`,quarter(980303) AS `QUARTER(980303)`,week(_latin1'1998-03-03',0) AS `WEEK("1998-03-03")`,yearweek(_latin1'2000-01-01',1) AS `yearweek("2000-01-01",1)`,week(19950101,1) AS `week(19950101,1)`,year(_latin1'98-02-03') AS `year("98-02-03")`,(weekday(to_days(curdate())) - weekday(to_days(now()))) AS `weekday(curdate())-weekday(now())`,dayname(to_days(_latin1'1962-03-03')) AS `dayname("1962-03-03")`,unix_timestamp() AS `unix_timestamp()`,sec_to_time((time_to_sec(_latin1'0:30:47') / 6.21)) AS `sec_to_time(time_to_sec("0:30:47")/6.21)`,curtime() AS `curtime()`,utc_time() AS `utc_time()`,curdate() AS `curdate()`,utc_date() AS `utc_date()`,utc_timestamp() AS `utc_timestamp()`,date_format(_latin1'1997-01-02 03:04:05',_latin1'%M %W %D %Y %y %m %d %h %i %s %w') AS `date_format("1997-01-02 03:04:05", "%M %W %D %Y %y %m %d %h %i %s %w")`,from_unixtime(unix_timestamp(_latin1'1994-03-02 10:11:12')) AS `from_unixtime(unix_timestamp("1994-03-02 10:11:12"))`,(_latin1'1997-12-31 23:59:59' + interval 1 second) AS `"1997-12-31 23:59:59" + INTERVAL 1 SECOND`,(_latin1'1998-01-01 00:00:00' - interval 1 second) AS `"1998-01-01 00:00:00" - INTERVAL 1 SECOND`,(_latin1'1997-12-31' + interval 1 day) AS `INTERVAL 1 DAY + "1997-12-31"`,extract(year from _latin1'1999-01-02 10:11:12') AS `extract(YEAR FROM "1999-01-02 10:11:12")`,(_latin1'1997-12-31 23:59:59' + interval 1 second) AS `date_add("1997-12-31 23:59:59",INTERVAL 1 SECOND)`
|
||||
Note 1003 select sql_no_cache period_add(_latin1'9602',-(12)) AS `period_add("9602",-12)`,period_diff(199505,_latin1'9404') AS `period_diff(199505,"9404")`,from_days(to_days(_latin1'960101')) AS `from_days(to_days("960101"))`,dayofmonth(_latin1'1997-01-02') AS `dayofmonth("1997-01-02")`,month(_latin1'1997-01-02') AS `month("1997-01-02")`,monthname(_latin1'1972-03-04') AS `monthname("1972-03-04")`,dayofyear(_latin1'0000-00-00') AS `dayofyear("0000-00-00")`,hour(_latin1'1997-03-03 23:03:22') AS `HOUR("1997-03-03 23:03:22")`,minute(_latin1'23:03:22') AS `MINUTE("23:03:22")`,second(230322) AS `SECOND(230322)`,quarter(980303) AS `QUARTER(980303)`,week(_latin1'1998-03-03',0) AS `WEEK("1998-03-03")`,yearweek(_latin1'2000-01-01',1) AS `yearweek("2000-01-01",1)`,week(19950101,1) AS `week(19950101,1)`,year(_latin1'98-02-03') AS `year("98-02-03")`,(weekday(curdate()) - weekday(now())) AS `weekday(curdate())-weekday(now())`,dayname(_latin1'1962-03-03') AS `dayname("1962-03-03")`,unix_timestamp() AS `unix_timestamp()`,sec_to_time((time_to_sec(_latin1'0:30:47') / 6.21)) AS `sec_to_time(time_to_sec("0:30:47")/6.21)`,curtime() AS `curtime()`,utc_time() AS `utc_time()`,curdate() AS `curdate()`,utc_date() AS `utc_date()`,utc_timestamp() AS `utc_timestamp()`,date_format(_latin1'1997-01-02 03:04:05',_latin1'%M %W %D %Y %y %m %d %h %i %s %w') AS `date_format("1997-01-02 03:04:05", "%M %W %D %Y %y %m %d %h %i %s %w")`,from_unixtime(unix_timestamp(_latin1'1994-03-02 10:11:12')) AS `from_unixtime(unix_timestamp("1994-03-02 10:11:12"))`,(_latin1'1997-12-31 23:59:59' + interval 1 second) AS `"1997-12-31 23:59:59" + INTERVAL 1 SECOND`,(_latin1'1998-01-01 00:00:00' - interval 1 second) AS `"1998-01-01 00:00:00" - INTERVAL 1 SECOND`,(_latin1'1997-12-31' + interval 1 day) AS `INTERVAL 1 DAY + "1997-12-31"`,extract(year from _latin1'1999-01-02 10:11:12') AS `extract(YEAR FROM "1999-01-02 10:11:12")`,(_latin1'1997-12-31 23:59:59' + interval 1 second) AS `date_add("1997-12-31 23:59:59",INTERVAL 1 SECOND)`
|
||||
SET @TMP=NOW();
|
||||
CREATE TABLE t1 (d DATETIME);
|
||||
INSERT INTO t1 VALUES (NOW());
|
||||
|
||||
@@ -2196,3 +2196,46 @@ select * from (select f1 as f2 from v1) v where v.f2='a';
|
||||
f2
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (date DATE NOT NULL);
|
||||
INSERT INTO t1 VALUES ('2005-09-06');
|
||||
CREATE VIEW v1 AS SELECT DAYNAME(date) FROM t1;
|
||||
SHOW CREATE VIEW v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED VIEW `v1` AS select dayname(`t1`.`date`) AS `DAYNAME(date)` from `t1`
|
||||
CREATE VIEW v2 AS SELECT DAYOFWEEK(date) FROM t1;
|
||||
SHOW CREATE VIEW v2;
|
||||
View Create View
|
||||
v2 CREATE ALGORITHM=UNDEFINED VIEW `v2` AS select dayofweek(`t1`.`date`) AS `DAYOFWEEK(date)` from `t1`
|
||||
CREATE VIEW v3 AS SELECT WEEKDAY(date) FROM t1;
|
||||
SHOW CREATE VIEW v3;
|
||||
View Create View
|
||||
v3 CREATE ALGORITHM=UNDEFINED VIEW `v3` AS select weekday(`t1`.`date`) AS `WEEKDAY(date)` from `t1`
|
||||
SELECT DAYNAME('2005-09-06');
|
||||
DAYNAME('2005-09-06')
|
||||
Tuesday
|
||||
SELECT DAYNAME(date) FROM t1;
|
||||
DAYNAME(date)
|
||||
Tuesday
|
||||
SELECT * FROM v1;
|
||||
DAYNAME(date)
|
||||
Tuesday
|
||||
SELECT DAYOFWEEK('2005-09-06');
|
||||
DAYOFWEEK('2005-09-06')
|
||||
3
|
||||
SELECT DAYOFWEEK(date) FROM t1;
|
||||
DAYOFWEEK(date)
|
||||
3
|
||||
SELECT * FROM v2;
|
||||
DAYOFWEEK(date)
|
||||
3
|
||||
SELECT WEEKDAY('2005-09-06');
|
||||
WEEKDAY('2005-09-06')
|
||||
1
|
||||
SELECT WEEKDAY(date) FROM t1;
|
||||
WEEKDAY(date)
|
||||
1
|
||||
SELECT * FROM v3;
|
||||
WEEKDAY(date)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
DROP VIEW v1, v2, v3;
|
||||
|
||||
@@ -2077,3 +2077,34 @@ create view v1 as select * from t1;
|
||||
select * from (select f1 as f2 from v1) v where v.f2='a';
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bugs #12963, #13000: wrong creation of VIEW with DAYNAME, DAYOFWEEK, and WEEKDAY
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (date DATE NOT NULL);
|
||||
INSERT INTO t1 VALUES ('2005-09-06');
|
||||
|
||||
CREATE VIEW v1 AS SELECT DAYNAME(date) FROM t1;
|
||||
SHOW CREATE VIEW v1;
|
||||
|
||||
CREATE VIEW v2 AS SELECT DAYOFWEEK(date) FROM t1;
|
||||
SHOW CREATE VIEW v2;
|
||||
|
||||
CREATE VIEW v3 AS SELECT WEEKDAY(date) FROM t1;
|
||||
SHOW CREATE VIEW v3;
|
||||
|
||||
SELECT DAYNAME('2005-09-06');
|
||||
SELECT DAYNAME(date) FROM t1;
|
||||
SELECT * FROM v1;
|
||||
|
||||
SELECT DAYOFWEEK('2005-09-06');
|
||||
SELECT DAYOFWEEK(date) FROM t1;
|
||||
SELECT * FROM v2;
|
||||
|
||||
SELECT WEEKDAY('2005-09-06');
|
||||
SELECT WEEKDAY(date) FROM t1;
|
||||
SELECT * FROM v3;
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP VIEW v1, v2, v3;
|
||||
|
||||
Reference in New Issue
Block a user