From fdea8ddea600d5e088b0e7c1690e027de92d01ec Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Wed, 30 Jan 2013 16:55:09 +0100 Subject: [PATCH] Starting to clean up a mess in Oracle's world of DISTINCT (part of Issue #342 and #372) --- lib/core/agent.py | 3 +++ xml/queries.xml | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/core/agent.py b/lib/core/agent.py index 2f6ce6238..58230e1e4 100644 --- a/lib/core/agent.py +++ b/lib/core/agent.py @@ -416,6 +416,7 @@ class Agent(object): prefixRegex = r"(?:\s+(?:FIRST|SKIP)\s+\d+)*" fieldsSelectTop = re.search(r"\ASELECT\s+TOP\s+[\d]+\s+(.+?)\s+FROM", query, re.I) + fieldsSelectRownum = re.search(r"SELECT\s+([^()]+?),\s*ROWNUM AS LIMIT FROM", query, re.I) fieldsSelectDistinct = re.search(r"\ASELECT%s\s+DISTINCT\((.+?)\)\s+FROM" % prefixRegex, query, re.I) fieldsSelectCase = re.search(r"\ASELECT%s\s+(\(CASE WHEN\s+.+\s+END\))" % prefixRegex, query, re.I) fieldsSelectFrom = re.search(r"\ASELECT%s\s+(.+?)\s+FROM " % prefixRegex, query, re.I) @@ -433,6 +434,8 @@ class Agent(object): fieldsToCastStr = fieldsSelect.groups()[0] elif fieldsSelectTop: fieldsToCastStr = fieldsSelectTop.groups()[0] + elif fieldsSelectRownum: + fieldsToCastStr = fieldsSelectRownum.groups()[0] elif fieldsSelectDistinct: fieldsToCastStr = fieldsSelectDistinct.groups()[0] elif fieldsSelectCase: diff --git a/xml/queries.xml b/xml/queries.xml index c41243ace..d57f89aba 100644 --- a/xml/queries.xml +++ b/xml/queries.xml @@ -237,11 +237,11 @@ - + - + - +