summary refs log tree commit diff
path: root/gnu/packages/patches/subversion-sqlite-3.8.9-fix.patch
blob: 92d8a85c8f6af088c322261cf89e6e1bebe1b93a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
This upstream patch (r1672295) is needed to fix a test failure when built
against sqlite 3.8.9.  See:

  https://mail-archives.apache.org/mod_mbox/subversion-dev/201504.mbox/%3C5526D197.6020808@gmx.de%3E


r1672295 | rhuijben | 2015-04-09 07:31:12 -0400 (Thu, 09 Apr 2015) | 15 lines

Optimize STMT_SELECT_EXTERNALS_DEFINED when using Sqlite 3.8.9, by
adding two more rows to the sqlite_stat1 table.

This fixes a test failure in wc-queries-test.c, but actual users most
likely don't notice a difference as a tablescan on an EXTERNALS tables
index is not that expensive, given that most working copies don't have
many externals.

* subversion/libsvn_wc/wc-metadata.sql
  (STMT_INSTALL_SCHEMA_STATISTICS): Add two rows.

* subversion/tests/libsvn_wc/wc-queries-test.c
  (test_schema_statistics): Add a dummy externals row to allow
    verifying schema.

Index: subversion/tests/libsvn_wc/wc-queries-test.c
===================================================================
--- subversion/tests/libsvn_wc/wc-queries-test.c	(revision 1672294)
+++ subversion/tests/libsvn_wc/wc-queries-test.c	(revision 1672295)
@@ -927,6 +927,15 @@
                    "VALUES (1, '', '')",
                    NULL, NULL, NULL));
 
+  SQLITE_ERR(
+      sqlite3_exec(sdb,
+                   "INSERT INTO EXTERNALS (wc_id, local_relpath,"
+                   "                       parent_relpath, repos_id,"
+                   "                       presence, kind, def_local_relpath,"
+                   "                       def_repos_relpath) "
+                   "VALUES (1, 'subdir', '', 1, 'normal', 'dir', '', '')",
+                   NULL, NULL, NULL));
+
   /* These are currently not necessary for query optimization, but it's better
      to tell Sqlite how we intend to use this table anyway */
   SQLITE_ERR(
Index: subversion/libsvn_wc/wc-metadata.sql
===================================================================
--- subversion/libsvn_wc/wc-metadata.sql	(revision 1672294)
+++ subversion/libsvn_wc/wc-metadata.sql	(revision 1672295)
@@ -619,6 +619,11 @@
 INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
     ('WC_LOCK', 'sqlite_autoindex_WC_LOCK_1',           '100 100 1');
 
+INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
+    ('EXTERNALS','sqlite_autoindex_EXTERNALS_1',        '100 100 1');
+INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
+    ('EXTERNALS','I_EXTERNALS_DEFINED',                 '100 100 3 1');
+
 /* sqlite_autoindex_WORK_QUEUE_1 doesn't exist because WORK_QUEUE is
    a INTEGER PRIMARY KEY AUTOINCREMENT table */