fix for that MSSQL limit/top problem

This commit is contained in:
Miroslav Stampar 2011-02-07 16:24:23 +00:00
parent 71d1b72e0e
commit 265e7ca272
2 changed files with 5 additions and 5 deletions

View File

@ -592,7 +592,7 @@ class Agent:
return inbandQuery
def limitQuery(self, num, query, field=None):
def limitQuery(self, num, query, field=None, uniqueField=None):
"""
Take in input a query string and return its limited query string.
@ -672,12 +672,12 @@ class Agent:
limitedQuery = limitedQuery.replace("SELECT ", (limitStr % 1), 1)
if " WHERE " in limitedQuery:
limitedQuery = "%s AND %s " % (limitedQuery, field)
limitedQuery = "%s AND %s " % (limitedQuery, field if not uniqueField else uniqueField)
else:
limitedQuery = "%s WHERE %s " % (limitedQuery, field)
limitedQuery = "%s WHERE %s " % (limitedQuery, field if not uniqueField else uniqueField)
limitedQuery += "NOT IN (%s" % (limitStr % num)
limitedQuery += "%s %s)" % (field, fromFrom)
limitedQuery += "%s %s)" % (field if not uniqueField else uniqueField, fromFrom)
if orderBy:
limitedQuery += orderBy

View File

@ -81,7 +81,7 @@ def __errorFields(expression, expressionFields, expressionFieldsList, expected=N
if isinstance(num, int):
origExpr = expression
expression = agent.limitQuery(num, expression, field)
expression = agent.limitQuery(num, expression, field, expressionFieldsList[0])
if "ROWNUM" in expressionFieldsList:
expressionReplaced = expression