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