diff --git a/app/controllers/pg_hero/home_controller.rb b/app/controllers/pg_hero/home_controller.rb index 98656df8f..a72e4c809 100644 --- a/app/controllers/pg_hero/home_controller.rb +++ b/app/controllers/pg_hero/home_controller.rb @@ -43,7 +43,7 @@ def index @sequence_danger = @database.sequence_danger(threshold: (params[:sequence_threshold] || 0.9).to_f, sequences: @readable_sequences) @indexes = @database.indexes - @invalid_indexes = @indexes.select { |i| !i[:valid] } + @invalid_indexes = @database.invalid_indexes(indexes: @indexes) @duplicate_indexes = @database.duplicate_indexes(indexes: @indexes) if @query_stats_enabled diff --git a/lib/pghero/methods/indexes.rb b/lib/pghero/methods/indexes.rb index 3056cdaf5..345bb4aa0 100644 --- a/lib/pghero/methods/indexes.rb +++ b/lib/pghero/methods/indexes.rb @@ -114,27 +114,13 @@ def last_stats_reset_time SQL end - # TODO use indexes method - def invalid_indexes - select_all <<-SQL - SELECT - n.nspname AS schema, - c.relname AS index, - pg_get_indexdef(i.indexrelid) AS definition - FROM - pg_catalog.pg_class c, - pg_catalog.pg_namespace n, - pg_catalog.pg_index i - WHERE - i.indisvalid = false - AND i.indexrelid = c.oid - AND c.relnamespace = n.oid - AND n.nspname != 'pg_catalog' - AND n.nspname != 'information_schema' - AND n.nspname != 'pg_toast' - ORDER BY - c.relname - SQL + def invalid_indexes(indexes: nil) + indexes = (indexes || self.indexes).select { |i| !i[:valid] } + indexes.each do |index| + # map name -> index for backward compatibility + index[:index] = index[:name] + end + indexes end # TODO parse array properly