Title: Improve "Using transactions" documentation · Issue #3192 · sqlc-dev/sqlc · GitHub
Open Graph Title: Improve "Using transactions" documentation · Issue #3192 · sqlc-dev/sqlc
X Title: Improve "Using transactions" documentation · Issue #3192 · sqlc-dev/sqlc
Description: Overview I was trying to implement a simple transaction following the documentation but it's not clear and the code return errors. Details to reproduce Files: ├── dbsqlc │ ├── db.go │ ├── models.go │ └── query.sql.go ├── go.mod ├── go.su...
Open Graph Description: Overview I was trying to implement a simple transaction following the documentation but it's not clear and the code return errors. Details to reproduce Files: ├── dbsqlc │ ├── db.go │ ├── models.go...
X Description: Overview I was trying to implement a simple transaction following the documentation but it's not clear and the code return errors. Details to reproduce Files: ├── dbsqlc │ ├── db.go │ ├── model...
Opengraph URL: https://github.com/sqlc-dev/sqlc/issues/3192
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Improve \"Using transactions\" documentation","articleBody":"## Overview\r\n\r\nI was trying to implement a simple transaction following the [documentation](https://docs.sqlc.dev/en/stable/howto/transactions.html) but it's not clear and the code return errors.\r\n\r\n## Details to reproduce\r\n\r\nFiles:\r\n```\r\n├── dbsqlc\r\n│ ├── db.go\r\n│ ├── models.go\r\n│ └── query.sql.go\r\n├── go.mod\r\n├── go.sum\r\n├── main.go\r\n├── query.sql\r\n├── schema.sql\r\n└── sqlc.yaml\r\n```\r\n\r\nschema.sql\r\n```sql\r\nCREATE TABLE records (\r\n id SERIAL PRIMARY KEY,\r\n counter INT NOT NULL\r\n);\r\n```\r\n\r\nquery.sql\r\n```sql\r\n-- name: GetRecord :one\r\nSELECT * FROM records\r\nWHERE id = $1;\r\n\r\n-- name: UpdateRecord :exec\r\nUPDATE records SET counter = $2\r\nWHERE id = $1;\r\n```\r\n\r\nsqlc.yaml\r\n```yaml\r\nversion: \"2\"\r\nsql:\r\n - engine: \"postgresql\"\r\n queries: \"query.sql\"\r\n schema: \"schema.sql\"\r\n gen:\r\n go:\r\n package: \"dbsqlc\"\r\n out: \"dbsqlc\"\r\n sql_package: \"pgx/v5\"\r\n```\r\n\r\nmain.go\r\n```go\r\npackage foo\r\n\r\nimport (\r\n\t\"context\"\r\n\t\"database/sql\"\r\n\t\"foo/dbsqlc\"\r\n\r\n\t\"github.com/jackc/pgx/v5\"\r\n)\r\n\r\nfunc bumpCounter(ctx context.Context, db *sql.DB, queries *dbsqlc.Queries, id int32) error {\r\n\ttx, err := db.Begin()\r\n\tif err != nil {\r\n\t\treturn err\r\n\t}\r\n\tdefer tx.Rollback()\r\n\tqtx := queries.WithTx(tx) // ERROR 1\r\n\tr, err := qtx.GetRecord(ctx, id)\r\n\tif err != nil {\r\n\t\treturn err\r\n\t}\r\n\tif err := qtx.UpdateRecord(ctx, dbsqlc.UpdateRecordParams{\r\n\t\tID: r.ID,\r\n\t\tCounter: r.Counter + 1,\r\n\t}); err != nil {\r\n\t\treturn err\r\n\t}\r\n\treturn tx.Commit()\r\n}\r\n\r\nfunc main() {\r\n\tctx := context.Background()\r\n\tconn, err := pgx.Connect(ctx, \"host=localhost user=*** password=*** sslmode=disable\")\r\n\tif err != nil {\r\n\t\tpanic(err)\r\n\t}\r\n\tdefer conn.Close(ctx)\r\n\r\n\tqueries := dbsqlc.New(conn)\r\n\r\n\tbumpCounter(ctx, conn, queries, 1) // ERROR 2\r\n}\r\n``` \r\n\r\n## Issues encontered\r\n\r\nJust like the documentation indicates. But I came to two problems:\r\n\r\n1. `./main.go:17:24: cannot use tx (variable of type *sql.Tx) as pgx.Tx value in argument to queries.WithTx: *sql.Tx does not implement pgx.Tx (missing method Begin)`\r\n2. `./main.go:41:20: cannot use conn (variable of type *pgx.Conn) as *sql.DB value in argument to bumpCounter`\r\n\r\n## Questions\r\n\r\n1. Why this error happens in the code exactly copied from the documentation?\r\n2. Where the db parameter should come from? (This one maybe my skill issue :) )\r\n\r\n## Aditional info\r\n\r\n```\r\n$ sqlc version\r\nv1.25.0\r\n```\r\n\r\n```\r\n$ go version\r\ngo version go1.21.6 linux/amd64\r\n```\r\n\r\n```\r\nmodule foo\r\n\r\ngo 1.21.6\r\n\r\nrequire github.com/jackc/pgx/v5 v5.5.3\r\n\r\nrequire (\r\n\tgithub.com/jackc/pgpassfile v1.0.0 // indirect\r\n\tgithub.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect\r\n\tgolang.org/x/crypto v0.17.0 // indirect\r\n\tgolang.org/x/text v0.14.0 // indirect\r\n)\r\n```\r\n\r\nThanks!","author":{"url":"https://github.com/bbonagura9","@type":"Person","name":"bbonagura9"},"datePublished":"2024-02-11T23:58:39.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/3192/sqlc/issues/3192"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:752ed429-166b-ede6-5b11-f4489fe97268 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 8E1C:3D00EE:11869CE:17DC0FF:6A507D0C |
| html-safe-nonce | dc591c195cdcccbffec874100c95677205604efe5ce1180d158c6bbecce2571c |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4RTFDOjNEMDBFRToxMTg2OUNFOjE3REMwRkY6NkE1MDdEMEMiLCJ2aXNpdG9yX2lkIjoiNTc1NDQ4MjA3MDY5ODA5NzkzMiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 0a079666c91ceb619e23139d93a0ee03fded1c82284e0434c8a5144893718e9b |
| hovercard-subject-tag | issue:2129233010 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/sqlc-dev/sqlc/3192/issue_layout |
| twitter:image | https://opengraph.githubassets.com/8ef6c9653f650b6c5e24027c29032861d42a44602f5a10878e5cb9cd834908c6/sqlc-dev/sqlc/issues/3192 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/8ef6c9653f650b6c5e24027c29032861d42a44602f5a10878e5cb9cd834908c6/sqlc-dev/sqlc/issues/3192 |
| og:image:alt | Overview I was trying to implement a simple transaction following the documentation but it's not clear and the code return errors. Details to reproduce Files: ├── dbsqlc │ ├── db.go │ ├── models.go... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | bbonagura9 |
| hostname | github.com |
| expected-hostname | github.com |
| None | d6dc8294eb500fa36bbc57472d61fe87c522f9c3c1d64f70f4926f66a66a7efb |
| turbo-cache-control | no-preview |
| go-import | github.com/sqlc-dev/sqlc git https://github.com/sqlc-dev/sqlc.git |
| octolytics-dimension-user_id | 136738596 |
| octolytics-dimension-user_login | sqlc-dev |
| octolytics-dimension-repository_id | 193160679 |
| octolytics-dimension-repository_nwo | sqlc-dev/sqlc |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 193160679 |
| octolytics-dimension-repository_network_root_nwo | sqlc-dev/sqlc |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 7ac0ad2f2c7e4b9056617355fd9e33e22b0c8df9 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width