minor changes
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Sybase.pm
index f8b5004..d92a60e 100644 (file)
@@ -30,6 +30,7 @@ sub _rebless {
         $self->_rebless;
       }
       $self->connect_call_datetime_setup;
+      $self->connect_call_blob_setup;
     }
   }
 }
@@ -38,11 +39,28 @@ sub _populate_dbh {
   my $self = shift;
   $self->next::method(@_);
   $self->connect_call_datetime_setup;
+  $self->connect_call_blob_setup;
   1;
 }
 
-{
-  my $old_dbd_warned = 0;
+=head2 connect_call_blob_setup
+
+Used as:
+
+  on_connect_call => 'blob_setup'
+
+Does C<< $dbh->{syb_binary_images} = 1; >> to return C<IMAGE> data as raw binary
+instead of as a hex string.
+
+Recommended.
+
+=cut
+
+sub connect_call_blob_setup {
+  my $self = shift;
+  my $dbh = $self->_dbh;
+  $dbh->{syb_binary_images} = 1;
+}
 
 =head2 connect_call_datetime_setup
 
@@ -63,6 +81,9 @@ C<SMALLDATETIME> columns only have minute precision.
 
 =cut
 
+{
+  my $old_dbd_warned = 0;
+
   sub connect_call_datetime_setup {
     my $self = shift;
     my $dbh = $self->_dbh;
@@ -81,6 +102,8 @@ C<SMALLDATETIME> columns only have minute precision.
   }
 }
 
+sub datetime_parser_type { "DateTime::Format::Sybase" }
+
 sub _dbh_last_insert_id {
   my ($self, $dbh, $source, $col) = @_;
 
@@ -89,6 +112,15 @@ sub _dbh_last_insert_id {
   return ($dbh->selectrow_array($sth))[0];
 }
 
+=head2 count
+
+Counts for limited queries are emulated by executing select queries and
+returning the number of successful executions minus the offset.
+
+This is necessary due to the limitations of Sybase.
+
+=cut
+
 sub count {
   my $self = shift;
   my ($source, $attrs) = @_;
@@ -118,8 +150,6 @@ sub count {
   return $count - $offset;
 }
 
-sub datetime_parser_type { "DateTime::Format::Sybase" }
-
 1;
 
 =head1 NAME
@@ -143,11 +173,23 @@ without doing a C<select max(col)>.
 
 But your queries will be cached.
 
+A recommended L<DBIx::Class::Storage::DBI/connect_info> setting:
+
+  on_connect_call => [qw/datetime_setup blob_setup/]
+
 =head1 DATES
 
 See L</connect_call_datetime_setup> to setup date formats
 for L<DBIx::Class::InflateColumn::DateTime>.
 
+=head1 IMAGE AND TEXT COLUMNS
+
+See L</connect_call_blob_setup> for a L<DBIx::Class::Storage::DBI/connect_info>
+setting you need to work with C<IMAGE> columns.
+
+Due to limitations in L<DBD::Sybase> and this driver, it is only possible to
+select one C<TEXT> or C<IMAGE> column at a time.
+
 =head1 AUTHORS
 
 See L<DBIx::Class/CONTRIBUTORS>.