Bert Huijben wrote on Sat, Mar 26, 2011 at 01:06:10 -0700: > The current query can stop at the first result while count() needs all > results. >
SELECT COUNT(local_relpath) > 0 ...; ? > Bert Huijben (Cell phone) From: Daniel Shahaf > Sent: zaterdag 26 maart 2011 8:12 > To: dev@subversion.apache.org > Cc: comm...@subversion.apache.org > Subject: Re: svn commit: r1081484 - > in /subversion/trunk/subversion/libsvn_wc: wc-queries.sql wc_db.c > s...@apache.org wrote on Mon, Mar 14, 2011 at 17:24:06 -0000: > > Author: stsp > > Date: Mon Mar 14 17:24:05 2011 > > New Revision: 1081484 > > > > URL: http://svn.apache.org/viewvc?rev=1081484&view=rev > > Log: > > In the revision status code, use a query to determine whether property > > modifications are present in the WC, instead of calling > > svn_wc__props_modified() from wc_db.c. > > > > Suggested by: rhuijben > > > > * subversion/libsvn_wc/wc-queries.sql > > (STMT_SELECT_NODES_WITH_PROP_MODIFICATIONS): New query. > > > > * subversion/libsvn_wc/wc_db.c > > (has_local_mods): Use the new query instead of svn_wc__props_modified(). > > > > 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=1081484&r1=1081483&r2=1081484&view=diff > > ============================================================================== > > --- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original) > > +++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Mon Mar 14 > > 17:24:05 2011 > > @@ -910,6 +910,11 @@ WHERE wc_id = ?1 AND (local_relpath = ?2 > > presence = 'base-deleted') > > AND file_external IS NULL; > > > > +-- STMT_SELECT_NODES_WITH_PROP_MODIFICATIONS > > +SELECT local_relpath FROM actual_node > > +WHERE wc_id = ?1 AND (local_relpath = ?2 OR local_relpath LIKE ?3 ESCAPE > > '#') > > + AND properties IS NOT NULL; > > + > > Should this be > > SELECT COUNT(local_relpath) ... > > ? > > > /* This query expects repos_path(wcroot)/% as arg 4, > > and repos_path(wcroot), with a slash appended unless the path is empty, > > as arg 5. */ > > > > Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c > > URL: > > http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1081484&r1=1081483&r2=1081484&view=diff > > ============================================================================== > > --- subversion/trunk/subversion/libsvn_wc/wc_db.c (original) > > +++ subversion/trunk/subversion/libsvn_wc/wc_db.c Mon Mar 14 17:24:05 2011 > > @@ -9523,9 +9523,27 @@ has_local_mods(svn_boolean_t *is_modifie > > > > if (! *is_modified) > > { > > + /* Check for property modifications. */ > > + SVN_ERR(svn_sqlite__get_statement( > > + &stmt, wcroot->sdb, > > + STMT_SELECT_NODES_WITH_PROP_MODIFICATIONS)); > > + SVN_ERR(svn_sqlite__bindf(stmt, "iss", wcroot->wc_id, local_relpath, > > + construct_like_arg(local_relpath, > > + scratch_pool))); > > + /* If this query returns a row, the working copy is modified. */ > > + SVN_ERR(svn_sqlite__step(&have_row, stmt)); > > + *is_modified = have_row; > > + SVN_ERR(svn_sqlite__reset(stmt)); > > + > > + if (cancel_func) > > + SVN_ERR(cancel_func(cancel_baton)); > > + } > > + > > + if (! *is_modified) > > + { > > apr_pool_t *iterpool = NULL; > > > > - /* Check for text and prop modifications. */ > > + /* Check for text modifications. */ > > SVN_ERR(svn_sqlite__get_statement(&stmt, wcroot->sdb, > > > > STMT_SELECT_CURRENT_NODES_RECURSIVE)); > > SVN_ERR(svn_sqlite__bindf(stmt, "iss", wcroot->wc_id, local_relpath, > > @@ -9548,12 +9566,6 @@ has_local_mods(svn_boolean_t *is_modifie > > svn_sqlite__column_text(stmt, 0, > > iterpool), > > iterpool); > > - > > - SVN_ERR(svn_wc__props_modified(is_modified, db, node_abspath, > > - iterpool)); > > - if (*is_modified) > > - break; > > - > > node_kind = svn_sqlite__column_token(stmt, 1, kind_map); > > if (node_kind == svn_wc__db_kind_file) > > { > > > >