You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2014/02/11 19:45:45 UTC

svn commit: r1567286 - /subversion/trunk/subversion/libsvn_subr/sqlite.c

Author: breser
Date: Tue Feb 11 18:45:45 2014
New Revision: 1567286

URL: http://svn.apache.org/r1567286
Log:
Disable SQLITE_ENABLE_STAT3 and SQLITE_ENABLE_STAT4 at runtime for versions of
SQLite that have broken implementations.

* subversion/libsvn_subr/sqlite.c
  (svn_sqlite__open): For the appropriate versions call sqlite3_test_control()
    with the right flags to disable the options.

Modified:
    subversion/trunk/subversion/libsvn_subr/sqlite.c

Modified: subversion/trunk/subversion/libsvn_subr/sqlite.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/sqlite.c?rev=1567286&r1=1567285&r2=1567286&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/sqlite.c (original)
+++ subversion/trunk/subversion/libsvn_subr/sqlite.c Tue Feb 11 18:45:45 2014
@@ -1080,6 +1080,16 @@ svn_sqlite__open(svn_sqlite__db_t **db, 
 
   SVN_ERR(internal_open(&(*db)->db3, path, mode, scratch_pool));
 
+  /* disable SQLITE_ENABLE_STAT3/4 from 3.8.1 - 3.8.3 (but not 3.8.3.1+)
+   * to prevent using it when it's buggy.
+   * See: https://www.sqlite.org/src/info/4c86b126f2 */
+  if (sqlite3_libversion_number() > 3008000 &&
+      sqlite3_libversion_number() < 3008004 &&
+      strcmp(sqlite3_sourceid(),"2014-02-11")<0)
+    {
+      sqlite3_test_control(SQLITE_TESTCTRL_OPTIMIZATIONS, (*db)->db3, 0x800);
+    }
+
 #ifdef SVN_UNICODE_NORMALIZATION_FIXES
   /* Create extension buffers with space for 200 UCS-4 characters. */
   svn_membuf__create(&(*db)->sqlext_buf1, 800, result_pool);