- Added support for explaining normalized queries with Postgres 16
- Added Docker image for
linux/arm64
- Fixed support for aliases in config file
- Fixed error with system stats for Azure Database
- Fixed error with suggested indexes and empty statements
- Fixed error with Uglifier
- Improved handling of lock timeouts
- Improved syntax highlighting
- Added support for pg_query 4
- Added
pghero:clean_space_stats
rake task - Added support for specifying retention period with
clean_query_stats
andclean_space_stats
- Removed reset button when historical query stats are enabled
- Fixed explain error message leaking data - more info
- Explain analyze is now opt-in - more info
- Added support for disabling explain and explain analyze
- Added support for visualize without explain analyze
- Added
explain_v2
method
- Fixed message when database user does not have permission to reset query stats
- Changed
capture_query_stats
to only reset stats for current database in Postgres 12+ - Changed
reset_query_stats
to only reset stats for current database (usereset_instance_query_stats
to reset stats for entire instance) - Added
visualize_url
option to config - Removed
access_key_id
,secret_access_key
,region
, anddb_instance_identifier
methods (useaws_
prefixed methods instead) - Dropped support for Linux packages for EOL versions
- Dropped support for Ruby < 2.7 and Rails < 6
- Dropped support for pg_query < 2
- Dropped support for aws-sdk < 2
- Added support for
google-apis-monitoring_v3
- Added experimental support for Propshaft
- Fixed error with walsender queries on live queries page
- Fixed sorting by name on space page when historical space stats are not enabled
- Fixed deprecation warnings with Active Record 7
- Added support for pg_query 2
- No longer show walsender in long running queries
- Show relative time on maintenance page
- Added support for
PGHERO_TZ
for Docker and Linux
- Fixed error on redirect with Ruby 3
- Fixed error with unparsable sequences
- Improved index suggestions when hash, GiST, GIN, or BRIN index present
- Fixed error with historical query stats
- Added
/health
endpoint to Docker image and Linux packages - Fixed error with
cast_value
- Fixed CSRF vulnerability with non-session based authentication - more info
- Added
database
,user
, andquery_hash
options toreset_query_stats
method
- Added support for Postgres 13 beta 2
- Added support for non-integer explain timeout
- Added support for
google-cloud-monitoring
>= 1 - Added support for
google-cloud-monitoring-v3
- Fixed system stats not showing up in Rails 6 with environment variables
- Added system stats for Google Cloud SQL and Azure Database
- Added experimental
filter_data
option - Localized times on maintenance page
- Improved connection pooling
- Improved error message for non-Postgres connections
- Fixed more deprecation warnings in Ruby 2.7
- Added
connections
method - Fixed deprecation warnings in Ruby 2.7
- Fixed file permissions on
highlight.pack.js
- Added
invalid_constraints
method - Added
spec
option - Added
override_csp
option - Show all databases in Rails 6 when no config
- Added support for Postgres 12 beta 1
- Added methods and tasks for cleaning up stats
- Dropped support for Rails < 5
- Added
config_path
option - Fixed error with sequences when temporary tables
- Fixed error when
config.action_controller.include_all_helpers = false
- Added check for connections idle in transaction
- Improved duplicate index logic to detect more duplicates
- Don't report concurrent indexes in-progress as invalid on dashboard
- Fixed error with large number of sequences
- Bumped
total_connections_threshold
to 500 by default
- Added
explain_timeout_sec
option - Fixed error with unparsable sequences
- Stopped throwing
Same sequence name in multiple schemas
error
- Fixed issue with sequences in different schema than table
- No longer throw errors for unreadable sequences
- Fixed replication lag for Amazon Aurora
- Added
vacuum_progress
method
- Added support for Postgres 10 replicas
- Added support for pg_query 1.0.0
- Show queries with insufficient privilege on live queries page
- Default to table schema for sequences
- Fixed issue with sequences in different schema than table
- Fixed query details when multiple users have same query hash
- Fixed error with invalid indexes in non-public schema
- Raise error when capture query stats fails
- More robust methods for multiple databases
- Added support for
RAILS_RELATIVE_URL_ROOT
for Linux and Docker
- Fixed error with sequences in different schemas
- Better advice
- Fixed
AssetNotPrecompiled
error - Do not silently ignore sequence danger when user does not have permissions
- Added SQL to recreate invalid indexes
- Added unused index marker to Space page
- Fixed
capture_query_stats
on Postgres < 9.4
- Fixed error with suggested indexes
- Fixed error with
pg_replication_slots
- Fixed capture space stats
New features
- Query details page
- Added check for inactive replication slots
- Added
table_sizes
method for full table sizes - Added syntax highlighting
- Added
min_size
option toanalyze_tables
Breaking changes
- Methods now return symbols for keys instead of strings
- Methods raise
PgHero::NotEnabled
error when a feature isn’t enabled - Requires pg_query 0.9.0+ for suggested indexes
- Historical query stats require the
pghero_query_stats
table to havequery_hash
anduser
columns - Removed
with
option - use:
PgHero.databases[:database2].running_queries
instead of
PgHero.with(:database2) { PgHero.running_queries }
- Removed options from
connection_sources
method - Removed
locks
method
- Fixed migrations for Rails 5.1+
- Added
analyze
,analyze_tables
, andanalyze_all
methods - Added
pghero:analyze
rake task - Fixed system stats display issue
- Added support for Rails API
- Added support for Amazon STS
- Fixed replica check when
hot_standby = on
for primary
- Only show connection charts if there are connections
- Fixed duplicate indexes for multiple schemas
- Fixed display issue for queries without word break
- Removed maintenance tab for replicas
- Added 10 second timeout for explain
- No longer show autovacuum in long running queries
- Added charts for connections
- Added new config format
- Removed Chartkick gem dependency for charts
- Fixed error when primary database is not PostgreSQL
- Suggest GiST over GIN for
LIKE
queries again (seeing better performance)
- Suggest GIN over GiST for
LIKE
queries
- Removed mostly inactionable items (cache hit rate and index usage)
- Restored duplicate indexes to homepage
- Fixed issue with exact duplicate indexes
- Way better
blocked_queries
method
- Fixed Rails 5 error with multiple databases
- Fixed duplicate index detection with expressions
- Added support for PostgreSQL 9.6
- Fixed incorrect query start for live queries in transactions
- Better tune page for PostgreSQL 9.5
- Added user to query stats (opt-in)
- Added user to connection sources
- Added
capture_space_stats
method and rake task - Added visualize button to explain page
- Better charts for system stats
- Fixed
wrong constant name
error in development - Added different periods for system stats
- Removed external assets
- Updated for Rails 5
- Fixed error when
pg_stat_statements
not enabled inshared_libaries
- Improved performance of query stats
- Improved grouping of query stats
- Added
blocked_queries
method
- Added query hash for better query stats grouping
- Added sequence danger check
- Added
capture_query_stats
option to config
- Fixed user methods
- Added schema to queries
- Fixed deprecation warning on Rails 5
- Fix for pg_query >= 0.9.0
- Better suggested indexes
- Removed duplicate indexes noise
- Fixed partial and expression indexes
- Better suggested indexes
- Removed unused indexes noise
- Removed autovacuum danger noise
- Removed maintenance tab
- Fixed suggested indexes for replicas
- Fixed issue w/ suggested indexes where same table name exists in multiple schemas
- Added suggested indexes
- Added duplicate indexes
- Added maintenance tab
- Added load stats for RDS
- Added
table_caching
andindex_caching
methods - Added configurable cache hit rate threshold
- Show all connections in connections tab
- Added check for transaction ID wraparound failure
- Added check for autovacuum danger
- Fixed system stats
- Added invalid indexes
- Fixed RDS stats for aws-sdk 2
- Added
tables
option tocreate_user
method - Added ability to sort query stats by average_time and calls
- Only show unused indexes with no index scans in UI
- Added historical query stats
- Fixed connection bad errors
- Restore previous connection properly for nested with blocks
- Added analyze button to explain page
- Added explain button to live queries page
- More platforms!
- Support for multiple databases!
- Added
replica?
method - Added
replication_lag
method - Added
ssl_used?
method - Added
kill_long_running_queries
method - Added env vars for settings
- Added connections page
- Added message for insufficient privilege
- Added
ip
toconnection_sources
- Added tune page
- Removed minimum size for unused indexes
- Added
total_percent
toquery_stats
- Added
total_connections
- Added
connection_stats
for Amazon RDS
- Added support for pg_stat_statments on Amazon RDS
- Added
long_running_query_sec
,slow_query_ms
andslow_query_calls
options
- Added methods to create and drop users
- Added locks
- Added system stats for Amazon RDS
- Added code to remove unused indexes
- Require unused indexes to be at least 1 MB
- Use
pg_terminate_backend
to ensure queries are killed
- Reduced long running queries threshold to 1 minute
- Fixed duration
- Fixed wrapping
- Friendlier dependencies for JRuby
- Reverted
query_stats_available?
fix
- Fixed
query_stats_available?
method
- Added explain
- Added query stats
- Fixed CSS issues
- First major release