• Rohit Kalhans's avatar
    BUG#11758262 - 50439: MARK INSERT...SEL...ON DUP KEY UPD,REPLACE...SEL,CREATE...[IGN|REPL] SEL · b140784f
    Rohit Kalhans authored
    Problem: The following statements can cause the slave to go out of sync 
    if logged in statement format: 
    INSERT IGNORE...SELECT 
    INSERT ... SELECT ... ON DUPLICATE KEY UPDATE 
    REPLACE ... SELECT 
    UPDATE IGNORE :
    CREATE ... IGNORE SELECT 
    CREATE ... REPLACE SELECT  
               
    Background: Since the order of the rows returned by the SELECT 
    statement or otherwise may differ on master and slave, therefore
    the above statements may cuase the salve to go out of sync with
    the master. 
          
    Fix:
    Issue a warning when statements like the above are exectued and 
    the bin-logging format is statement. If the logging format is mixed,
    use row based logging. Marking a statement as unsafe has been 
    done in the sql/sql_parse.cc instead of sql/sql_yacc.cc, because while
    parsing for a token has been done we cannot be sure if the parsing
    of the other tokens has been done as well.
          
    Six new warning  messages has been added for each unsafe statement. 
          
    binlog.binlog_unsafe.test has been updated to incoporate these additional unsafe statments.
    
    
    ******
    BUG#11758262 - 50439: MARK INSERT...SEL...ON DUP KEY UPD,REPLACE...SEL,CREATE...[IGN|REPL] SEL 
    Problem: The following statements can cause the slave to go out of sync 
    if logged in statement format: 
    INSERT IGNORE...SELECT 
    INSERT ... SELECT ... ON DUPLICATE KEY UPDATE 
    REPLACE ... SELECT 
    UPDATE IGNORE :
    CREATE ... IGNORE SELECT 
    CREATE ... REPLACE SELECT  
               
    Background: Since the order of the rows returned by the SELECT 
    statement or otherwise may differ on master and slave, therefore
    the above statements may cuase the salve to go out of sync with
    the master. 
          
    Fix:
    Issue a warning when statements like the above are exectued and 
    the bin-logging format is statement. If the logging format is mixed,
    use row based logging. Marking a statement as unsafe has been 
    done in the sql/sql_parse.cc instead of sql/sql_yacc.cc, because while
    parsing for a token has been done we cannot be sure if the parsing
    of the other tokens has been done as well.
          
    Six new warning  messages has been added for each unsafe statement. 
          
    binlog.binlog_unsafe.test has been updated to incoporate these additional unsafe statments.
    b140784f
binlog_unsafe.result 186 KB