1package Data::Model::Driver::DBI::DBD::mysql; 2use strict; 3use warnings; 4use base 'Data::Model::Driver::DBI::DBD'; 5 6sub fetch_last_id { $_[3]->{mysql_insertid} || $_[3]->{insertid} } 7 8sub _as_sql_inner_index { 9 my($self, $c, $index) = @_; 10 return () unless @{ $index }; 11 12 my @sql = (); 13 for my $data (@{ $index }) { 14 my($name, $columns) = @{ $data }; 15 push(@sql, "INDEX $name (" . join(', ', @{ $columns }) . ')'); 16 } 17 return @sql; 18} 19 20sub has_support { 21 exists { 22 on_duplicate_key_update => 1, 23 }->{$_[1]}; 24} 25 26sub _as_sql_index { '' } 27 28sub _as_sql_column_type { 29 my($self, $c, $column, $args) = @_; 30 my $type = uc($args->{type}); 31 if ($type eq 'BINARY' || $type eq 'VARBINARY') { 32 $args->{options}->{binary} = 0; 33 my $size = $args->{options}->{size} || 0; 34 $size = 0 unless $size =~ /^\d+$/; 35 return "$type($size)"; 36 } 37 return; 38} 39 40sub _as_sql_get_table_attributes { 41 my($self, $c, $attributes) = @_; 42 return '' unless $attributes->{mysql}; 43 return $attributes->{mysql}; 44} 45 461; 47 48