Bug #61028 Synchronize problem when table name and routine name is similar
Submitted: 2 May 2011 18:32 Modified: 17 Nov 2011 16:26
Reporter: Istvan Borsanyi Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Workbench: Modeling Severity:S3 (Non-critical)
Version:5.2.33 7508 OS:Windows (Windows 7 x86 Ultimate)
Assigned to: CPU Architecture:Any
Tags: synchronize, synchronizing

[2 May 2011 18:32] Istvan Borsanyi
Description:
I have a table named "productsuggested" and I have a function for data manipulation named "ProductSuggestedEdit".

The wizard does not see differences between the edited and the original routine when I edited the model or the routine stored in the server.

I made a table named "proba" and a function named "ProbaEdit". Same effect.
The sync wizard does not pre-select the row in the differences window when I modified the code. Diff report does not see differences as well.

Similar bug: http://bugs.mysql.com/bug.php?id=60523
Maybe identical?

How to repeat:
Make a table and a routine with similar name.
[2 May 2011 18:44] Istvan Borsanyi
Link to a screenshot: http://img834.imageshack.us/i/syncwizard.jpg/
I modified the name of the routine.
Check the row at down below.
[7 Jun 2011 17:07] Armando Lopez Valencia
Hello Istvan.
Thanks for your report.
Can you please provide us with a drop of your source DB and a copy of your model?
[13 Jun 2011 15:49] Istvan Borsanyi
Try this  sample and the .mwb file. When you modify the procedure - e.g. add a new comment row - the synchronization will confused.

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

CREATE SCHEMA IF NOT EXISTS `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
USE `test` ;

-- -----------------------------------------------------
-- Table `test`.`proba`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `test`.`proba` (
  `idproba` INT(11) NOT NULL ,
  PRIMARY KEY (`idproba`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;

-- -----------------------------------------------------
-- procedure proba
-- -----------------------------------------------------

DELIMITER $$
USE `test`$$
CREATE DEFINER=`root`@`%` PROCEDURE `proba`()
BEGIN

#nothing
#nothing two

END

$$

DELIMITER ;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
[13 Jun 2011 15:53] Istvan Borsanyi
Confused sync

Attachment: 2011.06.13.jpg (image/jpeg, text), 141.93 KiB.

[13 Jun 2011 15:58] Istvan Borsanyi
Check the attached picture.
The difference between the model and the databse is the second comment row in the procedure.
The sync thinks the difference in the table not in the procedure. This is clearly visible when you see the icons at the front of the table and function name.
[14 Jun 2011 1:49] MySQL Verification Team
Thank you for the feedback.
[17 Nov 2011 16:26] Philip Olson
Fixed as of 5.2.37:

+        Database synchronization would sometimes confuse similar table and
+        routine names.