Port another forgotten MC fix
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / mysql.pm
CommitLineData
843f8ecd 1package DBIx::Class::Storage::DBI::mysql;
2
3use strict;
4use warnings;
5
4ce3b851 6use base qw/DBIx::Class::Storage::DBI::MultiColumnIn/;
843f8ecd 7
8# __PACKAGE__->load_components(qw/PK::Auto/);
9
e96a93df 10sub with_deferred_fk_checks {
11 my ($self, $sub) = @_;
12
13 $self->dbh->do('SET foreign_key_checks=0');
14 $sub->();
15 $self->dbh->do('SET foreign_key_checks=1');
16}
17
d4f16b21 18sub _dbh_last_insert_id {
19 my ($self, $dbh, $source, $col) = @_;
20 $dbh->{mysql_insertid};
843f8ecd 21}
22
e8d293df 23sub sqlt_type {
24 return 'MySQL';
25}
26
adb3554a 27sub _svp_begin {
eeb8cfeb 28 my ($self, $name) = @_;
adb3554a 29
eeb8cfeb 30 $self->dbh->do("SAVEPOINT $name");
adb3554a 31}
32
33sub _svp_release {
eeb8cfeb 34 my ($self, $name) = @_;
adb3554a 35
eeb8cfeb 36 $self->dbh->do("RELEASE SAVEPOINT $name");
adb3554a 37}
38
39sub _svp_rollback {
eeb8cfeb 40 my ($self, $name) = @_;
adb3554a 41
eeb8cfeb 42 $self->dbh->do("ROLLBACK TO SAVEPOINT $name")
adb3554a 43}
f797e89e 44
106d5f3b 45sub is_replicating {
f797e89e 46 my $status = shift->dbh->selectrow_hashref('show slave status');
47 return ($status->{Slave_IO_Running} eq 'Yes') && ($status->{Slave_SQL_Running} eq 'Yes');
106d5f3b 48}
49
50sub lag_behind_master {
f797e89e 51 return shift->dbh->selectrow_hashref('show slave status')->{Seconds_Behind_Master};
106d5f3b 52}
53
613f65e5 54# MySql can not do subquery update/deletes, only way is slow per-row operations.
ab807c12 55# This assumes you have set proper transaction isolation and use innodb.
613f65e5 56sub subq_update_delete {
57 return shift->_per_row_update_delete (@_);
58}
59
843f8ecd 601;
61
75d07914 62=head1 NAME
843f8ecd 63
64DBIx::Class::Storage::DBI::mysql - Automatic primary key class for MySQL
65
66=head1 SYNOPSIS
67
68 # In your table classes
69 __PACKAGE__->load_components(qw/PK::Auto Core/);
70 __PACKAGE__->set_primary_key('id');
71
72=head1 DESCRIPTION
73
74This class implements autoincrements for MySQL.
75
76=head1 AUTHORS
77
78Matt S. Trout <mst@shadowcatsystems.co.uk>
79
80=head1 LICENSE
81
82You may distribute this code under the same terms as Perl itself.
83
84=cut