tp: move all raw ftrace events into a new ftrace_event table

This should make queries on ftrace_event (which was a view) *much*
faster. Note that ftrace_event is a subclass of raw so no existing
queries will be broken as a result of this.

Bug: 279086941
Change-Id: Id32b0d926a70fd08fa08349c5c594f3c2d5aa2b5
diff --git a/python/generators/trace_processor_table/serialize.py b/python/generators/trace_processor_table/serialize.py
index 0a8715c..2636733 100644
--- a/python/generators/trace_processor_table/serialize.py
+++ b/python/generators/trace_processor_table/serialize.py
@@ -114,7 +114,7 @@
     return f'''
     columns_.emplace_back("{self.name}", &{self.name}_, ColumnFlag::{self.name},
                           this, static_cast<uint32_t>(columns_.size()),
-                          overlay_idx);
+                          olay_idx);
     '''
 
   def shrink_to_fit(self) -> Optional[str]:
@@ -243,12 +243,13 @@
         ColumnSerializer.parent_row_initializer, delimiter=', ')
     row_init = self.foreach_col(
         ColumnSerializer.row_initializer, delimiter=',\n          ')
+    parent_separator = ',' if row_init else ''
     row_eq = self.foreach_col(ColumnSerializer.row_eq, delimiter=' &&\n       ')
     return f'''
   struct Row : public {self.parent_class_name}::Row {{
     Row({param},
         std::nullptr_t = nullptr)
-        : {self.parent_class_name}::Row({parent_row_init}),
+        : {self.parent_class_name}::Row({parent_row_init}){parent_separator}
           {row_init} {{
       type_ = "{self.table.sql_name}";
     }}
@@ -297,22 +298,27 @@
     '''
 
   def constructor(self) -> str:
-    col_init = self.foreach_col(
+    storage_init = self.foreach_col(
         ColumnSerializer.storage_init, delimiter=',\n        ')
     if self.table.parent:
       parent_param = f', {self.parent_class_name}* parent'
       parent_arg = 'parent'
-      parent_init = 'parent_(parent), '
+      parent_init = 'parent_(parent)' + (', ' if storage_init else '')
     else:
       parent_param = ''
       parent_arg = 'nullptr'
       parent_init = ''
+    col_init = self.foreach_col(ColumnSerializer.column_init)
+    if col_init:
+      olay = 'uint32_t olay_idx = static_cast<uint32_t>(overlays_.size()) - 1;'
+    else:
+      olay = ''
     return f'''
   explicit {self.table_name}(StringPool* pool{parent_param})
       : macros_internal::MacroTable(pool, {parent_arg}),
-        {parent_init}{col_init} {{
-    uint32_t overlay_idx = static_cast<uint32_t>(overlays_.size()) - 1;
-    {self.foreach_col(ColumnSerializer.column_init)}
+        {parent_init}{storage_init} {{
+    {olay}
+    {col_init}
   }}
     '''