MySQL parsing fails if a table is defined more than once in the same file, if not...
Jaime Soriano Pastor [Mon, 14 Nov 2011 10:36:08 +0000 (11:36 +0100)]
Changes
lib/SQL/Translator/Parser/MySQL.pm

diff --git a/Changes b/Changes
index ee490e2..da96e37 100644 (file)
--- a/Changes
+++ b/Changes
@@ -11,6 +11,8 @@
   fix by not adding the ON DELETE/UPDATE clause at all
 * Changed dependency on Digest::SHA1 to the core-bundled Digest::SHA (RT#67989)
 * Support for double quoted and bit strings as default values in MySQL parser
+* Check in MySQL parser to avoid trying to parse a table defined twice in the same
+  file as indices (and probably other things) get messed up
 
 # ----------------------------------------------------------
 # 0.11010 2011-10-05
index 0da058b..f7f2a45 100644 (file)
@@ -247,6 +247,9 @@ create : CREATE /database/i WORD "$delimiter"
 create : CREATE TEMPORARY(?) TABLE opt_if_not_exists(?) table_name '(' create_definition(s /,/) /(,\s*)?\)/ table_option(s?) "$delimiter"
     {
         my $table_name                       = $item{'table_name'};
+        die "There is more than one definition for $table_name"
+            if ($tables{$table_name});
+
         $tables{ $table_name }{'order'}      = ++$table_order;
         $tables{ $table_name }{'table_name'} = $table_name;