Author: rhuijben
Date: Thu May 24 16:41:56 2012
New Revision: 1342329
URL: http://svn.apache.org/viewvc?rev=1342329&view=rev
Log:
Add an index on the moved_to field in the NODES table to speed up move
processing in the wc_db api.
The index will be added to new tables, and once we bump to format 30
(presumably before 1.8.0) we will add it to existing tables.
This resolves 3 slow statement cases in the wc-queries-tests, but I'm not sure
if just committing a change to wc-metadata.sql forces a query rebuild.
* subversion/libsvn_wc/wc-metadata.sql
(STMT_CREATE_NODES): Update file external information.
Add creation of I_NODES_MOVED index.
(STMT_UPGRADE_TO_30): New statement with upgrade statement.
Modified:
subversion/trunk/subversion/libsvn_wc/wc-metadata.sql
Modified: subversion/trunk/subversion/libsvn_wc/wc-metadata.sql
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc-metadata.sql?rev=1342329&r1=1342328&r2=1342329&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc-metadata.sql (original)
+++ subversion/trunk/subversion/libsvn_wc/wc-metadata.sql Thu May 24 16:41:56
2012
@@ -462,16 +462,10 @@ CREATE TABLE NODES (
node does not have any dav-cache. */
dav_cache BLOB,
- /* The serialized file external information. */
- /* ### hack. hack. hack.
- ### This information is already stored in properties, but because the
- ### current working copy implementation is such a pain, we can't
- ### readily retrieve it, hence this temporary cache column.
- ### When it is removed, be sure to remove the extra column from
- ### the db-tests.
-
- ### Note: This is only here as a hack, and should *NOT* be added
- ### to any wc_db APIs. */
+ /* Is there a file external in this location. NULL if there
+ is no file external, otherwise '1' */
+ /* ### Originally we had a wc-1.0 like skel in this place, so we
+ ### check for NULL */
file_external TEXT,
@@ -480,6 +474,8 @@ CREATE TABLE NODES (
);
CREATE INDEX I_NODES_PARENT ON NODES (wc_id, parent_relpath, op_depth);
+/* I_NODES_MOVED is introduced in format 30 */
+CREATE UNIQUE INDEX I_NODES_MOVED ON NODES (wc_id, moved_to, op_depth);
/* Many queries have to filter the nodes table to pick only that version
of each node with the highest (most "current") op_depth. This view
@@ -753,6 +749,14 @@ PRAGMA user_version = 29;
/* ------------------------------------------------------------------------- */
+/* Format 30 currently just contains some nice to haves that should be included
+ with the next format bump */
+-- STMT_UPGRADE_TO_30
+CREATE UNIQUE INDEX IF NOT EXISTS I_NODES_MOVED
+ON NODES (wc_id, moved_to, op_depth);
+
+/* ------------------------------------------------------------------------- */
+
/* Format YYY introduces new handling for conflict information. */
-- format: YYY
@@ -765,9 +769,9 @@ PRAGMA user_version = 29;
number will be, however, so we're just marking it as 99 for now. */
-- format: 99
-/* TODO: Rename the "absent" presence value to "server-excluded" before
- the 1.7 release. wc_db.c and this file have references to "absent" which
- still need to be changed to "server-excluded". */
+/* TODO: Rename the "absent" presence value to "server-excluded". wc_db.c
+ and this file have references to "absent" which still need to be changed
+ to "server-excluded". */
/* TODO: Un-confuse *_revision column names in the EXTERNALS table to
"-r<operative> foo@<peg>", as suggested by the patch attached to
http://svn.haxx.se/dev/archive-2011-09/0478.shtml */