Bug #46505 | Forward Engineer SQL.CREATE SCRIPT... Incorrect syntax for Delimiters | ||
---|---|---|---|
Submitted: | 31 Jul 2009 23:11 | Modified: | 25 Nov 2009 14:48 |
Reporter: | R. Carty | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Workbench | Severity: | S2 (Serious) |
Version: | 5.1.16 | OS: | Any |
Assigned to: | Alexander Musienko | CPU Architecture: | Any |
Tags: | delimeters, forward engineer, generated, routines, scripts, syntax |
[31 Jul 2009 23:11]
R. Carty
[31 Jul 2009 23:17]
R. Carty
Sakila.sql script that was generated from Workbench OSS 5.1.16
Attachment: sakila.sql (application/octet-stream, text), 23.59 KiB.
[1 Aug 2009 7:03]
Valeriy Kravchuk
Thank you for the bug report. Verified just as described. Indeed, the code generated gives error while running, even in mysql command line client: mysql> DELIMITER // mysql> // ERROR: No query specified mysql> CREATE PROCEDURE `mydb`.`routine1` () -> BEGIN -> select 1; -> END// Query OK, 0 rows affected (0.00 sec) Also it would be nice to have configurable option for the DELIMITER used.
[10 Aug 2009 10:44]
Johannes Taxacher
the problem is the standalone // which raises the "no query specified" error it's not a problem from WB or command line because it doesn't do any harm, but it creates error message which - dependent on the number - can produce a lot of annoying "noise" in the output
[10 Nov 2009 14:19]
Susanne Ebrecht
Bug #47361 is set as duplicate of this bug here.
[11 Nov 2009 12:58]
Susanne Ebrecht
Bug #46904 is set as duplicate here.
[23 Nov 2009 18:41]
Johannes Taxacher
changed delimiter used for procedures to $$ fix will be included in 5.2.9
[25 Nov 2009 14:48]
Tony Bedford
An entry was added to the 5.2.9 changelog: The Forward Engineer SQL Script wizard did not generate correct delimiter syntax for routines. For example, it generated the following code: DELIMITER // // CREATE PROCEDURE `sakila`.`film_not_in_stock`(IN p_film_id INT, IN p_store_id INT, OUT p_film_count INT) READS SQL DATA BEGIN SELECT inventory_id FROM inventory WHERE film_id = p_film_id AND store_id = p_store_id AND NOT inventory_in_stock(inventory_id); SELECT FOUND_ROWS() INTO p_film_count; END // // This resulted in errors when an attempt was made to run the generated script on MySQL Server.