133 lines
5.8 KiB
Diff
133 lines
5.8 KiB
Diff
Despite all the efforts below, the 'wc-queries-test.c' still fails,
|
|
both with SQLite 3.8.9 and 3.8.10.2. We choose to just skip it
|
|
until a better solution arises.
|
|
|
|
--- subversion/tests/libsvn_wc/wc-queries-test.c 2015-07-16 23:24:03.458279053 +0200
|
|
+++ subversion/tests/libsvn_wc/wc-queries-test.c 2015-07-16 23:24:18.866423439 +0200
|
|
@@ -898,8 +898,6 @@ struct svn_test_descriptor_t test_funcs[
|
|
"sqlite up-to-date"),
|
|
SVN_TEST_PASS2(test_parsable,
|
|
"queries are parsable"),
|
|
- SVN_TEST_PASS2(test_query_expectations,
|
|
- "test query expectations"),
|
|
SVN_TEST_PASS2(test_schema_statistics,
|
|
"test schema statistics"),
|
|
SVN_TEST_NULL
|
|
|
|
|
|
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
|
|
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=785496
|
|
|
|
|
|
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 */
|
|
|
|
|
|
r1673691 | rhuijben | 2015-04-15 05:30:04 -0400 (Wed, 15 Apr 2015) | 5 lines
|
|
|
|
* subversion/libsvn_wc/wc-metadata.sql
|
|
(STMT_INSTALL_SCHEMA_STATISTICS): Delete existing sqlite_stat1 rows for
|
|
the externals table before installing new rows to avoid duplicate entries.
|
|
Remove unneeded 'OR REPLACE' from all inserts.
|
|
|
|
|
|
Index: subversion/libsvn_wc/wc-metadata.sql
|
|
===================================================================
|
|
--- subversion/libsvn_wc/wc-metadata.sql (revision 1673690)
|
|
+++ subversion/libsvn_wc/wc-metadata.sql (revision 1673691)
|
|
@@ -598,30 +598,30 @@
|
|
ANALYZE sqlite_master; /* Creates empty sqlite_stat1 if necessary */
|
|
|
|
DELETE FROM sqlite_stat1
|
|
-WHERE tbl in ('NODES', 'ACTUAL_NODE', 'LOCK', 'WC_LOCK');
|
|
+WHERE tbl in ('NODES', 'ACTUAL_NODE', 'LOCK', 'WC_LOCK', 'EXTERNALS');
|
|
|
|
-INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
|
|
+INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES
|
|
('NODES', 'sqlite_autoindex_NODES_1', '8000 8000 2 1');
|
|
-INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
|
|
+INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES
|
|
('NODES', 'I_NODES_PARENT', '8000 8000 10 2 1');
|
|
/* Tell a lie: We ignore that 99.9% of all moved_to values are NULL */
|
|
-INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
|
|
+INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES
|
|
('NODES', 'I_NODES_MOVED', '8000 8000 1 1');
|
|
|
|
-INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
|
|
+INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES
|
|
('ACTUAL_NODE', 'sqlite_autoindex_ACTUAL_NODE_1', '8000 8000 1');
|
|
-INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
|
|
+INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES
|
|
('ACTUAL_NODE', 'I_ACTUAL_PARENT', '8000 8000 10 1');
|
|
|
|
-INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
|
|
+INSERT INTO sqlite_stat1(tbl, idx, stat) VALUES
|
|
('LOCK', 'sqlite_autoindex_LOCK_1', '100 100 1');
|
|
|
|
-INSERT OR REPLACE INTO sqlite_stat1(tbl, idx, stat) VALUES
|
|
+INSERT 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
|
|
+INSERT 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
|
|
+INSERT 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
|
|
|