X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FSybase.pm;h=68ce2c1d8da80cf755e913f60554c5480f2b01d4;hb=928f0af8b6c9a6931b77ca475af33d54e9aa1836;hp=9eb7e01e3c08115f772d4618502b9900bbbfec31;hpb=8c4b6c50e873a2b5993d1bfe0f40763d994b7da4;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Sybase.pm b/lib/DBIx/Class/Storage/DBI/Sybase.pm index 9eb7e01..68ce2c1 100644 --- a/lib/DBIx/Class/Storage/DBI/Sybase.pm +++ b/lib/DBIx/Class/Storage/DBI/Sybase.pm @@ -12,7 +12,7 @@ use Carp::Clan qw/^DBIx::Class/; =head1 NAME -DBIx::Class::Storage::DBI::Sybase - Storage::DBI subclass for Sybase +DBIx::Class::Storage::DBI::Sybase - Sybase support for DBIx::Class =head1 SYNOPSIS @@ -35,9 +35,9 @@ You need a version of L compiled with the Sybase OpenClient libraries, B FreeTDS, for placeholder support. Otherwise your storage will be automatically reblessed into C<::NoBindVars>. -A recommended L settings: +A recommended L setting: - on_connect_call => [['datetime_setup'], [blob_setup => log_on_update => 0]] + on_connect_call => [['datetime_setup'], ['blob_setup', log_on_update => 0]] =head1 METHODS @@ -65,12 +65,6 @@ sub _rebless { } else { # real Sybase my $no_bind_vars = 'DBIx::Class::Storage::DBI::Sybase::NoBindVars'; - if (not $self->dbh->{syb_dynamic_supported}) { - $self->ensure_class_loaded($no_bind_vars); - bless $self, $no_bind_vars; - $self->_rebless; - } - if ($self->_using_freetds) { carp <<'EOF'; @@ -88,25 +82,22 @@ EOF bless $self, $no_bind_vars; $self->_rebless; } + + if (not $self->dbh->{syb_dynamic_supported}) { + $self->ensure_class_loaded($no_bind_vars); + bless $self, $no_bind_vars; + $self->_rebless; + } + $self->_set_maxConnect; } } } -{ - my $using_freetds = undef; - - sub _using_freetds { - my $self = shift; - my $dbh = $self->_dbh; - - return $using_freetds if defined $using_freetds; - - local $dbh->{syb_rowcount} = 1; # this is broken in freetds - $using_freetds = @{ $dbh->selectall_arrayref('sp_help') } != 1; +sub _using_freetds { + my $self = shift; - return $using_freetds; - } + return $self->_dbh->{syb_oc_version} =~ /freetds/i; } sub _set_maxConnect { @@ -128,7 +119,7 @@ sub _set_maxConnect { Used as: - on_connect_call => [ [ blob_setup => log_on_update => 0 ] ] + on_connect_call => [ [ 'blob_setup', log_on_update => 0 ] ] Does C<< $dbh->{syb_binary_images} = 1; >> to return C data as raw binary instead of as a hex string. @@ -163,11 +154,11 @@ sub _is_lob_type { ## need to use the API, but for now it isn't. # #sub order_columns_for_select { -# my ($self, $source) = @_; +# my ($self, $source, $columns) = @_; # # my (@non_blobs, @blobs); # -# for my $col ($source->columns) { +# for my $col (@$columns) { # if ($self->_is_lob_type($source->column_info($col)->{data_type})) { # push @blobs, $col; # } else {