@@ -502,6 +502,12 @@ def limitQuery(self, num, query, field):
502502 if " ORDER BY " in limitedQuery :
503503 limitedQuery = limitedQuery [:limitedQuery .index (" ORDER BY " )]
504504
505+ notDistincts = re .findall ("DISTINCT[\(\s+](.+?)\)*\s+" , limitedQuery , re .I )
506+
507+ for notDistinct in notDistincts :
508+ limitedQuery = limitedQuery .replace ("DISTINCT(%s)" % notDistinct , notDistinct )
509+ limitedQuery = limitedQuery .replace ("DISTINCT %s" % notDistinct , notDistinct )
510+
505511 if limitedQuery .startswith ("SELECT TOP " ) or limitedQuery .startswith ("TOP " ):
506512 topNums = re .search (queries [kb .dbms ].limitregexp , limitedQuery , re .I )
507513
@@ -517,11 +523,13 @@ def limitQuery(self, num, query, field):
517523 limitedQuery = limitedQuery .replace ("TOP %s " % topNum , "" )
518524
519525 if forgeNotIn :
520- limitedQuery = limitedQuery .replace ("SELECT " , (limitStr % 1 ), 1 )
526+ limitedQuery = limitedQuery .replace ("SELECT " , (limitStr % 1 ), 1 )
527+
521528 if " WHERE " in limitedQuery :
522529 limitedQuery = "%s AND %s " % (limitedQuery , field )
523530 else :
524531 limitedQuery = "%s WHERE %s " % (limitedQuery , field )
532+
525533 limitedQuery += "NOT IN (%s" % (limitStr % num )
526534 limitedQuery += "%s %s)" % (field , fromFrom )
527535
0 commit comments