Slide 1

Slide 1 text

第36回 PostgreSQLアンカンファレンス@オンライン Yasuo Honda @yahonda PostgreSQL 15とRailsと

Slide 2

Slide 2 text

● Yasuo Honda @yahonda ○ Rails committer ○ Oracle Ace Pro ● PostgreSQLアンカンファレンス 初参加です 自己紹介

Slide 3

Slide 3 text

● PostgreSQL 15 RCをRailsのテストのためにビルドする方法 ● Rails 7.1に追加される予定のPostgreSQL関連の新機能 話すこと

Slide 4

Slide 4 text

● PostgreSQL 14リリース後に、Railsに2つの修正が必要だった ○ enumの出力順序が変わる ○ libpqでのttyオプションの廃止 ● PostgreSQL Conference Japan 2021のLT ○ PostgreSQLとRuby on Rails - Speaker Deck ● PostgreSQL 15の時は、リリース前に気づいておきたい 背景

Slide 5

Slide 5 text

● Beta 1から4まではすぐに出てきたし、Railsのunit testも通った https://download.postgresql.org/pub/repos/yum/testing/15/re dhat/rhel-9-x86_64/ ● PostgreSQL 15 Beta 1 Released! on 2022-05-19 ● PostgreSQL 15 Beta 2 Released! on 2022-06-30 ● PostgreSQL 14.5, 13.8, 12.12, 11.17, 10.22, and 15 Beta 3 Released! on 2022-08-11 ● PostgreSQL 15 Beta 4 Released! on 2022-09-08 POSTGRESQL YUM REPOSITORY for Beta

Slide 6

Slide 6 text

● PostgreSQL 15 RC 1 Released! on 2022-09-29 ● RC1は2022年10月4日時点でyum repositoryに現れなかった ● RCでの動作確認もしておきたい ● PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online… を思い出す ● そのうち“Stamp 15rc2”がpushされていた ○ https://github.com/postgres/postgres/commit/2a40d040c 924b1707cd03a9c66c80fcc4795c2d1 POSTGRESQL YUM REPOSITORY for RC1

Slide 7

Slide 7 text

● PostgreSQL 15 RC 2 Released! on 2022-10-06 ● 2022年10月6日にRC1とRC2がyum repositoryに現れた postgresql15-server-15.0-rc1_1PGDG.rhel9.x86_64..> 06-Oct-2022 13:19 6149740 postgresql15-server-15.0-rc2_1PGDG.rhel9.x86_64..> 06-Oct-2022 17:36 6143845 POSTGRESQL YUM REPOSITORY for RC(updated)

Slide 8

Slide 8 text

● PostgreSQL 15 Released! on 2022-10-13 ● yum repositoryにすぐに現れ、RC1とRC2は消えていた postgresql15-server-15.0-1PGDG.rhel9.x86_64.rpm 12-Oct-2022 04:53 6130040 POSTGRESQL YUM REPOSITORY for GA

Slide 9

Slide 9 text

● configureオプションの変更 ○ ./configure --prefix=$HOME/pgsql/rel_15_stable --with-uuid=ossp --with-ssl=openssl --with-libxml ● extensionを利用する ○ uuid-ossp ■ $ sudo yum install uuid-devel も必要 ○ pgcrypto ● DETAIL: This functionality requires the server to be built with libxml support. PostgreSQL 15 RC2を手元でビルドする(1)

Slide 10

Slide 10 text

PostgreSQL 15 RC2を手元でビルドする(2) $ git clone https://github.com/postgres/postgres $ cd postgres $ git checkout REL_15_STABLE $ make clean $ ./configure --prefix=$HOME/pgsql/rel_15_stable --with-uuid=ossp --with-ssl=openssl --with-libxml $ make -j 4 $ make install $ cd contrib $ make $ make install $ cd ..

Slide 11

Slide 11 text

PostgreSQL 15 RC2を手元でビルドする(3) - PATHをローカルビルドしたpsqlを優先させるようにする $ which psql ~/pgsql/rel_15_stable/bin/psql - initdbと起動 $ cd $HOME/pgsql/rel_15_stable $ bin/initdb -D data --locale=C --encoding=UTF8 $ bin/pg_ctl -D data -l logfile start

Slide 12

Slide 12 text

8664 runs, 29487 assertions, 0 failures, 0 errors, 18 skips

Slide 13

Slide 13 text

● POSTGRESQL YUM REPOSITORY にRC1と2が出てくるタイミング ● ビルド方法について、より良い方法があればアドバイスください 知りたいこと

Slide 14

Slide 14 text

● Enum関連 ○ Support schemas in Postgresql enum_types #45740 ○ Add drop_enum command for Postgres #45735 ○ Support explicit schemas in PostgreSQL's create_enum #45707 ● Extension関連 ○ Avoid removing a PostgreSQL extension when there are dependent objects #45474 Rails 7.1でのPostgreSQL関連の新機能

Slide 15

Slide 15 text

● Foreign key関連 ○ db:fixtures:load raises in Postgres if there are foreign key constraints in a non-public schema #44760 ● Exclusion constraints ○ Add support for exclusion constraints (PostgreSQL-only) #40224 ● Disclaimer: ○ 上記はmainブランチにマージされている状態ですので、Rail 7.1リ リース時までにrevertを含む変更の可能性があります Rails 7.1でのPostgreSQL関連の新機能(2)

Slide 16

Slide 16 text

おわり