@@ -243,12 +243,12 @@ log_vtab_impl::get_foreign_keys(
243243void
244244log_vtab_impl::extract (logfile* lf,
245245 uint64_t line_number,
246+ string_attrs_t & sa,
246247 logline_value_vector& values)
247248{
248- auto format = lf->get_format_ptr ();
249+ const auto * format = lf->get_format_ptr ();
249250
250- this ->vi_attrs .clear ();
251- format->annotate (lf, line_number, this ->vi_attrs , values, false );
251+ format->annotate (lf, line_number, sa, values, false );
252252}
253253
254254bool
@@ -353,13 +353,15 @@ struct vtab_cursor {
353353
354354 void invalidate ()
355355 {
356+ this ->attrs .clear ();
356357 this ->line_values .clear ();
357358 this ->log_msg_line = -1_vl;
358359 }
359360
360361 sqlite3_vtab_cursor base;
361362 struct log_cursor log_cursor;
362363 vis_line_t log_msg_line{-1_vl};
364+ string_attrs_t attrs;
363365 logline_value_vector line_values;
364366};
365367
@@ -517,7 +519,7 @@ populate_indexed_columns(vtab_cursor* vc, log_vtab* vt)
517519
518520 vc->cache_msg (lf, ll);
519521 require (vc->line_values .lvv_sbr .get_data () != nullptr );
520- vt->vi ->extract (lf, line_number, vc->line_values );
522+ vt->vi ->extract (lf, line_number, vc->attrs , vc-> line_values );
521523 }
522524
523525 auto sub_col = logline_value_meta::table_column{
@@ -792,14 +794,16 @@ vt_column(sqlite3_vtab_cursor* cur, sqlite3_context* ctx, int col)
792794 vc->cache_msg (lf, ll);
793795 require (vc->line_values .lvv_sbr .get_data ()
794796 != nullptr );
795- vt->vi ->extract (
796- lf, line_number, vc->line_values );
797+ vt->vi ->extract (lf,
798+ line_number,
799+ vc->attrs ,
800+ vc->line_values );
797801 }
798802
799803 struct line_range time_range;
800804
801- time_range = find_string_attr_range (
802- vt-> vi -> vi_attrs , &L_TIMESTAMP );
805+ time_range = find_string_attr_range (vc-> attrs ,
806+ &L_TIMESTAMP );
803807
804808 const auto * time_src
805809 = vc->line_values .lvv_sbr .get_data ()
@@ -953,7 +957,8 @@ vt_column(sqlite3_vtab_cursor* cur, sqlite3_context* ctx, int col)
953957 vc->cache_msg (lf, ll);
954958 require (vc->line_values .lvv_sbr .get_data ()
955959 != nullptr );
956- vt->vi ->extract (lf, line_number, vc->line_values );
960+ vt->vi ->extract (
961+ lf, line_number, vc->attrs , vc->line_values );
957962 }
958963
959964 if (vc->line_values .lvv_opid_value ) {
@@ -969,7 +974,8 @@ vt_column(sqlite3_vtab_cursor* cur, sqlite3_context* ctx, int col)
969974 vc->cache_msg (lf, ll);
970975 require (vc->line_values .lvv_sbr .get_data ()
971976 != nullptr );
972- vt->vi ->extract (lf, line_number, vc->line_values );
977+ vt->vi ->extract (
978+ lf, line_number, vc->attrs , vc->line_values );
973979 }
974980
975981 if (vc->line_values .lvv_opid_value
@@ -1040,13 +1046,14 @@ vt_column(sqlite3_vtab_cursor* cur, sqlite3_context* ctx, int col)
10401046 vc->cache_msg (lf, ll);
10411047 require (vc->line_values .lvv_sbr .get_data ()
10421048 != nullptr );
1043- vt->vi ->extract (lf, line_number, vc->line_values );
1049+ vt->vi ->extract (
1050+ lf, line_number, vc->attrs , vc->line_values );
10441051 }
10451052
10461053 struct line_range body_range;
10471054
1048- body_range = find_string_attr_range (vt-> vi -> vi_attrs ,
1049- &SA_BODY );
1055+ body_range
1056+ = find_string_attr_range (vc-> attrs , &SA_BODY );
10501057 if (!body_range.is_valid ()) {
10511058 sqlite3_result_null (ctx);
10521059 } else {
@@ -1113,7 +1120,8 @@ vt_column(sqlite3_vtab_cursor* cur, sqlite3_context* ctx, int col)
11131120 if (vc->line_values .lvv_values .empty ()) {
11141121 vc->cache_msg (lf, ll);
11151122 require (vc->line_values .lvv_sbr .get_data () != nullptr );
1116- vt->vi ->extract (lf, line_number, vc->line_values );
1123+ vt->vi ->extract (
1124+ lf, line_number, vc->attrs , vc->line_values );
11171125 }
11181126
11191127 auto sub_col = logline_value_meta::table_column{
0 commit comments