perf scripts python: exported-sql-viewer.py: Fix pattern matching with Python 3
authorAdrian Hunter <adrian.hunter@intel.com>
Mon, 12 May 2025 09:39:32 +0000 (12:39 +0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 12 May 2025 17:18:16 +0000 (14:18 -0300)
The script allows the user to enter patterns to find symbols.

The pattern matching characters are converted for use in SQL.

For PostgreSQL the conversion involves using the Python maketrans()
method which is slightly different in Python 3 compared with Python 2.

Fix to work in Python 3.

Fixes: beda0e725e5f06ac ("perf script python: Add Python3 support to exported-sql-viewer.py")
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Tony Jones <tonyj@suse.de>
Link: https://lore.kernel.org/r/20250512093932.79854-4-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/scripts/python/exported-sql-viewer.py

index 121cf61ba1b345f579e2db83f1dfb586e8d88ec7..e0b2e7268ef68cb6ece2f2ab75484c58be4dd65a 100755 (executable)
@@ -680,7 +680,10 @@ class CallGraphModelBase(TreeModel):
                                s = value.replace("%", "\\%")
                                s = s.replace("_", "\\_")
                                # Translate * and ? into SQL LIKE pattern characters % and _
-                               trans = string.maketrans("*?", "%_")
+                               if sys.version_info[0] == 3:
+                                       trans = str.maketrans("*?", "%_")
+                               else:
+                                       trans = string.maketrans("*?", "%_")
                                match = " LIKE '" + str(s).translate(trans) + "'"
                        else:
                                match = " GLOB '" + str(value) + "'"