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