Changeset 210
- Timestamp:
- 05/23/06 18:58:57 (4 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 4 modified
-
lib/Data/ObjectDriver/Driver/DBD.pm (modified) (1 diff)
-
lib/Data/ObjectDriver/Driver/DBD/SQLite.pm (modified) (2 diffs)
-
lib/Data/ObjectDriver/Driver/DBD/mysql.pm (modified) (1 diff)
-
lib/Data/ObjectDriver/Driver/DBI.pm (modified) (2 diffs)
-
lib/Data/ObjectDriver/Errors.pm (added)
-
t/06-errors.t (added)
-
t/lib/ErrorTest.pm (added)
-
t/schemas/error_test.sql (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/Data/ObjectDriver/Driver/DBD.pm
r169 r210 21 21 sub fetch_id { } 22 22 sub offset_implemented { 1 } 23 sub map_error_code { } 23 24 24 25 1; -
trunk/lib/Data/ObjectDriver/Driver/DBD/SQLite.pm
r169 r210 4 4 use strict; 5 5 use warnings; 6 use base qw( Data::ObjectDriver::Driver::DBD ); 6 7 7 use base qw( Data::ObjectDriver::Driver::DBD );8 use Data::ObjectDriver::Errors; 8 9 9 10 sub fetch_id { $_[2]->func('last_insert_rowid') } … … 19 20 } 20 21 return; 22 } 23 24 sub map_error_code { 25 my $dbd = shift; 26 my($code, $msg) = @_; 27 if ($msg && $msg =~ /not unique/) { 28 return Data::ObjectDriver::Errors->UNIQUE_CONSTRAINT; 29 } else { 30 return undef; 31 } 21 32 } 22 33 -
trunk/lib/Data/ObjectDriver/Driver/DBD/mysql.pm
r169 r210 4 4 use strict; 5 5 use warnings; 6 7 6 use base qw( Data::ObjectDriver::Driver::DBD ); 8 7 9 8 use Carp qw( croak ); 9 use Data::ObjectDriver::Errors; 10 11 use constant ERROR_MAP => { 12 1062 => Data::ObjectDriver::Errors->UNIQUE_CONSTRAINT, 13 }; 10 14 11 15 sub fetch_id { $_[3]->{mysql_insertid} || $_[3]->{insertid} } 12 16 17 sub map_error_code { 18 my $dbd = shift; 19 my($code, $msg) = @_; 20 return ERROR_MAP->{$code}; 21 } 22 13 23 1; -
trunk/lib/Data/ObjectDriver/Driver/DBI.pm
r209 r210 9 9 use DBI; 10 10 use Carp (); 11 use Data::ObjectDriver::Errors; 11 12 use Data::ObjectDriver::SQL; 12 13 use Data::ObjectDriver::Driver::DBD; … … 518 519 } 519 520 521 sub last_error { 522 my $driver = shift; 523 return $driver->dbd->map_error_code($DBI::err, $DBI::errstr); 524 } 525 520 526 1;
