X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FParser%2FMySQL.pm;h=b521914b5e24f633f978d680f2a599ea0fe192c1;hb=2c098ea52043fbe391283b71c1f4a74e65a29ed0;hp=38b062bfd4cd7b8e1d7d48520607d2d60a7273ef;hpb=02e19bc248d882b57e8fead3e68f81ccf7718c67;p=dbsrgits%2FSQL-Translator.git diff --git a/lib/SQL/Translator/Parser/MySQL.pm b/lib/SQL/Translator/Parser/MySQL.pm index 38b062b..b521914 100644 --- a/lib/SQL/Translator/Parser/MySQL.pm +++ b/lib/SQL/Translator/Parser/MySQL.pm @@ -641,39 +641,41 @@ foreign_key_def_begin : /constraint/i /foreign key/i WORD /foreign key/i { $return = '' } -primary_key_def : primary_key index_name(?) '(' name_with_opt_paren(s /,/) ')' +primary_key_def : primary_key index_name_not_using(?) index_type(?) '(' name_with_opt_paren(s /,/) ')' index_type(?) { $return = { supertype => 'constraint', - name => $item{'index_name(?)'}[0], + name => $item[2][0], type => 'primary_key', - fields => $item[4], + fields => $item[5], + options => $item[3][0] || $item[7][0], }; } -unique_key_def : UNIQUE KEY(?) index_name(?) '(' name_with_opt_paren(s /,/) ')' +unique_key_def : UNIQUE KEY(?) index_name_not_using(?) index_type(?) '(' name_with_opt_paren(s /,/) ')' index_type(?) { $return = { supertype => 'constraint', - name => $item{'index_name(?)'}[0], + name => $item[3][0], type => 'unique', - fields => $item[5], + fields => $item[6], + options => $item[4][0] || $item[8][0], } } -normal_index : KEY index_name_not_using(?) index_type(?) '(' name_with_opt_paren(s /,/) ')' +normal_index : KEY index_name_not_using(?) index_type(?) '(' name_with_opt_paren(s /,/) ')' index_type(?) { $return = { supertype => 'index', type => 'normal', name => $item[2][0], fields => $item[5], - options => $item[3][0], - } + options => $item[3][0] || $item[7][0], + } } index_name_not_using : QUOTED_NAME - | /(\b(?!using)\w+\b)/ { $return = $1 } + | /(\b(?!using)\w+\b)/ { $return = ($1 =~ /^using/i) ? undef : $1 } index_type : /using (btree|hash|rtree)/i { $return = uc $1 } @@ -940,14 +942,13 @@ sub parse { sql => $result->{procedures}->{$proc_name}->{sql}, ); } - my @views = sort { $result->{views}->{ $a }->{'order'} <=> $result->{views}->{ $b }->{'order'} } keys %{ $result->{views} }; - for my $view_name ( keys %{ $result->{'views'} } ) { + for my $view_name ( @views ) { $schema->add_view( name => $view_name, sql => $result->{'views'}->{$view_name}->{sql},