-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pg_hint_plan tag 'YB_REL11_1_3_7' into yb-pg-hint-plan
- Loading branch information
Showing
44 changed files
with
46,641 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,13 @@ | ||
# Global excludes across all subdirectories | ||
*.o | ||
*.so | ||
tags | ||
regression.* | ||
*.tar.gz | ||
|
||
# Generated subdirectories | ||
/.deps/ | ||
/log/ | ||
/results/ | ||
/tmp_check/ | ||
/RPMS/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,61 @@ | ||
# | ||
# pg_hint_plan: Makefile | ||
# | ||
# Copyright (c) 2012-2020, NIPPON TELEGRAPH AND TELEPHONE CORPORATION | ||
# | ||
|
||
MODULES = pg_hint_plan | ||
HINTPLANVER = 1.3.7 | ||
|
||
REGRESS = init base_plan pg_hint_plan ut-init ut-A ut-S ut-J ut-L ut-G ut-R ut-fdw ut-W ut-T ut-fini | ||
|
||
REGRESSION_EXPECTED = expected/init.out expected/base_plan.out expected/pg_hint_plan.out expected/ut-A.out expected/ut-S.out expected/ut-J.out expected/ut-L.out expected/ut-G.out | ||
|
||
REGRESS_OPTS = --encoding=UTF8 | ||
|
||
EXTENSION = pg_hint_plan | ||
DATA = pg_hint_plan--*.sql | ||
|
||
EXTRA_CLEAN = sql/ut-fdw.sql expected/ut-fdw.out RPMS | ||
|
||
PG_CONFIG = pg_config | ||
PGXS := $(shell $(PG_CONFIG) --pgxs) | ||
include $(PGXS) | ||
|
||
STARBALL11 = pg_hint_plan11-$(HINTPLANVER).tar.gz | ||
STARBALLS = $(STARBALL11) | ||
|
||
TARSOURCES = Makefile *.c *.h COPYRIGHT* \ | ||
pg_hint_plan--*.sql \ | ||
pg_hint_plan.control \ | ||
doc/* expected/*.out sql/*.sql sql/maskout.sh \ | ||
data/data.csv input/*.source output/*.source SPECS/*.spec | ||
|
||
LDFLAGS += -lyb_pggate_util | ||
LDFLAGS += -L${BUILD_ROOT}/lib | ||
|
||
ifneq ($(shell uname), SunOS) | ||
LDFLAGS+=-Wl,--build-id | ||
endif | ||
|
||
installcheck: $(REGRESSION_EXPECTED) | ||
|
||
rpms: rpm11 | ||
|
||
# pg_hint_plan.c includes core.c and make_join_rel.c | ||
pg_hint_plan.o: core.c make_join_rel.c # pg_stat_statements.c | ||
|
||
$(STARBALLS): $(TARSOURCES) | ||
if [ -h $(subst .tar.gz,,$@) ]; then rm $(subst .tar.gz,,$@); fi | ||
if [ -e $(subst .tar.gz,,$@) ]; then \ | ||
echo "$(subst .tar.gz,,$@) is not a symlink. Stop."; \ | ||
exit 1; \ | ||
fi | ||
ln -s . $(subst .tar.gz,,$@) | ||
tar -chzf $@ $(addprefix $(subst .tar.gz,,$@)/, $^) | ||
rm $(subst .tar.gz,,$@) | ||
|
||
rpm11: $(STARBALL11) | ||
MAKE_ROOT=`pwd` rpmbuild -bb SPECS/pg_hint_plan11.spec | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
# SPEC file for pg_hint_plan | ||
# Copyright(C) 2020 NIPPON TELEGRAPH AND TELEPHONE CORPORATION | ||
|
||
%define _pgdir /usr/pgsql-11 | ||
%define _bindir %{_pgdir}/bin | ||
%define _libdir %{_pgdir}/lib | ||
%define _datadir %{_pgdir}/share | ||
%define _bcdir %{_libdir}/bitcode | ||
%define _mybcdir %{_bcdir}/pg_hint_plan | ||
|
||
%if "%(echo ${MAKE_ROOT})" != "" | ||
%define _rpmdir %(echo ${MAKE_ROOT})/RPMS | ||
%define _sourcedir %(echo ${MAKE_ROOT}) | ||
%endif | ||
|
||
## Set general information for pg_hint_plan. | ||
Summary: Optimizer hint on PostgreSQL 11 | ||
Name: pg_hint_plan11 | ||
Version: 1.3.7 | ||
Release: 1%{?dist} | ||
License: BSD | ||
Group: Applications/Databases | ||
Source0: %{name}-%{version}.tar.gz | ||
URL: https://github.com/ossc-db/pg_hint_plan | ||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id_u} -n) | ||
Vendor: NIPPON TELEGRAPH AND TELEPHONE CORPORATION | ||
|
||
## We use postgresql-devel package | ||
BuildRequires: postgresql11-devel | ||
Requires: postgresql11-server | ||
|
||
## Description for "pg_hint_plan" | ||
%description | ||
|
||
pg_hint_plan provides capability to tweak execution plans to be | ||
executed on PostgreSQL. | ||
|
||
Note that this package is available for only PostgreSQL 11. | ||
|
||
%package llvmjit | ||
Requires: postgresql11-server, postgresql11-llvmjit | ||
Requires: pg_hint_plan11 = 1.3.7 | ||
Summary: Just-in-time compilation support for pg_hint_plan11 | ||
|
||
%description llvmjit | ||
Just-in-time compilation support for pg_hint_plan11 | ||
|
||
## pre work for build pg_hint_plan | ||
%prep | ||
PATH=/usr/pgsql-11/bin:$PATH | ||
if [ "${MAKE_ROOT}" != "" ]; then | ||
pushd ${MAKE_ROOT} | ||
make clean %{name}-%{version}.tar.gz | ||
popd | ||
fi | ||
if [ ! -d %{_rpmdir} ]; then mkdir -p %{_rpmdir}; fi | ||
%setup -q | ||
|
||
## Set variables for build environment | ||
%build | ||
PATH=/usr/pgsql-11/bin:$PATH | ||
make USE_PGXS=1 %{?_smp_mflags} | ||
|
||
## Set variables for install | ||
%install | ||
rm -rf %{buildroot} | ||
make install DESTDIR=%{buildroot} | ||
|
||
%clean | ||
rm -rf %{buildroot} | ||
|
||
%files | ||
%defattr(0755,root,root) | ||
%{_libdir}/pg_hint_plan.so | ||
%defattr(0644,root,root) | ||
%{_datadir}/extension/pg_hint_plan--1.3.2--1.3.3.sql | ||
%{_datadir}/extension/pg_hint_plan--1.3.3--1.3.4.sql | ||
%{_datadir}/extension/pg_hint_plan--1.3.4--1.3.5.sql | ||
%{_datadir}/extension/pg_hint_plan--1.3.5--1.3.6.sql | ||
%{_datadir}/extension/pg_hint_plan--1.3.6--1.3.7.sql | ||
%{_datadir}/extension/pg_hint_plan--1.3.7.sql | ||
%{_datadir}/extension/pg_hint_plan.control | ||
|
||
%files llvmjit | ||
%defattr(0755,root,root) | ||
%{_mybcdir} | ||
%defattr(0644,root,root) | ||
%{_bcdir}/pg_hint_plan.index.bc | ||
%{_mybcdir}/pg_hint_plan.bc | ||
|
||
# History of pg_hint_plan. | ||
%changelog | ||
* Thu Oct 29 2020 Kyotaro Horiguchi | ||
- Fix a bug. Version 1.3.7. | ||
* Wed Aug 5 2020 Kyotaro Horiguchi | ||
- Fix some bugs. Version 1.3.6. | ||
* Thu Feb 21 2020 Kyotaro Horiguchi | ||
- Fix some bugs. Version 1.3.5. | ||
* Thu Jan 17 2019 Kyotaro Horiguchi | ||
- Fix some bugs. Version 1.3.4. | ||
* Tue Nov 13 2018 Kyotaro Horiguchi | ||
- Support PostgreSQL 11. Version 1.3.2. | ||
* Fri Jun 08 2018 Kyotaro Horiguchi | ||
- Fixed a crash bug. Version 1.3.1. | ||
* Tue Oct 10 2017 Kyotaro Horiguchi | ||
- Support PostgreSQL 10. Version 1.3.0. | ||
* Tue Feb 7 2017 Kyotaro Horiguchi | ||
- Added new hint Parallel. Version 1.2.0. | ||
* Thu Jul 21 2016 Kyotaro Horiguchi | ||
- Support PostgreSQL 9.6 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
1,1 | ||
2,2 | ||
3,3 | ||
4,4 | ||
5,5 | ||
6,6 | ||
7,7 | ||
8,8 | ||
9,9 | ||
10,10 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD html 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | ||
<html> | ||
<head> | ||
<title>Appendix A. ヒント句一覧</title> | ||
<!-- Uncoment after the tool has been hosted somewhere. | ||
<link rel="home" title="pg_hint_plan" href="index.html"> | ||
--> | ||
<link rel="stylesheet" type="text/css" href="style.css"> | ||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | ||
</head> | ||
|
||
<body> | ||
<h1 id="pg_hint_plan">pg_hint_plan 1.3 付録</h1> | ||
<div class="navigation"> | ||
<a href="pg_hint_plan-ja.html">pg_hint_plan</a> > | ||
<a href="hint_list-ja.html">Appendix A. ヒント句一覧</a> | ||
</div> | ||
<hr> | ||
|
||
<h2 id="hint-list">Appendix A. ヒント句一覧</h2> | ||
<p>pg_hint_planで指定できるヒント句は以下の通りです。</p> | ||
<table> | ||
<thead> | ||
<tr> | ||
<tr><th>グループ</th><th>ヒント句の書式</th><th>説明</th></tr> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
<tr><td rowspan="11" nowrap>スキャン方式</td> | ||
<td nowrap>SeqScan(テーブル)</td> | ||
<td>指定したテーブルについて、Seq Scanを選択します。</td></tr> | ||
<tr><td nowrap>TidScan(テーブル)</td> | ||
<td>指定したテーブルについて、Tid Scanを選択します。検索条件にctidを指定した場合にのみ有効です。</td></tr> | ||
<tr><td nowrap>IndexScan(テーブル[ インデックス...])</td> | ||
<td>指定したテーブルについて、Index Scanを選択します。インデックスも指定した場合は、指定したインデックスの中でコストが最小となるIndex Scanを選択します。ただし、インデックスが存在しない場合や指定したインデックスがWHERE句やJOIN条件などに関連しない場合はSeq Scanを選択します。<br> | ||
継承関係の親テーブルとそのテーブルのインデックスを指定した場合は、子テーブルに対してそのインデックスと同様の定義のインデックスを選択します。</td></tr> | ||
<tr><td nowrap>IndexOnlyScan(テーブル[ インデックス...])</td> | ||
<td>指定したテーブルについて、Index Only ScanとIndex Scanのうちコストが最小となるスキャン方式を選択します。インデックスも指定した場合は、指定したインデックスの中でIndex Only ScanとIndex Scanのうちコストが最小となるスキャン方式を選択します。ただし、インデックスが存在しない場合や指定したインデックスがWHERE句やJOIN条件などに関連しない場合はSeq Scanを選択します。また、これらの場合以外にも、インデックスが持つ値だけでなくテーブルの値も必要な場合はIndex Scanを選択します。<br> | ||
継承関係の親テーブルとそのテーブルのインデックスを指定した場合は、子テーブルに対してそのインデックスと同様の定義のインデックスを選択します。 | ||
PostgreSQL 9.2以降で動作します。</td></tr> | ||
<tr><td nowrap>BitmapScan(テーブル[ インデックス...])</td> | ||
<td>指定したテーブルについて、Bitmap Scanを選択します。インデックスも指定した場合は、指定したインデックスの中でコストが最小となるインデックスを選択します。ただし、インデックスが存在しない場合や指定したインデックスがWHERE句やJOIN条件などに関連しない場合はSeq Scanを選択します。<br> | ||
継承関係の親テーブルとそのテーブルのインデックスを指定した場合は、子テーブルに対してそのインデックスと同様の定義のインデックスを選択します。</td></tr> | ||
<tr><td nowrap>IndexScanRegexp(テーブル[ POSIX正規表現...])</br>IndexOnlyScanRegexp(テーブル[ POSIX正規表現...])</br>BitmapScanRegexp(テーブル[ POSIX正規表現...])</td> | ||
<td>テーブルのみを指定した場合のスキャン方式の選択基準は、Regexpの付かないスキャン方式のヒントと同じです。<a href="http://www.postgresql.jp/document/current/html/functions-matching.html#FUNCTIONS-POSIX-REGEXP">POSIX正規表現</a>も指定した場合は、指定したPOSIX正規表現パターンに一致するインデックスの中でコストが最小となるスキャン方式を選択します。指定したテーブルが継承テーブルの場合は、子テーブルについても同じ基準で、使用するインデックスとスキャン方式を選択します。IndexOnlyScanRegexpヒントはPostgreSQL 9.2以降で動作します。</td></tr> | ||
<tr><td nowrap>NoSeqScan(テーブル)</td> | ||
<td>指定したテーブルについて、Seq Scan以外でコストが最小となるスキャン方式を選択します。ただし、他のスキャン方式を選択できない場合は、Seq Scanを選択します。</td></tr> | ||
<tr><td nowrap>NoTidScan(テーブル)</td> | ||
<td>指定したテーブルについて、Tid Scan以外でコストが最小となるスキャン方式を選択します。</td></tr> | ||
<tr><td nowrap>NoIndexScan(テーブル)</td> | ||
<td>指定したテーブルについて、Index ScanとIndex Only Scanを除いたスキャン方式の中でコストが最小となるスキャン方式を選択します。</td></tr> | ||
<tr><td nowrap>NoIndexOnlyScan(テーブル)</td> | ||
<td>指定したテーブルについて、Index Only Scan以外でコストが最小となるスキャン方式を選択します。PostgreSQL 9.2以降で動作します。</td></tr> | ||
<tr><td nowrap>NoBitmapScan(テーブル)</td> | ||
<td>指定したテーブルについて、Bitmap Scan以外でコストが最小となるスキャン方式を選択します。</td></tr> | ||
|
||
<tr><td rowspan="6" nowrap>結合方式</td> | ||
<td nowrap>NestLoop(テーブル テーブル[ テーブル...])</td> | ||
<td>指定したテーブル間の結合にNested Loopを選択します。</td></tr> | ||
<tr><td nowrap>HashJoin(テーブル テーブル[ テーブル...])</td> | ||
<td>指定したテーブル間の結合にHash Joinを選択します。</td></tr> | ||
<tr><td nowrap>MergeJoin(テーブル テーブル[ テーブル...])</td> | ||
<td>指定したテーブル間の結合にMerge Joinを選択します。</td></tr> | ||
<tr><td nowrap>NoNestLoop(テーブル テーブル[ テーブル...])</td> | ||
<td>指定したテーブル間の結合にNested Loop以外の結合方式を選択します。</td></tr> | ||
<tr><td nowrap>NoHashJoin(テーブル テーブル[ テーブル...])</td> | ||
<td>指定したテーブル間の結合にHash Join以外の結合方式を選択します。</td></tr> | ||
<tr><td nowrap>NoMergeJoin(テーブル テーブル[ テーブル...])</td> | ||
<td>指定したテーブル間の結合にMerge Join以外の結合方式を選択します。</td></tr> | ||
|
||
<tr><td rowspan="2">結合順序</td> | ||
<td nowrap>Leading(テーブル テーブル[ テーブル...])</td> | ||
<td>指定したテーブルを指定した順番通りに結合します。</td></tr> | ||
<tr><td nowrap>Leading((テーブル集合<Sup>注1</Sup> テーブル集合<Sup>注1</Sup>))</td> | ||
<td>1つ目に指定したテーブル集合を外部表として、2つ目に指定したテーブル集合を内部表として結合します。書式中のテーブル集合はテーブルもしくは別のテーブル集合です。</td></tr> | ||
|
||
<tr><td>見積もり件数補正</td> | ||
<td nowrap>Rows(テーブル テーブル[ テーブル...] 件数補正)</td> | ||
<td>指定したテーブル間の結合結果の見積もり件数を補正します。件数補正として指定できるのは以下の4パターンです。 | ||
<p><dl> | ||
<dt>#件数</dt><dd>指定した件数で本来の見積もり件を上書きします。</dd> | ||
<dt>+件数</dt><dd>指定した件数を本来の見積もり件数に加算します。</dd> | ||
<dt>-件数</dt><dd>指定した件数を本来の見積もり件数から減算します。</dd> | ||
<dt>*倍率</dt><dd>本来の見積もり件数を指定した倍率に補正します。「*2」とすると見積もり件数が2倍になり、「*0.01」とすると見積もり件数が1/100になります。</dd> | ||
</dl></p> | ||
なお、件数や倍率には、strtod()が解釈できる書式で数値を指定してください。 | ||
</td></tr> | ||
|
||
<tr><td>パラレル実行の制御</td> | ||
<td nowrap>Parallel(テーブル ワーカ数 [強制度])</td> | ||
<td>パラレル実行を強制あるいは禁止します。ワーカ数が0の場合はパラレル実行を禁止します。強制度はワーカ数の適用方法を指定するもので "hard" または "soft" を指定します。デフォルト値である"soft"の場合は max_parallel_workers_per_gather のみを変更してあとはプランナに任せます。そして"hard" の場合は指定したワーカ数を強制します。</td> | ||
|
||
</td></tr> | ||
|
||
<tr><td>GUCパラメータ</td> | ||
<td nowrap>Set(GUCパラメータ 値)</td> | ||
<td>そのクエリの実行計画を作成している間だけ、指定したGUCパラメータを指定した値に変更します。</td></tr> | ||
</tbody> | ||
</table></p> | ||
<dt> | ||
<Sup>注1</Sup>テーブル集合とは、以下のような記述を指しています。</dt> | ||
<dd>テーブル集合 = {テーブル|(テーブル集合 テーブル集合)}</dd> | ||
|
||
|
||
<hr> | ||
<div class="navigation"> | ||
<a href="pg_hint_plan-ja.html">pg_hint_plan</a> > | ||
<a href="hint_list-ja.html">Appendix A. ヒント句一覧</a> | ||
</div> | ||
|
||
<p class="footer">Copyright (c) 2012-2020, NIPPON TELEGRAPH AND TELEPHONE CORPORATION</p> | ||
</body> | ||
</html> |
Oops, something went wrong.