[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Literals in wc SQLite queries

From: Daniel Shahaf <danielsh_at_elego.de>
Date: Mon, 10 Dec 2012 18:59:21 +0200

As I said on IRC, happy to look into this, my main question is how
transform_sql.py would know what files to scan for the MAP_DELETED <->
'base-deleted' mappings.

Do we want a header file with a well-known name
(subversion/include/private/)? Maybe in the same directory as the
source .sql file? Maybe the .sql file should have a directive pointing
to the map file?

Among these I prefer the second one, i.e.,
subversion/libsvn_wc/wc-queries.sql -> subversion/libsvn_wc/token-maps.h

Philip - perhaps you can move the relevant definitions to that header?
Then I'll follow up with a transform_sql.py patch.

Philip Martin wrote on Fri, Dec 07, 2012 at 17:54:16 +0000:
> Columns such as nodes.kind, nodes.presence, etc. have strings that
> should be one of a discrete set of values. When we bind these columns
> in C code we use something like:
>
> svn_sqlite__bindf("t", presence_map, svn_wc__db_status_normal);
>
> This means we only use known values (svn_wc__db_status_normal) and the
> map converts it to the correct discrete string. This checking happens
> at build time.
>
> We also have queries where the strings are defined as literals in
> wc-queries.sql like:
>
> DELETE FROM nodes
> WHERE wc_id = ?1
> AND IS_STRICT_DESCENDANT_OF(local_relpath, ?2)
> AND (op_depth < ?3
> OR (op_depth = ?3 AND presence = 'base-deleted'))
>
> There is no checking of these literals to catch errors such as
> 'base-delete'.
>
> I've been thinking that transform_sql.py should do some checking.
> Perhaps we could move the maps into a know header, annotate them:
>
> { "base-deleted", svn_wc__db_status_base_deleted }, /* MAP_DELETED */
>
> and then have transform_sql.py parse the header and convert:
>
> OR (op_depth = ?3 AND presence = MAP_DELETED))
>
> into
>
> OR (op_depth = ?3 AND presence = 'base-deleted'))
>
> --
> Philip
Received on 2012-12-10 18:00:45 CET

This is an archived mail posted to the Subversion Dev mailing list.