Skip to content

Commit

Permalink
MDEV-26433 assertion: table->get_ref_count() == 0 in dict0dict.cc lin…
Browse files Browse the repository at this point in the history
…e 1915

Close handlers in THD::drop_temporary_table.
  • Loading branch information
sanja-byelkin committed Jul 12, 2022
1 parent fc456bc commit 8494758
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 0 deletions.
12 changes: 12 additions & 0 deletions mysql-test/main/insert_innodb.result
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,15 @@ INSERT IGNORE INTO t2 VALUES('abc', 2) ON DUPLICATE KEY UPDATE fld1= 'def';
Warnings:
Warning 1452 Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `fk` FOREIGN KEY (`fld2`) REFERENCES `t1` (`fld1`))
DROP TABLE t2, t1;
#
# MDEV-26433: assertion: table->get_ref_count() == 0 in dict0dict.cc
# line 1915
#
CREATE TEMPORARY TABLE v0 ( v1 TEXT ( 15 ) CHAR SET BINARY NOT NULL NOT NULL UNIQUE CHECK ( v1 ) ) REPLACE SELECT NULL AS v3 , 74 AS v2 ;
ERROR HY000: Field 'v1' doesn't have a default value
CREATE TEMPORARY TABLE t1 (i TEXT(15) NOT NULL DEFAULT '' UNIQUE CHECK (i)) engine=innodb
REPLACE SELECT NULL AS a;
ERROR HY000: Field 'DB_ROW_HASH_1' doesn't have a default value
#
# End of 10.5 tests
#
17 changes: 17 additions & 0 deletions mysql-test/main/insert_innodb.test
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,20 @@ INSERT IGNORE INTO t2 VALUES('abc', 2) ON DUPLICATE KEY UPDATE fld1= 'def';
--disable_warnings

DROP TABLE t2, t1;

--echo #
--echo # MDEV-26433: assertion: table->get_ref_count() == 0 in dict0dict.cc
--echo # line 1915
--echo #

--error ER_NO_DEFAULT_FOR_FIELD
CREATE TEMPORARY TABLE v0 ( v1 TEXT ( 15 ) CHAR SET BINARY NOT NULL NOT NULL UNIQUE CHECK ( v1 ) ) REPLACE SELECT NULL AS v3 , 74 AS v2 ;

--error ER_NO_DEFAULT_FOR_FIELD
CREATE TEMPORARY TABLE t1 (i TEXT(15) NOT NULL DEFAULT '' UNIQUE CHECK (i)) engine=innodb
REPLACE SELECT NULL AS a;


--echo #
--echo # End of 10.5 tests
--echo #
4 changes: 4 additions & 0 deletions sql/temporary_tables.cc
Original file line number Diff line number Diff line change
Expand Up @@ -625,6 +625,10 @@ bool THD::drop_temporary_table(TABLE *table, bool *is_trans, bool delete_table)
DBUG_PRINT("tmptable", ("Dropping table: '%s'.'%s'",
table->s->db.str, table->s->table_name.str));

// close all handlers in case it is statement abort and some can be left
if (is_error())
table->file->ha_reset();

locked= lock_temporary_tables();

share= tmp_table_share(table);
Expand Down

0 comments on commit 8494758

Please sign in to comment.