X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=performance_schema%2Ffile_summary_by_instance%2Ffile_summary_by_instance_row.go;h=3e6b908931e09d6ffb8df3a3922682ac6d69388b;hb=5b55b644d9ab58c9a2ff3392fbd88107ef1a18cc;hp=6c10ef40362e53c7ba5d73c38a603efaa1c0fcd3;hpb=6befaeecc9554be09177e699544d9573e699f1c8;p=pstop.git diff --git a/performance_schema/file_summary_by_instance/file_summary_by_instance_row.go b/performance_schema/file_summary_by_instance/file_summary_by_instance_row.go index 6c10ef4..3e6b908 100644 --- a/performance_schema/file_summary_by_instance/file_summary_by_instance_row.go +++ b/performance_schema/file_summary_by_instance/file_summary_by_instance_row.go @@ -8,9 +8,9 @@ import ( "log" "regexp" "sort" - // "strconv" "time" + "github.com/sjmudd/pstop/key_value_cache" "github.com/sjmudd/pstop/lib" ) @@ -67,6 +67,9 @@ var ( re_pid_file *regexp.Regexp = regexp.MustCompile(`/[^/]+\.pid$`) re_error_msg *regexp.Regexp = regexp.MustCompile(`/share/[^/]+/errmsg\.sys$`) re_charset *regexp.Regexp = regexp.MustCompile(`/share/charsets/Index\.xml$`) + re_dollar *regexp.Regexp = regexp.MustCompile(`@0024`) // FIXME - add me to catch @0024 --> $ (specific case) + + cache key_value_cache.KeyValueCache ) type file_summary_by_instance_row struct { @@ -209,50 +212,44 @@ func (t file_summary_by_instance_row) simple_name(global_variables map[string]st path := t.FILE_NAME - if cached_result, err := get_from_cache(path); err == nil { + if cached_result, err := cache.Get(path); err == nil { return cached_result } - // FIXME and make this work. - // re4 := regexp.MustCompile(re_encoded) - // if m4 := re4.FindStringSubmatch(path); m4 != nil { - // if value, err := strconv.ParseInt(m4[1], 16, 16); err != nil { - // // missing replace @.... with char(value) in path - // - // } - // } + // @0024 --> $ (should do this more generically) + path = re_dollar.ReplaceAllLiteralString(path, "$") // this should probably be ordered from most expected regexp to least if m1 := re_table_file.FindStringSubmatch(path); m1 != nil { // we may match temporary tables so check for them if m2 := re_temp_table.FindStringSubmatch(m1[2]); m2 != nil { - return save_to_cache(path, "") + return cache.Put(path, "") } // we may match partitioned tables so check for them if m3 := re_part_table.FindStringSubmatch(m1[2]); m3 != nil { - return save_to_cache(path, m1[1]+"."+m3[1]) // . (less partition info) + return cache.Put(path, m1[1]+"."+m3[1]) // .
(less partition info) } - return save_to_cache(path, m1[1]+"."+m1[2]) // .
+ return cache.Put(path, m1[1]+"."+m1[2]) // .
} if re_ibdata.MatchString(path) == true { - return save_to_cache(path, "") + return cache.Put(path, "") } if re_redo_log.MatchString(path) == true { - return save_to_cache(path, "") + return cache.Put(path, "") } if re_binlog.MatchString(path) == true { - return save_to_cache(path, "") + return cache.Put(path, "") } if re_db_opt.MatchString(path) == true { - return save_to_cache(path, "") + return cache.Put(path, "") } if re_slowlog.MatchString(path) == true { - return save_to_cache(path, "") + return cache.Put(path, "") } if re_auto_cnf.MatchString(path) == true { - return save_to_cache(path, "") + return cache.Put(path, "") } // relay logs are a bit complicated. If a full path then easy to // identify,but if a relative path we may need to add $datadir, @@ -265,19 +262,19 @@ func (t file_summary_by_instance_row) simple_name(global_variables map[string]st } re_relay_log := relay_log + `\.(\d{6}|index)$` if regexp.MustCompile(re_relay_log).MatchString(path) == true { - return save_to_cache(path, "") + return cache.Put(path, "") } } if re_pid_file.MatchString(path) == true { - return save_to_cache(path, "") + return cache.Put(path, "") } if re_error_msg.MatchString(path) == true { - return save_to_cache(path, "") + return cache.Put(path, "") } if re_charset.MatchString(path) == true { - return save_to_cache(path, "") + return cache.Put(path, "") } - return save_to_cache(path, path) + return cache.Put(path, path) } // Convert the imported "table" to a merged one with merged data.