blob: 813f7bbce054dfa20686fd18e2fedc40b26adcd8 [file]
// Copyright 2026 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "net/disk_cache/sql/test_util.h"
#include <optional>
#include <string>
#include <string_view>
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/path_service.h"
#include "base/process/launch.h"
#include "base/strings/strcat.h"
#include "base/strings/string_util.h"
namespace disk_cache::test {
namespace {
base::FilePath GetExecSqlShellPath() {
base::FilePath path;
base::PathService::Get(base::DIR_EXE, &path);
return path.AppendASCII("sqlite_dev_shell");
}
} // namespace
std::string GetQueryPlan(const base::FilePath& db_path,
std::string_view query) {
base::CommandLine command_line(GetExecSqlShellPath());
command_line.AppendArgPath(db_path);
std::string explain_query = base::StrCat({"EXPLAIN QUERY PLAN ", query});
command_line.AppendArg(explain_query);
std::string output;
if (!base::GetAppOutput(command_line, &output)) {
return "Failed to execute sqlite_dev_shell";
}
base::TrimWhitespaceASCII(output, base::TRIM_ALL, &output);
if (auto temp = base::RemovePrefix(output, "QUERY PLAN")) {
output = base::TrimWhitespaceASCII(*temp, base::TRIM_LEADING);
}
return output;
}
} // namespace disk_cache::test