more dt docs reorg
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Sybase.pm
index 385ac30..f8b5004 100644 (file)
@@ -29,7 +29,7 @@ sub _rebless {
         bless $self, 'DBIx::Class::Storage:DBI::Sybase::NoBindVars';
         $self->_rebless;
       }
-      $self->_init_date_fmt;
+      $self->connect_call_datetime_setup;
     }
   }
 }
@@ -37,14 +37,33 @@ sub _rebless {
 sub _populate_dbh {
   my $self = shift;
   $self->next::method(@_);
-  $self->_init_date_fmt;
+  $self->connect_call_datetime_setup;
   1;
 }
 
 {
   my $old_dbd_warned = 0;
 
-  sub _init_date_fmt {
+=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
+
+  sub connect_call_datetime_setup {
     my $self = shift;
     my $dbh = $self->_dbh;
 
@@ -81,9 +100,11 @@ sub count {
   my $offset = $attrs->{offset} || 0;
   my $total  = $attrs->{rows} + $offset;
 
-  my $new_attrs = $self->_trim_attributes_for_count($source, $attrs);
-  $new_attrs->{select} = '1';
-  $new_attrs->{as}     = ['dummy'];
+  my $new_attrs = $self->_copy_attributes_for_count($source, $attrs);
+
+  my $first_pk = ($source->primary_columns)[0];
+
+  $new_attrs->{select} = $first_pk ? "me.$first_pk" : 1;
 
   my $tmp_rs = $source->resultset_class->new($source, $new_attrs);
 
@@ -97,7 +118,7 @@ sub count {
   return $count - $offset;
 }
 
-sub datetime_parser_type { "DBIx::Class::Storage::DBI::Sybase::DateTime" }
+sub datetime_parser_type { "DateTime::Format::Sybase" }
 
 1;
 
@@ -124,15 +145,8 @@ But your queries will be cached.
 
 =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>.
-
-This works for both C<DATETIME> and C<SMALLDATETIME> columns, although
-C<SMALLDATETIME> columns only have minute precision.
-
-You will need the L<DateTime::Format::Strptime> module if you are going to use
-L<DBIx::Class::InflateColumn::DateTime>.
+See L</connect_call_datetime_setup> to setup date formats
+for L<DBIx::Class::InflateColumn::DateTime>.
 
 =head1 AUTHORS