Skip to content
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

Merged
merged 2 commits into from
Oct 3, 2024
Merged

Update pgx v3 to v4 #32

merged 2 commits into from
Oct 3, 2024

Conversation

winebarrel
Copy link
Member

@winebarrel winebarrel commented Oct 2, 2024

2999bea からforkして新しくpgx v4の対応を行います。
既存の動作をなるべく変更しない方針で修正しました。
(標準ライブラリのコネクションプールを使用・pgxのprepared statementを使用、等)
APIの呼び出しは変わりましたが本質的な動作は以前と変わっていないと思います。

また修正のマージ後、 2999bea 空のブランチ new-master 新しいmasterに変更します

  • jackc/pgx v3→v4
  • Job.conn*pgx.Conn*sql.Connに変更
  • stdlib.AcquireConnfunc (*Conn) Rawで都度*pgx.Connに変換
  • stdlib.ReleaseConnfunc (*Conn) Close
  • LockJobDoneのメソッドについてxxxContextメソッドを追加
    • ただし意図的にcontextの引き回しは行っていません
  • NewClientMustNewClient
  • NewClient2NewClient
  • PrepareStatementsのcontext対応
  • driverConnector取得用のGetConnectorXXXの追加
  • func (j *Job) ConnDeprecated:コメントを追加
  • pgx.Conn.AfterConnectstdlib.OptionAfterConnect

また、関連して以下の修正を行いました

  • go.mod: go 1.18go 1.21
  • golangci-lintでエラーになることがあるため、CIのmatrixをやめ、単一のテストだけに
  • linterの追加と、miss spellの修正
  • docker-composedocker compose

空白を無視すると見やすいかもしれません
https://github.com/kanmu/qg/pull/32/files?w=1

@winebarrel winebarrel force-pushed the pgx-v3 branch 3 times, most recently from 1a6a451 to fcd9b01 Compare October 2, 2024 04:27
@winebarrel winebarrel marked this pull request as ready for review October 2, 2024 04:46
@winebarrel winebarrel mentioned this pull request Oct 2, 2024
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
Copy link
Member Author

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:
Copy link
Member

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 が単独であってもよさそうです。

Copy link
Member Author

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) {
Copy link
Member

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)

Copy link
Member Author

@winebarrel winebarrel Oct 2, 2024

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オブジェクトは使いたい)
このような形にしています。

@kanmu kanmu deleted a comment from hiroakis Oct 2, 2024
Copy link
Member

@hiroakis hiroakis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

自分は良さそうに見えました

Copy link

@kazukousen kazukousen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🥇

@winebarrel
Copy link
Member Author

🙏

@winebarrel winebarrel merged commit 4c089b0 into new-master Oct 3, 2024
2 checks passed
@winebarrel winebarrel deleted the pgx-v3 branch October 3, 2024 04:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants