Skip to content

Commit 456cf33

Browse files
committed
Merge branch 'observer-max-time' into 'master'
fix: define max query time for Postgres 13+ See merge request postgres-ai/database-lab!530
2 parents 3fc5bcd + 471ed41 commit 456cf33

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

Diff for: engine/internal/observer/stats.go

+16-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,22 @@ func (c *ObservingClone) getDBSize(ctx context.Context, dbSize *int64) error {
105105

106106
// getMaxQueryTime gets maximum query duration.
107107
func (c *ObservingClone) getMaxQueryTime(ctx context.Context, maxTime *float64) error {
108-
row := c.superUserDB.QueryRow(ctx, "select max(max_time) from pg_stat_statements")
108+
var pgVersion int
109+
110+
row := c.superUserDB.QueryRow(ctx, "select current_setting('server_version_num')::int")
111+
112+
if err := row.Scan(&pgVersion); err != nil {
113+
return fmt.Errorf("failed to define Postgres Version: %w", err)
114+
}
115+
116+
const pgVersion13 = 130000
117+
118+
maxTimeQuery := "select max(max_time) from pg_stat_statements"
119+
if pgVersion >= pgVersion13 {
120+
maxTimeQuery = "select max(max_exec_time + max_plan_time) from pg_stat_statements"
121+
}
122+
123+
row = c.superUserDB.QueryRow(ctx, maxTimeQuery)
109124

110125
return row.Scan(&maxTime)
111126
}

0 commit comments

Comments
 (0)