Commit b07f9f72 authored by Michael Widenius's avatar Michael Widenius

Fixed MDEV-5780 "create-big fails in 10.0"

The issue was that create...trigger part of the test suite used a debug_sync point that before was never triggered (in other words, wrong meaningless test).
With the new create ... replace code the debug sync point is triggered and the test case could not handled that.

I fixed this by adding a wait and go for the debug syncpoint in the test.

Removed some compiler warnings from mysql_cond_timedwait


include/mysql/psi/mysql_thread.h:
  Removed compiler warnings
mysql-test/r/create-big.result:
  New test result
mysql-test/t/create-big.test:
  Fixed test case as create_table_select_before_check_if_exists was not before triggered by the code.
parent 5b7cab82
...@@ -518,7 +518,7 @@ typedef struct st_mysql_cond mysql_cond_t; ...@@ -518,7 +518,7 @@ typedef struct st_mysql_cond mysql_cond_t;
@c mysql_cond_timedwait is a drop-in replacement @c mysql_cond_timedwait is a drop-in replacement
for @c pthread_cond_timedwait. for @c pthread_cond_timedwait.
*/ */
#if defined(HAVE_PSI_INTERFACE) || defined(SAFE_MUTEX) #ifdef HAVE_PSI_COND_INTERFACE
#define mysql_cond_timedwait(C, M, W) \ #define mysql_cond_timedwait(C, M, W) \
inline_mysql_cond_timedwait(C, M, W, __FILE__, __LINE__) inline_mysql_cond_timedwait(C, M, W, __FILE__, __LINE__)
#else #else
...@@ -1171,7 +1171,7 @@ static inline int inline_mysql_cond_timedwait( ...@@ -1171,7 +1171,7 @@ static inline int inline_mysql_cond_timedwait(
mysql_cond_t *that, mysql_cond_t *that,
mysql_mutex_t *mutex, mysql_mutex_t *mutex,
const struct timespec *abstime const struct timespec *abstime
#if defined(HAVE_PSI_INTERFACE) || defined(SAFE_MUTEX) #ifdef HAVE_PSI_COND_INTERFACE
, const char *src_file, uint src_line , const char *src_file, uint src_line
#endif #endif
) )
......
...@@ -161,7 +161,9 @@ create table t1 (i int); ...@@ -161,7 +161,9 @@ create table t1 (i int);
set @a:=0; set @a:=0;
set debug_sync='create_table_select_before_check_if_exists SIGNAL parked WAIT_FOR go'; set debug_sync='create_table_select_before_check_if_exists SIGNAL parked WAIT_FOR go';
create table if not exists t1 select 1 as i;; create table if not exists t1 select 1 as i;;
create trigger t1_bi before insert on t1 for each row set @a:=1; set debug_sync='now WAIT_FOR parked';
create trigger t1_bi before insert on t1 for each row set @a:=1;;
set debug_sync='now SIGNAL go';
Warnings: Warnings:
Note 1050 Table 't1' already exists Note 1050 Table 't1' already exists
select @a; select @a;
......
...@@ -420,9 +420,20 @@ set @a:=0; ...@@ -420,9 +420,20 @@ set @a:=0;
set debug_sync='create_table_select_before_check_if_exists SIGNAL parked WAIT_FOR go'; set debug_sync='create_table_select_before_check_if_exists SIGNAL parked WAIT_FOR go';
--send create table if not exists t1 select 1 as i; --send create table if not exists t1 select 1 as i;
connection addconroot1; connection addconroot1;
create trigger t1_bi before insert on t1 for each row set @a:=1; set debug_sync='now WAIT_FOR parked';
--send create trigger t1_bi before insert on t1 for each row set @a:=1;
connection addconroot2;
# Wait until the above DROP TABLE is blocked due to CREATE TABLE
let $wait_condition=
select count(*) = 1 from information_schema.processlist
where state = "Waiting for table metadata lock" and
info like "create trigger%";
--source include/wait_condition.inc
set debug_sync='now SIGNAL go';
connection default; connection default;
--reap --reap
connection addconroot1;
--reap
connection default; connection default;
select @a; select @a;
select * from t1; select * from t1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment