Skip to content

Commit 4114ff0

Browse files
PostgreSQL: Parse optimizer hints in leading comments
Enable comment-based optimizer hint parsing for the PostgreSQL dialect by overriding `supports_comment_optimizer_hint` to return `true`. PostgreSQL itself does not ship a built-in hint system, but the widely used `pg_hint_plan` extension (https://github.com/ossc-db/pg_hint_plan) introduces hints using the exact same `/*+ ... */` block-comment and `--+ ...` single-line-comment syntax already supported for MySQL and Oracle (#2162). Without this flag, parsing a `pg_hint_plan` statement such as: SELECT /*+ SeqScan(t) */ * FROM t; discards the hint as an ordinary comment, making it impossible for downstream tools (query rewriters, proxies, planners) built on `sqlparser-rs` to preserve or act on hints when targeting PostgreSQL. The parser side already handles this via `maybe_parse_optimizer_hint` across SELECT / INSERT / UPDATE / DELETE / MERGE, so no parser or AST changes are required — this is purely a dialect opt-in. The default remains `false`, so no other dialect is affected.
1 parent fa1dae1 commit 4114ff0

1 file changed

Lines changed: 8 additions & 0 deletions

File tree

src/dialect/postgresql.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,4 +318,12 @@ impl Dialect for PostgreSqlDialect {
318318
fn supports_xml_expressions(&self) -> bool {
319319
true
320320
}
321+
322+
/// Postgres supports query optimizer hints via the `pg_hint_plan` extension,
323+
/// using the same comment-prefixed-with-`+` syntax as MySQL and Oracle.
324+
///
325+
/// See <https://github.com/ossc-db/pg_hint_plan>
326+
fn supports_comment_optimizer_hint(&self) -> bool {
327+
true
328+
}
321329
}

0 commit comments

Comments
 (0)