STMT_INSERT_ACTUAL_NODE does an insert or replace, which might be invalid in this case. (It's documentation says that it is only used from entries.c). I think we should create a similar statement (maybe with the missing rows) that is always safe to use
Bert From: hy...@hyrumwright.org [mailto:hy...@hyrumwright.org] On Behalf Of Hyrum K. Wright Sent: dinsdag 1 juni 2010 13:48 To: dev@subversion.apache.org Cc: comm...@subversion.apache.org Subject: Re: svn commit: r949964 - /subversion/trunk/subversion/libsvn_wc/wc_db.c On Tue, Jun 1, 2010 at 4:33 AM, <phi...@apache.org> wrote: Author: philip Date: Tue Jun 1 08:33:08 2010 New Revision: 949964 URL: http://svn.apache.org/viewvc?rev=949964 <http://svn.apache.org/viewvc?rev=949964&view=rev> &view=rev Log: * subversion/libsvn_wc/wc_db.c (temp_cross_db_copy): Bind all the parameters when copying the ACTUAL_NODE, use a blob for properties. Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?r ev=949964 <http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c? rev=949964&r1=949963&r2=949964&view=diff> &r1=949963&r2=949964&view=diff ============================================================================ == --- subversion/trunk/subversion/libsvn_wc/wc_db.c (original) +++ subversion/trunk/subversion/libsvn_wc/wc_db.c Tue Jun 1 08:33:08 2010 @@ -2267,14 +2267,16 @@ temp_cross_db_copy(svn_wc__db_t *db, scratch_pool); const char *tree_conflict_data = svn_sqlite__column_text(stmt, 5, scratch_pool); - const char *properties = svn_sqlite__column_text(stmt, 6, scratch_pool); + apr_size_t props_size; + const char *properties = svn_sqlite__column_blob(stmt, 6, &props_size, + scratch_pool); Should we be using svn_sqlite__column_properties() here (and extending _bindf() so that it knows about properties)? I understand we're just doing a straight copy, so we don't necessarily need to parse and unparse the properties, but if this is the case, perhaps a comment in the code would be useful. SVN_ERR(svn_sqlite__reset(stmt)); SVN_ERR(svn_sqlite__get_statement(&stmt, dst_pdh->wcroot->sdb, STMT_INSERT_ACTUAL_NODE)); - SVN_ERR(svn_sqlite__bindf(stmt, "isss", + SVN_ERR(svn_sqlite__bindf(stmt, "issbsssss", dst_pdh->wcroot->wc_id, dst_relpath, svn_relpath_dirname(dst_relpath, scratch_pool), - properties, + properties, props_size, conflict_old, conflict_new, conflict_working, changelist, tree_conflict_data)); SVN_ERR(svn_sqlite__step(&have_row, stmt)); -Hyrum