diff --git a/lib/core/agent.py b/lib/core/agent.py index 9fa48e8aa..1a34f0299 100644 --- a/lib/core/agent.py +++ b/lib/core/agent.py @@ -385,7 +385,8 @@ class Agent: elif fieldsNoSelect: fieldsToCastStr = fieldsNoSelect - if re.search("\A\w+\(.*\)", fieldsToCastStr, re.I): # Function + # Function + if re.search("\A\w+\(.*\)", fieldsToCastStr, re.I) or fieldsSelectCase: fieldsToCastList = [fieldsToCastStr] else: fieldsToCastList = fieldsToCastStr.replace(", ", ",") @@ -700,10 +701,15 @@ class Agent: @rtype: C{str} """ + caseExpression = expression + if Backend.getIdentifiedDbms() is not None and hasattr(queries[Backend.getIdentifiedDbms()], "case"): - return queries[Backend.getIdentifiedDbms()].case.query % expression - else: - return expression + caseExpression = queries[Backend.getIdentifiedDbms()].case.query % expression + + if Backend.getIdentifiedDbms() in FROM_TABLE and not caseExpression.upper().endswith(FROM_TABLE[Backend.getIdentifiedDbms()]): + caseExpression += FROM_TABLE[Backend.getIdentifiedDbms()] + + return caseExpression def addPayloadDelimiters(self, inpStr): """ diff --git a/xml/queries.xml b/xml/queries.xml index a25a43e8a..d1bc05b1b 100644 --- a/xml/queries.xml +++ b/xml/queries.xml @@ -225,7 +225,7 @@ - + @@ -386,7 +386,7 @@ - +