You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by eh...@apache.org on 2010/08/27 12:37:41 UTC

svn commit: r990089 - in /subversion/trunk/subversion/libsvn_wc: wc-queries.sql wc_db.c

Author: ehu
Date: Fri Aug 27 10:37:41 2010
New Revision: 990089

URL: http://svn.apache.org/viewvc?rev=990089&view=rev
Log:
Create two more wc db statements replacing a single WORKING_NODE table
update to update WORKING_NODE and NODE_DATA.

 * subversion/libsvn_wc/wc-queries.sql:
   (STMT_INSERT_WORKING_NODE_DATA_NORMAL_FROM_BASE_NODE_1,
    STMT_INSERT_WORKING_NODE_DATA_NORMAL_FROM_BASE_NODE_2):
    New queries to eventually replace
    STMT_INSERT_WORKING_NODE_NORMAL_FROM_BASE_NODE.

 * subversion/libsvn_wc/wc_db.c
   (make_copy_txn): Use new queries.

Modified:
    subversion/trunk/subversion/libsvn_wc/wc-queries.sql
    subversion/trunk/subversion/libsvn_wc/wc_db.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=990089&r1=990088&r2=990089&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original)
+++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Fri Aug 27 10:37:41 2010
@@ -534,6 +534,34 @@ SELECT wc_id, local_relpath, parent_relp
     repos_relpath, revnum FROM BASE_NODE
 WHERE wc_id = ?1 AND local_relpath = ?2;
 
+
+-- STMT_INSERT_WORKING_NODE_DATA_NORMAL_FROM_BASE_NODE_1
+INSERT INTO NODE_DATA (
+    wc_id, local_relpath, op_depth, parent_relpath, presence, kind, checksum,
+    changed_revision, changed_date, changed_author, depth, symlink_target,
+    properties, original_repos_id, original_repos_path, original_revision )
+SELECT n.wc_id, n.local_relpath, ?3 as op_depth, n.parent_relpath, 'normal',
+    n.kind,
+    n.checksum, n.changed_revision, n.changed_date, n.changed_author, n.depth,
+    n.symlink_target, n.properties, b.repos_id as original_repos_id,
+    b.repos_relpath as original_repos_relpath, b.revnum as original_revision
+FROM BASE_NODE as b INNER JOIN NODE_DATA as n
+     ON b.wc_id = n.wc_id
+     AND b.local_relpath = n.local_relpath
+     AND n.op_depth = 0
+WHERE n.wc_id = ?1 AND n.local_relpath = ?2;
+
+
+-- STMT_INSERT_WORKING_NODE_DATA_NORMAL_FROM_BASE_NODE_2
+INSERT INTO WORKING_NODE (
+    wc_id, local_relpath, parent_relpath, translated_size, last_mod_time )
+SELECT wc_id, local_relpath, parent_relpath, translated_size, last_mod_time
+FROM BASE_NODE
+WHERE wc_id = ?1 AND local_relpath = ?2;
+
+
+
+
 -- STMT_INSERT_WORKING_NODE_NOT_PRESENT_FROM_BASE_NODE
 INSERT INTO WORKING_NODE (
     wc_id, local_relpath, parent_relpath, presence, kind, changed_rev,

Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=990089&r1=990088&r2=990089&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.c Fri Aug 27 10:37:41 2010
@@ -812,6 +812,7 @@ copy_working_from_base(void *baton,
 }
 
 
+
 static svn_error_t *
 insert_incomplete_working_children(svn_sqlite__db_t *sdb,
                                    apr_int64_t wc_id,
@@ -8836,6 +8837,34 @@ make_copy_txn(void *baton,
                                 mcb->local_relpath));
 
       SVN_ERR(svn_sqlite__step_done(stmt));
+
+#ifdef SVN_WC__NODE_DATA
+      SVN_ERR(svn_sqlite__get_statement(
+                    &stmt, sdb,
+                    STMT_INSERT_WORKING_NODE_DATA_NORMAL_FROM_BASE_NODE_1));
+
+      SVN_ERR(svn_sqlite__bindf(stmt, "isi",
+                                mcb->pdh->wcroot->wc_id,
+                                mcb->local_relpath,
+                                (*mcb->local_relpath == '\0') ? 1 : 2));
+
+      SVN_ERR(svn_sqlite__step_done(stmt));
+
+#if 0
+      /* ### NODE_DATA  we can't enable the bit below until we stop
+         running STMT_INSERT_WORKING_NODE_NORMAL_FROM_BASE_NODE above */
+      SVN_ERR(svn_sqlite__get_statement(
+                 &stmt, sdb,
+                 STMT_INSERT_WORKING_NODE_DATA_NORMAL_FROM_BASE_NODE_2));
+
+      SVN_ERR(svn_sqlite__bindf(stmt, "is",
+                                mcb->pdh->wcroot->wc_id,
+                                mcb->local_relpath));
+
+      SVN_ERR(svn_sqlite__step_done(stmt));
+#endif
+#endif
+
     }
   else if (add_working_not_present)
     {
@@ -8944,6 +8973,32 @@ make_copy_txn(void *baton,
           SVN_ERR(svn_sqlite__bindf(stmt, "is",
                                     pdh->wcroot->wc_id, local_relpath));
           SVN_ERR(svn_sqlite__step_done(stmt));
+
+#ifdef SVN_WC__NODE_DATA
+          SVN_ERR(svn_sqlite__get_statement(
+                        &stmt, sdb,
+                        STMT_INSERT_WORKING_NODE_DATA_NORMAL_FROM_BASE_NODE_1));
+
+          SVN_ERR(svn_sqlite__bindf(stmt, "isi",
+                                    pdh->wcroot->wc_id, local_relpath,
+                                    (apr_int64_t)2));
+
+          SVN_ERR(svn_sqlite__step_done(stmt));
+
+#if 0
+      /* ### NODE_DATA  we can't enable the bit below until we stop
+         running STMT_INSERT_WORKING_NODE_NORMAL_FROM_BASE_NODE above */
+          SVN_ERR(svn_sqlite__get_statement(
+                       &stmt, sdb,
+                       STMT_INSERT_WORKING_NODE_DATA_NORMAL_FROM_BASE_NODE_2));
+
+          SVN_ERR(svn_sqlite__bindf(stmt, "is",
+                                    pdh->wcroot->wc_id, local_relpath));
+
+          SVN_ERR(svn_sqlite__step_done(stmt));
+#endif
+#endif
+
         }
       else if (add_working_not_present)
         {