Author: rhuijben
Date: Wed Feb 18 22:49:12 2015
New Revision: 1660758
URL: http://svn.apache.org/r1660758
Log:
Bring the wc-db tests in the world where we store moves in WORKING, and
fix the db query that allowed this test to survive so long.
* subversion/libsvn_wc/wc-queries.sql
(STMT_SELECT_DELETION_INFO): Rewrite as join to allow access to more
columns. Add moved_to result.
(STMT_SELECT_DELETION_INFO_SCAN): Remove known bad statement.
* subversion/libsvn_wc/wc_db.c
(scan_deletion_txn): Always use STMT_SELECT_DELETION_INFO.
* subversion/tests/libsvn_wc/db-test.c
(TESTING_DATA): Stop storing moves in the pre 1.8.x locations,
move them to WORKING instead.
Modified:
subversion/trunk/subversion/libsvn_wc/wc-queries.sql
subversion/trunk/subversion/libsvn_wc/wc_db.c
subversion/trunk/subversion/tests/libsvn_wc/db-test.c
Modified: subversion/trunk/subversion/libsvn_wc/wc-queries.sql
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc-queries.sql?rev=1660758&r1=1660757&r2=1660758&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original)
+++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Wed Feb 18 22:49:12
2015
@@ -462,25 +462,13 @@ SELECT dav_cache FROM nodes
WHERE wc_id = ?1 AND local_relpath = ?2 AND op_depth = 0
-- STMT_SELECT_DELETION_INFO
-SELECT (SELECT b.presence FROM nodes AS b
- WHERE b.wc_id = ?1 AND b.local_relpath = ?2 AND b.op_depth = 0),
- work.presence, work.op_depth
-FROM nodes_current AS work
-WHERE work.wc_id = ?1 AND work.local_relpath = ?2 AND work.op_depth > 0
-LIMIT 1
-
--- STMT_SELECT_DELETION_INFO_SCAN
-/* ### FIXME. moved.moved_to IS NOT NULL works when there is
- only one move but we need something else when there are several. */
-SELECT (SELECT b.presence FROM nodes AS b
- WHERE b.wc_id = ?1 AND b.local_relpath = ?2 AND b.op_depth = 0),
- work.presence, work.op_depth, moved.moved_to
-FROM nodes_current AS work
-LEFT OUTER JOIN nodes AS moved
- ON moved.wc_id = work.wc_id
- AND moved.local_relpath = work.local_relpath
- AND moved.moved_to IS NOT NULL
-WHERE work.wc_id = ?1 AND work.local_relpath = ?2 AND work.op_depth > 0
+SELECT b.presence, w.presence, w.op_depth, w.moved_to
+FROM nodes w
+LEFT JOIN nodes b ON b.wc_id = ?1 AND b.local_relpath = ?2 AND b.op_depth = 0
+WHERE w.wc_id = ?1 AND w.local_relpath = ?2
+ AND w.op_depth = (SELECT MAX(op_depth) FROM nodes d
+ WHERE d.wc_id = ?1 AND d.local_relpath = ?2
+ AND d.op_depth > 0)
LIMIT 1
-- STMT_SELECT_MOVED_TO_NODE
Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1660758&r1=1660757&r2=1660758&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.c Wed Feb 18 22:49:12 2015
@@ -4044,9 +4044,7 @@ scan_deletion_txn(const char **base_del_
scan = (moved_to_op_root_relpath || moved_to_relpath);
SVN_ERR(svn_sqlite__get_statement(
- &stmt, wcroot->sdb,
- scan ? STMT_SELECT_DELETION_INFO_SCAN
- : STMT_SELECT_DELETION_INFO));
+ &stmt, wcroot->sdb, STMT_SELECT_DELETION_INFO));
SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, current_relpath));
SVN_ERR(svn_sqlite__step(&have_row, stmt));
Modified: subversion/trunk/subversion/tests/libsvn_wc/db-test.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_wc/db-test.c?rev=1660758&r1=1660757&r2=1660758&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_wc/db-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_wc/db-test.c Wed Feb 18 22:49:12
2015
@@ -140,7 +140,7 @@ static const char * const TESTING_DATA =
" null, null, null, null, null);"
"insert into nodes values ("
" 1, 'J/J-e', 0, 'J', 1, 'J/J-e', 1, 'normal',"
- " null, 'other/place', 'dir', null, 'infinity', null, null, null, null,
null,"
+ " null, null, 'dir', null, 'infinity', null, null, null, null, null,"
" null, null, null, null, null);"
"insert into nodes values ("
" 1, 'J/J-e/J-e-a', 0, 'J/J-e', 1, 'J/J-e/J-e-a', 1, 'normal',"
@@ -172,7 +172,7 @@ static const char * const TESTING_DATA =
" 15, null, null, null, null);"
"insert into nodes values ("
" 1, 'K/K-b', 0, 'K', 1, 'K/K-b', 1, 'normal',"
- " null, 'moved/away', 'file', '()', null, '$sha1$" SHA1_1 "', null, 1, "
TIME_1s ", '" AUTHOR_1 "',"
+ " null, null, 'file', '()', null, '$sha1$" SHA1_1 "', null, 1, " TIME_1s ",
'" AUTHOR_1 "',"
" 15, null, null, null, null);"
""
/* Load data into NODES table;
@@ -251,7 +251,7 @@ static const char * const TESTING_DATA =
" null, null, null, null, null);"
"insert into nodes values ("
" 1, 'J/J-e', 2, 'J', null, null, null, 'base-deleted',"
- " null, null, 'dir', null, null, null, null, null, null, null,"
+ " null, 'other/place', 'dir', null, null, null, null, null, null, null,"
" null, null, null, null, null);"
"insert into nodes values ("
" 1, 'J/J-e/J-e-a', 2, 'J/J-e', null, null, null, 'base-deleted',"
@@ -283,7 +283,7 @@ static const char * const TESTING_DATA =
" null, null, null, null, null);"
"insert into nodes values ("
" 1, 'K/K-b', 1, 'K', null, null, null, 'base-deleted',"
- " null, null, 'file', null, null, null, null, null, null, null,"
+ " null, 'moved/away', 'file', null, null, null, null, null, null, null,"
" null, null, null, null, null);"
"insert into nodes values ("
" 1, 'L', 1, '', 2, 'from', 2, 'normal',"