• R/O
  • HTTP
  • SSH

pg_hint_plan: List of commits

firtst release

Rev. Time Author
501fdfc master REL14_1_4_0 2022-01-19 15:12:22 Kyotaro Horiguchi

Add forgotten test files

9e2f8b6 forgot to contain the .sql and expected/.out files for
hints_anywhere feature. Add them.

c23bb6a 2022-01-19 12:59:59 Kyotaro Horiguchi

Fix SEGV caused by duplicate memoize hints

HintTypeName was missing the item for the Memoize hint. This causes
SEGV or "(null)" printing by printf on erroring of duplicate memoize

Add the missing item and a static assertion to check the same kind of

Reported by ShangBenX <https://github.com/ShangBenX>

e6a9004 2022-01-19 11:37:57 褚华兴

Properly free all elements in a list

HintStateDelete tried to free the elements of hstate->all_hints[] but
actually it only freed part of them. Correct the code as it intended.

Some other palloced blocks are being hanged under the struct but we
don't bother trying to be perfect at cleaning up the whole struct
since it will be freed up at query end.

e771aa6 2022-01-19 10:37:00 Kyotaro Horiguchi

Fix many typos in doc

Many misspellings were left alone in the documentation. Rechecked the
whole documentation and fixed the misspellings.

Reported-by: qianglingjie <86580516+qianglingjie@users.noreply.github.com>

b28fc4a 2022-01-19 10:16:27 Maxim Orlov

Use standard way of deleteing list cell

When the list implementation was changed, pg_hint_plan followed that
change by modifying existing use-side code. Use instead
foreach_delete_current, which is the standard provided API to do the

9e2f8b6 2022-01-18 17:40:35 Daniil Anisimov

Allow hints to be placed anywhere in query

Hints description is restriected to be placed before certain
characters. That is effectively at the beginning of a query, or after
EXPLAIN or PREPARE. This commit adds a new setting parameter
pg_hint_plan.hints_anywhere, which gets rid of that restriction. When
it is on, pg_hint_plan ignores SQL syntax at all while reading hints
so there's no restricion on where hint string is placed in a query
string. On the other hand it may lead to false reads from a non-hint

e5e2b19 2022-01-18 16:24:50 Alex Rattray

Create README.md

Add standard README.md file. This file is a simple conversion from
existing document as a starter.

e9e564a 2022-01-18 16:20:42 fengzh

Add LD option --build-id only at RPM-build time

That option harms not only SunOS but also BSDs. It is required by
rpmbuild so it is sensible to move the option from Makefile to SPEC

0a27fc8 2022-01-18 16:03:03 mikecaat

Fix behavior for pg_hint_plan.debug_print

It was a kind of broken that some debug code paths are never visited
or that higher debug_level doesn't offer detailed messages.
Fix some debug messages' debug_level condition so that we can see the
proper messages for every debug_level.

687ced2 2022-01-18 15:45:40 Kyotaro Horiguchi

Fix versions and copyright year of doc

1218a26 2022-01-18 15:43:26 Kyotaro Horiguchi

[DOC] Fix default value for pg_hint_plan.message_level

The actual default value for the variable is LOG so that the messages
are emitted to server log. Fix the documentation.

Per the report from jianggq@cn.fujitsu.com.

857297a 2022-01-18 15:13:20 Robert Treat

Light-Weight spelling and grammar fixes

Fix some fixes of spelling and grammar in the doc.

cde640f 2022-01-14 17:51:08 Kyotaro Horiguchi

Followup change to support PG14

One improvement and on fix.

Ressurect post_parse_analysys_hook function to avoid redandunt
computation of jumble state if it is generated in-core.

Properly handle the case where compute_query_id is turned off while
pg_hint_plan.enable_hint_talbe is on. This operation lead to a crash.

d7296d7 2021-11-05 13:17:10 Tatsuro Yamada

Update copyright year of files

437a4fa 2021-10-06 11:57:29 Kyotaro Horiguchi

Allow run make check of PostgreSQL with loading pg_hint.plan

Automatically switch environment when pg_hint_plan is installed as a
part of "make check" of PostgreSQL. That test is executed with the
following command line in the top directory of PostgreSQL tree.

make check EXTRA_INSTALL=<this directory> EXTRA_REGRESS_OPTS="--temp-config <this directory>/pg_hint_plan.conf"

make check-world fails for test that requires extra modules.

3d8c7b8 2021-10-06 11:57:29 Kyotaro Horiguchi

Support "Memoize" Hint.

PostgreSQL 14 introduced the new optimization item "memoize", which
allows a join to memoize the inner result. Add a hint to control this

454f72a 2021-10-06 11:56:12 Kyotaro Horiguchi

Support PostgreSQL 14

In PostgreSQL 14, planner was restructured in regard to query string
passing. This change allows us to remove fair amount of lines and
complexity that had been added as a struggle for retrieving proper
query string.

Two callbacks, post_parse_analyze_hook and ProcessUtility_hook are no
longer used. get_query_string is removed altogether. Also
current_hint_retrieved juggling, which was complex and fragile,
disappears. Now pg_hint_plan_planner alone can retrieve hint string by
looking into the given string.

In PostgreSQL 14, a new optimization item "memoize" is added. It is
not handled in this commit and leave it for a later commit.

4ffa97e REL13_1_3_7 2020-10-29 21:03:05 Kyotaro Horiguchi

Change version to 1.3.7.

e891d54 2020-10-29 21:03:05 Kyotaro Horiguchi

Make HashJoin hint more coercive.

Even with HashJoin hint, hash joins may be rejected by planner if hash
table for the inner-rel is estimated too large. Make HashJoin hint
more coercive by increasing hash_mem_multiplier.

adc7ca8 2020-10-29 21:03:05 Kyotaro Horiguchi

Change copyright year of docs to 2020

7392b37 2020-10-29 20:31:47 Kyotaro Horiguchi

Stabilize regression test.

I was annoyed by frequent nonsubstantial change of title line length
of explain output. This commit makes maskout.sh replace the title
lines with fixed content.

8286b67 2020-10-29 20:31:47 Kyotaro Horiguchi

Follow a behavioral change in core.

Commit 894f5dea76 has changed the core's behavior of naming indexes.
Follow the changes. This is regression-result changes only.

16ae4df 2020-10-29 20:31:47 Kyotaro Horiguchi

Update core.c and make_join_rel.c.

From this version core.c and make_join_rel.c are automatically
generated from core code. Adjust them to auto-generated content.

2b4d65f 2020-10-29 20:31:47 Kyotaro Horiguchi

New tool to generate source files for copied functions

Previously core.c and make_join_rel.c are maintained by hand. This
tool generates the files from corresponding core source files.

7192693 2020-10-29 20:31:47 Kyotaro Horiguchi

Add *.bc to .gitignore

Added *.bc and *~ to .gitignore

5f0969f 2020-10-29 20:31:47 Kyotaro Horiguchi

Follow the semantic change of pg_list part 2

Commit 7ed93ce forgot to fix another place where list_delete_cell() is
used. Fix it.

7ed93ce 2020-08-06 20:18:05 Kyotaro Horiguchi

Support PostgreSQL 13.

- Follow change of some planner functions.

- Follow a change of the semantics of List.

- Take in changes in copied core code.

- Adjust regression tests.
Amost all of the differences are come from aliasing policy, and some
come from a new GUC parameter.

a9abbbd 2020-08-05 16:30:25 Kyotaro Horiguchi

Version 1.3.6.

Fixed some bugs.

520fcbf 2020-07-14 18:06:26 sherlockcpp

Add description of *ScanRegExp hints in the document.

English version of hint list is missing regexp versions of scan
hints. Add them.

da398b8 2020-07-14 17:36:22 Kyotaro Horiguchi

Mask non-significant parts of regression output

To stabilize test, mask more of non-significant parts of EXPLAIN output.

Show on old repository browser