And of course the test pragma is not supported everywhere
Peter Rabbitson [Sun, 21 Apr 2013 15:31:39 +0000 (17:31 +0200)]
Similar issue but no solution: http://osdir.com/ml/sqlite-users/2010-01/msg00220.html
Experimentally determined cutoff at 3.7.9

t/53lean_startup.t
t/lib/DBICTest.pm

index de46c8c..4319940 100644 (file)
@@ -151,6 +151,7 @@ BEGIN {
 
 # and do full populate() as well, just in case - shouldn't add new stuff
 {
+  local $ENV{DBICTEST_SQLITE_REVERSE_DEFAULT_ORDER};
   require DBICTest;
   my $s = DBICTest->init_schema;
   is ($s->resultset('Artist')->find(1)->name, 'Caterwauler McCrae');
index f95c8e7..42a691b 100644 (file)
@@ -187,8 +187,14 @@ sub _database {
         # no fsync on commit
         $dbh->do ('PRAGMA synchronous = OFF');
 
-        $dbh->do ('PRAGMA reverse_unordered_selects = ON')
-          if $ENV{DBICTEST_SQLITE_REVERSE_DEFAULT_ORDER};
+        if ($ENV{DBICTEST_SQLITE_REVERSE_DEFAULT_ORDER}) {
+
+          $storage->throw_exception(
+            'PRAGMA reverse_unordered_selects does not work correctly before libsqlite 3.7.9'
+          ) if $storage->_server_info->{normalized_dbms_version} < 3.007009;
+
+          $dbh->do ('PRAGMA reverse_unordered_selects = ON');
+        }
 
         # set a *DBI* disconnect callback, to make sure the physical SQLite
         # file is still there (i.e. the test does not attempt to delete