Take a copy instead of weakening in 5.8 leak workaround
[dbsrgits/DBIx-Class.git] / t / sqlmaker / mysql.t
index 6fb1526..7307363 100644 (file)
@@ -6,7 +6,7 @@ use Test::More;
 use lib qw(t/lib);
 use DBICTest ':DiffSQL';
 
-my $schema = DBICTest::Schema->connect (DBICTest->_database, { quote_char => '`' });
+my $schema = DBICTest->connect_schema (DBICTest->_database, { quote_char => '`' });
 # cheat
 require DBIx::Class::Storage::DBI::mysql;
 *DBIx::Class::Storage::DBI::mysql::_get_server_version = sub { 5 };
@@ -126,13 +126,18 @@ for (
 ) {
   my ($ver, $join_op) = @$_;
 
-  no warnings 'redefine';
-  local *DBIx::Class::Storage::DBI::mysql::_get_server_version = sub { $ver };
-
   # we do not care at this point if data is available, just do a reconnect cycle
-  # to clear all caches
-  $schema->storage->disconnect;
-  $schema->storage->ensure_connected;
+  # to clear the server version cache and then get a new maker
+  {
+    $schema->storage->disconnect;
+    $schema->storage->_sql_maker(undef);
+
+    no warnings 'redefine';
+    local *DBIx::Class::Storage::DBI::mysql::_get_server_version = sub { $ver };
+
+    $schema->storage->ensure_connected;
+    $schema->storage->sql_maker;
+  }
 
   is_same_sql_bind (
     $schema->resultset('CD')->search ({}, { prefetch => 'artist' })->as_query,