[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r1687152 - in /subversion/branches/1.7.x: ./ STATUS subversion/libsvn_wc/upgrade.c subversion/libsvn_wc/wc-metadata.sql subversion/libsvn_wc/wc_db.c subversion/libsvn_wc/wc_db.h

From: Ivan Zhakov <ivan_at_visualsvn.com>
Date: Wed, 22 Jul 2015 18:13:16 +0300

On 21 July 2015 at 20:39, Philip Martin <philip.martin_at_wandisco.com> wrote:
> Ivan Zhakov <ivan_at_visualsvn.com> writes:
>
>> On 24 June 2015 at 07:00, <svn-role_at_apache.org> wrote:
>>> Author: svn-role
>>> Date: Wed Jun 24 04:00:31 2015
>>> New Revision: 1687152
>>>
>>> URL: http://svn.apache.org/r1687152
>>> Log:
>>> Merge the 1.7.x-r1542765 branch:
>>>
>>> * r1542765, r1571214
>>> Add Sqlite index information.
>>> Justification:
>>> Adding this information explains to Sqlite how we use our indexes. While
>>> Subversion 1.7 doesn't depend on this as much as 1.8 as we didn't tune the
>>> queries as much at that time, this information will make several queries
>>> use indexes instead of table scans.
>>> Branch:
>>> ^/subversion/branches/1.7.x-r1542765
>>> Votes:
>>> +1: rhuijben, stefan2, brane
>>>
>> I'm getting a lot of test failures like this:
>> [[[
>> CMD: C:\Ivan\SVN\test\subversion\svn\svn.exe delete
>> svn-test-work\working_copies\update_tests-49.wc2\A --config-dir
>> C:\Ivan\SVN\test\subversion\tests\cmdline\svn-test-work\local_tmp\config
>> --password rayjandom --no-auth-cache --username jrandom exited with 1
>> <TIME = 0.035000>
>> C:\Ivan\SVN\1.7.x\subversion\svn\delete-cmd.c:92: (apr_err=200035)
>> C:\Ivan\SVN\1.7.x\subversion\svn\util.c:913: (apr_err=200035)
>> C:\Ivan\SVN\1.7.x\subversion\libsvn_client\delete.c:461: (apr_err=200035)
>> C:\Ivan\SVN\1.7.x\subversion\libsvn_wc\adm_ops.c:678: (apr_err=200035)
>> C:\Ivan\SVN\1.7.x\subversion\libsvn_wc\adm_ops.c:678: (apr_err=200035)
>> C:\Ivan\SVN\1.7.x\subversion\libsvn_wc\adm_ops.c:678: (apr_err=200035)
>> C:\Ivan\SVN\1.7.x\subversion\libsvn_wc\wc_db.c:2578: (apr_err=200035)
>> C:\Ivan\SVN\1.7.x\subversion\libsvn_wc\wc_db.c:2578: (apr_err=200035)
>> C:\Ivan\SVN\1.7.x\subversion\libsvn_subr\sqlite.c:1135: (apr_err=200035)
>> C:\Ivan\SVN\1.7.x\subversion\libsvn_subr\sqlite.c:1135: (apr_err=200035)
>> C:\Ivan\SVN\1.7.x\subversion\libsvn_wc\wc_db.c:6277: (apr_err=200035)
>> C:\Ivan\SVN\1.7.x\subversion\libsvn_wc\wc_db.c:6277: (apr_err=200035)
>> C:\Ivan\SVN\1.7.x\subversion\libsvn_subr\sqlite.c:225: (apr_err=200035)
>> C:\Ivan\SVN\1.7.x\subversion\libsvn_subr\sqlite.c:209: (apr_err=200035)
>> C:\Ivan\SVN\1.7.x\subversion\libsvn_subr\sqlite.c:245: (apr_err=200035)
>> svn: E200035: sqlite: constraint failed
>> C:\Ivan\SVN\1.7.x\subversion\libsvn_subr\sqlite.c:575: (apr_err=200035)
>> svn: E200035: sqlite: WC DB validity check 03 failed
>> ]]]
>>
>> But all tests pass if I revert this revision.
>>
>> I'm using sqlite 3.7.5, Windows 8.1 x64.
>
> That only occurs in an SVN_DEBUG build. I can reproduce the problem
> with 3.7.5 on Linux but not with 3.8.7.1. It's
> STMT_INSERT_DELETE_FROM_NODE_RECURSIVE that is triggering the problem
> and r1567080 does say that that stmt does violate the verification
> triggers. r1567080 doesn't apply directly to 1.7.x but patching like so
> works:
>
> Index: subversion/libsvn_wc/wc-queries.sql
> ===================================================================
> --- subversion/libsvn_wc/wc-queries.sql (revision 1692140)
> +++ subversion/libsvn_wc/wc-queries.sql (working copy)
> @@ -818,6 +818,7 @@ WHERE wc_id = ?1
> OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2))
> AND op_depth = ?3
> AND presence NOT IN ('base-deleted', 'not-present', 'excluded', 'absent')
> +ORDER BY local_relpath
>
> -- STMT_INSERT_WORKING_NODE_FROM_BASE_COPY
> INSERT INTO nodes (
>

Hi Philip,

Your patch fixes test failures in maintainer build for me. But
r1567080 has other changes in STMT_INSERT_DELETE_FROM_NODE_RECURSIVE
query. Do we need them in 1.7.x branch?

Also comment for STMT_INSERT_DELETE_FROM_NODE_RECURSIVE query says
that STMT_INSERT_DELETE_LIST query also should be updates for any
modification of recursive query.

Index: subversion/libsvn_wc/wc-queries.sql
===================================================================
--- subversion/libsvn_wc/wc-queries.sql (revision 1692272)
+++ subversion/libsvn_wc/wc-queries.sql (working copy)
@@ -818,6 +818,7 @@
        OR IS_STRICT_DESCENDANT_OF(local_relpath, ?2))
   AND op_depth = ?3
   AND presence NOT IN ('base-deleted', 'not-present', 'excluded', 'absent')
+ORDER BY local_relpath

 -- STMT_INSERT_WORKING_NODE_FROM_BASE_COPY
 INSERT INTO nodes (
@@ -1213,6 +1214,7 @@
   AND op_depth = (SELECT MAX(op_depth) FROM nodes s
                   WHERE s.wc_id = n.wc_id
                     AND s.local_relpath = n.local_relpath)
+ORDER BY local_relpath

 -- STMT_SELECT_DELETE_LIST
 SELECT local_relpath FROM delete_list

-- 
Ivan Zhakov
Received on 2015-07-22 17:13:48 CEST

This is an archived mail posted to the Subversion Dev mailing list.