fixed contains(field) in postgresq for list:string
This commit is contained in:
@@ -1 +1 @@
|
|||||||
Version 2.4.5-stable+timestamp.2013.03.31.19.13.29
|
Version 2.4.5-stable+timestamp.2013.04.01.09.31.59
|
||||||
|
|||||||
+17
-5
@@ -2614,7 +2614,11 @@ class PostgreSQLAdapter(BaseAdapter):
|
|||||||
"port=%s password='%s'") \
|
"port=%s password='%s'") \
|
||||||
% (db, user, host, port, password)
|
% (db, user, host, port, password)
|
||||||
# choose diver according uri
|
# choose diver according uri
|
||||||
self.__version__ = "%s %s" % (self.driver.__name__, self.driver.__version__)
|
if self.driver:
|
||||||
|
self.__version__ = "%s %s" % (self.driver.__name__,
|
||||||
|
self.driver.__version__)
|
||||||
|
else:
|
||||||
|
self.__version__ = None
|
||||||
def connector(msg=msg,driver_args=driver_args):
|
def connector(msg=msg,driver_args=driver_args):
|
||||||
return self.driver.connect(msg,**driver_args)
|
return self.driver.connect(msg,**driver_args)
|
||||||
self.connector = connector
|
self.connector = connector
|
||||||
@@ -2670,10 +2674,18 @@ class PostgreSQLAdapter(BaseAdapter):
|
|||||||
self.expand('%'+second,'string'))
|
self.expand('%'+second,'string'))
|
||||||
|
|
||||||
def CONTAINS(self,first,second,case_sensitive=False):
|
def CONTAINS(self,first,second,case_sensitive=False):
|
||||||
if first.type in ('string','text', 'json'):
|
if isinstance(second,Expression):
|
||||||
second = '%'+str(second).replace('%','%%')+'%'
|
expr = self.expand(second,'string')
|
||||||
elif first.type.startswith('list:'):
|
if first.type.startswith('list:'):
|
||||||
second = '%|'+str(second).replace('|','||').replace('%','%%')+'|%'
|
second = Expression(None,"'%%|' || %s || '|%%'" % expr)
|
||||||
|
elif not first.type in ('string', 'text', 'json'):
|
||||||
|
raise RuntimeError("Expression Not Supported")
|
||||||
|
else:
|
||||||
|
if first.type in ('string','text', 'json'):
|
||||||
|
second = '%'+str(second).replace('%','%%')+'%'
|
||||||
|
elif first.type.startswith('list:'):
|
||||||
|
second = '%|'+str(second).replace('|','||')\
|
||||||
|
.replace('%','%%')+'|%'
|
||||||
op = case_sensitive and self.LIKE or self.ILIKE
|
op = case_sensitive and self.LIKE or self.ILIKE
|
||||||
return op(first,second)
|
return op(first,second)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user