/* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ -- filter for atrace writes CREATE VIEW IF NOT EXISTS tracing_mark_writes AS SELECT * FROM raw_ftrace_entries WHERE function = 'tracing_mark_write'; -- split the tracing_mark_write function args by ||s DROP TABLE IF exists tracing_mark_write_split_array; CREATE TABLE tracing_mark_write_split_array ( predictorset_id INT REFERENCES raw_ftrace_entries (id), predictor_name, rest, gen, UNIQUE(predictorset_id, gen) -- drops redundant inserts into table ); CREATE INDEX "tracing_mark_write_split_array_id" ON tracing_mark_write_split_array ( predictorset_id COLLATE BINARY COLLATE BINARY ); INSERT INTO tracing_mark_write_split_array WITH split(predictorset_id, predictor_name, rest, gen) AS ( -- split by | SELECT id, '', function_args || '|', 0 FROM tracing_mark_writes WHERE id UNION ALL SELECT predictorset_id, substr(rest, 0, instr(rest, '|')), substr(rest, instr(rest, '|')+1), gen + 1 FROM split WHERE rest <> ''), split_results AS ( SELECT * FROM split WHERE predictor_name <> '' ) SELECT * from split_results ;