Re: [PATCH] perf scripts python: exported-sql-viewer.py: Fix use of TRUE with SQLite

From: Arnaldo Carvalho de Melo
Date: Wed Nov 13 2019 - 07:15:21 EST


Em Wed, Nov 13, 2019 at 02:02:06PM +0200, Adrian Hunter escreveu:
> Prior to version 3.23 SQLite does not support TRUE or FALSE, so always use
> 1 and 0 for SQLite.
>
> Fixes: 26c11206f433 ("perf scripts python: exported-sql-viewer.py: Use new 'has_calls' column")
> Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx

Thanks, applied and added the first tag with that fixed cset:

Cc: stable@xxxxxxxxxxxxxxx # v5.3+

[acme@quaco perf]$ git tag --contains 26c11206f433 | grep ^v[3-9] | head
v5.3
v5.3-rc1
v5.3-rc2
v5.3-rc3
v5.3-rc4
v5.3-rc5
v5.3-rc6
v5.3-rc7
v5.3-rc8
v5.4-rc1
[acme@quaco perf]$

- Arnaldo

> ---
> tools/perf/scripts/python/exported-sql-viewer.py | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/tools/perf/scripts/python/exported-sql-viewer.py b/tools/perf/scripts/python/exported-sql-viewer.py
> index ebc6a2e5eae9..26d7be785288 100755
> --- a/tools/perf/scripts/python/exported-sql-viewer.py
> +++ b/tools/perf/scripts/python/exported-sql-viewer.py
> @@ -637,7 +637,7 @@ class CallGraphRootItem(CallGraphLevelItemBase):
> self.query_done = True
> if_has_calls = ""
> if IsSelectable(glb.db, "comms", columns = "has_calls"):
> - if_has_calls = " WHERE has_calls = TRUE"
> + if_has_calls = " WHERE has_calls = " + glb.dbref.TRUE
> query = QSqlQuery(glb.db)
> QueryExec(query, "SELECT id, comm FROM comms" + if_has_calls)
> while query.next():
> @@ -918,7 +918,7 @@ class CallTreeRootItem(CallGraphLevelItemBase):
> self.query_done = True
> if_has_calls = ""
> if IsSelectable(glb.db, "comms", columns = "has_calls"):
> - if_has_calls = " WHERE has_calls = TRUE"
> + if_has_calls = " WHERE has_calls = " + glb.dbref.TRUE
> query = QSqlQuery(glb.db)
> QueryExec(query, "SELECT id, comm FROM comms" + if_has_calls)
> while query.next():
> @@ -1290,7 +1290,7 @@ class SwitchGraphData(GraphData):
> QueryExec(query, "SELECT id, c_time"
> " FROM comms"
> " WHERE c_thread_id = " + str(thread_id) +
> - " AND exec_flag = TRUE"
> + " AND exec_flag = " + self.collection.glb.dbref.TRUE +
> " AND c_time >= " + str(start_time) +
> " AND c_time <= " + str(end_time) +
> " ORDER BY c_time, id")
> @@ -5016,6 +5016,12 @@ class DBRef():
> def __init__(self, is_sqlite3, dbname):
> self.is_sqlite3 = is_sqlite3
> self.dbname = dbname
> + self.TRUE = "TRUE"
> + self.FALSE = "FALSE"
> + # SQLite prior to version 3.23 does not support TRUE and FALSE
> + if self.is_sqlite3:
> + self.TRUE = "1"
> + self.FALSE = "0"
>
> def Open(self, connection_name):
> dbname = self.dbname
> --
> 2.17.1

--

- Arnaldo