Skip to content

Commit

Permalink
Tweak explain_analyze helper invocation to avoid pg_hint_plan limitat…
Browse files Browse the repository at this point in the history
…ion (#683)

For the collector-based Query Tuning workflow, the collector receives
a query text from the pganalyze server and runs it on the target
database. This query text may include pg_hint_plan hints, as users use
workbooks to optimize queries.

However, it looks like pg_hint_plan ignores hints if they are not in
the _first_ comment in a query. The collector prepends a query marker
as a separate comment, and this causes pg_hint_plan to ignore any
hints specified in the query.

Avoid passing our query marker, since we're already prepending it to
the top-level explain_analyze invocation, and nested queries will not
show up in pg_stat_activity anyway.
  • Loading branch information
msakrejda authored Feb 20, 2025
1 parent 5f539e9 commit d6c4b40
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion input/postgres/explain_analyze.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ func runExplainAnalyze(ctx context.Context, db *sql.DB, query string, parameters
}
defer tx.Rollback()

err = tx.QueryRowContext(ctx, marker+"SELECT pganalyze.explain_analyze($1, $2, $3, $4)", marker+query, pq.Array(parameters), pq.Array(parameterTypes), pq.Array(analyzeFlags)).Scan(&explainOutput)
err = tx.QueryRowContext(ctx, marker+"SELECT pganalyze.explain_analyze($1, $2, $3, $4)", query, pq.Array(parameters), pq.Array(parameterTypes), pq.Array(analyzeFlags)).Scan(&explainOutput)

return
}
Expand Down

0 comments on commit d6c4b40

Please sign in to comment.