tp: switch LIKE to GLOB in all metrics
Also ban LIKE as a presubmit check.
Change-Id: I79613410327e451a1802dcd54bb866a9e97f159c
Bug: 205302474
diff --git a/src/trace_processor/metrics/sql/android/android_batt.sql b/src/trace_processor/metrics/sql/android/android_batt.sql
index 070a518..9b8de86 100644
--- a/src/trace_processor/metrics/sql/android/android_batt.sql
+++ b/src/trace_processor/metrics/sql/android/android_batt.sql
@@ -25,7 +25,7 @@
SELECT distinct(ts) AS ts
FROM counter c
JOIN counter_track t on c.track_id = t.id
- WHERE name LIKE 'batt.%'
+ WHERE name GLOB 'batt.*'
) AS all_ts
LEFT JOIN (
SELECT ts, value AS current_avg_ua
@@ -78,7 +78,7 @@
true
) AS new_group
FROM slice
- WHERE slice.name LIKE 'WakeLock %' AND dur != -1
+ WHERE slice.name GLOB 'WakeLock *' AND dur != -1
)
)
GROUP BY group_id;
diff --git a/src/trace_processor/metrics/sql/android/android_camera.sql b/src/trace_processor/metrics/sql/android/android_camera.sql
index f8ba2af..791c922 100644
--- a/src/trace_processor/metrics/sql/android/android_camera.sql
+++ b/src/trace_processor/metrics/sql/android/android_camera.sql
@@ -30,7 +30,7 @@
JOIN (
SELECT max(start_ts), upid
FROM process
- WHERE name LIKE '%GoogleCamera%'
+ WHERE name GLOB '*GoogleCamera*'
LIMIT 1
) AS gca USING (upid);
@@ -42,7 +42,7 @@
JOIN (
SELECT max(start_ts), upid
FROM process
- WHERE name LIKE '%camera.provider%'
+ WHERE name GLOB '*camera.provider*'
LIMIT 1
) AS hal USING (upid);
diff --git a/src/trace_processor/metrics/sql/android/android_dvfs.sql b/src/trace_processor/metrics/sql/android/android_dvfs.sql
index a5872df..d8162b1 100644
--- a/src/trace_processor/metrics/sql/android/android_dvfs.sql
+++ b/src/trace_processor/metrics/sql/android/android_dvfs.sql
@@ -25,7 +25,7 @@
OVER (PARTITION by track.id ORDER BY ts) - ts AS duration
FROM counter
LEFT JOIN track ON counter.track_id = track.id
- WHERE track.name LIKE "% Frequency"
+ WHERE track.name GLOB "* Frequency"
ORDER BY ts;
DROP VIEW IF EXISTS freq_total_duration;
@@ -82,6 +82,7 @@
GROUP BY track_id, freq_name
ORDER BY freq_name;
+DROP VIEW IF EXISTS android_dvfs_output;
CREATE VIEW android_dvfs_output AS
SELECT AndroidDVFSMetric(
'freq_residencies', (
diff --git a/src/trace_processor/metrics/sql/android/android_fastrpc.sql b/src/trace_processor/metrics/sql/android/android_fastrpc.sql
index 81da811..e381668 100644
--- a/src/trace_processor/metrics/sql/android/android_fastrpc.sql
+++ b/src/trace_processor/metrics/sql/android/android_fastrpc.sql
@@ -9,7 +9,7 @@
value
FROM counter JOIN counter_track
ON counter.track_id = counter_track.id
-WHERE (name LIKE 'mem.fastrpc[%');
+WHERE (name GLOB 'mem.fastrpc[[]*');
DROP VIEW IF EXISTS fastrpc_subsystem_stats;
CREATE VIEW fastrpc_subsystem_stats AS
@@ -29,7 +29,7 @@
value AS instant_value,
SUM(value) OVER win AS value
FROM counter c JOIN thread_counter_track t ON c.track_id = t.id
-WHERE name LIKE 'mem.fastrpc_change%' AND value > 0
+WHERE name GLOB 'mem.fastrpc_change*' AND value > 0
WINDOW win AS (
PARTITION BY name ORDER BY ts
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
diff --git a/src/trace_processor/metrics/sql/android/android_hwui_metric.sql b/src/trace_processor/metrics/sql/android/android_hwui_metric.sql
index 585e515..1a33e22 100644
--- a/src/trace_processor/metrics/sql/android/android_hwui_metric.sql
+++ b/src/trace_processor/metrics/sql/android/android_hwui_metric.sql
@@ -39,7 +39,7 @@
thread_track.utid as render_thread_id
FROM slice
INNER JOIN thread_track ON (thread_track.id = slice.track_id)
-WHERE slice.name LIKE 'DrawFrame%' AND slice.dur >= 0
+WHERE slice.name GLOB 'DrawFrame*' AND slice.dur >= 0
GROUP BY thread_track.utid;
DROP VIEW IF EXISTS hwui_flush_commands;
@@ -79,7 +79,7 @@
FROM slice
INNER JOIN thread_track ON (thread_track.id = slice.track_id)
INNER JOIN thread ON (thread.name='GPU completion' AND thread.utid = thread_track.utid)
-WHERE slice.name LIKE 'waiting for GPU completion%' AND slice.dur >= 0
+WHERE slice.name GLOB 'waiting for GPU completion*' AND slice.dur >= 0
GROUP BY thread_track.utid;
DROP VIEW IF EXISTS hwui_ui_record;
diff --git a/src/trace_processor/metrics/sql/android/android_hwui_threads.sql b/src/trace_processor/metrics/sql/android/android_hwui_threads.sql
index 942005b..ee6a3ab 100644
--- a/src/trace_processor/metrics/sql/android/android_hwui_threads.sql
+++ b/src/trace_processor/metrics/sql/android/android_hwui_threads.sql
@@ -69,7 +69,7 @@
*,
CAST(STR_SPLIT(name, ' ', 1) AS INTEGER) as vsync
FROM {{table_name_prefix}}_main_thread_slices
- WHERE name LIKE 'Choreographer#doFrame%';
+ WHERE name GLOB 'Choreographer#doFrame*';
DROP TABLE IF EXISTS {{table_name_prefix}}_render_thread_slices;
CREATE TABLE {{table_name_prefix}}_render_thread_slices AS
@@ -89,7 +89,7 @@
*,
CAST(STR_SPLIT(name, ' ', 1) AS INTEGER) as vsync
FROM {{table_name_prefix}}_render_thread_slices
- WHERE name LIKE 'DrawFrame%';
+ WHERE name GLOB 'DrawFrame*';
DROP VIEW IF EXISTS {{table_name_prefix}}_gpu_completion_slices;
CREATE VIEW {{table_name_prefix}}_gpu_completion_slices AS
@@ -103,7 +103,7 @@
FROM slice
JOIN thread_track ON slice.track_id = thread_track.id
JOIN {{table_name_prefix}}_gpu_completion_thread thread USING (utid)
- WHERE slice.name LIKE 'waiting for GPU completion %'
+ WHERE slice.name GLOB 'waiting for GPU completion *'
AND dur > 0;
DROP VIEW IF EXISTS {{table_name_prefix}}_hwc_release_slices;
@@ -118,5 +118,5 @@
FROM slice
JOIN thread_track ON slice.track_id = thread_track.id
JOIN {{table_name_prefix}}_hwc_release_thread thread USING (utid)
- WHERE slice.name LIKE 'waiting for HWC release %'
+ WHERE slice.name GLOB 'waiting for HWC release *'
AND dur > 0;
diff --git a/src/trace_processor/metrics/sql/android/android_ion.sql b/src/trace_processor/metrics/sql/android/android_ion.sql
index 93fe8ac..4d61843 100644
--- a/src/trace_processor/metrics/sql/android/android_ion.sql
+++ b/src/trace_processor/metrics/sql/android/android_ion.sql
@@ -28,7 +28,7 @@
value
FROM counter JOIN counter_track
ON counter.track_id = counter_track.id
-WHERE (name LIKE 'mem.ion.%' OR name = 'mem.ion');
+WHERE (name GLOB 'mem.ion.*' OR name = 'mem.ion');
DROP VIEW IF EXISTS ion_heap_stats;
CREATE VIEW ion_heap_stats AS
@@ -51,7 +51,7 @@
value AS instant_value,
SUM(value) OVER win AS value
FROM counter c JOIN thread_counter_track t ON c.track_id = t.id
-WHERE (name LIKE 'mem.ion_change.%' OR name = 'mem.ion_change') AND value > 0
+WHERE (name GLOB 'mem.ion_change.*' OR name = 'mem.ion_change') AND value > 0
WINDOW win AS (
PARTITION BY name ORDER BY ts
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
diff --git a/src/trace_processor/metrics/sql/android/android_jank.sql b/src/trace_processor/metrics/sql/android/android_jank.sql
index 44f7d81..9c2cc22 100644
--- a/src/trace_processor/metrics/sql/android/android_jank.sql
+++ b/src/trace_processor/metrics/sql/android/android_jank.sql
@@ -157,7 +157,7 @@
ts,
dur
FROM android_jank_main_thread_slices
-WHERE name LIKE 'Choreographer#doFrame%'
+WHERE name GLOB 'Choreographer#doFrame*'
AND dur >= 5000000;
CREATE VIRTUAL TABLE IF NOT EXISTS android_jank_do_frame_slices_state_scheduled
@@ -213,7 +213,7 @@
dur,
'Expensive rendering with Canvas#saveLayer()' as alert_name
FROM android_jank_render_thread_slices
-WHERE name LIKE '%alpha caused %saveLayer %'
+WHERE name GLOB '*alpha caused *saveLayer *'
AND dur >= 1000000;
-- Path texture churn
@@ -239,7 +239,7 @@
dur,
'Expensive Bitmap uploads' as alert_name
FROM android_jank_render_thread_slices
-WHERE name LIKE 'Upload %x% Texture'
+WHERE name GLOB 'Upload *x* Texture'
AND dur >= 3000000;
-- Merge all alerts tables into one table
diff --git a/src/trace_processor/metrics/sql/android/android_lmk.sql b/src/trace_processor/metrics/sql/android/android_lmk.sql
index 8c66278..ca20c90 100644
--- a/src/trace_processor/metrics/sql/android/android_lmk.sql
+++ b/src/trace_processor/metrics/sql/android/android_lmk.sql
@@ -52,7 +52,7 @@
slice.dur,
CAST(STR_SPLIT(slice.name, ",", 1) AS INTEGER) AS pid
FROM slice
- WHERE slice.name LIKE 'lmk,%'
+ WHERE slice.name GLOB 'lmk,*'
),
lmks_with_proc_name AS (
SELECT
diff --git a/src/trace_processor/metrics/sql/android/android_powrails.sql b/src/trace_processor/metrics/sql/android/android_powrails.sql
index 656cb15..626f7c4 100644
--- a/src/trace_processor/metrics/sql/android/android_powrails.sql
+++ b/src/trace_processor/metrics/sql/android/android_powrails.sql
@@ -20,7 +20,7 @@
SELECT value, ts/1000000 AS ts, name
FROM counter c
JOIN counter_track t on c.track_id = t.id
-WHERE name LIKE 'power.%';
+WHERE name GLOB 'power.*';
DROP VIEW IF EXISTS avg_used_powers;
CREATE VIEW avg_used_powers AS
diff --git a/src/trace_processor/metrics/sql/android/android_simpleperf.sql b/src/trace_processor/metrics/sql/android/android_simpleperf.sql
index fa58575..1b7f85c 100644
--- a/src/trace_processor/metrics/sql/android/android_simpleperf.sql
+++ b/src/trace_processor/metrics/sql/android/android_simpleperf.sql
@@ -23,7 +23,7 @@
name,
value
FROM counters
-WHERE name LIKE 'slc/qurg2\___:lvl=0x_%' ESCAPE '\';
+WHERE name GLOB 'slc/qurg2_??:lvl=0x_*';
-- Find all counters from track that satisfies regex 'slc/qurg2_(wr|rd):lvl=0x(1|3|7)%'
DROP VIEW IF EXISTS non_zero_qurg2;
@@ -31,7 +31,7 @@
SELECT
*
FROM all_qurg2
-WHERE name NOT LIKE 'slc/qurg2\___:lvl=0x0%' ESCAPE '\';
+WHERE name NOT GLOB 'slc/qurg2_??:lvl=0x0*';
DROP VIEW IF EXISTS android_simpleperf_output;
CREATE VIEW android_simpleperf_output AS
diff --git a/src/trace_processor/metrics/sql/android/android_startup.sql b/src/trace_processor/metrics/sql/android/android_startup.sql
index 20eaefe..c097ece 100644
--- a/src/trace_processor/metrics/sql/android/android_startup.sql
+++ b/src/trace_processor/metrics/sql/android/android_startup.sql
@@ -58,7 +58,7 @@
DROP VIEW IF EXISTS zygote_fork_slice;
CREATE VIEW zygote_fork_slice AS
SELECT slice.ts, slice.dur, STR_SPLIT(slice.name, ": ", 1) AS process_name
-FROM slice WHERE name LIKE 'Start proc: %';
+FROM slice WHERE name GLOB 'Start proc: *';
DROP TABLE IF EXISTS zygote_forks_by_id;
CREATE TABLE zygote_forks_by_id AS
@@ -147,28 +147,28 @@
'inflate',
'ResourcesManager#getResources',
'binder transaction')
- OR slice.name LIKE 'performResume:%'
- OR slice.name LIKE 'performCreate:%'
- OR slice.name LIKE 'location=% status=% filter=% reason=%'
- OR slice.name LIKE 'OpenDexFilesFromOat%'
- OR slice.name LIKE 'VerifyClass%'
- OR slice.name LIKE 'Choreographer#doFrame%'
- OR slice.name LIKE 'JIT compiling%'
- OR slice.name LIKE '%mark sweep GC'
- OR slice.name LIKE '%concurrent copying GC'
- OR slice.name LIKE '%semispace GC';
+ OR slice.name GLOB 'performResume:*'
+ OR slice.name GLOB 'performCreate:*'
+ OR slice.name GLOB 'location=* status=* filter=* reason=*'
+ OR slice.name GLOB 'OpenDexFilesFromOat*'
+ OR slice.name GLOB 'VerifyClass*'
+ OR slice.name GLOB 'Choreographer#doFrame*'
+ OR slice.name GLOB 'JIT compiling*'
+ OR slice.name GLOB '*mark sweep GC'
+ OR slice.name GLOB '*concurrent copying GC'
+ OR slice.name GLOB '*semispace GC';
DROP TABLE IF EXISTS main_process_slice;
CREATE TABLE main_process_slice AS
SELECT
launch_id,
CASE
- WHEN slice_name LIKE 'OpenDexFilesFromOat%' THEN 'OpenDexFilesFromOat'
- WHEN slice_name LIKE 'VerifyClass%' THEN 'VerifyClass'
- WHEN slice_name LIKE 'JIT compiling%' THEN 'JIT compiling'
- WHEN slice_name LIKE '%mark sweep GC' THEN 'GC'
- WHEN slice_name LIKE '%concurrent copying GC' THEN 'GC'
- WHEN slice_name LIKE '%semispace GC' THEN 'GC'
+ WHEN slice_name GLOB 'OpenDexFilesFromOat*' THEN 'OpenDexFilesFromOat'
+ WHEN slice_name GLOB 'VerifyClass*' THEN 'VerifyClass'
+ WHEN slice_name GLOB 'JIT compiling*' THEN 'JIT compiling'
+ WHEN slice_name GLOB '*mark sweep GC' THEN 'GC'
+ WHEN slice_name GLOB '*concurrent copying GC' THEN 'GC'
+ WHEN slice_name GLOB '*semispace GC' THEN 'GC'
ELSE slice_name
END AS name,
AndroidStartupMetric_Slice(
@@ -192,7 +192,7 @@
JOIN slice ON (
slice.track_id = thread_track.id
AND slice.ts >= launches.ts)
- WHERE slice.name LIKE 'reportFullyDrawn%'
+ WHERE slice.name GLOB 'reportFullyDrawn*'
GROUP BY launches.id
)
SELECT
@@ -224,9 +224,9 @@
launch_id
FROM main_process_slice_unaggregated
WHERE (
- slice_name LIKE '%mark sweep GC'
- OR slice_name LIKE '%concurrent copying GC'
- OR slice_name LIKE '%semispace GC');
+ slice_name GLOB '*mark sweep GC'
+ OR slice_name GLOB '*concurrent copying GC'
+ OR slice_name GLOB '*semispace GC');
DROP TABLE IF EXISTS gc_slices_by_state;
CREATE VIRTUAL TABLE gc_slices_by_state
@@ -254,7 +254,7 @@
CREATE TABLE activity_names_materialized AS
SELECT launch_id, slice_name, slice_ts
FROM main_process_slice_unaggregated
-WHERE (slice_name LIKE 'performResume:%' OR slice_name LIKE 'performCreate:%');
+WHERE (slice_name GLOB 'performResume:*' OR slice_name GLOB 'performCreate:*');
DROP TABLE IF EXISTS jit_compiled_methods_materialized;
CREATE TABLE jit_compiled_methods_materialized AS
@@ -263,7 +263,7 @@
COUNT(1) as count
FROM main_process_slice_unaggregated
WHERE
- slice_name LIKE 'JIT compiling%'
+ slice_name GLOB 'JIT compiling*'
AND thread_name = 'Jit thread pool'
GROUP BY launch_id;
@@ -306,7 +306,7 @@
'PROTO', '
SELECT slice_proto
FROM main_process_slice s
- WHERE s.launch_id = $launch_id AND name LIKE $name
+ WHERE s.launch_id = $launch_id AND name GLOB $name
LIMIT 1
');
@@ -445,7 +445,7 @@
'time_activity_start', MAIN_PROCESS_SLICE_PROTO(launches.id, 'activityStart'),
'time_activity_resume', MAIN_PROCESS_SLICE_PROTO(launches.id, 'activityResume'),
'time_activity_restart', MAIN_PROCESS_SLICE_PROTO(launches.id, 'activityRestart'),
- 'time_choreographer', MAIN_PROCESS_SLICE_PROTO(launches.id, 'Choreographer#doFrame%'),
+ 'time_choreographer', MAIN_PROCESS_SLICE_PROTO(launches.id, 'Choreographer#doFrame*'),
'time_inflate', MAIN_PROCESS_SLICE_PROTO(launches.id, 'inflate'),
'time_get_resources', MAIN_PROCESS_SLICE_PROTO(launches.id, 'ResourcesManager#getResources'),
'time_dex_open', MAIN_PROCESS_SLICE_PROTO(launches.id, 'OpenDexFilesFromOat'),
@@ -519,7 +519,7 @@
'compilation_reason', STR_SPLIT(name, ' reason=', 1)
))
FROM main_process_slice s
- WHERE name LIKE 'location=% status=% filter=% reason=%'
+ WHERE name GLOB 'location=* status=* filter=* reason=*'
)
) as startup
FROM launches;
diff --git a/src/trace_processor/metrics/sql/android/android_surfaceflinger.sql b/src/trace_processor/metrics/sql/android/android_surfaceflinger.sql
index daa9fda..b00e491 100644
--- a/src/trace_processor/metrics/sql/android/android_surfaceflinger.sql
+++ b/src/trace_processor/metrics/sql/android/android_surfaceflinger.sql
@@ -53,7 +53,7 @@
CAST(SUBSTR(s.name, 28) AS UINT32) AS fence_id,
ts AS start_ts
FROM slices s JOIN surfaceflinger_track t ON s.track_id = t.track_id
-WHERE s.name LIKE 'Trace GPU completion fence %';
+WHERE s.name GLOB 'Trace GPU completion fence *';
DROP VIEW IF EXISTS gpu_waiting_end;
CREATE VIEW gpu_waiting_end AS
@@ -62,7 +62,7 @@
dur,
ts+dur AS end_ts
FROM slices s JOIN surfaceflinger_track t ON s.track_id = t.track_id
-WHERE s.name LIKE 'waiting for GPU completion %';
+WHERE s.name GLOB 'waiting for GPU completion *';
DROP VIEW IF EXISTS gpu_waiting_span;
CREATE VIEW gpu_waiting_span AS
diff --git a/src/trace_processor/metrics/sql/android/android_sysui_cuj.sql b/src/trace_processor/metrics/sql/android/android_sysui_cuj.sql
index 6b5c58d..073c247 100644
--- a/src/trace_processor/metrics/sql/android/android_sysui_cuj.sql
+++ b/src/trace_processor/metrics/sql/android/android_sysui_cuj.sql
@@ -30,11 +30,11 @@
JOIN process USING (upid)
JOIN process_metadata USING (upid)
WHERE
- slice.name LIKE 'J<%>'
+ slice.name GLOB 'J<*>'
AND slice.dur > 0
AND (
- process.name LIKE 'com.google.android%'
- OR process.name LIKE 'com.android.%')
+ process.name GLOB 'com.google.android*'
+ OR process.name GLOB 'com.android.*')
ORDER BY ts desc
LIMIT 1;
@@ -64,7 +64,7 @@
CAST(actual.name as INTEGER) as vsync,
actual.ts as ts_actual,
actual.dur as dur_actual,
- actual.jank_type LIKE '%App Deadline Missed%' as app_missed,
+ actual.jank_type GLOB '*App Deadline Missed*' as app_missed,
actual.jank_type,
actual.on_time_finish
FROM android_sysui_cuj_last_cuj cuj
@@ -162,8 +162,8 @@
CREATE TABLE android_sysui_cuj_jit_slices AS
SELECT *
FROM android_sysui_cuj_slices_in_cuj
-WHERE thread_name LIKE 'Jit thread pool%'
-AND name LIKE 'JIT compiling%'
+WHERE thread_name GLOB 'Jit thread pool*'
+AND name GLOB 'JIT compiling*'
AND parent_id IS NULL;
DROP TABLE IF EXISTS android_sysui_cuj_frames;
@@ -180,7 +180,7 @@
JOIN android_sysui_cuj_render_thread_slices_in_cuj rts ON rts.ts < gcs.ts
-- dispatchFrameCallbacks might be seen in case of
-- drawing that happens on RT only (e.g. ripple effect)
- WHERE (rts.name LIKE 'DrawFrame%' OR rts.name = 'dispatchFrameCallbacks')
+ WHERE (rts.name GLOB 'DrawFrame*' OR rts.name = 'dispatchFrameCallbacks')
GROUP BY gcs.ts, gcs.ts_end, gcs.dur, gcs.idx
),
frame_boundaries AS (
diff --git a/src/trace_processor/metrics/sql/android/cpu_info.sql b/src/trace_processor/metrics/sql/android/cpu_info.sql
index 1e04a3e..0f2c0f0 100644
--- a/src/trace_processor/metrics/sql/android/cpu_info.sql
+++ b/src/trace_processor/metrics/sql/android/cpu_info.sql
@@ -30,7 +30,7 @@
FROM power_profile pp
WHERE EXISTS (
SELECT 1 FROM metadata
- WHERE name = 'android_build_fingerprint' AND str_value LIKE '%' || pp.device || '%');
+ WHERE name = 'android_build_fingerprint' AND str_value GLOB '*' || pp.device || '*');
DROP VIEW IF EXISTS core_cluster_per_cpu;
CREATE VIEW core_cluster_per_cpu AS
diff --git a/src/trace_processor/metrics/sql/android/g2d_duration.sql b/src/trace_processor/metrics/sql/android/g2d_duration.sql
index b4a167b..653af6b 100644
--- a/src/trace_processor/metrics/sql/android/g2d_duration.sql
+++ b/src/trace_processor/metrics/sql/android/g2d_duration.sql
@@ -23,7 +23,7 @@
value AS g2d_value,
LEAD(value, 1, -1) OVER (PARTITION BY name ORDER BY ts) AS next_g2d_value
FROM counter c JOIN thread_counter_track t ON t.id = c.track_id
-WHERE t.name LIKE 'g2d_frame_{{g2d_type}}%';
+WHERE t.name GLOB 'g2d_frame_{{g2d_type}}*';
DROP VIEW IF EXISTS g2d_{{g2d_type}}_spans;
diff --git a/src/trace_processor/metrics/sql/android/power_drain_in_watts.sql b/src/trace_processor/metrics/sql/android/power_drain_in_watts.sql
index 1fbfec3..464da59 100644
--- a/src/trace_processor/metrics/sql/android/power_drain_in_watts.sql
+++ b/src/trace_processor/metrics/sql/android/power_drain_in_watts.sql
@@ -87,5 +87,4 @@
FROM counter
JOIN counter_track ON (counter.track_id = counter_track.id)
WHERE counter_track.type = 'counter_track'
- AND name LIKE "power.%";
-
+ AND name GLOB "power.*";
diff --git a/src/trace_processor/metrics/sql/android/process_metadata.sql b/src/trace_processor/metrics/sql/android/process_metadata.sql
index 6e0e6d3..6873bb2 100644
--- a/src/trace_processor/metrics/sql/android/process_metadata.sql
+++ b/src/trace_processor/metrics/sql/android/process_metadata.sql
@@ -32,7 +32,7 @@
-- have seen a racy capture.
WHEN length(process.name) = 15 AND (
process.cmdline in ('zygote', 'zygote64', '<pre-initialized>')
- OR process.cmdline like '%' || process.name)
+ OR process.cmdline GLOB '*' || process.name)
THEN process.cmdline
ELSE process.name
END AS process_name,
@@ -51,7 +51,7 @@
-- unique match
uid_package_count.cnt = 1
-- or process name starts with the package name
- OR process.name LIKE plist.package_name || '%')
+ OR process.name GLOB plist.package_name || '*')
);
DROP VIEW IF EXISTS process_metadata;
diff --git a/src/trace_processor/metrics/sql/android/startup/hsc.sql b/src/trace_processor/metrics/sql/android/startup/hsc.sql
index 5c0a618..09db7d9 100644
--- a/src/trace_processor/metrics/sql/android/startup/hsc.sql
+++ b/src/trace_processor/metrics/sql/android/startup/hsc.sql
@@ -39,7 +39,7 @@
FROM slices
INNER JOIN process_track on slices.track_id = process_track.id
INNER JOIN thread USING(upid)
-WHERE slices.name LIKE "animator%";
+WHERE slices.name GLOB "animator*";
DROP VIEW IF EXISTS frame_times;
CREATE VIEW frame_times AS
@@ -50,8 +50,8 @@
launches.id AS launch_id,
ROW_NUMBER() OVER(PARTITION BY launches.id ORDER BY functions.ts ASC) as number
FROM functions
-INNER JOIN launches on launches.package LIKE '%' || functions.process_name || '%'
-WHERE functions.function_name LIKE "Choreographer#doFrame%" AND functions.ts > launches.ts;
+INNER JOIN launches on launches.package GLOB '*' || functions.process_name || '*'
+WHERE functions.function_name GLOB "Choreographer#doFrame*" AND functions.ts > launches.ts;
DROP TABLE IF EXISTS hsc_based_startup_times;
CREATE TABLE hsc_based_startup_times(package STRING, id INT, ts_total INT);
@@ -63,8 +63,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.number=2 AND frame_times.name LIKE "%roid.calcul%" AND frame_times.launch_id = launches.id;
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.number=2 AND frame_times.name GLOB "*roid.calcul*" AND frame_times.launch_id = launches.id;
-- Calendar
INSERT INTO hsc_based_startup_times
@@ -73,9 +73,9 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.name LIKE "%id.calendar%" AND frame_times.launch_id = launches.id
-ORDER BY ABS(frame_times.ts_end - (SELECT ts + dur FROM functions WHERE function_name LIKE "DrawFrame%" AND process_name LIKE "%id.calendar" ORDER BY ts LIMIT 1)) LIMIT 1;
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.name GLOB "*id.calendar*" AND frame_times.launch_id = launches.id
+ORDER BY ABS(frame_times.ts_end - (SELECT ts + dur FROM functions WHERE function_name GLOB "DrawFrame*" AND process_name GLOB "*id.calendar" ORDER BY ts LIMIT 1)) LIMIT 1;
-- Camera
INSERT INTO hsc_based_startup_times
@@ -84,8 +84,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.number=2 AND frame_times.name LIKE "%GoogleCamera%" AND frame_times.launch_id = launches.id;
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.number=2 AND frame_times.name GLOB "*GoogleCamera*" AND frame_times.launch_id = launches.id;
-- Chrome
INSERT INTO hsc_based_startup_times
@@ -94,8 +94,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.number=1 AND frame_times.name LIKE "%chrome%" AND frame_times.launch_id = launches.id;
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.number=1 AND frame_times.name GLOB "*chrome*" AND frame_times.launch_id = launches.id;
-- Clock
INSERT INTO hsc_based_startup_times
@@ -104,8 +104,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.ts > (SELECT ts + dur FROM animators WHERE animator_name="animator:translationZ" AND process_name LIKE "%id.deskclock" ORDER BY (ts+dur) DESC LIMIT 1) AND frame_times.name LIKE "%id.deskclock" AND frame_times.launch_id = launches.id
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.ts > (SELECT ts + dur FROM animators WHERE animator_name="animator:translationZ" AND process_name GLOB "*id.deskclock" ORDER BY (ts+dur) DESC LIMIT 1) AND frame_times.name GLOB "*id.deskclock" AND frame_times.launch_id = launches.id
ORDER BY ts_total LIMIT 1;
-- Contacts
@@ -115,8 +115,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.number=3 AND frame_times.name LIKE "%id.contacts" AND frame_times.launch_id=launches.id;
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.number=3 AND frame_times.name GLOB "*id.contacts" AND frame_times.launch_id=launches.id;
-- Dialer
INSERT INTO hsc_based_startup_times
@@ -125,8 +125,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.number=1 AND frame_times.name LIKE "%id.dialer" AND frame_times.launch_id=launches.id;
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.number=1 AND frame_times.name GLOB "*id.dialer" AND frame_times.launch_id=launches.id;
-- Facebook
INSERT INTO hsc_based_startup_times
@@ -135,8 +135,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.ts > (SELECT ts+dur FROM slices WHERE slices.name LIKE "fb_startup_complete" ORDER BY ts LIMIT 1) AND frame_times.name LIKE "%ok.katana" AND frame_times.launch_id = launches.id
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.ts > (SELECT ts+dur FROM slices WHERE slices.name GLOB "fb_startup_complete" ORDER BY ts LIMIT 1) AND frame_times.name GLOB "*ok.katana" AND frame_times.launch_id = launches.id
ORDER BY ts_total LIMIT 1;
-- Facebook Messenger
@@ -146,8 +146,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.ts > (SELECT ts+dur FROM slices WHERE slices.name LIKE "msgr_cold_start_to_cached_content" ORDER BY ts LIMIT 1) AND frame_times.name LIKE "%book.orca" AND frame_times.launch_id = launches.id
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.ts > (SELECT ts+dur FROM slices WHERE slices.name GLOB "msgr_cold_start_to_cached_content" ORDER BY ts LIMIT 1) AND frame_times.name GLOB "*book.orca" AND frame_times.launch_id = launches.id
ORDER BY ts_total LIMIT 1;
-- Gmail
@@ -157,8 +157,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.ts > (SELECT ts + dur FROM animators WHERE animator_name="animator:elevation" AND process_name LIKE "%android.gm" ORDER BY (ts+dur) DESC LIMIT 1) AND frame_times.name LIKE "%android.gm" AND frame_times.launch_id = launches.id
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.ts > (SELECT ts + dur FROM animators WHERE animator_name="animator:elevation" AND process_name GLOB "*android.gm" ORDER BY (ts+dur) DESC LIMIT 1) AND frame_times.name GLOB "*android.gm" AND frame_times.launch_id = launches.id
ORDER BY ts_total LIMIT 1;
-- Instagram
@@ -168,8 +168,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.ts > (SELECT ts+dur FROM slices WHERE slices.name LIKE "ig_cold_start_to_cached_content" ORDER BY ts LIMIT 1) AND frame_times.name LIKE "%gram.android" AND frame_times.launch_id = launches.id
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.ts > (SELECT ts+dur FROM slices WHERE slices.name GLOB "ig_cold_start_to_cached_content" ORDER BY ts LIMIT 1) AND frame_times.name GLOB "*gram.android" AND frame_times.launch_id = launches.id
ORDER BY ts_total LIMIT 1;
-- Maps
@@ -179,8 +179,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.number=1 AND frame_times.name LIKE "%maps%" AND frame_times.launch_id = launches.id;
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.number=1 AND frame_times.name GLOB "*maps*" AND frame_times.launch_id = launches.id;
-- Messages
INSERT INTO hsc_based_startup_times
@@ -189,8 +189,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.ts_end > (SELECT ts + dur FROM animators WHERE animator_name="animator:translationZ" AND process_name LIKE "%apps.messaging%" ORDER BY ts LIMIT 1) AND frame_times.name LIKE "%apps.messaging%" AND frame_times.launch_id = launches.id
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.ts_end > (SELECT ts + dur FROM animators WHERE animator_name="animator:translationZ" AND process_name GLOB "*apps.messaging*" ORDER BY ts LIMIT 1) AND frame_times.name GLOB "*apps.messaging*" AND frame_times.launch_id = launches.id
ORDER BY ts_total LIMIT 1;
-- Netflix
@@ -200,8 +200,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.ts < (SELECT ts FROM animators WHERE animator_name LIKE "animator%" AND process_name LIKE "%lix.mediaclient" ORDER BY ts LIMIT 1) AND frame_times.name LIKE "%lix.mediaclient%" AND frame_times.launch_id = launches.id
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.ts < (SELECT ts FROM animators WHERE animator_name GLOB "animator*" AND process_name GLOB "*lix.mediaclient" ORDER BY ts LIMIT 1) AND frame_times.name GLOB "*lix.mediaclient*" AND frame_times.launch_id = launches.id
ORDER BY ts_total DESC LIMIT 1;
-- Photos
@@ -211,8 +211,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.number=1 AND frame_times.name LIKE "%apps.photos%" AND frame_times.launch_id = launches.id;
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.number=1 AND frame_times.name GLOB "*apps.photos*" AND frame_times.launch_id = launches.id;
-- Settings was deprecated in favor of reportFullyDrawn b/169694037.
@@ -223,8 +223,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.number=1 AND frame_times.name LIKE "%napchat.android" AND frame_times.launch_id = launches.id;
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.number=1 AND frame_times.name GLOB "*napchat.android" AND frame_times.launch_id = launches.id;
-- Twitter
INSERT INTO hsc_based_startup_times
@@ -233,8 +233,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.ts_end > (SELECT ts FROM animators WHERE animator_name="animator" AND process_name LIKE "%tter.android" ORDER BY ts LIMIT 1) AND frame_times.name LIKE "%tter.android" AND frame_times.launch_id = launches.id
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.ts_end > (SELECT ts FROM animators WHERE animator_name="animator" AND process_name GLOB "*tter.android" ORDER BY ts LIMIT 1) AND frame_times.name GLOB "*tter.android" AND frame_times.launch_id = launches.id
ORDER BY ts_total LIMIT 1;
-- WhatsApp
@@ -244,8 +244,8 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.ts > (SELECT ts+dur FROM slices WHERE slices.name LIKE "wa_startup_complete" ORDER BY ts LIMIT 1) AND frame_times.name LIKE "%om.whatsapp" AND frame_times.launch_id = launches.id
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.ts > (SELECT ts+dur FROM slices WHERE slices.name GLOB "wa_startup_complete" ORDER BY ts LIMIT 1) AND frame_times.name GLOB "*om.whatsapp" AND frame_times.launch_id = launches.id
ORDER BY ts_total LIMIT 1;
-- Youtube
@@ -255,5 +255,5 @@
launches.id as id,
frame_times.ts_end - launches.ts as ts_total
FROM frame_times
-INNER JOIN launches on launches.package LIKE '%' || frame_times.name || '%'
-WHERE frame_times.number=2 AND frame_times.name LIKE "%id.youtube" AND frame_times.launch_id = launches.id;
+INNER JOIN launches on launches.package GLOB '*' || frame_times.name || '*'
+WHERE frame_times.number=2 AND frame_times.name GLOB "*id.youtube" AND frame_times.launch_id = launches.id;
diff --git a/src/trace_processor/metrics/sql/android/startup/launches.sql b/src/trace_processor/metrics/sql/android/startup/launches.sql
index 104ec40..c3be64c 100644
--- a/src/trace_processor/metrics/sql/android/startup/launches.sql
+++ b/src/trace_processor/metrics/sql/android/startup/launches.sql
@@ -49,7 +49,7 @@
FROM slice s
JOIN process_track t ON s.track_id = t.id
JOIN process USING(upid)
-WHERE s.name LIKE 'launching: %'
+WHERE s.name GLOB 'launching: *'
AND (process.name IS NULL OR process.name = 'system_server');
-- Filter activity_intent_recv_spans, keeping only the ones that triggered
diff --git a/src/trace_processor/metrics/sql/chrome/chrome_processes.sql b/src/trace_processor/metrics/sql/chrome/chrome_processes.sql
index dd3be51..a7b378b 100644
--- a/src/trace_processor/metrics/sql/chrome/chrome_processes.sql
+++ b/src/trace_processor/metrics/sql/chrome/chrome_processes.sql
@@ -64,8 +64,6 @@
FROM prefix,
suffix;
--- Use GLOB here instead of LIKE as it's case-sensitive which means we don't
--- match the Android system zygote.
DROP VIEW IF EXISTS all_chrome_processes;
CREATE VIEW all_chrome_processes AS
SELECT upid, m.type AS process_type
diff --git a/src/trace_processor/metrics/sql/chrome/gesture_jank.sql b/src/trace_processor/metrics/sql/chrome/gesture_jank.sql
index 981e246..c13a051 100644
--- a/src/trace_processor/metrics/sql/chrome/gesture_jank.sql
+++ b/src/trace_processor/metrics/sql/chrome/gesture_jank.sql
@@ -47,15 +47,15 @@
SELECT COUNT(*) >= 3 FROM (
SELECT name FROM chrome_process
WHERE
- name LIKE "Browser" OR
- name LIKE "Renderer" OR
- name LIKE "Gpu" OR
- name LIKE 'com.android.chrome%' OR
- name LIKE 'com.chrome.beta%' OR
- name LIKE 'com.chrome.dev%' OR
- name LIKE 'com.chrome.canary%' OR
- name LIKE 'com.google.android.apps.chrome%' OR
- name LIKE 'org.chromium.chrome%'
+ name GLOB "Browser" OR
+ name GLOB "Renderer" OR
+ name GLOB "Gpu" OR
+ name GLOB 'com.android.chrome*' OR
+ name GLOB 'com.chrome.beta*' OR
+ name GLOB 'com.chrome.dev*' OR
+ name GLOB 'com.chrome.canary*' OR
+ name GLOB 'com.google.android.apps.chrome*' OR
+ name GLOB 'org.chromium.chrome*'
GROUP BY name
)) END AS have_enough_chrome_processes;
diff --git a/src/trace_processor/metrics/sql/chrome/rail_modes.sql b/src/trace_processor/metrics/sql/chrome/rail_modes.sql
index d86c25f..d28f665 100644
--- a/src/trace_processor/metrics/sql/chrome/rail_modes.sql
+++ b/src/trace_processor/metrics/sql/chrome/rail_modes.sql
@@ -352,7 +352,7 @@
ts,
dur
FROM slice s
-WHERE name LIKE "InputLatency::%"
+WHERE name GLOB "InputLatency::*"
AND NOT EXISTS (
SELECT 1
FROM slice
diff --git a/src/trace_processor/metrics/sql/chrome/scroll_jank_cause_blocking_task.sql b/src/trace_processor/metrics/sql/chrome/scroll_jank_cause_blocking_task.sql
index d061413..14ddd83 100644
--- a/src/trace_processor/metrics/sql/chrome/scroll_jank_cause_blocking_task.sql
+++ b/src/trace_processor/metrics/sql/chrome/scroll_jank_cause_blocking_task.sql
@@ -57,8 +57,8 @@
track_id AS id
FROM slice
WHERE
- EXTRACT_ARG(arg_set_id, "task.posted_from.file_name") LIKE
- "%gpu/command_buffer/service/scheduler.cc"
+ EXTRACT_ARG(arg_set_id, "task.posted_from.file_name") GLOB
+ "*gpu/command_buffer/service/scheduler.cc"
LIMIT 1;
-- TODO(nuskos): Determine a good way to get all the renderer track_ids (each
@@ -178,8 +178,8 @@
) AND
track_id = (SELECT id FROM browser_main_track_id)
) OR (
- EXTRACT_ARG(arg_set_id, "task.posted_from.file_name") LIKE
- "%components/viz/common/frame_sinks/copy_output_request.cc" AND
+ EXTRACT_ARG(arg_set_id, "task.posted_from.file_name") GLOB
+ "*components/viz/common/frame_sinks/copy_output_request.cc" AND
track_id = (SELECT id FROM viz_compositor_track_id)
) OR (
name = "SkiaOutputSurfaceImplOnGpu::CopyOutput" AND
diff --git a/src/trace_processor/metrics/sql/chrome/scroll_jank_cause_queuing_delay.sql b/src/trace_processor/metrics/sql/chrome/scroll_jank_cause_queuing_delay.sql
index a57fe70..a45ac79 100644
--- a/src/trace_processor/metrics/sql/chrome/scroll_jank_cause_queuing_delay.sql
+++ b/src/trace_processor/metrics/sql/chrome/scroll_jank_cause_queuing_delay.sql
@@ -76,10 +76,10 @@
slice.ts + slice.dur > queuing.ancestor_end AND
queuing.maybe_next_ancestor_ts > slice.ts AND
slice.track_id = queuing.next_track_id AND
- queuing.description NOT LIKE
- "InputLatency.LatencyInfo.%ank.STEP_DRAW_AND_SWAP-to-End" AND
- queuing.description NOT LIKE
- "InputLatency.LatencyInfo.%ank.STEP_FINISHED_SWAP_BUFFERS-to-End"
+ queuing.description NOT GLOB
+ "InputLatency.LatencyInfo.*ank.STEP_DRAW_AND_SWAP-to-End" AND
+ queuing.description NOT GLOB
+ "InputLatency.LatencyInfo.*ank.STEP_FINISHED_SWAP_BUFFERS-to-End"
WHERE
queuing_time_ns IS NOT NULL AND
queuing_time_ns > 0;
diff --git a/src/trace_processor/metrics/sql/experimental/blink_gc_metric.sql b/src/trace_processor/metrics/sql/experimental/blink_gc_metric.sql
index 096d9c3..c260332 100644
--- a/src/trace_processor/metrics/sql/experimental/blink_gc_metric.sql
+++ b/src/trace_processor/metrics/sql/experimental/blink_gc_metric.sql
@@ -83,7 +83,7 @@
INNER JOIN thread ON thread_track.utid = thread.id
WHERE
slice.dur >= 0 AND (
- slice.name LIKE "V8.GC%" OR (slice.name LIKE "BlinkGC%" AND NOT forced)
+ slice.name GLOB "V8.GC*" OR (slice.name GLOB "BlinkGC*" AND NOT forced)
)
);
@@ -100,7 +100,7 @@
blink_non_aggregated_gc_event_name AS event_name ON
event_name.name = blink_gc_cpu_slice.name
WHERE
- blink_gc_cpu_slice.name LIKE "BlinkGC%" AND NOT forced;
+ blink_gc_cpu_slice.name GLOB "BlinkGC*" AND NOT forced;
-- This groups all the events by name and epoch for from "blink_slice" for easy
-- access.
@@ -245,7 +245,7 @@
-- This subquery replaces metrics.v8.utils.isGarbageCollectionEvent().
SELECT name FROM ANCESTOR_SLICE(blink_gc_cpu_slice.id) AS ancestor
WHERE
- ancestor.name LIKE "V8.GC%" AND
+ ancestor.name GLOB "V8.GC*" AND
ancestor.name != 'V8.GCLowMemoryNotification'
LIMIT 1
) IS NULL
diff --git a/src/trace_processor/metrics/sql/experimental/frame_times.sql b/src/trace_processor/metrics/sql/experimental/frame_times.sql
index 4e0ccdb..488963f 100644
--- a/src/trace_processor/metrics/sql/experimental/frame_times.sql
+++ b/src/trace_processor/metrics/sql/experimental/frame_times.sql
@@ -17,7 +17,7 @@
CREATE VIEW InteractionEvents AS
SELECT
ts, dur, ts AS ts_ir, dur AS dur_ir
-FROM slice WHERE name LIKE 'Interaction.%';
+FROM slice WHERE name GLOB 'Interaction.*';
DROP VIEW IF EXISTS GestureLegacyEvents;
CREATE VIEW GestureLegacyEvents AS
diff --git a/src/trace_processor/metrics/sql/experimental/reported_by_page.sql b/src/trace_processor/metrics/sql/experimental/reported_by_page.sql
index 2685433..9936b31 100644
--- a/src/trace_processor/metrics/sql/experimental/reported_by_page.sql
+++ b/src/trace_processor/metrics/sql/experimental/reported_by_page.sql
@@ -23,7 +23,7 @@
SELECT ts, name, EXTRACT_ARG(arg_set_id, "debug.data.navigationId") as nav_id
FROM slice
WHERE category = 'blink.user_timing' AND
- (name = 'navigationStart' OR name LIKE 'telemetry:reported_by_page:%')
+ (name = 'navigationStart' OR name GLOB 'telemetry:reported_by_page:*')
ORDER BY nav_id, ts ASC;
--------------------------------------------------------------------------------
@@ -38,8 +38,8 @@
nav_id = p.nav_id AND
ts < p.ts AND (
-- Viewable/interactive markers measure time from nav start.
- (p.name LIKE 'telemetry:reported_by_page:%' AND
- p.name NOT LIKE 'telemetry:reported_by_page:benchmark%' AND
+ (p.name GLOB 'telemetry:reported_by_page:*' AND
+ p.name NOT GLOB 'telemetry:reported_by_page:benchmark*' AND
name = 'navigationStart') OR
-- Benchmark end markers measure time from the most recent begin marker.
(p.name = 'telemetry:reported_by_page:benchmark_end' AND
diff --git a/src/trace_processor/metrics/sql/webview/webview_power_usage.sql b/src/trace_processor/metrics/sql/webview/webview_power_usage.sql
index 96104fc..29dad50 100644
--- a/src/trace_processor/metrics/sql/webview/webview_power_usage.sql
+++ b/src/trace_processor/metrics/sql/webview/webview_power_usage.sql
@@ -32,8 +32,8 @@
SELECT *
FROM slice WHERE
depth = 0 AND
- ((category like '%toplevel%' OR category = 'Java') AND
- name NOT LIKE '%looper%');
+ ((category GLOB '*toplevel*' OR category = 'Java') AND
+ name NOT GLOB '*looper*');
DROP TABLE IF EXISTS webview_browser_slices;
@@ -55,8 +55,8 @@
ON thread.upid = process.upid
INNER JOIN thread
ON thread_track.utid = thread.utid
- WHERE process.name NOT LIKE '%SandboxedProcessService%'
- AND process.name NOT LIKE '%chrome%'
+ WHERE process.name NOT GLOB '*SandboxedProcessService*'
+ AND process.name NOT GLOB '*chrome*'
AND app_name IS NOT NULL;
DROP TABLE IF EXISTS webview_browser_slices_power;
@@ -87,7 +87,7 @@
FROM process
INNER JOIN thread
ON thread.upid = process.upid
- WHERE process.name LIKE '%webview%SandboxedProcessService%'
+ WHERE process.name GLOB '*webview*SandboxedProcessService*'
AND app_name IS NOT NULL;
DROP TABLE IF EXISTS webview_renderer_power_summary;
@@ -136,8 +136,8 @@
JOIN process ON thread.upid = process.upid
WHERE thread.upid IN
(SELECT DISTINCT(webview_browser_slices.upid) FROM webview_browser_slices)
- AND process.name NOT LIKE '%SandboxedProcessService%'
- AND process.name NOT LIKE '%chrome%'
+ AND process.name NOT GLOB '*SandboxedProcessService*'
+ AND process.name NOT GLOB '*chrome*'
AND app_name IS NOT NULL;
DROP TABLE IF EXISTS host_app_power_summary;
@@ -175,9 +175,9 @@
CREATE TABLE webview_only_threads AS
SELECT *
FROM host_app_threads
- WHERE name LIKE 'Chrome%' OR name LIKE 'CookieMonster%'
- OR name LIKE 'CompositorTileWorker%' OR name LIKE 'ThreadPool%ground%'
- OR NAME LIKE 'ThreadPoolService%' OR name like 'VizCompositorThread%'
+ WHERE name GLOB 'Chrome*' OR name GLOB 'CookieMonster*'
+ OR name GLOB 'CompositorTileWorker*' OR name GLOB 'ThreadPool*ground*'
+ OR NAME GLOB 'ThreadPoolService*' OR name GLOB 'VizCompositorThread*'
OR name IN ('AudioThread', 'DedicatedWorker thread', 'GpuMemoryThread',
'JavaBridge', 'LevelDBEnv.IDB', 'MemoryInfra', 'NetworkService', 'VizWebView');
diff --git a/src/trace_processor/trace_processor_impl.cc b/src/trace_processor/trace_processor_impl.cc
index 70213e4..ca3725d 100644
--- a/src/trace_processor/trace_processor_impl.cc
+++ b/src/trace_processor/trace_processor_impl.cc
@@ -654,6 +654,23 @@
}
};
+struct Glob : public SqlFunction {
+ static base::Status Run(void*,
+ size_t,
+ sqlite3_value** argv,
+ SqlValue& out,
+ Destructors&) {
+ const char* pattern =
+ reinterpret_cast<const char*>(sqlite3_value_text(argv[0]));
+ const char* text =
+ reinterpret_cast<const char*>(sqlite3_value_text(argv[1]));
+ if (pattern && text) {
+ out = SqlValue::Long(sqlite3_strglob(pattern, text) == 0);
+ }
+ return base::OkStatus();
+ }
+};
+
void SetupMetrics(TraceProcessor* tp,
sqlite3* db,
std::vector<metrics::SqlMetricFile>* sql_metrics,
@@ -742,6 +759,7 @@
db_.reset(std::move(db));
// New style function registration.
+ RegisterFunction<Glob>(db, "glob", 2);
RegisterFunction<Hash>(db, "HASH", -1);
RegisterFunction<Demangle>(db, "DEMANGLE", 1);
RegisterFunction<SourceGeq>(db, "SOURCE_GEQ", -1);
diff --git a/test/trace_processor/graphics/clock_sync.sql b/test/trace_processor/graphics/clock_sync.sql
index 227767b..ac9e48a 100644
--- a/test/trace_processor/graphics/clock_sync.sql
+++ b/test/trace_processor/graphics/clock_sync.sql
@@ -15,4 +15,4 @@
--
select ts, cast(value as integer) as int_value
from counters
-where name like 'gpu_counter%'
\ No newline at end of file
+where name GLOB 'gpu_counter*'
\ No newline at end of file
diff --git a/test/trace_processor/parsing/android_log_counts.sql b/test/trace_processor/parsing/android_log_counts.sql
index 09fc250..35a2a47 100644
--- a/test/trace_processor/parsing/android_log_counts.sql
+++ b/test/trace_processor/parsing/android_log_counts.sql
@@ -17,6 +17,6 @@
select count(*) as cnt from android_logs where prio = 3 union all
select count(*) as cnt from android_logs where prio > 4 union all
select count(*) as cnt from android_logs where tag = 'screen_toggled' union all
-select count(*) as cnt from android_logs where tag like '%_pss' union all
-select count(*) as cnt from android_logs where msg like '%i2c_write%' or msg like '%I2C_Write%' union all
+select count(*) as cnt from android_logs where tag GLOB '*_pss' union all
+select count(*) as cnt from android_logs where msg GLOB '*i2c?write*' or msg GLOB '*I2C?Write*' union all
select count(*) as cnt from android_logs where ts >= 1510113924391 and ts < 1512610021879;
diff --git a/test/trace_processor/parsing/android_log_msgs.sql b/test/trace_processor/parsing/android_log_msgs.sql
index 9b46f43..1666095 100644
--- a/test/trace_processor/parsing/android_log_msgs.sql
+++ b/test/trace_processor/parsing/android_log_msgs.sql
@@ -20,7 +20,7 @@
create view v3 as
select tag, count(*)
from android_logs
-where msg like '%wakelock%' or msg like '%Wakelock%' or msg like '%WakeLock%' or msg like '%wakeLock%'
+where msg GLOB '*wakelock*' or msg GLOB '*Wakelock*' or msg GLOB '*WakeLock*' or msg GLOB '*wakeLock*'
group by tag;
create view v4 as select msg, 1 from android_logs limit 10;
diff --git a/test/trace_processor/parsing/args_string_filter_null.sql b/test/trace_processor/parsing/args_string_filter_null.sql
index 50f90e1..c42e2f3 100644
--- a/test/trace_processor/parsing/args_string_filter_null.sql
+++ b/test/trace_processor/parsing/args_string_filter_null.sql
@@ -39,7 +39,7 @@
UNION
select string_value
from args
-where string_value LIKE NULL
+where string_value GLOB NULL
UNION
select string_value
from args
diff --git a/test/trace_processor/parsing/ion_stat.sql b/test/trace_processor/parsing/ion_stat.sql
index 1032ac6..5cdc8d0 100644
--- a/test/trace_processor/parsing/ion_stat.sql
+++ b/test/trace_processor/parsing/ion_stat.sql
@@ -1,4 +1,4 @@
SELECT t.name, c.ts, c.value
FROM counter c
JOIN track t ON c.track_id = t.id
-WHERE t.name LIKE 'mem.ion%';
+WHERE t.name GLOB 'mem.ion*';
diff --git a/test/trace_processor/parsing/mm_event.sql b/test/trace_processor/parsing/mm_event.sql
index 5130db6..56d4eab 100644
--- a/test/trace_processor/parsing/mm_event.sql
+++ b/test/trace_processor/parsing/mm_event.sql
@@ -17,6 +17,6 @@
from counter
inner join process_counter_track
on counter.track_id = process_counter_track.id
-where name like 'mem.mm.%'
+where name GLOB 'mem.mm.*'
order by ts
limit 40
diff --git a/test/trace_processor/parsing/stats.sql b/test/trace_processor/parsing/stats.sql
index d68b28f..02316b2 100644
--- a/test/trace_processor/parsing/stats.sql
+++ b/test/trace_processor/parsing/stats.sql
@@ -14,4 +14,4 @@
-- limitations under the License.
--
select name, idx, severity, source, value
-from stats where name like 'ftrace_cpu_%' or name like 'traced_buf_%';
\ No newline at end of file
+from stats where name GLOB 'ftrace_cpu_*' or name GLOB 'traced_buf_*';
\ No newline at end of file
diff --git a/test/trace_processor/power/power_rails.sql b/test/trace_processor/power/power_rails.sql
index c095608..31af227 100644
--- a/test/trace_processor/power/power_rails.sql
+++ b/test/trace_processor/power/power_rails.sql
@@ -15,6 +15,6 @@
--
select name, AVG(value), COUNT(*)
from counters
-where name like "power.%"
+where name GLOB "power.*"
group by name
limit 20
\ No newline at end of file
diff --git a/test/trace_processor/power/power_rails_event.sql b/test/trace_processor/power/power_rails_event.sql
index 9a1a254..ca04ce2 100644
--- a/test/trace_processor/power/power_rails_event.sql
+++ b/test/trace_processor/power/power_rails_event.sql
@@ -15,5 +15,5 @@
--
select ts, value
from counters
-where name like "power.%"
+where name GLOB "power.*"
limit 20
diff --git a/tools/check_sql_metrics.py b/tools/check_sql_metrics.py
index 2fe57df..65dcff2 100755
--- a/tools/check_sql_metrics.py
+++ b/tools/check_sql_metrics.py
@@ -31,6 +31,7 @@
with open(path) as f:
lines = [l.strip() for l in f.readlines()]
+ # Check that CREATE VIEW/TABLE has a matching DROP VIEW/TABLE before it.
errors = 0
d_type, d_name = None, None
for line in lines:
@@ -43,15 +44,29 @@
continue
type, name = m.group(1), m.group(2)
if type != d_type or name != d_name:
- sys.stderr.write(('%s:\n "%s" vs %s %s\n') % (path, line, d_type, d_name))
+ sys.stderr.write(
+ ('Missing DROP %s before CREATE %s\n') % (d_type, d_type))
+ sys.stderr.write(('%s:\n"%s" vs %s %s\n') % (path, line, d_type, d_name))
errors += 1
d_type, d_name = None, None
+
+ # Ban the use of LIKE in non-comment lines.
+ for line in lines:
+ if line.startswith('--'):
+ continue
+
+ if 'like' in line.casefold():
+ sys.stderr.write(
+ 'LIKE is banned in trace processor metrics. Prefer GLOB instead.')
+ errors += 1
+
return errors
def main():
errors = 0
- metrics_sources = os.path.join(ROOT_DIR, 'src', 'trace_processor', 'metrics')
+ metrics_sources = os.path.join(ROOT_DIR, 'src', 'trace_processor', 'metrics',
+ 'sql')
for root, _, files in os.walk(metrics_sources, topdown=True):
for f in files:
path = os.path.join(root, f)