[MDEV-20186] Wrong result or Assertion on INSERT after DELETE HISTORY Created: 2019-07-26  Updated: 2019-07-26  Resolved: 2019-07-26

Status: Closed
Project: MariaDB Server
Component/s: Versioned Tables
Affects Version/s: 10.3
Fix Version/s: 10.3.17

Type: Bug Priority: Blocker
Reporter: Elena Stepanova Assignee: Aleksey Midenkov
Resolution: Fixed Votes: 0
Labels: regression

Issue Links:
Problem/Incident
is caused by MDEV-19814 Assertion `update->n_fields < ulint(t... Closed

 Description   

CREATE TABLE t1 (a INT CHECK (a > 0)) WITH SYSTEM VERSIONING;
DELETE HISTORY FROM t1;
INSERT INTO t1 VALUES (1);
 
# Cleanup
DROP TABLE t1;

10.3 f6d0d309

mysqld: /data/src/10.3/sql/field.cc:5545: virtual bool Field_timestampf::is_max(): Assertion `!table || (!table->read_set || bitmap_is_set(table->read_set, field_index) || (!(ptr >= table->record[0] && ptr < table->record[0] + table->s->reclength)))' failed.
190726 16:13:02 [ERROR] mysqld got signal 6 ;
 
#7  0x00007fa3bdabef12 in __GI___assert_fail (assertion=0x561680551af8 "!table || (!table->read_set || bitmap_is_set(table->read_set, field_index) || (!(ptr >= table->record[0] && ptr < table->record[0] + table->s->reclength)))", file=0x5616805518f0 "/data/src/10.3/sql/field.cc", line=5545, function=0x561680554cc0 <Field_timestampf::is_max()::__PRETTY_FUNCTION__> "virtual bool Field_timestampf::is_max()") at assert.c:101
#8  0x000056167fb4e8c8 in Field_timestampf::is_max (this=0x7fa39c006d18) at /data/src/10.3/sql/field.cc:5545
#9  0x000056167f9988eb in TABLE::verify_constraints (this=0x7fa39c11ecf0, ignore_failure=false) at /data/src/10.3/sql/table.cc:5286
#10 0x000056167f99880d in TABLE_LIST::view_check_option (this=0x7fa39c0128f8, thd=0x7fa39c000b00, ignore_failure=false) at /data/src/10.3/sql/table.cc:5269
#11 0x000056167f83f65b in mysql_insert (thd=0x7fa39c000b00, table_list=0x7fa39c0128f8, fields=..., values_list=..., update_fields=..., update_values=..., duplic=DUP_ERROR, ignore=false) at /data/src/10.3/sql/sql_insert.cc:1048
#12 0x000056167f88041a in mysql_execute_command (thd=0x7fa39c000b00) at /data/src/10.3/sql/sql_parse.cc:4450
#13 0x000056167f88b3f0 in mysql_parse (thd=0x7fa39c000b00, rawbuf=0x7fa39c012818 "INSERT INTO t1 VALUES (1)", length=25, parser_state=0x7fa3b84be5f0, is_com_multi=false, is_next_command=false) at /data/src/10.3/sql/sql_parse.cc:7829
#14 0x000056167f878fee in dispatch_command (command=COM_QUERY, thd=0x7fa39c000b00, packet=0x7fa39c008c71 "INSERT INTO t1 VALUES (1)", packet_length=25, is_com_multi=false, is_next_command=false) at /data/src/10.3/sql/sql_parse.cc:1856
#15 0x000056167f877a11 in do_command (thd=0x7fa39c000b00) at /data/src/10.3/sql/sql_parse.cc:1401
#16 0x000056167f9e10a2 in do_handle_one_connection (connect=0x561682893ed0) at /data/src/10.3/sql/sql_connect.cc:1403
#17 0x000056167f9e0e04 in handle_one_connection (arg=0x561682893ed0) at /data/src/10.3/sql/sql_connect.cc:1308
#18 0x00005616802bc2a8 in pfs_spawn_thread (arg=0x5616828aee50) at /data/src/10.3/storage/perfschema/pfs.cc:1862
#19 0x00007fa3bf6334a4 in start_thread (arg=0x7fa3b84bf700) at pthread_create.c:456
#20 0x00007fa3bdb7bd0f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

The failure appeared in 10.3 main tree with this commit:

commit f6d0d309fa4ffe1d5890c09447d947103143a68a
Author: Aleksey Midenkov
Date:   Tue Jul 23 13:27:57 2019 +0300
 
    MDEV-19814 Assertion `update->n_fields < ulint(table->n_cols + table->n_v_cols)' on DELETE HISTORY
    
    Turn off versioned_write for DELETE HISTORY.

Non-debug build doesn't fail, but it produces a wrong result with an extra SELECT:

CREATE TABLE t1 (a INT CHECK (a > 0)) WITH SYSTEM VERSIONING;
DELETE HISTORY FROM t1;
INSERT INTO t1 VALUES (1);
SELECT * FROM t1;

SELECT * FROM t1;
a
DROP TABLE t1;



 Comments   
Comment by Oleksandr Byelkin [ 2019-07-26 ]

OK tu push

Generated at Thu Feb 08 08:57:29 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.