Introduce GOVERNANCE document and empty RESOLUTIONS file.
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / Replicated.pm
index 231b5a5..48642ec 100644 (file)
@@ -18,9 +18,8 @@ use DBIx::Class::Storage::DBI::Replicated::Types qw/BalancerClassNamePart DBICSc
 use MooseX::Types::Moose qw/ClassName HashRef Object/;
 use Scalar::Util 'reftype';
 use Hash::Merge;
-use List::Util qw/min max reduce/;
+use List::Util qw( min max );
 use Context::Preserve 'preserve_context';
-use Try::Tiny;
 
 use namespace::clean -except => 'meta';
 
@@ -311,6 +310,7 @@ my $method_dispatch = {
     _parse_connect_do
     savepoints
     _sql_maker_opts
+    _use_multicolumn_in
     _conn_pid
     _dbh_autocommit
     _native_data_type
@@ -332,6 +332,7 @@ my $method_dispatch = {
   unimplemented => [qw/
     _arm_global_destructor
     _verify_pid
+    __delicate_rollback
 
     get_use_dbms_capability
     set_use_dbms_capability
@@ -339,6 +340,9 @@ my $method_dispatch = {
     set_dbms_capability
     _dbh_details
     _dbh_get_info
+    _get_rdbms_name
+    _get_server_version
+    _server_info
 
     _determine_connector_driver
     _extract_driver_from_connect_info
@@ -367,12 +371,13 @@ my $method_dispatch = {
     # the capability framework
     # not sure if CMOP->initialize does evil things to DBIC::S::DBI, fix if a problem
     grep
-      { $_ =~ /^ _ (?: use | supports | determine_supports ) _ /x }
+      { $_ =~ /^ _ (?: use | supports | determine_supports ) _ /x and $_ ne '_use_multicolumn_in' }
       ( Class::MOP::Class->initialize('DBIx::Class::Storage::DBI')->get_all_method_names )
   )],
 };
 
-if (DBIx::Class::_ENV_::DBICTEST) {
+# this only happens during DBIC-internal testing
+if ( $INC{"t/lib/ANFANG.pm"} ) {
 
   my $seen;
   for my $type (keys %$method_dispatch) {
@@ -401,7 +406,10 @@ if (DBIx::Class::_ENV_::DBICTEST) {
 for my $method (@{$method_dispatch->{unimplemented}}) {
   __PACKAGE__->meta->add_method($method, sub {
     my $self = shift;
-    $self->throw_exception("$method() must not be called on ".(blessed $self).' objects');
+    $self->throw_exception(
+      "$method() may not be called on '@{[ blessed $self ]}' objects, "
+    . 'call it on a specific pool instance instead'
+    );
   });
 }
 
@@ -688,19 +696,13 @@ sub execute_reliably {
   my $self = shift;
   my $coderef = shift;
 
-  unless( ref $coderef eq 'CODE') {
-    $self->throw_exception('Second argument must be a coderef');
-  }
+  $self->throw_exception('Second argument must be a coderef')
+    unless( ref $coderef eq 'CODE');
 
   ## replace the current read handler for the remainder of the scope
   local $self->{read_handler} = $self->master;
 
-  my $args = \@_;
-  return try {
-    $coderef->(@$args);
-  } catch {
-    $self->throw_exception("coderef returned an error: $_");
-  };
+  &$coderef;
 }
 
 =head2 set_reliable_storage
@@ -1050,35 +1052,6 @@ sub _ping {
   return min map $_->_ping, $self->all_storages;
 }
 
-# not using the normalized_version, because we want to preserve
-# version numbers much longer than the conventional xxx.yyyzzz
-my $numify_ver = sub {
-  my $ver = shift;
-  my @numparts = split /\D+/, $ver;
-  my $format = '%d.' . (join '', ('%06d') x (@numparts - 1));
-
-  return sprintf $format, @numparts;
-};
-sub _server_info {
-  my $self = shift;
-
-  if (not $self->_dbh_details->{info}) {
-    $self->_dbh_details->{info} = (
-      reduce { $a->[0] < $b->[0] ? $a : $b }
-      map [ $numify_ver->($_->{dbms_version}), $_ ],
-      map $_->_server_info, $self->all_storages
-    )->[1];
-  }
-
-  return $self->next::method;
-}
-
-sub _get_server_version {
-  my $self = shift;
-
-  return $self->_server_info->{dbms_version};
-}
-
 =head1 GOTCHAS
 
 Due to the fact that replicants can lag behind a master, you must take care to