From: Luis Soares Date: June 5 2009 9:10am Subject: bzr commit into mysql-5.1-bugteam branch (luis.soares:2917) Bug#42851 List-Archive: http://lists.mysql.com/commits/75681 X-Bug: 42851 Message-Id: <0KKR00HDVDGZ3780@fe-emea-09.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_P0/w/RRqXayTlOCCXKPozg)" --Boundary_(ID_P0/w/RRqXayTlOCCXKPozg) MIME-version: 1.0 Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Content-disposition: inline #At file:///home/lsoares/Workspace/mysql-server/bugfix/b42851/5.1-bt/ based on revid:zhenxing.he@stripped 2917 Luis Soares 2009-06-05 BUG#42851: Spurious "Statement is not safe to log in statement format." warnings Despite the fact that a statement would be filtered out from binlog, a warning would still be thrown if it was issued with the LIMIT. This patch addresses this issue by checking the filtering rules before printing out the warning. @ mysql-test/suite/binlog/t/limit_warning-master.opt Parameter to filter out database: "b42851". @ mysql-test/suite/binlog/t/limit_warning.test Added a new test case. @ sql/sql_class.cc Added filtering rules check to condition used to decide whether to printout warning or not. added: mysql-test/suite/binlog/r/limit_warning.result mysql-test/suite/binlog/t/limit_warning-master.opt mysql-test/suite/binlog/t/limit_warning.test modified: sql/sql_class.cc === added file 'mysql-test/suite/binlog/r/limit_warning.result' --- a/mysql-test/suite/binlog/r/limit_warning.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/binlog/r/limit_warning.result 2009-06-05 09:09:59 +0000 @@ -0,0 +1,30 @@ +### NOT filtered database => assertion: warnings ARE shown +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a int, b int, primary key (a)); +INSERT INTO t1 VALUES (1,2), (2,3); +UPDATE t1 SET b='4' WHERE a=1 LIMIT 1; +Warnings: +Note 1592 Statement may not be safe to log in statement format. +UPDATE t1 SET b='5' WHERE a=2 ORDER BY a LIMIT 1; +Warnings: +Note 1592 Statement may not be safe to log in statement format. +DROP TABLE t1; +### NOT filtered database => assertion: binlog disabled and warnings ARE NOT shown +SET SQL_LOG_BIN= 0; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a int, b int, primary key (a)); +INSERT INTO t1 VALUES (1,2), (2,3); +UPDATE t1 SET b='4' WHERE a=1 LIMIT 1; +UPDATE t1 SET b='5' WHERE a=2 ORDER BY a LIMIT 1; +DROP TABLE t1; +SET SQL_LOG_BIN= 1; +### FILTERED database => assertion: warnings ARE NOT shown +CREATE DATABASE b42851; +USE b42851; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a int, b int, primary key (a)); +INSERT INTO t1 VALUES (1,2), (2,3); +UPDATE t1 SET b='4' WHERE a=1 LIMIT 1; +UPDATE t1 SET b='5' WHERE a=2 ORDER BY a LIMIT 1; +DROP TABLE t1; +DROP DATABASE b42851; === added file 'mysql-test/suite/binlog/t/limit_warning-master.opt' --- a/mysql-test/suite/binlog/t/limit_warning-master.opt 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/binlog/t/limit_warning-master.opt 2009-06-05 09:09:59 +0000 @@ -0,0 +1 @@ +--binlog-ignore-db=b42851 === added file 'mysql-test/suite/binlog/t/limit_warning.test' --- a/mysql-test/suite/binlog/t/limit_warning.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/binlog/t/limit_warning.test 2009-06-05 09:09:59 +0000 @@ -0,0 +1,73 @@ +# BUG#42851: Spurious "Statement is not safe to log in statement +# format." warnings +# +# WHY +# === +# +# This test aims at checking that the fix that removes spurious +# entries in the error log when the statement is filtered out from +# binlog, is working. +# +# HOW +# === +# +# The test case is split into three assertions when issuing statements +# containing LIMIT and ORDER BY: +# +# i) issue statements in database that is not filtered => check +# that warnings ARE shown; +# +# ii) issue statements in database that is not filtered, but with +# binlog disabled => check that warnings ARE NOT shown; +# +# iii) issue statements in database that is filtered => check that +# warnings ARE NOT shown. + +-- source include/have_log_bin.inc +-- source include/have_binlog_format_statement.inc + +-- echo ### NOT filtered database => assertion: warnings ARE shown + +-- disable_warnings +DROP TABLE IF EXISTS t1; +-- enable_warnings + +CREATE TABLE t1 (a int, b int, primary key (a)); +INSERT INTO t1 VALUES (1,2), (2,3); +UPDATE t1 SET b='4' WHERE a=1 LIMIT 1; +UPDATE t1 SET b='5' WHERE a=2 ORDER BY a LIMIT 1; +DROP TABLE t1; + +-- echo ### NOT filtered database => assertion: binlog disabled and warnings ARE NOT shown + +SET SQL_LOG_BIN= 0; + +-- disable_warnings +DROP TABLE IF EXISTS t1; +-- enable_warnings + +CREATE TABLE t1 (a int, b int, primary key (a)); +INSERT INTO t1 VALUES (1,2), (2,3); +UPDATE t1 SET b='4' WHERE a=1 LIMIT 1; +UPDATE t1 SET b='5' WHERE a=2 ORDER BY a LIMIT 1; +DROP TABLE t1; + +SET SQL_LOG_BIN= 1; + +-- echo ### FILTERED database => assertion: warnings ARE NOT shown + +CREATE DATABASE b42851; +USE b42851; + +-- disable_warnings +DROP TABLE IF EXISTS t1; +-- enable_warnings + +CREATE TABLE t1 (a int, b int, primary key (a)); +INSERT INTO t1 VALUES (1,2), (2,3); +UPDATE t1 SET b='4' WHERE a=1 LIMIT 1; +UPDATE t1 SET b='5' WHERE a=2 ORDER BY a LIMIT 1; +DROP TABLE t1; + +# clean up +DROP DATABASE b42851; === modified file 'sql/sql_class.cc' --- a/sql/sql_class.cc 2009-05-30 13:32:28 +0000 +++ b/sql/sql_class.cc 2009-06-05 09:09:59 +0000 @@ -27,6 +27,7 @@ #include "mysql_priv.h" #include "rpl_rli.h" +#include "rpl_filter.h" #include "rpl_record.h" #include "slave.h" #include @@ -3683,7 +3684,8 @@ int THD::binlog_query(THD::enum_binlog_q we should print a warning. */ if (sql_log_bin_toplevel && lex->is_stmt_unsafe() && - variables.binlog_format == BINLOG_FORMAT_STMT) + variables.binlog_format == BINLOG_FORMAT_STMT && + binlog_filter->db_ok(this->db)) { /* A warning can be elevated a error when STRICT sql mode. --Boundary_(ID_P0/w/RRqXayTlOCCXKPozg) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name="bzr/luis.soares@stripped" Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/luis.soares@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: luis.soares@stripped # target_branch: file:///home/lsoares/Workspace/mysql-\ # server/bugfix/b42851/5.1-bt/ # testament_sha1: a23b886c3771c69322f5ef49554c253fece83d7a # timestamp: 2009-06-05 10:10:03 +0100 # base_revision_id: zhenxing.he@stripped\ # 2m1rtj0b2nsw3pww # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWf/ohUAABanfgHTwWef//3/n /+C////wYAtOfX292vvuHT2zRtrPonDYc6lDkpTtnTRToeGpqNJoNGmjQAABoGmmgAaAAAASkQ2o aGjSnk1Q9R5qnqemoaekAADTagAGgIpk9EaJiA0DIAAAAAAAAAEiKaBMSntKbRpopoeI2oT1PU0H qD0gekaD1BmoEUkxSek0/VT0jyg9IaNBoA09NQ0YgPKNPUAARSEAmg0JggGplPKbIibQjQ0PUNNA 0yeokBd6YBwRhOHIjOR5qMoku4BIJHqGiSUOg9BSemEKNNZHy/8vTGnVPkPb/FpN/fYT+Xdqk58T k1yKVuieFN64ICW54oNz3NWr+npTKmtjKXQLhJo5bSKMIEtq2kpaJdfrIpV2der8OKHlAJubiGIW Q5Gq65+NPiPqLaLwE+hHJwNNri5zvRzUsHtfqrMgVhx0I2wWeSNyVK7PSMo63KhtT1LpOQ5RmyHb HdTIkR9sVQqPcONYNoY9ZmGwYHsKx+sG/r8xw13A+ssaG4S2FAk4jgRyn5dab7aKVHordkM9tFZ7 RhKizedMkxWYIvdK9GoHVLvfXJ5hmF9diwB2m4XeK25jTKv3sYf70jpD87iZeGaRaFWMZyUqwpmG 2Y31kmJtzTY3rLjSFMrYWNog/cTD5BMtp78gNmQpfVxkMmE6ZEQjICChoogCoKlODpyEEoEBCx0z CUV698K3G7rLFdNdQzVUJssoYgF11VjlgEBoAx25cE7AIiBjEQHwFPQiAggZyiIj8CPsnrjeOQ2g zQb/TZtfXyHkNQ8hgezpHjKQ7hrHzU1g9h1sFewIOTDIGexh+jqA7/HDH06O/liZTg1vszMrXDEo D83pbeFbq52UzeVmQ3oF0wrnMm0RhOxLAr8CHZ1VB+YqtNZaY/By6EoZLfS6uxbYAUqFXQhTAJkE 0IBNZKgDIGVTQHgVnBK67z9GwoexGDN04WJoGHxGQhSv4j3X6R5aAI/DsxDI5l6OmCpnF01qbU9G HGg8kck5wJQyTBNitFI53XxXgWsrzhbHoiBwwIhENEDNSLzgO0INhAeVuMONxM4jT6x5DXNBvcOT hxKYSNhBsoVhbvrEsLwKzPVlNfEmbz7yV77WpuoeHiBwLKteM9owIa00tSeJRRG8ZxUhVNKOHDRV 8GA/UlRgMNJs0Q8XOD87fz+4ejJIAy7zQfSQNRf1ZYFIqI1FUHhO+TamJWUJn/TqPPlexv38fSNo 6n7qzoB2ZzfmOmD0YHwsD5aHuKSMMTgWd1UgOot4G1W0gu0kyhu7aGFmmsxqMAQy4qaobM8D42Xa sAk5CoqNF6gTImIo9+Nhaa9WYFcWTBXqtlA8eW5QcrCEJJyWw1uEsJjQg2HEtJGk93F7zYhjv2ZX 6OBPOcjgZzkiiCuItVhJRAnLiJMQMwTeAYlbGXUXSAKiUZAg0mVeqs486ZsthpK8jAdSsKGs0YW1 GJcYjMzLsBduZOR5xXw1oi6clh4q9NSlFJkTUNGOdFrsJWEvIElCaBiBhDeO9oLXSQ34eA/sHQ62 rbBrc5DkbMQYEPaC5QVxygp5/aHzbom6anfagpNOkmZBgvqEj3C0IOYPwD1gMF/npLjiGDbX8h4B dAg3QBdQBkB3AtSzVsfobhkMA6RhuG4GBkBOCy/kGhUf4MAF4/sYLTOZNYM4gdZtC5UsMx+Q9AtB CYt4eOY2j8g5bKC5QlokA5iY4pULUue8TXqFyB4bA3LRdIyBh+QEie4WQOcbayILx0BiAa9Qycj8 TooDrHMEoBziSwC0QgE2GrEYGdMYqHoJizG1oUFwvHRLvRYGfs5Q7kQ2QLmPQEEMDzVT2vhU34Eo QjgHGvMMEDUTNu+g4jjMAP+mYRLNh9/D7ecXxwlQkwmhZ3o6y/CNJ4JVdvRqA4LA6RbvigGcsMtw csMR1UxLRMUEShZLxCbONWGZM7NRrxvuPV16D1nIWKmYkUBvKCcC49xOcw4UKxnh6Gh6/YdHM4LB DRes96MzO8iRDnOAwuJtxeSG0UwGlJoIhoGbT5z66919Ij0MWNINyUraV4IFGzcDlsL26HvgCIkR 1R1hvsFJmGJgZFqdIeI+pjxJSksHNFBICHPFmo7Y48D7CL+N8Go1Gw6zPsLY3JMdU/PkdU/aPlw0 SOIbJHYVzJ1MTbqaQpdqwvttKiYVbPfkdZ0mYxOINdxaz7PEyGFI02C67cOUMuQRxiF2DAXfIloD kSRo7CzJniHJyqHeVTgkEuMjVxliRTdL8uFSs7zB1qTDSzmEwKBVEAZtshMYOlt6iiwFuk7M1U5l Edv8c6TwBlEmyef8aKca0Mhrv4dQdx0s+N7M18z4fOdpzD2FiSZmKcPyD0+cPg4j6kA9m40/DtOC uxnv8IJZfv6rcEmk20wBmxpeMFIa+CEg91vQW5731xGtMxJ5xDlB6hi+x2BqoLqLgqlFZFHquQmc UIy+UdgM/TvdtXFXClZxsTXZ/zVV3vFAtgW4ZHqj01oe7efpM9q7dGsvwPprKMR6gxJYYCV4Kxvt 34VceDYmgdawqPlYNtuEO4e9Sg6496PRWnaWU0g7sQuxav1epXYfV1j52aB7Voa+15Of8w0sJssT YfbahWwByGqGoj6PNtje+CIu122eRakNGpilemglpXiyXhkZCYT2Hw3HAhAk7jAftfEmhkax+pXo cfC6qBenRnz/TfZencY3+96fQrNT4DXmhlhJIwpTkgVT9wEDQhCrkGho2JMMLQnJRugUviygQL0a LnFVnCrxFgJomCE22CazUBZXO9MCJ2R7OaMtz69gJzochDEQjhKWNF95GvQuj2b5IeFHZUv9SVGs yMW4LdmI5ofDyeu4DbZcnPn3DOHLgCOQiJVpR8GXtSxUeJylliMHmZT1SxIclhMCcbeq47ecPbAH uAmBKiy8dhMohys2WCPu73b0VB0Qz62y+6ekZkGLj5EIbbVA5WNvMvvHpy8/JtEfWsYDURiJm9GO qEyuEHR8UkFFEWMUN5wS6kkjdWDaVSIFig3hWloN/OYFkkyStCxSQWjwRoaU3xZbQ1dhSqbXRxSx IWMBhG0cICVElcuYbStrf/IFWp9oEXRDbkQRqkqIMKpYwdR54oMpFPRttkFhUSsS0L68io0AhyOZ r3Yd2BeHkBK91IyEpzBoPiEDTQVtkOVVSt+UTYg5SU1PINJNlMCVpcXNAOWFwxng9dt4tM5+GYnj KtAKVWAzMDnBgsgbZBTz0tg/GSMkvKz5pgmEUMmGcJwDjpA45wfB6dtAPv3mxw1edim0DvB7UJ8K gNjn98gNnp7CUCwQwHXCYtxoZpoEhvN7t7QeNgZW6kJEDx5L3G4l75kt/M69KRZoTzxfL54K+o0Z fxdyRThQkP/ohUA= --Boundary_(ID_P0/w/RRqXayTlOCCXKPozg)--