• R/O
  • HTTP
  • SSH
  • HTTPS

pg_hint_plan: コミット

firtst release


コミットメタ情報

リビジョンde15cdb3cb4c0eef137c002ff5ca0b332643b99c (tree)
日時2017-10-10 12:35:22
作者Kyotaro Horiguchi <horiguchi.kyotaro@lab....>
コミッターKyotaro Horiguchi

ログメッセージ

Added a notice in the manual.

Added an item that explains about letter case handling of object names
in hints.

変更サマリ

差分

--- a/doc/pg_hint_plan-ja.html
+++ b/doc/pg_hint_plan-ja.html
@@ -498,7 +498,9 @@ postgres$# END;
498498 postgres$# $$ LANGUAGE plpgsql;
499499 </pre>
500500 </dd>
501-<dt><h3>オブジェクト名の引用符付け</h3></dt>
501+<dt><h3>ヒント句内のオブジェクト名の文字ケース</h3></dt>
502+<dd>PostgreSQL は引用符で囲われないオブジェクト名を文字ケースを無視して扱いますが、pg_hint_plan は指定されたオブジェクト名の文字ケースはそのまま PostgreSQL の内部表現と比較します。つまり、ヒント句で TBL と指定した場合、データベース上で "TBL" と定義したもののみと合致し, TBL, tbl, Tbl など引用符で囲われないオブジェクト名とは合致しません。</dd>
503+<dt><h3>ヒント句内のオブジェクト名の引用符付け</h3></dt>
502504 <dd>ヒントに記述するオブジェクト名や別名が括弧((、)のいずれか)、二重引用符(")、空白(スペース、タブ、改行のいずれか)を含む場合は、通常のSQL文で使う場合と同じように二重引用符(")で囲んでください。二重引用符を含むオブジェクト名は、全体を二重引用符で括ったうえで、内部に含む二重引用符を二重引用符でエスケープしてください(例: 「quoted"table"name」→「"quoted""table""name"」)。</dd>
503505 <dt><h3>同一名称テーブルの区別</h3></dt>
504506 <dd>スキーマ違いや同一テーブルの複数回使用などでクエリ中に同一名称のテーブルが複数回出現する場合は、テーブルに別名をつけてそれぞれのテーブルを区別してください。以下の例の1つ目のSQL文では、HashJoin(t1 t1)をヒントに指定したとき、ヒント句対象のオブジェクトが特定できずにエラーになっています。2つ目のSQL文では、各テーブルにptやstという別名をつけているため、実行計画作成時にヒントで指定した通りにHash Joinを選択しています。</p>
@@ -620,10 +622,6 @@ postgres=#
620622 <dd>NoIndexScanヒント句を指定した場合は、Index ScanだけでなくIndex Only Scanも選択されません。</dd>
621623 </dl>
622624
623-<dt><h3>並列実行ヒントとスキャン方式ヒントの関係について</h3></dt>
624-<dd>スキャン方式ヒントは並列実行の部分パスを生成する際にも影響を与えます。今のところ並列実行の部分パスはシーケンシャルスキャンとなるため、シーケンシャルスキャンを禁止すると同じオブジェクトへの並列実行ヒントが無効化されます。</dd>
625-</dl>
626-
627625 <dt><h3>UNION に対する並列実行ヒント</h3></dt>
628626 <dd>UNIONは直下のサブクエリが全て並列実行可能な場合にだけ並列実行を行います。一方ですべてのサブクエリが並列実行可能な場合は、そのうちの一つで並列実行を強制するとコスト比較の結果UNION全体が並列実行されることになります。ただし並列実行ヒントによる並列実行の禁止を行った場合はそのスキャンは並列実行不可となります。
629627 </dd>
--- a/doc/pg_hint_plan.html
+++ b/doc/pg_hint_plan.html
@@ -319,6 +319,10 @@ postgres$# $$ LANGUAGE plpgsql;
319319 </pre>
320320 </dd>
321321
322+<h3>Letter case in a hinted object</h3>
323+<dd>Unlike the way PostgreSQL handles object names, pg_hint_plan compares bare object names in hints against the database internal object names in case sensitive way. Therefore an object name TBL in a hint matches only "TBL" in database and does not match any unquoted names like TBL, tbl or Tbl.
324+</dd>
325+
322326 <h3>Escaping special chacaters in object names</h3>
323327 <dd>The objects as the hint parameter should be enclosed by double quotes if they includes parentheses, double quotes and white spaces. The escaping rule is the same as PostgreSQL.
324328 </dd>
@@ -372,12 +376,6 @@ hint affect all the inheritance. Hints simultaneously point directly
372376 to children are not in effect.
373377 </dd>
374378
375-<h3>Inheritance tables</h3>
376-<dd>Hints can point only the parent of an inheritance tables and the
377-hint affect all the inheritance. Hints simultaneously point directly
378-to children are not in effect.
379-</dd>
380-
381379 <h3>Hinting on multistatements</h3>
382380 <dd>One multistatement can have exactly one hint comment and the hints affects all of the individual statement in the multistatement. Notice that the seemingly multistatement on the interactive interface of psql is internally a sequence of single statements so hints affects only on the statement just following.</dd>
383381
@@ -436,17 +434,12 @@ IN (SELECT ... {<b>LIMIT | OFFSET</b> ...} ...)
436434 <h3>Behavior of NoIndexScan</h3>
437435 <dd>NoIndexScan hint involes NoIndexOnlyScan.</dd>
438436
439-<h3>Parallel vs Scan hints</h3>
440-<dd>Scan hints also affect building partial paths. Since parallel
441-paths are currently consists of partial sequential scans, inhibiting
442-seqscan beats parallel hint on the same relation.</dd>
443-
444437 <h3>Parallel hint and UNION</h3>
445438 <dd>A UNION can run in parallel only when all underlying subqueries
446439 are parallel-safe. Conversely enforcing parallel on any of
447440 the subqueries let a parallel-executable UNION run in
448-parallel. Meanwhile, a parallel hint with zero workers makes a scan
449-parallel-inexecutable.</dd>
441+parallel. Meanwhile, a parallel hint with zero workers hinhibits a scan
442+from executed in parallel.</dd>
450443
451444 <h3>Setting pg_hint_plan parameters by Set hints</h3>
452445 <dd><p>pg_hint_plan paramters change the behavior of itself so some parameters doesn't work as expected.</p>
旧リポジトリブラウザで表示