From fb6a84b10b5163615ce91065ad27549c3ee28dac Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Thu, 18 Aug 2011 07:03:53 +0000 Subject: [PATCH] minor update (when columns are missing from information_schema too) --- plugins/generic/enumeration.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/plugins/generic/enumeration.py b/plugins/generic/enumeration.py index f65b88962..7feec85dc 100644 --- a/plugins/generic/enumeration.py +++ b/plugins/generic/enumeration.py @@ -970,7 +970,7 @@ class Enumeration: return kb.data.cachedTables - def getColumns(self, onlyColNames=False, colTuple=None): + def getColumns(self, onlyColNames=False, colTuple=None, bruteForce=None): self.forceDbmsEnum() if conf.db is None or conf.db == "CD": @@ -1030,19 +1030,18 @@ class Enumeration: for tbl in tblList: tblList[tblList.index(tbl)] = safeSQLIdentificatorNaming(tbl, True) - bruteForce = False + if bruteForce is None: + if Backend.isDbms(DBMS.MYSQL) and not kb.data.has_information_schema: + errMsg = "information_schema not available, " + errMsg += "back-end DBMS is MySQL < 5.0" + logger.error(errMsg) + bruteForce = True - if Backend.isDbms(DBMS.MYSQL) and not kb.data.has_information_schema: - errMsg = "information_schema not available, " - errMsg += "back-end DBMS is MySQL < 5.0" - logger.error(errMsg) - bruteForce = True - - elif Backend.isDbms(DBMS.ACCESS): - errMsg = "cannot retrieve column names, " - errMsg += "back-end DBMS is Access" - logger.error(errMsg) - bruteForce = True + elif Backend.isDbms(DBMS.ACCESS): + errMsg = "cannot retrieve column names, " + errMsg += "back-end DBMS is Access" + logger.error(errMsg) + bruteForce = True if bruteForce: resumeAvailable = False @@ -1278,6 +1277,9 @@ class Enumeration: errMsg += "table on database '%s'" % conf.db logger.error(errMsg) + if bruteForce is None: + return self.getColumns(onlyColNames=onlyColNames, colTuple=colTuple, bruteForce=True) + return kb.data.cachedColumns def getSchema(self):