コミットログからPostgreSQL 11の雰囲気を掴む
先日、開発中のPostgreSQL 11がFeature Freezeを迎えました。Feature Freeze以降は、基本的には新しい機能は入らず、正式リリースに向けた安定化作業に入ります。 コミットログからPostgreSQL 11の雰囲気を掴んでみます。
集計方法
- 2017-09-01から本日(2018-04-11)までのコミットが対象
- 各コミットログの追加行数が対象
git log --oneline --shortstat --since=2017-09-01 --until=2018-04-11
- 追加行が多い順に30件表示
- 複数のコミットに分かれていたり、追加行数は多くないけど重要な機能はたくさんあります。あくまでの雰囲気を掴むためだけですので、今回は追加行数のみに注目します。
- 集計用プログラムを用意
# /tmp/gitlog.rbファイル
type = 0
title = ""
loop do
line = gets
break if line.nil?
if (type == 0)
title = line.split(' ', 2)[1].chomp
type = 1
else
ins = line.split(' ')[3]
type = 0
puts "%d\t\"%s\"" % [ins, title]
end
end
$ git clone git://git.postgresql.org/git/postgresql.git
$ cd postgresql
$ git log --oneline --shortstat --since=2017-09-01 --until=2018-04-11 | ruby /tmp/gitlog.rb | | sort -k1 -n -r | head -30
結果
$ git log --oneline --shortstat --since=2017-09-01 --until=2018-04-11 | ruby /tmp/gitlog.rb | | sort -k1 -n -r | head -30
31636 "Don't use SGML empty tags"
22928 "Replace our traditional initial-catalog-data format with a better design."
5677 "MERGE SQL Command following SQL:2016"
5539 "New files for MERGE"
4589 "Make plpgsql use its DTYPE_REC code paths for composite-type variables."
4300 "Support all SQL:2011 options for window frame clauses."
4257 "Convert documentation to DocBook XML"
4160 "Replace raw timezone source data with IANA's new compact format."
4089 "Basic partition-wise join functionality."
3993 "Faster partition pruning"
3270 "Add prokind column, replacing proisagg and proiswindow"
3172 "Local partitioned indexes"
3085 "Add parallel-aware hash joins."
2951 "SQL procedures"
2890 "Add expression compilation support to LLVM JIT provider."
2714 "Support partition pruning at execution time"
2600 "MERGE SQL Command following SQL:2016"
2570 "Modified files for MERGE"
2544 "Implement partition-wise grouping/aggregation."
2237 "Support parallel btree index builds."
2210 "Clean up duplicate table and function names in regression tests."
2149 "Transaction control in PL procedures"
2118 "Allow on-line enabling and disabling of data checksums"
2115 "Indexes with INCLUDE columns and their support in B-tree"
1957 "Allow UPDATE to move rows between partitions."
1898 "Fast ALTER TABLE ADD COLUMN with a non-NULL default"
1648 "Update copyright for 2018"
1491 "Release notes for 10.2, 9.6.7, 9.5.11, 9.4.16, 9.3.21."
1461 "Add strict_word_similarity to pg_trgm module"
1420 "Add hash partitioning."
- 1番目、2番目はPostgreSQLのコードを書かない限りは関係ないやつ
- パーティショニング関連のコミットが一番多い
- “Basic partition-wise join functionality.”
- “Faster partition pruning”
- “Local partitioned indexes”
- “Support partition pruning at execution time”
- “Implement partition-wise grouping/aggregation.”
- “Allow UPDATE to move rows between partitions.”
- “Add hash partitioning.”
- MERGEコマンド関連や、Procedure関連の機能も大きい変更が多いです。
- MERGEコマンド
- “MERGE SQL Command following SQL:2016”
- “New files for MERGE”
- “Modified files for MERGE”
- Procedure関連
- “SQL procedures”
- “Transaction control in PL procedures”
- MERGEコマンド
- その他、魅力的な機能も多くコミットされている
- “Add expression compilation support to LLVM JIT provider.”
- “Support parallel btree index builds.”
- “Indexes with INCLUDE columns and their support in B-tree”(Coveringインデックス)
※PostgreSQL 11の正式リリースはまだに変更があるかもしれませんのでご注意ください。
30位以降も見てみると面白そう。 これらの機能からいくつか選んでレビュー、テストしていきたいと思います。