[MDEV-17446] rpl_ignore_db is case sensitive while rpl_ignore_table is not case sensitive Created: 2018-10-14  Updated: 2022-02-22

Status: Open
Project: MariaDB Server
Component/s: Replication
Affects Version/s: 5.5
Fix Version/s: 5.5

Type: Bug Priority: Major
Reporter: Sachin Setiya (Inactive) Assignee: Andrei Elkin
Resolution: Unresolved Votes: 0
Labels: None
Environment:

All



 Description   

mdev-slave.opt

--replicate_ignore_db=IgNORE_Db --replicate_ignore_table=ignore_tABLe.TablE1

mdev.test

--source include/master-slave.inc
 
--connection master
 
 
--echo #replicate_ignore_db
create database ignore_db;
 
 
--echo #replicate_ignore_table
create database ignore_table;
use ignore_table;
create table table1(a char);
 
--sync_slave_with_master
show databases;
use ignore_table;
show tables;
 
--connection master
drop database ignore_db;
drop database ignore_table;
 
--source include/rpl_end.inc

mdev.result

include/master-slave.inc
[connection master]
#replicate_ignore_db
create database ignore_db;
#replicate_ignore_table
create database ignore_table;
use ignore_table;
create table table1(a char);
show databases;
Database
information_schema
ignore_db
ignore_table
mtr
mysql
performance_schema
test
use ignore_table;
show tables;
Tables_in_ignore_table
drop database ignore_db;
drop database ignore_table;
include/rpl_end.inc



 Comments   
Comment by Sachin Setiya (Inactive) [ 2018-10-14 ]

Actually this is because in Rpl_filter::db_ok we have used strcmp , while in tables_ok we use system_charset_info strcasecmp which is case case insensitive

Comment by Sachin Setiya (Inactive) [ 2018-10-14 ]

I am wondering if replication rewrite_db should also be case insensitive ?

Comment by Sachin Setiya (Inactive) [ 2018-10-14 ]

commit 05c2a72740e84f549f1fb8a866fd874965b93701
Author: Sachin <sachin.setiya@mariadb.com>
Date:   Sun Oct 14 16:41:32 2018 +0530
 
    MDEV-17446 rpl_ignore_db is case sensitive while rpl_ignore_table is not case sensitive
    
    Instead of using strcmp we use system_charset_info->strcasecmp
 
diff --git a/mysql-test/suite/rpl/r/rpl_replicate_do.result b/mysql-test/suite/rpl/r/rpl_replicate_do.result
index 6f85fc15b1e..08e62b94766 100644
--- a/mysql-test/suite/rpl/r/rpl_replicate_do.result
+++ b/mysql-test/suite/rpl/r/rpl_replicate_do.result
@@ -22,7 +22,7 @@ n
 select * from t11;
 ERROR 42S02: Table 'test.t11' doesn't exist
 drop table if exists t1,t2,t11;
-Replicate_Do_Table = 'test.t1'
+Replicate_Do_Table = 'TesT.T1'
 create table t1 (ts timestamp);
 set one_shot time_zone='met';
 insert into t1 values('2005-08-12 00:00:00');
diff --git a/mysql-test/suite/rpl/t/rpl_replicate_do-slave.opt b/mysql-test/suite/rpl/t/rpl_replicate_do-slave.opt
index da345474216..9612f0136cb 100644
--- a/mysql-test/suite/rpl/t/rpl_replicate_do-slave.opt
+++ b/mysql-test/suite/rpl/t/rpl_replicate_do-slave.opt
@@ -1 +1 @@
---replicate-do-table=test.t1
+--replicate-do-table=TesT.T1
diff --git a/mysql-test/suite/rpl/t/rpl_replicate_ignore_db-slave.opt b/mysql-test/suite/rpl/t/rpl_replicate_ignore_db-slave.opt
index 6e3aed44f78..b77e327694e 100644
--- a/mysql-test/suite/rpl/t/rpl_replicate_ignore_db-slave.opt
+++ b/mysql-test/suite/rpl/t/rpl_replicate_ignore_db-slave.opt
@@ -1 +1 @@
---replicate_ignore_db=mysqltest1
+--replicate_ignore_db=mysqLtest1
diff --git a/sql/rpl_filter.cc b/sql/rpl_filter.cc
index 6205c253ffc..6a54d598fd3 100644
--- a/sql/rpl_filter.cc
+++ b/sql/rpl_filter.cc
@@ -172,7 +172,7 @@ Rpl_filter::db_ok(const char* db)
 
     while ((tmp=it++))
     {
-      if (!strcmp(tmp->ptr, db))
+      if (!my_strcasecmp(system_charset_info, tmp->ptr, db))
 	DBUG_RETURN(1); // match
     }
     DBUG_PRINT("exit", ("Don't replicate"));
@@ -185,7 +185,7 @@ Rpl_filter::db_ok(const char* db)
 
     while ((tmp=it++))
     {
-      if (!strcmp(tmp->ptr, db))
+      if (!my_strcasecmp(system_charset_info, tmp->ptr, db))
       {
         DBUG_PRINT("exit", ("Don't replicate"));
 	DBUG_RETURN(0); // match

Comment by Sachin Setiya (Inactive) [ 2018-10-14 ]

May be I think replicate_do_db ///* should respect lower_case_table names

Generated at Thu Feb 08 08:36:31 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.