Method: PgHero::Methods::QueryStats#reset_instance_query_stats
- Defined in:
- lib/pghero/methods/query_stats.rb
#reset_instance_query_stats(database: nil, user: nil, query_hash: nil, raise_errors: false) ⇒ Object
resets query stats for the entire instance it’s possible to reset stats for a specific database, user or query hash in Postgres 12+
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/pghero/methods/query_stats.rb', line 67 def reset_instance_query_stats(database: nil, user: nil, query_hash: nil, raise_errors: false) if database || user || query_hash raise PgHero::Error, "Requires PostgreSQL 12+" if server_version_num < 120000 if database database_id = execute("SELECT oid FROM pg_database WHERE datname = #{quote(database)}").first.try(:[], "oid") raise PgHero::Error, "Database not found: #{database}" unless database_id else database_id = 0 end if user user_id = execute("SELECT usesysid FROM pg_user WHERE usename = #{quote(user)}").first.try(:[], "usesysid") raise PgHero::Error, "User not found: #{user}" unless user_id else user_id = 0 end if query_hash query_id = query_hash.to_i # may not be needed # but not intuitive that all query hashes are reset with 0 raise PgHero::Error, "Invalid query hash: #{query_hash}" if query_id == 0 else query_id = 0 end execute("SELECT pg_stat_statements_reset(#{quote(user_id.to_i)}, #{quote(database_id.to_i)}, #{quote(query_id.to_i)})") else execute("SELECT pg_stat_statements_reset()") end true rescue ActiveRecord::StatementInvalid => e raise e if raise_errors false end |