@@ -184,9 +184,6 @@ def nullAndCastField(self, field):
184184 @rtype: C{str}
185185 """
186186
187- if field .upper ().endswith (", ROWNUM AS LIMIT" ):
188- return field
189-
190187 nulledCastedField = queries [kb .dbms ].cast % field
191188 nulledCastedField = queries [kb .dbms ].isnull % nulledCastedField
192189
@@ -257,15 +254,10 @@ def getFields(self, query):
257254 @rtype: C{str}
258255 """
259256
260- if query .startswith ("SELECT " ) and "(SELECT " in query :
261- firstChar = "\\ ("
262- else :
263- firstChar = "\\ A"
264-
265- fieldsSelectTop = re .search ("%sSELECT\s+TOP\s+[\d]+\s+(.+?)\s+FROM" % firstChar , query , re .I )
266- fieldsSelectDistinct = re .search ("%sSELECT\s+DISTINCT\((.+?)\)\s+FROM" % firstChar , query , re .I )
267- fieldsSelectFrom = re .search ("%sSELECT\s+(.+?)\s+FROM\s+" % firstChar , query , re .I )
268- fieldsSelect = re .search ("%sSELECT\s+(.*)" % firstChar , query , re .I )
257+ fieldsSelectTop = re .search ("\ASELECT\s+TOP\s+[\d]+\s+(.+?)\s+FROM" , query , re .I )
258+ fieldsSelectDistinct = re .search ("\ASELECT\s+DISTINCT\((.+?)\)\s+FROM" , query , re .I )
259+ fieldsSelectFrom = re .search ("\ASELECT\s+(.+?)\s+FROM\s+" , query , re .I )
260+ fieldsSelect = re .search ("\ASELECT\s+(.*)" , query , re .I )
269261 fieldsNoSelect = query
270262
271263 if fieldsSelectTop :
@@ -282,8 +274,9 @@ def getFields(self, query):
282274 fieldsToCastList = fieldsToCastStr .replace (", " , "," )
283275 fieldsToCastList = fieldsToCastList .split ("," )
284276
285- if query .startswith ("SELECT " ) and "(SELECT " in query :
286- fieldsSelectFrom = None
277+ # TODO: really needed?!
278+ #if query.startswith("SELECT ") and "(SELECT " in query:
279+ # fieldsSelectFrom = None
287280
288281 return fieldsSelectFrom , fieldsSelect , fieldsNoSelect , fieldsSelectTop , fieldsToCastList , fieldsToCastStr
289282
@@ -331,21 +324,18 @@ def concatQuery(self, query):
331324 elif fieldsNoSelect :
332325 concatQuery = "CONCAT('%s',%s,'%s')" % (temp .start , concatQuery , temp .stop )
333326
334- elif kb .dbms in ( "Oracle " , "PostgreSQL " ):
327+ elif kb .dbms in ( "PostgreSQL " , "Oracle " ):
335328 if fieldsSelectFrom :
336329 concatQuery = concatQuery .replace ("SELECT " , "'%s'||" % temp .start , 1 )
337330 concatQuery = concatQuery .replace (" FROM " , "||'%s' FROM " % temp .stop , 1 )
338331 elif fieldsSelect :
339332 concatQuery = concatQuery .replace ("SELECT " , "'%s'||" % temp .start , 1 )
340333 concatQuery += "||'%s'" % temp .stop
341-
342- if kb .dbms == "Oracle" :
343- concatQuery += " FROM DUAL"
344334 elif fieldsNoSelect :
345335 concatQuery = "'%s'||%s||'%s'" % (temp .start , concatQuery , temp .stop )
346336
347- if kb .dbms == "Oracle" :
348- concatQuery += " FROM DUAL"
337+ if kb .dbms == "Oracle" and ( fieldsSelect or fieldsNoSelect ) :
338+ concatQuery += " FROM DUAL"
349339
350340 elif kb .dbms == "Microsoft SQL Server" :
351341 if fieldsSelectTop :
0 commit comments