X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FProducer%2FMySQL.pm;h=904b294c3b1efd05e7bced91003712064c734ca2;hb=1868ddbee17731eb23de17472c429c6bbf13a037;hp=57d09dc03d2690dc1460a0a0599c3ecc1102290b;hpb=4d6f8a80c017422501b30941777ec14f91a7e10c;p=dbsrgits%2FSQL-Translator.git diff --git a/lib/SQL/Translator/Producer/MySQL.pm b/lib/SQL/Translator/Producer/MySQL.pm index 57d09dc..904b294 100644 --- a/lib/SQL/Translator/Producer/MySQL.pm +++ b/lib/SQL/Translator/Producer/MySQL.pm @@ -90,6 +90,7 @@ $DEBUG = 0 unless defined $DEBUG; # http://dev.mysql.com/doc/refman/5.0/en/identifiers.html my $DEFAULT_MAX_ID_LENGTH = 64; +use base qw(SQL::Translator::Producer); use Data::Dumper; use SQL::Translator::Schema::Constants; use SQL::Translator::Generator::DDL::MySQL; @@ -534,8 +535,7 @@ sub create_field my @size = $field->size; my %extra = $field->extra; my $list = $extra{'list'} || []; - # \todo deal with embedded quotes - my $commalist = join( ', ', map { qq['$_'] } @$list ); + my $commalist = join( ', ', map { __PACKAGE__->_quote_string($_) } @$list ); my $charset = $extra{'mysql_charset'}; my $collate = $extra{'mysql_collate'}; @@ -627,7 +627,7 @@ sub create_field } # Default? - SQL::Translator::Producer->_apply_default_value( + __PACKAGE__->_apply_default_value( $field, \$field_def, [ @@ -636,7 +636,8 @@ sub create_field ); if ( my $comments = $field->comments ) { - $field_def .= qq[ comment '$comments']; + $comments = __PACKAGE__->_quote_string($comments); + $field_def .= qq[ comment $comments]; } # auto_increment? @@ -645,6 +646,13 @@ sub create_field return $field_def; } +sub _quote_string { + my ($self, $string) = @_; + + $string =~ s/([\\'])/$1$1/g; + return qq{'$string'}; +} + sub alter_create_index { my ($index, $options) = @_;