Merge "trace_processor: Add execution time to raw_query.proto"
diff --git a/protos/perfetto/trace_processor/raw_query.proto b/protos/perfetto/trace_processor/raw_query.proto
index 673994f..2192e41 100644
--- a/protos/perfetto/trace_processor/raw_query.proto
+++ b/protos/perfetto/trace_processor/raw_query.proto
@@ -45,4 +45,5 @@
   optional uint64 num_records = 2;
   repeated ColumnValues columns = 3;
   optional string error = 4;
+  optional uint64 execution_time_ns = 5;
 }
diff --git a/src/trace_processor/trace_processor.cc b/src/trace_processor/trace_processor.cc
index 61c1b80..5e07842 100644
--- a/src/trace_processor/trace_processor.cc
+++ b/src/trace_processor/trace_processor.cc
@@ -19,6 +19,7 @@
 #include <sqlite3.h>
 #include <functional>
 
+#include "perfetto/base/time.h"
 #include "src/trace_processor/counters_table.h"
 #include "src/trace_processor/json_trace_parser.h"
 #include "src/trace_processor/process_table.h"
@@ -102,6 +103,8 @@
   protos::RawQueryResult proto;
   query_interrupted_.store(false, std::memory_order_relaxed);
 
+  base::TimeNanos t_start = base::GetWallTimeNs();
+
   const auto& sql = args.sql_query();
   sqlite3_stmt* raw_stmt;
   int err = sqlite3_prepare_v2(*db_, sql.c_str(), static_cast<int>(sql.size()),
@@ -175,6 +178,8 @@
     query_interrupted_ = false;
   }
 
+  base::TimeNanos t_end = base::GetWallTimeNs();
+  proto.set_execution_time_ns(static_cast<uint64_t>((t_end - t_start).count()));
   callback(proto);
 }