mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-19224 Assertion `marked_for_read()' failed
Problem was that wrong key_info variable was used, which caused UNIQUE key to be used as a covering key
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
CREATE TABLE t1 (pk INT AUTO_INCREMENT PRIMARY KEY, a varchar(30000), UNIQUE (a)) ENGINE=innodb;
|
||||||
|
INSERT INTO t1 (a) VALUES (20),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
||||||
|
SELECT * FROM t1 WHERE a BETWEEN '1' AND '100';
|
||||||
|
pk a
|
||||||
|
DROP TABLE t1;
|
||||||
CREATE TABLE t2 (n BLOB, UNIQUE(n));
|
CREATE TABLE t2 (n BLOB, UNIQUE(n));
|
||||||
INSERT INTO t2 VALUES (1);
|
INSERT INTO t2 VALUES (1);
|
||||||
DELETE FROM t2 WHERE n = 1;
|
DELETE FROM t2 WHERE n = 1;
|
||||||
|
@ -1,5 +1,15 @@
|
|||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-19224 Assertion `marked_for_read()' failed in various places with long
|
||||||
|
# unique key
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (pk INT AUTO_INCREMENT PRIMARY KEY, a varchar(30000), UNIQUE (a)) ENGINE=innodb;
|
||||||
|
INSERT INTO t1 (a) VALUES (20),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
||||||
|
SELECT * FROM t1 WHERE a BETWEEN '1' AND '100';
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
# MDEV-19252 Warning about assertion failure marked_for_write_or_computed()
|
# MDEV-19252 Warning about assertion failure marked_for_write_or_computed()
|
||||||
# printed by release build with DBUG_ASSERT_AS_PRINTF, but no failure on debug
|
# printed by release build with DBUG_ASSERT_AS_PRINTF, but no failure on debug
|
||||||
|
@ -2690,7 +2690,7 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
|
|||||||
field->key_start.set_bit(key);
|
field->key_start.set_bit(key);
|
||||||
if (field->key_length() == key_part->length &&
|
if (field->key_length() == key_part->length &&
|
||||||
!(field->flags & BLOB_FLAG) &&
|
!(field->flags & BLOB_FLAG) &&
|
||||||
key_info->algorithm != HA_KEY_ALG_LONG_HASH)
|
keyinfo->algorithm != HA_KEY_ALG_LONG_HASH)
|
||||||
{
|
{
|
||||||
if (handler_file->index_flags(key, i, 0) & HA_KEYREAD_ONLY)
|
if (handler_file->index_flags(key, i, 0) & HA_KEYREAD_ONLY)
|
||||||
{
|
{
|
||||||
@ -9409,6 +9409,7 @@ bool vers_select_conds_t::eq(const vers_select_conds_t &conds) const
|
|||||||
return true;
|
return true;
|
||||||
case SYSTEM_TIME_BEFORE:
|
case SYSTEM_TIME_BEFORE:
|
||||||
DBUG_ASSERT(0);
|
DBUG_ASSERT(0);
|
||||||
|
return false;
|
||||||
case SYSTEM_TIME_AS_OF:
|
case SYSTEM_TIME_AS_OF:
|
||||||
return start.eq(conds.start);
|
return start.eq(conds.start);
|
||||||
case SYSTEM_TIME_FROM_TO:
|
case SYSTEM_TIME_FROM_TO:
|
||||||
|
Reference in New Issue
Block a user