Commit 1fe03b5f authored by Adrian Hunter's avatar Adrian Hunter Committed by Arnaldo Carvalho de Melo

perf script python: Add support for sqlite3 to call-graph-from-sql.py

Add support for SQLite 3 to the call-graph-from-sql.py script. The SQL
statements work as is, so just detect the database type by checking if the
SQLite 3 file exists.

Committer notes:

Tested collecting the PT data on a RHEL7.4, generating the SQLite3
database there and then moving it to a Fedora 26 system where the
call-graph-from-sql.py script was run, using python-pyside version
1.2.2-7fc26 to see the callgraphs using Qt4.
Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Link: http://lkml.kernel.org/r/1501749090-20357-6-git-send-email-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 69e6e410
#!/usr/bin/python2 #!/usr/bin/python2
# call-graph-from-sql.py: create call-graph from postgresql database # call-graph-from-sql.py: create call-graph from sql database
# Copyright (c) 2014-2017, Intel Corporation. # Copyright (c) 2014-2017, Intel Corporation.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
...@@ -11,16 +11,17 @@ ...@@ -11,16 +11,17 @@
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details. # more details.
# To use this script you will need to have exported data using the # To use this script you will need to have exported data using either the
# export-to-postgresql.py script. Refer to that script for details. # export-to-sqlite.py or the export-to-postgresql.py script. Refer to those
# scripts for details.
# #
# Following on from the example in the export-to-postgresql.py script, a # Following on from the example in the export scripts, a
# call-graph can be displayed for the pt_example database like this: # call-graph can be displayed for the pt_example database like this:
# #
# python tools/perf/scripts/python/call-graph-from-sql.py pt_example # python tools/perf/scripts/python/call-graph-from-sql.py pt_example
# #
# Note this script supports connecting to remote databases by setting hostname, # Note that for PostgreSQL, this script supports connecting to remote databases
# port, username, password, and dbname e.g. # by setting hostname, port, username, password, and dbname e.g.
# #
# python tools/perf/scripts/python/call-graph-from-sql.py "hostname=myhost username=myuser password=mypassword dbname=pt_example" # python tools/perf/scripts/python/call-graph-from-sql.py "hostname=myhost username=myuser password=mypassword dbname=pt_example"
# #
...@@ -296,8 +297,19 @@ if __name__ == '__main__': ...@@ -296,8 +297,19 @@ if __name__ == '__main__':
dbname = sys.argv[1] dbname = sys.argv[1]
is_sqlite3 = False
try:
f = open(dbname)
if f.read(15) == "SQLite format 3":
is_sqlite3 = True
f.close()
except:
pass
if is_sqlite3:
db = QSqlDatabase.addDatabase('QSQLITE')
else:
db = QSqlDatabase.addDatabase('QPSQL') db = QSqlDatabase.addDatabase('QPSQL')
opts = dbname.split() opts = dbname.split()
for opt in opts: for opt in opts:
if '=' in opt: if '=' in opt:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment