Skip to content

Commit 9702c88

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 (apache#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 9f04ebe commit 9702c88

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

src/dialect/postgresql.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
stacker = "0.1"
12
// Licensed to the Apache Software Foundation (ASF) under one
23
// or more contributor license agreements. See the NOTICE file
34
// distributed with this work for additional information
@@ -318,4 +319,12 @@ impl Dialect for PostgreSqlDialect {
318319
fn supports_xml_expressions(&self) -> bool {
319320
true
320321
}
322+
323+
/// Postgres supports query optimizer hints via the `pg_hint_plan` extension,
324+
/// using the same comment-prefixed-with-`+` syntax as MySQL and Oracle.
325+
///
326+
/// See <https://github.com/ossc-db/pg_hint_plan>
327+
fn supports_comment_optimizer_hint(&self) -> bool {
328+
true
329+
}
321330
}

0 commit comments

Comments
 (0)