Commit 0c7631e7 authored by svoj@mysql.com/june.mysql.com's avatar svoj@mysql.com/june.mysql.com
Browse files

BUG#27998 - mysqld crashed when executing INSERT DELAYED

            on a BLACKHOLE table

Using INSERT DELAYED on BLACKHOLE tables could lead to server
crash.

This happens because delayed thread wants to upgrade a lock,
but BLACKHOLE tables do not have locks at all.

This patch rejects attempts to use INSERT DELAYED on MERGE
tables.
parent f6989772
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -123,3 +123,7 @@ master-bin.000001 # Query 1 # use `test`; create table t3 like t1
master-bin.000001	#	Query	1	#	use `test`; insert into t1 select * from t3
master-bin.000001	#	Query	1	#	use `test`; replace into t1 select * from t3
drop table t1,t2,t3;
CREATE TABLE t1(a INT) ENGINE=BLACKHOLE;
INSERT DELAYED INTO t1 VALUES(1);
ERROR HY000: Table storage engine for 't1' doesn't have this option
DROP TABLE t1;
+9 −0
Original line number Diff line number Diff line
@@ -126,4 +126,13 @@ show binlog events;

drop table t1,t2,t3;

#
# BUG#27998 - mysqld crashed when executing INSERT DELAYED on a BLACKHOLE
#             table
#
CREATE TABLE t1(a INT) ENGINE=BLACKHOLE;
--error 1031
INSERT DELAYED INTO t1 VALUES(1);
DROP TABLE t1;

# End of 4.1 tests
+1 −2
Original line number Diff line number Diff line
@@ -46,8 +46,7 @@ class ha_blackhole: public handler
  {
    return(HA_NULL_IN_KEY | HA_CAN_FULLTEXT | HA_CAN_SQL_HANDLER |
           HA_DUPP_POS | HA_CAN_INDEX_BLOBS | HA_AUTO_PART_KEY |
           HA_FILE_BASED | HA_CAN_GEOMETRY | HA_READ_RND_SAME |
           HA_CAN_INSERT_DELAYED);
           HA_FILE_BASED | HA_CAN_GEOMETRY | HA_READ_RND_SAME);
  }
  ulong index_flags(uint inx, uint part, bool all_parts) const
  {