- Fix the synopsis for DBIC::Storage::DBI. ->datetime_parser returns a class,
[dbsrgits/DBIx-Class-Historic.git] / lib / DBIx / Class / Storage / DBI.pm
index 736bcc9..1030c4c 100644 (file)
@@ -19,7 +19,7 @@ use Sub::Name ();
 __PACKAGE__->mk_group_accessors('simple' =>
   qw/_connect_info _dbi_connect_info _dbh _sql_maker _sql_maker_opts _conn_pid
      _conn_tid transaction_depth _dbh_autocommit _driver_determined savepoints
-     _server_info/
+     __server_info/
 );
 
 # the values for these accessors are picked out (and deleted) from
@@ -93,7 +93,7 @@ DBIx::Class::Storage::DBI - DBI storage handler
   );
 
   $schema->resultset('Book')->search({
-     written_on => $schema->storage->datetime_parser(DateTime->now)
+     written_on => $schema->storage->datetime_parser->format_datetime(DateTime->now)
   });
 
 =head1 DESCRIPTION
@@ -921,7 +921,7 @@ sub _populate_dbh {
 
   $self->_run_connection_actions unless $self->{_in_determine_driver};
 
-  $self->_get_server_info;
+  $self->_populate_server_info;
 }
 
 sub _run_connection_actions {
@@ -934,17 +934,37 @@ sub _run_connection_actions {
   $self->_do_connection_actions(connect_call_ => $_) for @actions;
 }
 
-sub _get_server_info {
+sub _populate_server_info {
   my $self = shift;
   my %info;
 
-  $info{dbms_ver} = $self->_get_dbh->get_info(18);
+  my $dbms_ver = eval {
+      local $@;
+      $self->_get_dbh->get_info(18)
+  };
+
+  if (defined $dbms_ver) {
+    $info{dbms_ver} = $dbms_ver;
+
+    ($dbms_ver) = $dbms_ver =~ /^(\S+)/;
+
+    my @verparts = split /\./, $dbms_ver;
+    $info{dbms_ver_normalized} = sprintf "%d.%03d%03d", @verparts;
+  }
 
-  $self->_server_info(\%info);
+  $self->__server_info(\%info);
 
   return \%info;
 }
 
+sub _server_info {
+  my $self = shift;
+
+  $self->_get_dbh;
+
+  return $self->__server_info(@_);
+}
+
 sub _determine_driver {
   my ($self) = @_;