X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FSybase%2FBase.pm;h=757d4d9a686279974d24d72cf3e03b31e06d4d4a;hb=9ae966b90f1220796b4fef69a97e7c4fb360d6bc;hp=29265fbde1ab2914617a4a6f5b7837eebd97d7e3;hpb=d7ffa0cef0cf0ed4bca219d37b6fa0707b87813d;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Sybase/Base.pm b/lib/DBIx/Class/Storage/DBI/Sybase/Base.pm index 29265fb..757d4d9 100644 --- a/lib/DBIx/Class/Storage/DBI/Sybase/Base.pm +++ b/lib/DBIx/Class/Storage/DBI/Sybase/Base.pm @@ -1,31 +1,23 @@ -package DBIx::Class::Storage::DBI::Sybase::Base; +package # hide from PAUSE + DBIx::Class::Storage::DBI::Sybase::Base; use strict; use warnings; +use base qw/DBIx::Class::Storage::DBI/; +use mro 'c3'; + =head1 NAME DBIx::Class::Storage::DBI::Sybase::Base - Common functionality for drivers using DBD::Sybase -=head1 METHODS - -=head2 connected - -Returns true if we have an open (and working) database connection, false if it -is not (yet) open (or does not work). (Executes a simple SELECT to make sure it -works.) - -The reason this is needed is that L's ping() does not work with an -active statement handle, leading to masked database errors. - =cut -sub connected { +sub _ping { my $self = shift; my $dbh = $self->_dbh or return 0; - $dbh->FETCH('Active') or return 0; local $dbh->{RaiseError} = 1; eval { @@ -35,6 +27,20 @@ sub connected { return $@ ? 0 : 1; } +sub _placeholders_supported { + my $self = shift; + my $dbh = $self->_get_dbh; + + return eval { +# There's also $dbh->{syb_dynamic_supported} but it can be inaccurate for this +# purpose. + local $dbh->{PrintError} = 0; + local $dbh->{RaiseError} = 1; +# this specifically tests a bind that is NOT a string + $dbh->selectrow_array('select 1 where 1 = ?', {}, 1); + }; +} + 1; =head1 AUTHORS