bless $self, 'DBIx::Class::Storage:DBI::Sybase::NoBindVars';
$self->_rebless;
}
- $self->_init_date_fmt;
+ $self->connect_call_datetime_setup;
+ $self->connect_call_blob_setup;
}
}
}
sub _populate_dbh {
my $self = shift;
$self->next::method(@_);
- $self->_init_date_fmt;
+ $self->connect_call_datetime_setup;
+ $self->connect_call_blob_setup;
1;
}
+=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
+
+Used as:
+
+ on_connect_call => 'datetime_setup'
+
+In L<DBIx::Class::Storage::DBI/connect_info> to set:
+
+ $dbh->syb_date_fmt('ISO_strict'); # output fmt: 2004-08-21T14:36:48.080Z
+ $dbh->do('set dateformat mdy'); # input fmt: 08/13/1979 18:08:55.080
+
+On connection for use with L<DBIx::Class::InflateColumn::DateTime>, using
+L<DateTime::Format::Sybase>, which you will need to install.
+
+This works for both C<DATETIME> and C<SMALLDATETIME> columns, although
+C<SMALLDATETIME> columns only have minute precision.
+
+=cut
+
{
my $old_dbd_warned = 0;
- sub _init_date_fmt {
+ sub connect_call_datetime_setup {
my $self = shift;
my $dbh = $self->_dbh;
}
}
+sub datetime_parser_type { "DateTime::Format::Sybase" }
+
sub _dbh_last_insert_id {
my ($self, $dbh, $source, $col) = @_;
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) = @_;
return $count - $offset;
}
-sub datetime_parser_type { "DBIx::Class::Storage::DBI::Sybase::DateTime" }
-
1;
=head1 NAME
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
-On connection C<syb_date_fmt> is set to C<ISO_strict>, e.g.:
-C<2004-08-21T14:36:48.080Z> and C<dateformat> is set to C<mdy>, e.g.:
-C<08/13/1979 18:08:55.080>.
+See L</connect_call_datetime_setup> to setup date formats
+for L<DBIx::Class::InflateColumn::DateTime>.
-This works for both C<DATETIME> and C<SMALLDATETIME> columns, although
-C<SMALLDATETIME> columns only have minute precision.
+=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.
-You will need the L<DateTime::Format::Strptime> module if you are going to use
-L<DBIx::Class::InflateColumn::DateTime>.
+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