smarted BELONGS, thanks Jonathan

This commit is contained in:
mdipierro
2013-08-09 11:05:52 -05:00
parent 9c1702f5c3
commit aeb15317e0
2 changed files with 12 additions and 7 deletions
+1 -1
View File
@@ -1 +1 @@
Version 2.6.0-development+timestamp.2013.08.09.04.48.26
Version 2.6.0-development+timestamp.2013.08.09.11.04.59
+11 -6
View File
@@ -1263,12 +1263,17 @@ class BaseAdapter(ConnectionPool):
return '(%s OR %s)' % (self.expand(first), self.expand(second))
def BELONGS(self, first, second):
if isinstance(second, str):
return '(%s IN (%s))' % (self.expand(first), second[:-1])
elif not second:
return '(1=0)'
items = ','.join(self.expand(item, first.type) for item in second)
return '(%s IN (%s))' % (self.expand(first), items)
if isinstance(second, str):
return '(%s IN (%s))' % (self.expand(first), second[:-1])
if not second:
return '(1=0)'
if isinstance(second, (list,tuple,frozenset)):
second = set(second) # remove duplicates, make mutable
if isinstance(second, set) and None in second:
second = second.remove(None)
return self.OR(self.EQ(first, None), self.BELONGS(first, second))
items = ','.join(self.expand(item, first.type) for item in second)
return '(%s IN (%s))' % (self.expand(first), items)
def REGEXP(self, first, second):
"regular expression operator"