| Bug #11139 | replicate-rewrite-db/replicate-do-table doesn't honour aliases | ||
|---|---|---|---|
| Submitted: | 7 Jun 2005 17:15 | Modified: | 30 Sep 2005 21:11 |
| Reporter: | Sergey Kostyliov | ||
| Status: | Closed | ||
| Category: | Server: Replication | Severity: | S3 (Non-critical) |
| Version: | mysql-4.1.12 | OS: | Linux (Gentoo Linux 2005.0 (ia32)) |
| Assigned to: | Bugs System | Target Version: | |
[28 Aug 2005 1:14]
Alexander Pachev
The problem is that tables_ok() gets improperly set up thd->lex->auxilliary_table_list - table->real_name points to table->alias. This in turn causes the rules to be applied to the alias instead of the real name. This can fixed quite easily, but I need to discuss my idea with other developers to make sure my fix does not break anything in their code, and if possible could correct other problems that step from this improper initialization, if there are any.
[14 Sep 2005 14:31]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/internals/29832
[25 Sep 2005 4:24]
Alexander Pachev
Fixed in versions 4.1.15 and 5.0.14.
[30 Sep 2005 21:11]
Paul DuBois
Noted in 4.1.15, 5.0.14 changelogs.

Description: Replication slave doesn't execute queries with aliases if replicate-rewrite-db/replicate-do-table options are in use. How to repeat: Part of slave's my.cnf ... replicate-rewrite-db = "from-\>to" replicate-do-table = to.a ... <master> mysql> \u from Database changed mysql> CREATE TABLE a (i INT); Query OK, 0 rows affected (0.03 sec) mysql> INSERT INTO a VALUES(1); Query OK, 1 row affected (0.00 sec) mysql> DELETE alias FROM a alias WHERE alias.i=1; Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM a; Empty set (0.01 sec) mysql> </master> <slave> mysql> \u to Database changed mysql> SELECT * FROM a; +------+ | i | +------+ | 1 | +------+ 1 row in set (0.00 sec) mysql> </slave> Suggested fix: Work around: Do not use aliases in non-select queries for the time being.