SlideShare a Scribd company logo
1 of 26
© 2021 NTT DATA Corporation
PostgreSQL初心者がパッチを提案してからコミットされるまで
2021年2月2日 第20回PostgreSQLアンカンファレンス@オンライン
株式会社NTTデータ 技術開発本部
加藤 慎也
© 2021 NTT DATA Corporation 2
自己紹介
⚫ 名前
‒ 加藤 慎也 @ShinyaKato_
⚫ 所属
‒ 株式会社NTTデータ 技術開発本部
⚫ 経歴
‒ 入社1年目社員
‒ PostgreSQL歴2ヶ月
‒ 大学時代は、DB系の研究をしてたがRDBに関してはほぼ初心者
(SQLもロクに書いたことがない…)
© 2021 NTT DATA Corporation 3
YouTubeチャンネル “NTT DATA Tech”
技術取り組み、活用情報を中心にお届けします
https://www.youtube.com/NTTDATATech
© 2021 NTT DATA Corporation 4
PostgreSQL初心者が
パッチを提案してからコミットされるまで
© 2021 NTT DATA Corporation 5
モチベーション
⚫ OSSコミッターが多数在籍する部署に配属
⚫ PostgreSQLのコア開発者になりたい!
⚫ まずは、簡単なパッチ開発に取り組もう!
⚫ カーソルに関するコマンドのタブ補完を改善するパッチの作成
‒ CLOSE、FETCH、MOVEのタブ補完が期待通り動作しない
‒ 期待通り動作するようにパッチを作成する
‒ タブ補完として、定義済カーソルの名前一覧+ALLを表示する
‒ ※CLOSEを中心に紹介します
© 2021 NTT DATA Corporation 6
タブ補完とは?
⚫ Tabキー押すことで入力内容を補完する機能
⚫ 例えば、ALTER SYSTEMのタブ補完を確認
=# ALTER SYSTEM
RESET SET
=# ALTER SYSTEM SET
Display all 315 possibilities? (y or n)
all log_parser_stats
allow_system_table_mods log_planner_stats
application_name log_replication_commands
archive_cleanup_command log_rotation_age
archive_command log_rotation_size
archive_mode log_statement
archive_timeout log_statement_sample_rate
…
タブキーを押すと、
入力内容が補完される
© 2021 NTT DATA Corporation 7
タブ補完がどのような仕組みで動いているかを確認
⚫ タブ補完のソースコードを探す
⚫ git grep “tab” -- “src/” でtabを含むコードを探してみる
‒ databaseやtableばかりが大量に引っかかって諦める
⚫ 大人しくディレクトリをたどってみる
‒ backendではないからbinにいってみよう
‒ おっ、psqlというディレクトリがある
‒ tab-complete.cがある!多分これだ!
© 2021 NTT DATA Corporation 8
タブ補完のソースコードを読み解く
前半部分にはマクロとして
様々なクエリが記述されている
後半部分にはタブ補完の条件
と補完内容が記述されている
© 2021 NTT DATA Corporation 9
CLOSEのタブ補完の挙動はどうなっているか?
⚫ CLOSEとは?
‒ CLOSEは、開いたカーソルに関連するリソースを解放します。カーソルが閉じられた後は、
そのカーソルに対する操作はできません。カーソルは必要がなくなった時点で閉じるべき
です。
‒ https://www.postgresql.jp/document/12/html/sql-close.html
⚫ 動かしてみる
=# BEGIN;
BEGIN
=*# DECLARE cur CURSOR FOR SELECT * FROM pg_class;
DECLARE CURSOR
=*# CL
CLOSE CLUSTER
=*# CLOSE タブを押しても
定義済みカーソルが表示されない
© 2021 NTT DATA Corporation 10
実装を始める前に…
⚫ 定義済カーソル一覧を表示する方法を知りたい
‒ CLOSEのドキュメントより、
‒ pg_cursorsシステムビューを問い合わせることにより利用可能なすべてのカーソルを確認すること
ができます。
=# BEGIN;
BEGIN
=*# DECLARE cur1 CURSOR FOR SELECT * FROM pg_class;
DECLARE CURSOR
=*# DECLARE cur2 CURSOR FOR SELECT * FROM pg_class;
DECLARE CURSOR
=*# SELECT name FROM pg_cursors;
name
------
cur1
cur2
(2 rows)
© 2021 NTT DATA Corporation 11
実装
1. CLOSEが入力されたときの挙動を記述
2. 定義済カーソル一覧を表示するクエリのマクロを記述
© 2021 NTT DATA Corporation 12
動作確認
⚫ PostgreSQLリビルドし、動作確認
=# BEGIN;
BEGIN
=*# DECLARE cur CURSOR FOR SELECT
* FROM pg_class;
DECLARE CURSOR
=*# CLOSE
修正前 修正後
=# BEGIN;
BEGIN
=*# DECLARE cur CURSOR FOR SELECT
* FROM pg_class;
DECLARE CURSOR
=*# CLOSE
ALL cur
ALLと
定義済カーソルが補完される
補完されない
© 2021 NTT DATA Corporation 13
パッチの作成
⚫ パッチ作成
$ git diff > fix_tab_complete_close_fetch_move.patch
© 2021 NTT DATA Corporation 14
メーリングリストに投稿
⚫ パッチを添付してpgsql-hackers@postgresql.org宛に送信
© 2021 NTT DATA Corporation 15
1月のCommitfestsへの登録
⚫ 1月のCommitfestsのページでパッチを登録
‒ https://commitfest.postgresql.org/31/
© 2021 NTT DATA Corporation 16
レビュー結果
1. パッチを適用しようとしたら、whitespace warningsが出る
2. カーソル一覧を表示するクエリの修正
3. コメントの修正
4. DECLARE文のタブ補完もこの機会にやっておくのはどうか?
© 2021 NTT DATA Corporation 17
1.パッチを適用しようとしたら、whitespace warnings が出る
⚫ whitespace warnings
‒ 行末のスペースや、タブ文字が直後に続くスペースがあると出る警告
⚫ PostgreSQLのコーディング規約
‒ タブを4カラムとするスペーシングを使用し、現在はタブを保存しています(つまりタブをス
ペースに展開しません)
‒ https://www.postgresql.jp/document/12/html/source-format.html
⚫ pgindentを使用してwhitespaceを削除
‒ コードを整形してくれるツール
When I applied the patch, I got the following whitespace warnings:
$ git apply ~/patches/fix_tab_complete_close_fetch_move.patch
…
warning: squelched 19 whitespace errors
warning: 24 lines add whitespace errors.
I recommend you checking whitespaces or running pgindent.
© 2021 NTT DATA Corporation 18
2.カーソル一覧を表示するクエリの修正(1/2)
⚫ quote_ident() :必要な場合、適切な引用符を付けて返す関数
⚫ substring() :部分文字列を取り出す関数
⚫ %d :これまでに入力された文字列の長さ
⚫ %s :これまでに入力された文字列
+#define Query_for_list_of_cursors ¥
+" SELECT name FROM pg_cursors"¥
This query should be the following?
" SELECT pg_catalog.quote_ident(name) "¥
" FROM pg_catalog.pg_cursors "¥
" WHERE substring(pg_catalog.quote_ident(name),1,%d)='%s'"
© 2021 NTT DATA Corporation 19
2.カーソル一覧を表示するクエリの修正(2/2)
⚫ 引用符付きでカーソルを定義したときも適切にカーソル名が補完される
=*# DECLARE “CUR” CURSOR FOR
SELECT * FROM pg_class;
DECLARE CURSOR
=*# CLOSE
ALL CUR
=*# CLOSE CUR;
2021-01-29 14:35:44.803 JST [47872]
ERROR: cursor "cur" does not exist
2021-01-29 14:35:44.803 JST [47872]
STATEMENT: close CUR;
ERROR: cursor "cur" does not exist
修正前 修正後
=*# DECLARE “CUR” CURSOR FOR
SELECT * FROM pg_class;
DECLARE CURSOR
=*# CLOSE
“CUR” ALL
postgres=*# CLOSE "CUR";
CLOSE CURSOR
引用符付きで補完
引用符無しで補完
© 2021 NTT DATA Corporation 20
3.コメントの修正
⚫ 英語の文法の問題(A, B, and C)
⚫ 指摘通りに修正
/*
- * Complete FETCH with one of ABSOLUTE, BACKWARD, FORWARD, RELATIVE, ALL,
- * NEXT, PRIOR, FIRST, LAST
+ * Complete FETCH with a list of cursors and one of ABSOLUTE,
BACKWARD, FORWARD, RELATIVE, ALL,
+ * NEXT, PRIOR, FIRST, LAST, FROM, IN
*/
Maybe I think the commend should say:
+ * Complete FETCH with one of ABSOLUTE, BACKWARD, FORWARD, RELATIVE, ALL,
+ * NEXT, PRIOR, FIRST, LAST, FROM, IN, and a list of cursors
© 2021 NTT DATA Corporation 21
4.DECLARE文のタブ補完もこの機会にやっておくのはどうか?
⚫ DECLAREのドキュメントより
‒ DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]
CURSOR [ { WITH | WITHOUT } HOLD ] FOR query
⚫ 複数のオプションを指定したときに、うまくタブ補完が動かない
‒ DECLARE name
‒ BINARY, INSENSITIVE, SCROLL, NO SCROLL, CURSORを補完
‒ DECLARE name BINARY
‒ 何も補完されない
⚫ これを修正したパッチをレビュワーの澤田さんに作って頂きました
© 2021 NTT DATA Corporation 22
コミット
© 2021 NTT DATA Corporation 23
コミット
© 2021 NTT DATA Corporation 24
(時間があれば)デモ
© 2021 NTT DATA Corporation 25
まとめ
⚫ PostgreSQLのコア開発者になる第一歩として
CLOSE、FETCH、MOVEのタブ補完機能を向上させるパッチを作成した
⚫ 無事コミットされた
⚫ 所感
‒ PostgreSQLコミュニティの開発フローが最初はよくわからなかった
‒ 12月にパッチ投稿→誰もレビューしてくれない…
‒ 1月になってCommitfestsが始まると、すぐにレビューされた
‒ 軽微なパッチなのですぐにコミットされると思いきや、意外と時間がかかった
‒ 関連事項の調査など
‒ パッチ作成以外の仕事をしていると、いつの間にか議論が進んでいてコミットされていた
‒ whitespace warningsのような初歩的なミスを指摘されるのが申し訳なかった
‒ コミュニティには優しい方々が多い
‒ パッチ作成は大変だったが今後も取り組んでいきたい
© 2021 NTT DATA Corporation
その他、記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。

More Related Content

What's hot

PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
Satoshi Nagayasu
 

What's hot (20)

CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
 
Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説Prometheus入門から運用まで徹底解説
Prometheus入門から運用まで徹底解説
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
 
PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方PostgreSQL - C言語によるユーザ定義関数の作り方
PostgreSQL - C言語によるユーザ定義関数の作り方
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
KubeCon + CloudNativeCon Europe 2022 Recap / Kubernetes Meetup Tokyo #51 / #k...
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
 
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
 
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
 
DockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐるDockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐる
 

Similar to PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)

【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
griddb
 

Similar to PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料) (20)

PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
OSS-DB Gold 合格体験記(第29回PostgreSQLアンカンファレンス@オンライン 発表資料)
OSS-DB Gold 合格体験記(第29回PostgreSQLアンカンファレンス@オンライン 発表資料)OSS-DB Gold 合格体験記(第29回PostgreSQLアンカンファレンス@オンライン 発表資料)
OSS-DB Gold 合格体験記(第29回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
zozotown real time linkage infrastructure
zozotown real time linkage infrastructurezozotown real time linkage infrastructure
zozotown real time linkage infrastructure
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVSPostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVS
 
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
 
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_bigmで全文検索するときに気を付けたい5つのポイント(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
 
IoT のシナリオを変える Azure SQL Edge
IoT のシナリオを変える Azure SQL EdgeIoT のシナリオを変える Azure SQL Edge
IoT のシナリオを変える Azure SQL Edge
 
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Postgre sql9.3新機能紹介
Postgre sql9.3新機能紹介Postgre sql9.3新機能紹介
Postgre sql9.3新機能紹介
 
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
【ハンズオンセミナー】NoSQL/SQLデュアルインタフェースを備えたIoT向けデータベースGridDB ~ GridDB CE 4.6のテーブルパーティ...
 
LEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 APILEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 API
 
Data Scientists Love SQL Server
Data Scientists Love SQL ServerData Scientists Love SQL Server
Data Scientists Love SQL Server
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 

More from NTT DATA Technology & Innovation

More from NTT DATA Technology & Innovation (20)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Recently uploaded

Recently uploaded (10)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)

  • 1. © 2021 NTT DATA Corporation PostgreSQL初心者がパッチを提案してからコミットされるまで 2021年2月2日 第20回PostgreSQLアンカンファレンス@オンライン 株式会社NTTデータ 技術開発本部 加藤 慎也
  • 2. © 2021 NTT DATA Corporation 2 自己紹介 ⚫ 名前 ‒ 加藤 慎也 @ShinyaKato_ ⚫ 所属 ‒ 株式会社NTTデータ 技術開発本部 ⚫ 経歴 ‒ 入社1年目社員 ‒ PostgreSQL歴2ヶ月 ‒ 大学時代は、DB系の研究をしてたがRDBに関してはほぼ初心者 (SQLもロクに書いたことがない…)
  • 3. © 2021 NTT DATA Corporation 3 YouTubeチャンネル “NTT DATA Tech” 技術取り組み、活用情報を中心にお届けします https://www.youtube.com/NTTDATATech
  • 4. © 2021 NTT DATA Corporation 4 PostgreSQL初心者が パッチを提案してからコミットされるまで
  • 5. © 2021 NTT DATA Corporation 5 モチベーション ⚫ OSSコミッターが多数在籍する部署に配属 ⚫ PostgreSQLのコア開発者になりたい! ⚫ まずは、簡単なパッチ開発に取り組もう! ⚫ カーソルに関するコマンドのタブ補完を改善するパッチの作成 ‒ CLOSE、FETCH、MOVEのタブ補完が期待通り動作しない ‒ 期待通り動作するようにパッチを作成する ‒ タブ補完として、定義済カーソルの名前一覧+ALLを表示する ‒ ※CLOSEを中心に紹介します
  • 6. © 2021 NTT DATA Corporation 6 タブ補完とは? ⚫ Tabキー押すことで入力内容を補完する機能 ⚫ 例えば、ALTER SYSTEMのタブ補完を確認 =# ALTER SYSTEM RESET SET =# ALTER SYSTEM SET Display all 315 possibilities? (y or n) all log_parser_stats allow_system_table_mods log_planner_stats application_name log_replication_commands archive_cleanup_command log_rotation_age archive_command log_rotation_size archive_mode log_statement archive_timeout log_statement_sample_rate … タブキーを押すと、 入力内容が補完される
  • 7. © 2021 NTT DATA Corporation 7 タブ補完がどのような仕組みで動いているかを確認 ⚫ タブ補完のソースコードを探す ⚫ git grep “tab” -- “src/” でtabを含むコードを探してみる ‒ databaseやtableばかりが大量に引っかかって諦める ⚫ 大人しくディレクトリをたどってみる ‒ backendではないからbinにいってみよう ‒ おっ、psqlというディレクトリがある ‒ tab-complete.cがある!多分これだ!
  • 8. © 2021 NTT DATA Corporation 8 タブ補完のソースコードを読み解く 前半部分にはマクロとして 様々なクエリが記述されている 後半部分にはタブ補完の条件 と補完内容が記述されている
  • 9. © 2021 NTT DATA Corporation 9 CLOSEのタブ補完の挙動はどうなっているか? ⚫ CLOSEとは? ‒ CLOSEは、開いたカーソルに関連するリソースを解放します。カーソルが閉じられた後は、 そのカーソルに対する操作はできません。カーソルは必要がなくなった時点で閉じるべき です。 ‒ https://www.postgresql.jp/document/12/html/sql-close.html ⚫ 動かしてみる =# BEGIN; BEGIN =*# DECLARE cur CURSOR FOR SELECT * FROM pg_class; DECLARE CURSOR =*# CL CLOSE CLUSTER =*# CLOSE タブを押しても 定義済みカーソルが表示されない
  • 10. © 2021 NTT DATA Corporation 10 実装を始める前に… ⚫ 定義済カーソル一覧を表示する方法を知りたい ‒ CLOSEのドキュメントより、 ‒ pg_cursorsシステムビューを問い合わせることにより利用可能なすべてのカーソルを確認すること ができます。 =# BEGIN; BEGIN =*# DECLARE cur1 CURSOR FOR SELECT * FROM pg_class; DECLARE CURSOR =*# DECLARE cur2 CURSOR FOR SELECT * FROM pg_class; DECLARE CURSOR =*# SELECT name FROM pg_cursors; name ------ cur1 cur2 (2 rows)
  • 11. © 2021 NTT DATA Corporation 11 実装 1. CLOSEが入力されたときの挙動を記述 2. 定義済カーソル一覧を表示するクエリのマクロを記述
  • 12. © 2021 NTT DATA Corporation 12 動作確認 ⚫ PostgreSQLリビルドし、動作確認 =# BEGIN; BEGIN =*# DECLARE cur CURSOR FOR SELECT * FROM pg_class; DECLARE CURSOR =*# CLOSE 修正前 修正後 =# BEGIN; BEGIN =*# DECLARE cur CURSOR FOR SELECT * FROM pg_class; DECLARE CURSOR =*# CLOSE ALL cur ALLと 定義済カーソルが補完される 補完されない
  • 13. © 2021 NTT DATA Corporation 13 パッチの作成 ⚫ パッチ作成 $ git diff > fix_tab_complete_close_fetch_move.patch
  • 14. © 2021 NTT DATA Corporation 14 メーリングリストに投稿 ⚫ パッチを添付してpgsql-hackers@postgresql.org宛に送信
  • 15. © 2021 NTT DATA Corporation 15 1月のCommitfestsへの登録 ⚫ 1月のCommitfestsのページでパッチを登録 ‒ https://commitfest.postgresql.org/31/
  • 16. © 2021 NTT DATA Corporation 16 レビュー結果 1. パッチを適用しようとしたら、whitespace warningsが出る 2. カーソル一覧を表示するクエリの修正 3. コメントの修正 4. DECLARE文のタブ補完もこの機会にやっておくのはどうか?
  • 17. © 2021 NTT DATA Corporation 17 1.パッチを適用しようとしたら、whitespace warnings が出る ⚫ whitespace warnings ‒ 行末のスペースや、タブ文字が直後に続くスペースがあると出る警告 ⚫ PostgreSQLのコーディング規約 ‒ タブを4カラムとするスペーシングを使用し、現在はタブを保存しています(つまりタブをス ペースに展開しません) ‒ https://www.postgresql.jp/document/12/html/source-format.html ⚫ pgindentを使用してwhitespaceを削除 ‒ コードを整形してくれるツール When I applied the patch, I got the following whitespace warnings: $ git apply ~/patches/fix_tab_complete_close_fetch_move.patch … warning: squelched 19 whitespace errors warning: 24 lines add whitespace errors. I recommend you checking whitespaces or running pgindent.
  • 18. © 2021 NTT DATA Corporation 18 2.カーソル一覧を表示するクエリの修正(1/2) ⚫ quote_ident() :必要な場合、適切な引用符を付けて返す関数 ⚫ substring() :部分文字列を取り出す関数 ⚫ %d :これまでに入力された文字列の長さ ⚫ %s :これまでに入力された文字列 +#define Query_for_list_of_cursors ¥ +" SELECT name FROM pg_cursors"¥ This query should be the following? " SELECT pg_catalog.quote_ident(name) "¥ " FROM pg_catalog.pg_cursors "¥ " WHERE substring(pg_catalog.quote_ident(name),1,%d)='%s'"
  • 19. © 2021 NTT DATA Corporation 19 2.カーソル一覧を表示するクエリの修正(2/2) ⚫ 引用符付きでカーソルを定義したときも適切にカーソル名が補完される =*# DECLARE “CUR” CURSOR FOR SELECT * FROM pg_class; DECLARE CURSOR =*# CLOSE ALL CUR =*# CLOSE CUR; 2021-01-29 14:35:44.803 JST [47872] ERROR: cursor "cur" does not exist 2021-01-29 14:35:44.803 JST [47872] STATEMENT: close CUR; ERROR: cursor "cur" does not exist 修正前 修正後 =*# DECLARE “CUR” CURSOR FOR SELECT * FROM pg_class; DECLARE CURSOR =*# CLOSE “CUR” ALL postgres=*# CLOSE "CUR"; CLOSE CURSOR 引用符付きで補完 引用符無しで補完
  • 20. © 2021 NTT DATA Corporation 20 3.コメントの修正 ⚫ 英語の文法の問題(A, B, and C) ⚫ 指摘通りに修正 /* - * Complete FETCH with one of ABSOLUTE, BACKWARD, FORWARD, RELATIVE, ALL, - * NEXT, PRIOR, FIRST, LAST + * Complete FETCH with a list of cursors and one of ABSOLUTE, BACKWARD, FORWARD, RELATIVE, ALL, + * NEXT, PRIOR, FIRST, LAST, FROM, IN */ Maybe I think the commend should say: + * Complete FETCH with one of ABSOLUTE, BACKWARD, FORWARD, RELATIVE, ALL, + * NEXT, PRIOR, FIRST, LAST, FROM, IN, and a list of cursors
  • 21. © 2021 NTT DATA Corporation 21 4.DECLARE文のタブ補完もこの機会にやっておくのはどうか? ⚫ DECLAREのドキュメントより ‒ DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ] CURSOR [ { WITH | WITHOUT } HOLD ] FOR query ⚫ 複数のオプションを指定したときに、うまくタブ補完が動かない ‒ DECLARE name ‒ BINARY, INSENSITIVE, SCROLL, NO SCROLL, CURSORを補完 ‒ DECLARE name BINARY ‒ 何も補完されない ⚫ これを修正したパッチをレビュワーの澤田さんに作って頂きました
  • 22. © 2021 NTT DATA Corporation 22 コミット
  • 23. © 2021 NTT DATA Corporation 23 コミット
  • 24. © 2021 NTT DATA Corporation 24 (時間があれば)デモ
  • 25. © 2021 NTT DATA Corporation 25 まとめ ⚫ PostgreSQLのコア開発者になる第一歩として CLOSE、FETCH、MOVEのタブ補完機能を向上させるパッチを作成した ⚫ 無事コミットされた ⚫ 所感 ‒ PostgreSQLコミュニティの開発フローが最初はよくわからなかった ‒ 12月にパッチ投稿→誰もレビューしてくれない… ‒ 1月になってCommitfestsが始まると、すぐにレビューされた ‒ 軽微なパッチなのですぐにコミットされると思いきや、意外と時間がかかった ‒ 関連事項の調査など ‒ パッチ作成以外の仕事をしていると、いつの間にか議論が進んでいてコミットされていた ‒ whitespace warningsのような初歩的なミスを指摘されるのが申し訳なかった ‒ コミュニティには優しい方々が多い ‒ パッチ作成は大変だったが今後も取り組んでいきたい
  • 26. © 2021 NTT DATA Corporation その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。