[MDEV-20771] ER_DATA_TOO_LONG or Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed upon UPDATE on RocksDB table Created: 2019-10-07  Updated: 2023-04-27

Status: Open
Project: MariaDB Server
Component/s: Character Sets, Storage Engine - RocksDB
Affects Version/s: 10.2, 10.3, 10.4
Fix Version/s: 10.4

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Sergei Petrunia
Resolution: Unresolved Votes: 0
Labels: None


 Description   

INSTALL SONAME 'ha_rocksdb';
 
CREATE TABLE t1 (
    pk INT PRIMARY KEY,
    a VARCHAR(16) CHARACTER SET utf8,
    b INT,
    KEY(a)
) ENGINE=RocksDB;
 
--error ER_DATA_TOO_LONG
UPDATE t1 SET b = 1 WHERE a LIKE 'bar%';

10.2 13535b27

mysqld: /data/src/10.2/sql/sql_error.cc:380: void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*): Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed.
191008  2:40:02 [ERROR] mysqld got signal 6 ;
 
#7  0x00007fd23e77ef12 in __GI___assert_fail (assertion=0x55b652d9ae78 "!is_set() || (m_status == DA_OK_BULK && is_bulk_op())", file=0x55b652d9adb0 "/data/src/10.2/sql/sql_error.cc", line=380, function=0x55b652d9b1c0 <Diagnostics_area::set_ok_status(unsigned long long, unsigned long long, char const*)::__PRETTY_FUNCTION__> "void Diagnostics_area::set_ok_status(ulonglong, ulonglong, const char*)") at assert.c:101
#8  0x000055b6522d97b3 in Diagnostics_area::set_ok_status (this=0x7fd228005cb0, affected_rows=0, last_insert_id=0, message=0x7fd238ab13c0 "Rows matched: 0  Changed: 0  Warnings: 2") at /data/src/10.2/sql/sql_error.cc:380
#9  0x000055b65228c5b3 in my_ok (thd=0x7fd228000b00, affected_rows=0, id=0, message=0x7fd238ab13c0 "Rows matched: 0  Changed: 0  Warnings: 2") at /data/src/10.2/sql/sql_class.h:4547
#10 0x000055b6523f804c in mysql_update (thd=0x7fd228000b00, table_list=0x7fd228012560, fields=..., values=..., conds=0x7fd228012f88, order_num=0, order=0x0, limit=18446744073709551615, handle_duplicates=DUP_ERROR, ignore=false, found_return=0x7fd238ab1870, updated_return=0x7fd238ab1920) at /data/src/10.2/sql/sql_update.cc:1023
#11 0x000055b652307f0d in mysql_execute_command (thd=0x7fd228000b00) at /data/src/10.2/sql/sql_parse.cc:4014
#12 0x000055b652313d8e in mysql_parse (thd=0x7fd228000b00, rawbuf=0x7fd228012468 "UPDATE t1 SET b = 1 WHERE a LIKE 'bar%'", length=39, parser_state=0x7fd238ab2200, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:7759
#13 0x000055b652302097 in dispatch_command (command=COM_QUERY, thd=0x7fd228000b00, packet=0x7fd22808d6f1 "UPDATE t1 SET b = 1 WHERE a LIKE 'bar%'", packet_length=39, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:1831
#14 0x000055b6523009eb in do_command (thd=0x7fd228000b00) at /data/src/10.2/sql/sql_parse.cc:1384
#15 0x000055b652455ca5 in do_handle_one_connection (connect=0x55b65564d860) at /data/src/10.2/sql/sql_connect.cc:1336
#16 0x000055b652455a10 in handle_one_connection (arg=0x55b65564d860) at /data/src/10.2/sql/sql_connect.cc:1241
#17 0x000055b652c86a40 in pfs_spawn_thread (arg=0x55b655670b10) at /data/src/10.2/storage/perfschema/pfs.cc:1862
#18 0x00007fd2402f44a4 in start_thread (arg=0x7fd238ab3700) at pthread_create.c:456
#19 0x00007fd23e83bd0f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Non-debug build doesn't crash, but it produces an error which looks unexpected:

CURRENT_TEST: bug.4282
mysqltest: At line 10: query 'UPDATE t1 SET b = 1 WHERE a LIKE 'bar%'' failed: 1406: Data too long for column 'a' at row 1

Reproducible on 10.2-10.5.

Note: the table is created with a warning:

Warnings:
Warning	1815	Internal error: Indexed column test.t1.a uses a collation that does not allow index-only access in secondary key and has reduced disk space efficiency in primary key.


Generated at Thu Feb 08 09:02:03 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.