Prevent DBD::Firebird and DBD::InterBase from colliding on same DSN
Peter Rabbitson [Thu, 29 Aug 2013 01:40:52 +0000 (03:40 +0200)]
t/lib/DBICTest/Schema.pm

index 9ae6632..61a4386 100644 (file)
@@ -144,6 +144,17 @@ sub connection {
       ;
     };
 
+    # DBD::Firebird and DBD::InterBase could very well talk to the same RDBMS
+    # make an educated guesstimate based on the DSN
+    # (worst case scenario we are wrong and the scripts have to wait on each
+    # other even without actually being able to interfere among themselves)
+    if (
+      ($locktype||'') eq 'InterBase'
+        and
+      $_[0] =~ /firebird/i
+    ) {
+      $locktype = 'Firebird';
+    }
 
     # Never hold more than one lock. This solves the "lock in order" issues
     # unrelated tests may have