Contact: fumanchu@aminus.org

Log in as guest/dejavu to create tickets

I think I've seen this ORM somewhere before...

Changeset 55

Show
Ignore:
Timestamp:
01/20/05 06:45:39
Author:
fumanchu
Message:

Fixed escaping of wildcards in LIKE queries for Postgres.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/storage/storepypgsql.py

    r54 r55  
    66 
    77 
     8class AdapterToPgSQL(db.AdapterToSQL): 
     9     
     10    like_escapes = [("%", r"\\%"), ("_", r"\\_")] 
     11 
     12 
    813class PgSQLDecompiler(db.SQLDecompiler): 
    914     
     
    1116        if isinstance(op1, db.ConstWrapper): 
    1217            # Looking for text in a field. Use ILike (reverse terms). 
    13             return op2 + " ILIKE '%" + op1.strip("'\"") + "%'" 
     18            return op2 + " ILIKE '%" + self.adapter.escape_like(op1) + "%'" 
    1419        else: 
    1520            # Looking for field in (a, b, c). 
     
    1924     
    2025    def dejavu_istartswith(self, x, y): 
    21         return x + " ILIKE '" + y.strip("'\"") + "%'" 
     26        return x + " ILIKE '" + self.adapter.escape_like(y) + "%'" 
    2227     
    2328    def dejavu_iendswith(self, x, y): 
    24         return x + " ILIKE '%" + y.strip("'\"") + "'" 
     29        return x + " ILIKE '%" + self.adapter.escape_like(y) + "'" 
    2530     
    2631    def dejavu_ieq(self, x, y): 
    2732        # ILIKE with no wildcards should behave like ieq. 
    28         return x + " ILIKE " + y 
     33        return x + " ILIKE '" + self.adapter.escape_like(y) + "'" 
    2934     
    3035    def dejavu_year(self, x): 
     
    3944    close_connection_method = 'finish' 
    4045    decompiler = PgSQLDecompiler 
     46    toAdapter = AdapterToPgSQL() 
    4147     
    4248    def __init__(self, name, arena, allOptions={}):