Skip to content

Commit 239790d

Browse files
committed
MDEV-11604 Assertion `!check_datetime_range(ltime)' failed in TIME_to_longlong_datetime_packed
1 parent 1afb110 commit 239790d

File tree

3 files changed

+77
-1
lines changed

3 files changed

+77
-1
lines changed

mysql-test/suite/vcol/r/vcol_keys_innodb.result

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,3 +225,36 @@ ALTER TABLE t1 ADD COLUMN col INT;
225225
SELECT * FROM t1 WHERE vi < 2;
226226
i vi col
227227
DROP TABLE t1, t2;
228+
create table t1 (
229+
pk int auto_increment,
230+
col_varchar varchar(847) not null default '',
231+
col_int bigint(15) unsigned zerofill,
232+
col_datetime datetime(3) not null default '1900-01-01 00:00:00',
233+
col_time time(5) not null default '00:00:00',
234+
col_blob text,
235+
col_bit bit(34),
236+
col_year year,
237+
col_char char(10),
238+
col_dec decimal(18,9) not null default 0,
239+
col_enum enum('','a','b','c','d','e','f','foo','bar') not null default '',
240+
col_date date not null default '1900-01-01',
241+
col_timestamp timestamp(3) not null default '1971-01-01 00:00:00',
242+
vcol_datetime datetime as (col_datetime) virtual,
243+
vcol_dec decimal(18,9) zerofill as (col_dec) virtual,
244+
vcol_bit bit(63) as (col_bit) virtual,
245+
vcol_char binary(51) as (col_char) virtual,
246+
vcol_timestamp timestamp(5) as (col_timestamp) virtual,
247+
vcol_enum enum('','a','b','c','d','e','f','foo','bar') as (col_enum) virtual,
248+
vcol_int tinyint(48) zerofill as (col_int) virtual,
249+
vcol_time time(4) as (col_time) virtual,
250+
vcol_varchar varbinary(3873) as (col_varchar) virtual,
251+
vcol_year year as (col_year) virtual,
252+
vcol_date date as (col_date) virtual,
253+
vcol_blob longtext as (col_blob) virtual,
254+
primary key(pk)
255+
) engine=innodb;
256+
insert into t1 (col_varchar,col_int,col_datetime,col_time,col_blob,col_bit,col_year,col_char,col_dec,col_enum,col_date,col_timestamp) values
257+
('foo',1,'2010-05-08 13:08:12.034783','18:32:14','foo',b'0111110101001001',1992,'f',0.2,'','1994-12-26','2019-01-11 00:00:00'),
258+
('bar',6,'1900-01-01 00:00:00','00:00:00','bar',b'10011000001101011000101',1985,'b',0.7,'','2028-04-06','1971-01-01 00:00:00');
259+
alter table t1 add index(vcol_datetime);
260+
drop table t1;

mysql-test/suite/vcol/t/vcol_keys_innodb.test

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,43 @@ CREATE TABLE t2 (i INT) ENGINE=InnoDB;
6161
ALTER TABLE t1 ADD COLUMN col INT;
6262
SELECT * FROM t1 WHERE vi < 2;
6363
DROP TABLE t1, t2;
64+
65+
66+
#
67+
# MDEV-11604 Assertion `!check_datetime_range(ltime)' failed in TIME_to_longlong_datetime_packed
68+
#
69+
create table t1 (
70+
pk int auto_increment,
71+
col_varchar varchar(847) not null default '',
72+
col_int bigint(15) unsigned zerofill,
73+
col_datetime datetime(3) not null default '1900-01-01 00:00:00',
74+
col_time time(5) not null default '00:00:00',
75+
col_blob text,
76+
col_bit bit(34),
77+
col_year year,
78+
col_char char(10),
79+
col_dec decimal(18,9) not null default 0,
80+
col_enum enum('','a','b','c','d','e','f','foo','bar') not null default '',
81+
col_date date not null default '1900-01-01',
82+
col_timestamp timestamp(3) not null default '1971-01-01 00:00:00',
83+
vcol_datetime datetime as (col_datetime) virtual,
84+
vcol_dec decimal(18,9) zerofill as (col_dec) virtual,
85+
vcol_bit bit(63) as (col_bit) virtual,
86+
vcol_char binary(51) as (col_char) virtual,
87+
vcol_timestamp timestamp(5) as (col_timestamp) virtual,
88+
vcol_enum enum('','a','b','c','d','e','f','foo','bar') as (col_enum) virtual,
89+
vcol_int tinyint(48) zerofill as (col_int) virtual,
90+
vcol_time time(4) as (col_time) virtual,
91+
vcol_varchar varbinary(3873) as (col_varchar) virtual,
92+
vcol_year year as (col_year) virtual,
93+
vcol_date date as (col_date) virtual,
94+
vcol_blob longtext as (col_blob) virtual,
95+
primary key(pk)
96+
) engine=innodb;
97+
98+
insert into t1 (col_varchar,col_int,col_datetime,col_time,col_blob,col_bit,col_year,col_char,col_dec,col_enum,col_date,col_timestamp) values
99+
('foo',1,'2010-05-08 13:08:12.034783','18:32:14','foo',b'0111110101001001',1992,'f',0.2,'','1994-12-26','2019-01-11 00:00:00'),
100+
('bar',6,'1900-01-01 00:00:00','00:00:00','bar',b'10011000001101011000101',1985,'b',0.7,'','2028-04-06','1971-01-01 00:00:00');
101+
102+
alter table t1 add index(vcol_datetime);
103+
drop table t1;

sql/sql_yacc.yy

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6197,7 +6197,10 @@ opt_serial_attribute_list:
61976197
field_def:
61986198
opt_attribute
61996199
| opt_generated_always AS virtual_column_func
6200-
{ Lex->last_field->vcol_info= $3; }
6200+
{
6201+
Lex->last_field->vcol_info= $3;
6202+
Lex->last_field->flags&= ~NOT_NULL_FLAG; // undo automatic NOT NULL for timestamps
6203+
}
62016204
vcol_opt_specifier vcol_opt_attribute
62026205
;
62036206

0 commit comments

Comments
 (0)