Changeset 178 in tracdarcs for tracdarcs/dbutil.py


Ignore:
Timestamp:
05/12/10 18:40:53 (2 years ago)
Author:
lele@…
Hash name:
20100512164053-97f81-e69d930ef723d57a771c19c6a23bc5ed9781b30a
Message:

Use a parametrized query

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tracdarcs/dbutil.py

    r169 r178  
    3535IS_TRAC_0_12_OR_BETTER = not not re.match(r'^0\.1[2-9]', tracVersion) 
    3636 
    37 def query_nodes_for_revision(repo_id, rev=None): 
     37def query_nodes_for_revision(repo_id, rev=None, cond=None): 
    3838    ''' 
    3939    Returns a query which represents the nodes available as of 
     
    4444    if rev is None: 
    4545        revfilter = "dn.remove_rev IS NULL" 
     46        revargs = [] 
    4647    else: 
    47         revfilter = ("dnc2.rev <= %d" 
    48                      " AND ((dn.remove_rev IS NULL) " 
    49                      "      OR (dn.remove_rev > %d))" % (rev,rev)) 
     48        revfilter = ("dnc2.rev <= %s" 
     49                     " AND ((dn.remove_rev IS NULL)" 
     50                     " OR (dn.remove_rev > %s))") 
     51        revargs = [rev, rev] 
     52    if cond is None: 
     53        cond = '' 
     54    else: 
     55        cond = 'AND %s' % cond 
    5056    q = """SELECT dnc.node_id, dnc.rev, dnc.path, dnc.parent_id 
    5157           FROM darcs_node_changes AS dnc 
    52            WHERE dnc.repo_id = %s 
     58           WHERE dnc.repo_id = %%s 
    5359             AND dnc.rev = (SELECT max(dnc2.rev) 
    54                             FROM darcs_node_changes AS dnc2, darcs_nodes AS dn 
     60                            FROM darcs_node_changes AS dnc2 
     61                              JOIN darcs_nodes AS dn 
     62                                   ON dn.repo_id = dnc2.repo_id 
     63                                      AND dn.node_id = dnc2.node_id 
    5564                            WHERE dnc2.repo_id = dnc.repo_id 
    5665                              AND dnc2.node_id = dnc.node_id 
    57                               AND dn.repo_id = dnc2.repo_id 
    58                               AND dn.node_id = dnc2.node_id 
    59                               AND %s)""" % (repo_id, revfilter) 
    60     return q 
     66                              AND %s) 
     67             %s""" % (revfilter, cond) 
     68    return q, [repo_id] + revargs 
    6169 
    6270def get_node_type(db, repo_id, node_id): 
Note: See TracChangeset for help on using the changeset viewer.