Changeset 178 in tracdarcs


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

Use a parametrized query

Location:
tracdarcs
Files:
3 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): 
  • tracdarcs/repository.py

    r176 r178  
    9595        else: 
    9696            c = self.db.cursor() 
    97             q = query_nodes_for_revision(self.id, rev) 
    98             q += ' AND dnc.path = %s' 
    99             c.execute(q, (path,)) 
     97            q,args = query_nodes_for_revision(self.id, rev, 'dnc.path = %s') 
     98            args.append(path) 
     99            c.execute(q, args) 
    100100            row = c.fetchone() 
    101101            if row is None: 
     
    334334        if self.__node_type == NODE_FILE_TYPE: 
    335335            return 
    336         q = query_nodes_for_revision(self.repos.id, self.rev) 
    337336        if self.__node_id is None: 
    338             q += ' AND dnc.parent_id IS NULL' 
    339         else: 
    340             q += ' AND dnc.parent_id = %d' % self.__node_id 
    341         c = self.repos.db.cursor() 
    342         c.execute(q) 
     337            cond = 'dnc.parent_id IS NULL' 
     338        else: 
     339            cond = 'dnc.parent_id = %d' % self.__node_id 
     340        q,args = query_nodes_for_revision(self.repos.id, self.rev, cond) 
     341        c = self.repos.db.cursor() 
     342        c.execute(q, args) 
    343343        for node_id,rev,path,_ in c: 
    344344            node_type = get_node_type(self.repos.db, self.repos.id, node_id) 
  • tracdarcs/updatedb.py

    r176 r178  
    252252        if path in self.ignore_paths_in_db: 
    253253            return None 
    254         q = query_nodes_for_revision(self.repo_id) 
    255         q += ' AND dnc.path = %s' 
    256         c = self.db.cursor() 
    257         c.execute(q, (path,)) 
     254        q,args = query_nodes_for_revision(self.repo_id, cond='dnc.path = %s') 
     255        args.append(path) 
     256        c = self.db.cursor() 
     257        c.execute(q, args) 
    258258        row = c.fetchone() 
    259259        if row is None: 
     
    279279                out.append(info) 
    280280        c = self.db.cursor() 
    281         q = query_nodes_for_revision(self.repo_id) 
    282         q += ' AND dnc.path LIKE %s' 
    283         c.execute(q, (path+'/%',)) 
     281        q,args = query_nodes_for_revision(self.repo_id, cond='dnc.path LIKE %s') 
     282        args.append(path+'/%') 
     283        c.execute(q, args) 
    284284        for row in c: 
    285285            node_id,rev,path,parent_id = row 
Note: See TracChangeset for help on using the changeset viewer.