From: Peter Rabbitson Date: Sun, 20 Sep 2009 22:46:32 +0000 (+0000) Subject: Missed a part of the revert X-Git-Tag: v0.08112~4 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=4966150b1bdbce28121dc5d2d06de2bd6601e265;p=dbsrgits%2FDBIx-Class.git Missed a part of the revert --- diff --git a/lib/DBIx/Class/Storage/DBI/Sybase/Base.pm b/lib/DBIx/Class/Storage/DBI/Sybase/Base.pm new file mode 100644 index 0000000..757d4d9 --- /dev/null +++ b/lib/DBIx/Class/Storage/DBI/Sybase/Base.pm @@ -0,0 +1,54 @@ +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 + +=cut + +sub _ping { + my $self = shift; + + my $dbh = $self->_dbh or return 0; + + local $dbh->{RaiseError} = 1; + eval { + $dbh->do('select 1'); + }; + + 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 + +See L. + +=head1 LICENSE + +You may distribute this code under the same terms as Perl itself. + +=cut diff --git a/lib/DBIx/Class/Storage/DBI/Sybase/Microsoft_SQL_Server.pm b/lib/DBIx/Class/Storage/DBI/Sybase/Microsoft_SQL_Server.pm index 08b1807..47678e3 100644 --- a/lib/DBIx/Class/Storage/DBI/Sybase/Microsoft_SQL_Server.pm +++ b/lib/DBIx/Class/Storage/DBI/Sybase/Microsoft_SQL_Server.pm @@ -18,8 +18,17 @@ sub _rebless { 'DBIx::Class::Storage::DBI::Sybase::Microsoft_SQL_Server::NoBindVars'; $self->_rebless; } + +# LongReadLen doesn't work with MSSQL through DBD::Sybase, and the default is +# huge on some versions of SQL server and can cause memory problems, so we +# fix it up here. + my $text_size = eval { $self->_dbi_connect_info->[-1]->{LongReadLen} } || + 32768; # the DBD::Sybase default + + $dbh->do("set textsize $text_size"); } + 1; =head1 NAME