mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-23534: SIGSEGV in sf_malloc_usable_size/my_free on SET GLOBAL REPLICATE_DO_TABLE
Backporting fixes for: MDEV-22317: SIGSEGV in my_free/delete_dynamic in optimized builds (ARIA) Backported following commits from: 10.5.3 commit77e1b0c397
-- Post push fix. commit2e6b21be4a
MDEV-22059: MSAN report at replicate_ignore_table_grant Backported following commits from: 10.5.4 commit840fb495ce
This commit is contained in:
@ -5,6 +5,8 @@ ERROR HY000: This operation cannot be performed as you have a running slave '';
|
|||||||
SET @@GLOBAL.replicate_ignore_table="test.t4,test.t5,test.t6";
|
SET @@GLOBAL.replicate_ignore_table="test.t4,test.t5,test.t6";
|
||||||
ERROR HY000: This operation cannot be performed as you have a running slave ''; run STOP SLAVE '' first
|
ERROR HY000: This operation cannot be performed as you have a running slave ''; run STOP SLAVE '' first
|
||||||
include/stop_slave.inc
|
include/stop_slave.inc
|
||||||
|
SET @@GLOBAL.replicate_do_table="";
|
||||||
|
SET @@GLOBAL.replicate_ignore_table="";
|
||||||
SET @@GLOBAL.replicate_do_table="test.t1,test.t2,test.t3";
|
SET @@GLOBAL.replicate_do_table="test.t1,test.t2,test.t3";
|
||||||
SET @@GLOBAL.replicate_ignore_table="test.t4,test.t5,test.t6";
|
SET @@GLOBAL.replicate_ignore_table="test.t4,test.t5,test.t6";
|
||||||
include/start_slave.inc
|
include/start_slave.inc
|
||||||
|
@ -5,6 +5,8 @@ ERROR HY000: This operation cannot be performed as you have a running slave '';
|
|||||||
SET @@GLOBAL.replicate_wild_ignore_table="test.b%";
|
SET @@GLOBAL.replicate_wild_ignore_table="test.b%";
|
||||||
ERROR HY000: This operation cannot be performed as you have a running slave ''; run STOP SLAVE '' first
|
ERROR HY000: This operation cannot be performed as you have a running slave ''; run STOP SLAVE '' first
|
||||||
include/stop_slave.inc
|
include/stop_slave.inc
|
||||||
|
SET @@GLOBAL.replicate_wild_do_table="";
|
||||||
|
SET @@GLOBAL.replicate_wild_ignore_table="";
|
||||||
SET @@GLOBAL.replicate_wild_do_table="test.a%";
|
SET @@GLOBAL.replicate_wild_do_table="test.a%";
|
||||||
SET @@GLOBAL.replicate_wild_ignore_table="test.b%";
|
SET @@GLOBAL.replicate_wild_ignore_table="test.b%";
|
||||||
include/start_slave.inc
|
include/start_slave.inc
|
||||||
|
@ -51,6 +51,8 @@ SET @@GLOBAL.replicate_ignore_table="test.t4,test.t5,test.t6";
|
|||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
source include/stop_slave.inc;
|
source include/stop_slave.inc;
|
||||||
|
SET @@GLOBAL.replicate_do_table="";
|
||||||
|
SET @@GLOBAL.replicate_ignore_table="";
|
||||||
SET @@GLOBAL.replicate_do_table="test.t1,test.t2,test.t3";
|
SET @@GLOBAL.replicate_do_table="test.t1,test.t2,test.t3";
|
||||||
SET @@GLOBAL.replicate_ignore_table="test.t4,test.t5,test.t6";
|
SET @@GLOBAL.replicate_ignore_table="test.t4,test.t5,test.t6";
|
||||||
source include/start_slave.inc;
|
source include/start_slave.inc;
|
||||||
|
@ -13,6 +13,8 @@ SET @@GLOBAL.replicate_wild_ignore_table="test.b%";
|
|||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
source include/stop_slave.inc;
|
source include/stop_slave.inc;
|
||||||
|
SET @@GLOBAL.replicate_wild_do_table="";
|
||||||
|
SET @@GLOBAL.replicate_wild_ignore_table="";
|
||||||
SET @@GLOBAL.replicate_wild_do_table="test.a%";
|
SET @@GLOBAL.replicate_wild_do_table="test.a%";
|
||||||
SET @@GLOBAL.replicate_wild_ignore_table="test.b%";
|
SET @@GLOBAL.replicate_wild_ignore_table="test.b%";
|
||||||
source include/start_slave.inc;
|
source include/start_slave.inc;
|
||||||
|
@ -349,16 +349,22 @@ Rpl_filter::set_do_table(const char* table_spec)
|
|||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (do_table_inited)
|
if (do_table_inited)
|
||||||
my_hash_reset(&do_table);
|
|
||||||
|
|
||||||
status= parse_filter_rule(table_spec, &Rpl_filter::add_do_table);
|
|
||||||
|
|
||||||
if (!do_table.records)
|
|
||||||
{
|
{
|
||||||
my_hash_free(&do_table);
|
my_hash_free(&do_table);
|
||||||
do_table_inited= 0;
|
do_table_inited= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
status= parse_filter_rule(table_spec, &Rpl_filter::add_do_table);
|
||||||
|
|
||||||
|
if (do_table_inited && status)
|
||||||
|
{
|
||||||
|
if (!do_table.records)
|
||||||
|
{
|
||||||
|
my_hash_free(&do_table);
|
||||||
|
do_table_inited= 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -369,16 +375,22 @@ Rpl_filter::set_ignore_table(const char* table_spec)
|
|||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (ignore_table_inited)
|
if (ignore_table_inited)
|
||||||
my_hash_reset(&ignore_table);
|
|
||||||
|
|
||||||
status= parse_filter_rule(table_spec, &Rpl_filter::add_ignore_table);
|
|
||||||
|
|
||||||
if (!ignore_table.records)
|
|
||||||
{
|
{
|
||||||
my_hash_free(&ignore_table);
|
my_hash_free(&ignore_table);
|
||||||
ignore_table_inited= 0;
|
ignore_table_inited= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
status= parse_filter_rule(table_spec, &Rpl_filter::add_ignore_table);
|
||||||
|
|
||||||
|
if (ignore_table_inited && status)
|
||||||
|
{
|
||||||
|
if (!ignore_table.records)
|
||||||
|
{
|
||||||
|
my_hash_free(&ignore_table);
|
||||||
|
ignore_table_inited= 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -411,14 +423,20 @@ Rpl_filter::set_wild_do_table(const char* table_spec)
|
|||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (wild_do_table_inited)
|
if (wild_do_table_inited)
|
||||||
|
{
|
||||||
free_string_array(&wild_do_table);
|
free_string_array(&wild_do_table);
|
||||||
|
wild_do_table_inited= 0;
|
||||||
|
}
|
||||||
|
|
||||||
status= parse_filter_rule(table_spec, &Rpl_filter::add_wild_do_table);
|
status= parse_filter_rule(table_spec, &Rpl_filter::add_wild_do_table);
|
||||||
|
|
||||||
if (!wild_do_table.elements)
|
if (wild_do_table_inited && status)
|
||||||
{
|
{
|
||||||
delete_dynamic(&wild_do_table);
|
if (!wild_do_table.elements)
|
||||||
wild_do_table_inited= 0;
|
{
|
||||||
|
delete_dynamic(&wild_do_table);
|
||||||
|
wild_do_table_inited= 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
@ -431,14 +449,20 @@ Rpl_filter::set_wild_ignore_table(const char* table_spec)
|
|||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (wild_ignore_table_inited)
|
if (wild_ignore_table_inited)
|
||||||
|
{
|
||||||
free_string_array(&wild_ignore_table);
|
free_string_array(&wild_ignore_table);
|
||||||
|
wild_ignore_table_inited= 0;
|
||||||
|
}
|
||||||
|
|
||||||
status= parse_filter_rule(table_spec, &Rpl_filter::add_wild_ignore_table);
|
status= parse_filter_rule(table_spec, &Rpl_filter::add_wild_ignore_table);
|
||||||
|
|
||||||
if (!wild_ignore_table.elements)
|
if (wild_ignore_table_inited && status)
|
||||||
{
|
{
|
||||||
delete_dynamic(&wild_ignore_table);
|
if (!wild_ignore_table.elements)
|
||||||
wild_ignore_table_inited= 0;
|
{
|
||||||
|
delete_dynamic(&wild_ignore_table);
|
||||||
|
wild_ignore_table_inited= 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
Reference in New Issue
Block a user