You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2011/05/16 14:01:10 UTC

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

Author: hwright
Date: Mon May 16 12:01:10 2011
New Revision: 1103706

URL: http://svn.apache.org/viewvc?rev=1103706&view=rev
Log:
Replace the more flexible wc_db finalization function, with a simple,
but sufficient, model.

* subversion/libsvn_wc/wc-queries.sql
  (STMT_DROP_CHANGELIST_LIST): Rename to...
  (STMT_FINALIZE_CHANGELIST): ...this, and be sure to drop the targets_list
    table.
  (STMT_DROP_TARGETS_LIST): Remove.
  (STMT_DROP_DELETE_LIST): Rename to...
  (STMT_FINALIZE_DELETE): ...this.
 
* subversion/libsvn_wc/wc_db.c
  (finalize_callback_t, run_final_query): Remove.
  (with_finalization): Take a single finalization statement index, and excute
    it.
  (set_changelist_txn): Don't drop the targets_list table, that will happen in
    finalization.
  (svn_wc__db_op_set_changelist, snv_wc__db_op_delete): Update callers.

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=1103706&r1=1103705&r2=1103706&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original)
+++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Mon May 16 12:01:10 2011
@@ -417,11 +417,12 @@ END
 INSERT INTO changelist_list(wc_id, local_relpath, notify, changelist)
 VALUES (?1, ?2, ?3, ?4)
 
--- STMT_DROP_CHANGELIST_LIST
+-- STMT_FINALIZE_CHANGELIST
 DROP TRIGGER IF EXISTS trigger_changelist_list_actual_cl_insert;
 DROP TRIGGER IF EXISTS trigger_changelist_list_actual_cl_set;
 DROP TRIGGER IF EXISTS trigger_changelist_list_actual_cl_clear;
-DROP TABLE IF EXISTS changelist_list
+DROP TABLE IF EXISTS changelist_list;
+DROP TABLE IF EXISTS targets_list
 
 -- STMT_SELECT_CHANGELIST_LIST
 SELECT wc_id, local_relpath, notify, changelist
@@ -440,9 +441,6 @@ CREATE INDEX targets_list_kind
   ON targets_list (kind)
 /* need more indicies? */
 
--- STMT_DROP_TARGETS_LIST
-DROP TABLE IF EXISTS targets_list;
-
 -- STMT_INSERT_TARGET
 INSERT INTO targets_list(wc_id, local_relpath, parent_relpath, kind)
 SELECT wc_id, local_relpath, parent_relpath, kind
@@ -1165,7 +1163,7 @@ WHERE wc_id = ?1 AND (local_relpath = ?2
 SELECT local_relpath FROM delete_list
 ORDER BY local_relpath
 
--- STMT_DROP_DELETE_LIST
+-- STMT_FINALIZE_DELETE
 DROP TABLE IF EXISTS delete_list
 
 

Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1103706&r1=1103705&r2=1103706&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.c Mon May 16 12:01:10 2011
@@ -2456,29 +2456,6 @@ typedef svn_error_t * (*work_callback_t)
                           void *notify_baton,
                           apr_pool_t *scratch_pool);
 
-typedef svn_error_t * (*finalize_callback_t)(
-                          void *baton,
-                          svn_wc__db_wcroot_t *wcroot,
-                          apr_pool_t *scratch_pool);
-
-static svn_error_t *
-run_final_query(void *baton,
-                svn_wc__db_wcroot_t *wcroot,
-                apr_pool_t *scratch_pool)
-{
-  int *query_idx = baton;
-  svn_error_t *err = SVN_NO_ERROR;
-
-  while (*query_idx >= 0)
-    {
-      err = svn_error_compose_create(err, svn_sqlite__exec_statements(
-                                                 wcroot->sdb, *query_idx));
-      query_idx++;
-    }
-
-  return err;
-}
-
 static svn_error_t *
 with_finalization(void *baton,
                   svn_wc__db_wcroot_t *wcroot,
@@ -2491,8 +2468,7 @@ with_finalization(void *baton,
                   void *cancel_baton,
                   svn_wc_notify_func2_t notify_func,
                   void *notify_baton,
-                  finalize_callback_t finalize_func,
-                  void *finalize_baton,
+                  int finalize_stmt_idx,
                   apr_pool_t *scratch_pool)
 {
   svn_error_t *err1;
@@ -2510,7 +2486,7 @@ with_finalization(void *baton,
       err1 = svn_error_compose_create(err1, err2);
     }
 
-  err2 = finalize_func(finalize_baton, wcroot, scratch_pool);
+  err2 = svn_sqlite__exec_statements(wcroot->sdb, finalize_stmt_idx);
 
   return svn_error_return(svn_error_compose_create(err1, err2));
 }
@@ -5136,9 +5112,6 @@ set_changelist_txn(void *baton,
       SVN_ERR(svn_sqlite__step_done(stmt));
     }
 
-  /* Drop the targets tree table. */
-  SVN_ERR(svn_sqlite__exec_statements(wcroot->sdb, STMT_DROP_TARGETS_LIST));
-
   return SVN_NO_ERROR;
 }
 
@@ -5204,8 +5177,6 @@ svn_wc__db_op_set_changelist(svn_wc__db_
   const char *local_relpath;
   struct set_changelist_baton_t scb = { new_changelist, changelist_filter,
                                         depth };
-  int final_queries[] = { STMT_DROP_CHANGELIST_LIST, STMT_DROP_TARGETS_LIST,
-                          -1 };
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
 
@@ -5229,7 +5200,7 @@ svn_wc__db_op_set_changelist(svn_wc__db_
                                             do_changelist_notify, NULL,
                                             cancel_func, cancel_baton,
                                             notify_func, notify_baton,
-                                            run_final_query, final_queries,
+                                            STMT_FINALIZE_CHANGELIST,
                                             scratch_pool));
 }
 
@@ -6390,7 +6361,6 @@ svn_wc__db_op_delete(svn_wc__db_t *db,
   svn_wc__db_wcroot_t *wcroot;
   const char *local_relpath;
   struct op_delete_baton_t odb;
-  int final_queries[] = { STMT_DROP_DELETE_LIST, -1 };
 
   SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
 
@@ -6413,7 +6383,7 @@ svn_wc__db_op_delete(svn_wc__db_t *db,
                                             do_delete_notify, NULL,
                                             cancel_func, cancel_baton,
                                             notify_func, notify_baton,
-                                            run_final_query, final_queries,
+                                            STMT_FINALIZE_DELETE,
                                             scratch_pool));
 }