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/04/11 23:48:13 UTC
svn commit: r1091225 - in /subversion/trunk/subversion/libsvn_wc:
wc-queries.sql wc_db.c
Author: hwright
Date: Mon Apr 11 21:48:12 2011
New Revision: 1091225
URL: http://svn.apache.org/viewvc?rev=1091225&view=rev
Log:
Remove the need to pull the existing changelist from the actual node before
setting it, but making the triggers slightly more intelligent.
* subversion/libsvn_wc/wc-queries.sql
(trigger_changelist_list_actual_cl_clear,
trigger_changelist_list_actual_cl_set): Only fire when the new content is
different than the old content.
* subversion/libsvn_wc/wc_db.c
(set_changelist_txn): Don't fetch or use the existing changelist.
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=1091225&r1=1091224&r2=1091225&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original)
+++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Mon Apr 11 21:48:12 2011
@@ -376,7 +376,8 @@ END;
DROP TRIGGER IF EXISTS trigger_changelist_list_actual_cl_clear;
CREATE TEMPORARY TRIGGER trigger_changelist_list_actual_cl_clear
BEFORE UPDATE ON actual_node
-WHEN OLD.changelist IS NOT NULL
+WHEN OLD.changelist IS NOT NULL AND
+ (OLD.changelist != NEW.changelist OR NEW.changelist IS NULL)
BEGIN
/* 27 corresponds to svn_wc_notify_changelist_clear */
INSERT INTO changelist_list(wc_id, local_relpath, notify, changelist)
@@ -385,7 +386,8 @@ END;
DROP TRIGGER IF EXISTS trigger_changelist_list_actual_cl_set;
CREATE TEMPORARY TRIGGER trigger_changelist_list_actual_cl_set
BEFORE UPDATE ON actual_node
-WHEN NEW.CHANGELIST IS NOT NULL
+WHEN NEW.CHANGELIST IS NOT NULL AND
+ (OLD.changelist != NEW.changelist OR OLD.changelist IS NULL)
BEGIN
/* 26 corresponds to svn_wc_notify_changelist_set */
INSERT INTO changelist_list(wc_id, local_relpath, notify, changelist)
Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1091225&r1=1091224&r2=1091225&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.c Mon Apr 11 21:48:12 2011
@@ -3393,7 +3393,6 @@ set_changelist_txn(void *baton,
apr_pool_t *scratch_pool)
{
const char *new_changelist = baton;
- const char *existing_changelist = NULL;
svn_sqlite__stmt_t *stmt;
svn_boolean_t have_row;
@@ -3401,8 +3400,6 @@ set_changelist_txn(void *baton,
STMT_SELECT_ACTUAL_NODE));
SVN_ERR(svn_sqlite__bindf(stmt, "is", wcroot->wc_id, local_relpath));
SVN_ERR(svn_sqlite__step(&have_row, stmt));
- if (have_row)
- existing_changelist = svn_sqlite__column_text(stmt, 1, scratch_pool);
SVN_ERR(svn_sqlite__reset(stmt));
if (!have_row)
@@ -3424,13 +3421,6 @@ set_changelist_txn(void *baton,
}
else
{
- /* We have an existing row, and it simply needs to be updated, if
- it's different. */
- if (existing_changelist
- && new_changelist
- && strcmp(existing_changelist, new_changelist) == 0)
- return SVN_NO_ERROR;
-
SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb,
STMT_UPDATE_ACTUAL_CHANGELIST));
}