perf scripts python: exported-sql-viewer.py: Hide Call Graph option if no calls table
authorAdrian Hunter <adrian.hunter@intel.com>
Fri, 22 Feb 2019 07:27:20 +0000 (09:27 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 22 Feb 2019 19:52:07 +0000 (16:52 -0300)
The Call Graph depends on the calls table which is optional when exporting
data, so hide the Call Graph option if there is no calls table.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/scripts/python/exported-sql-viewer.py

index c20b510ace8fc4ba3825cc8dd29d188fc9518662..58a95241ff704dd9a8db342bc796b058d4f9d860 100755 (executable)
@@ -1786,6 +1786,16 @@ def GetEventList(db):
                events.append(query.value(0))
        return events
 
+# Is a table selectable
+
+def IsSelectable(db, table):
+       query = QSqlQuery(db)
+       try:
+               QueryExec(query, "SELECT * FROM " + table + " LIMIT 1")
+       except:
+               return False
+       return True
+
 # SQL data preparation
 
 def SQLTableDataPrep(query, count):
@@ -2298,7 +2308,8 @@ class MainWindow(QMainWindow):
                edit_menu.addAction(CreateAction("&Enlarge Font", "Make text bigger", self.EnlargeFont, self, [QKeySequence("Ctrl++")]))
 
                reports_menu = menu.addMenu("&Reports")
-               reports_menu.addAction(CreateAction("Context-Sensitive Call &Graph", "Create a new window containing a context-sensitive call graph", self.NewCallGraph, self))
+               if IsSelectable(glb.db, "calls"):
+                       reports_menu.addAction(CreateAction("Context-Sensitive Call &Graph", "Create a new window containing a context-sensitive call graph", self.NewCallGraph, self))
 
                self.EventMenu(GetEventList(glb.db), reports_menu)