Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
NOT VALIDな検査制約 / check constraint that is not v...
Search
Yasuo Honda
December 20, 2024
Technology
340
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
NOT VALIDな検査制約 / check constraint that is not valid
https://pgunconf.connpass.com/event/338511/
Yasuo Honda
December 20, 2024
More Decks by Yasuo Honda
See All by Yasuo Honda
Active Record Connection Adaptersにおける長年の課題に再び取り組む
yahonda
0
1.4k
PostgreSQL 18のNOT ENFORCEDな制約とDEFERRABLEの関係
yahonda
1
460
私のRails開発環境
yahonda
0
270
Railsの話をしよう
yahonda
0
300
RailsのPostgreSQL 18対応
yahonda
0
4.3k
Contributing to Rails? Start with the Gems You Already Use
yahonda
2
280
PostgreSQL 18 cancel request key長の変更とRailsへの関連
yahonda
0
360
extensionとschema
yahonda
1
390
今、始める、第一歩。 / Your first step
yahonda
3
1.6k
Other Decks in Technology
See All in Technology
増え続けるプロダクトの品質をどう担保するか。ProductSpecとTypeScriptによる取り組み
joere
3
320
AIに任せられるFlutterコードベースを作る 〜仕様をコードで表し、ハーネスで守る〜
myohei
1
610
AIで選択肢が広がった組織設計の理想と現実
konifar
16
7.5k
仕様駆動開発の、その先へ。決める力と確かめる仕組み
inariku
1
160
素人でもできた!AIを使った短編小説創作入門
delhi09
PRO
0
280
外国人エンジニアがVueプロトタイプで仕様を合わせている話 / Vue Fes Japan 2026 LT
eluwing
0
370
なぜ東京にいる私が、新潟の技術コミュニティを運営するのか by 八雲慎之助
yakumo
0
210
Devin プロモコードの受け取りと適用(2026.10.27)
kinopeee
1
820
スマートロックを支えるFlutter × ネイティブ連携の実践 / Flutter and Native Integration in Practice: Powering Smart Locks
bitkey
PRO
0
140
You Have Agency(サンキュー、Ruby)
snoozer05
PRO
5
640
慶應義塾大学 AI実践05 論文執筆の仕組み化
keio_smilab
PRO
4
3.2k
リアクションエンジニア ― 小さなリアクションから、話しかけやすい組織をつくる ―
ryuguyana
1
110
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
5.2k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
460
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
290
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
A Soul's Torment
seathinner
8
3.9k
The SEO identity crisis: Don't let AI make you average
varn
0
620
Building Adaptive Systems
keathley
44
3.3k
First, design no harm
axbom
PRO
2
1.4k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.2k
Prompt Engineering for Job Search
mfonobong
0
570
Building the Perfect Custom Keyboard
takai
2
940
Transcript
第50回 PostgreSQLアンカンファレンス@オンライン Yasuo Honda @yahonda NOT VALIDな検査制約
• Yasuo Honda @yahonda ◦ Rails committer ◦ 第46回 PostgreSQLアンカンファレンス
以来4回目の参加です ▪ PostgreSQL 15とRailsと - Speaker Deck ▪ 遅延可能な一意性制約 - Speaker Deck ▪ pg_stat_statementsで inの数が違うSQLをまとめて ほしい - Speaker Deck 自己紹介
• Ruby on Railsのmigration DSLで検査制約を作る2つの方法 ◦ テーブル作成後に、`add_check_constraint`で作成 ◦ テーブル作成時に`t.check_constraint`で作成 •
いずれも`:validate` 引数を設定可能(デフォルトはtrue) ◦ falseを渡すと、無効な検査制約として作成される意図(NOT VALID) だった意図通りは`add_check_constraint`のみ ◦ https://api.rubyonrails.org/classes/ActiveRecord/Connecti onAdapters/SchemaStatements.html#method-i-add_chec k_constraint 背景
• add_check_constraint ◦ CREATE TABLE "posts" ("id" bigserial primary key,
"title" character varying); ◦ ALTER TABLE "posts" ADD CONSTRAINT posts_const CHECK (char_length(title) >= 5) NOT VALID; • check_constraint ◦ CREATE TABLE "comments" ("id" bigserial primary key, "body" text, CONSTRAINT comments_const CHECK (char_length(body) >= 5) NOT VALID); 発行されていた SQL https://gist.github.com/yahonda/7e61f3f71 681cfa03111fed55714b0b4
• alter tableで別に作成した方は意図どおり、not valid • create table内で作成した方は、意図に反してvalid • リンク 作成された検査制約の状態
• 検査制約のNOT VALIDをalter tableのみで追加できるのは意図した振 る舞いのよう(フォント赤字は筆者) • https://www.postgresql.org/docs/current/sql-altertable.html ◦ > This
form adds a new constraint to a table using the same constraint syntax as CREATE TABLE, plus the option NOT VALID, which is currently only allowed for foreign key and CHECK constraints. • https://www.postgresql.org/docs/9.2/release-9-2.html で追加 解釈
• create table時にnot validオプションはエラーになって欲しい • 関連する議論 ◦ https://www.postgresql.org/message-id/CAEZATCX8u8GU -M_DFtjksRUQhwm8zur3BQvLamFUX8MwYNntPg%40mail. gmail.com
• Rails側での追加対応も考えたい(今日のトピック外) 疑問
• PostgreSQL 18 devel(資料作成時のmasterブランチ) ◦ https://github.com/postgres/postgres/commit/39240bcad 56dc51a7896d04a1e066efcf988b58f • Rails main
◦ https://github.com/rails/rails/commit/3a91006d22fa465fb ce41370bbe66aa332bdcc2d • Red Hat Enterprise Linux release 9.5 (Plow) 環境
• https://github.com/rails/rails/pull/40192 • https://github.com/rails/rails/issues/53732 • https://github.com/rails/rails/pull/53735 • https://www.postgresql.org/docs/current/catalog-pg-constrai nt.html •
https://www.postgresql.org/message-id/E1QcJd3-0001HT-91% 40gemulon.postgresql.org • https://github.com/postgres/postgres/commit/897795240cfaa ed724af2f53ed2c50c9862f951f • 参照
• pgsql-hackersにて2024年12月5日から下記の議論が始まっていること を教えていただきました ◦ https://www.postgresql.org/message-id/CACJufxEQcHNh
[email protected]
ail.com ◦ 内容確認してreplyしてみます 発表後の補足
おわり
おわり