1 package # Hide from PAUSE
2 DBIx::Class::SQLMaker::MySQL;
4 use base qw( DBIx::Class::SQLMaker );
5 use Carp::Clan qw/^DBIx::Class|^SQL::Abstract/;
8 # MySQL does not understand the standard INSERT INTO $table DEFAULT VALUES
9 # Adjust SQL here instead
15 $table = $self->_quote($table);
17 if (! $_[1] or (ref $_[1] eq 'HASH' and !keys %{$_[1]} ) ) {
18 return "INSERT INTO ${table} () VALUES ()"
21 return $self->SUPER::insert (@_);
25 my ($self, $table, $data, $cols) = @_;
28 'INSERT INTO %s ( ', $self->_quote($table),
30 $sql .= join( ', ', map { $self->_quote($_) } @$cols );
35 foreach my $datum ( @$data ) {
37 . join( ', ', ('?') x @$datum )
39 push @bind, map { [ dummy => $_ ] } @$datum;
43 $sql . join(',', @sql),
48 # Allow STRAIGHT_JOIN's
49 sub _generate_join_clause {
50 my ($self, $join_type) = @_;
52 if( $join_type && $join_type =~ /^STRAIGHT\z/i ) {
53 return ' STRAIGHT_JOIN '
56 return $self->SUPER::_generate_join_clause( $join_type );
61 update => 'FOR UPDATE',
62 shared => 'LOCK IN SHARE MODE'
66 my ($self, $type) = @_;
68 my $sql = $for_syntax->{$type} || croak "Unknown SELECT .. FOR type '$type' requested";