-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update pgx v3 to v4 #32
Conversation
1a6a451
to
fcd9b01
Compare
if err != nil { | ||
t.Fatal(err) | ||
} | ||
// using stdlib, it's difficult to open max conn from the begining | ||
db := sql.OpenDB(connector) | ||
// using stdlib, it's difficult to open max conn from the beginning |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
begining
-> beginning
@@ -6,6 +6,10 @@ test: vet | |||
vet: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
go vet ./...
だけであれば、golangci-lint で govet
を enable にしてしまってもいいかもしれません。自作の vettool を噛ませる場合は go vet が単独であってもよさそうです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
どもども。golangci-lintは非標準なので、手元の動作確認としては標準のgo vetの利用が良いかと考えたので、現状のままで行こうかと思います 🙏
return GetConnectorFromConnStr(u.String()) | ||
} | ||
|
||
func GetConnectorFromConnStr(connStr string) (driver.Connector, error) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[q] GetConnector -> GetConnectorFromURL -> GetConnectorFromConnStr となっていて、実際には
https://github.com/kanmu/qg/pull/32/files#diff-455862be1b95c56476ae56be62394efde22297b6ae74d7bb372d1db40834d21dR21 で GetConnector() が使われているようですが、わざわざ関数に分けてるのって何でですか?(実装の見通し、他の箇所で connStr をそのまま使いたい箇所がある...etc)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pgxは基本的にURLをパースしたconfigを使うことを想定しているようです。
ただ、host, port, username, password, dbが別々のparameterで管理されるようなユースケースがあり、都度 urlオブジェクトを組み立てるのが手間であるため(エスケープを考えるとurlオブジェクトは使いたい)
このような形にしています。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
自分は良さそうに見えました
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 🥇
🙏 |
2999bea からforkして新しくpgx v4の対応を行います。
既存の動作をなるべく変更しない方針で修正しました。
(標準ライブラリのコネクションプールを使用・pgxのprepared statementを使用、等)
APIの呼び出しは変わりましたが本質的な動作は以前と変わっていないと思います。
また修正のマージ後、 2999bea 空のブランチ new-master 新しいmasterに変更します
Job.conn
を*pgx.Conn
→*sql.Conn
に変更stdlib.AcquireConn
→func (*Conn) Raw
で都度*pgx.Conn
に変換stdlib.ReleaseConn
→func (*Conn) Close
LockJob
、Done
のメソッドについてxxxContextメソッドを追加NewClient
→MustNewClient
NewClient2
→NewClient
PrepareStatements
のcontext対応GetConnectorXXX
の追加func (j *Job) Conn
にDeprecated:
コメントを追加pgx.Conn.AfterConnect
→stdlib.OptionAfterConnect
また、関連して以下の修正を行いました
go 1.18
→go 1.21
docker-compose
→docker compose
空白を無視すると見やすいかもしれません
https://github.com/kanmu/qg/pull/32/files?w=1