Skip to content

Go dev guidelines: Recommend jackc/pgx over lib/pq

João Pereira requested to merge jdrpereira-master-patch-32492 into master

What does this MR do?

So far we've been recommending the lib/pq driver for interacting with PostgreSQL databases in Go applications. This guideline seems to be in place for (at least) almost two years (commit).

About 7 months ago, the lib/pq maintainer added a deprecation notice to the project readme, stating that "this package is effectively in maintenance mode and is not actively developed. Small patches and features are only rarely reviewed and merged. We recommend using pgx which is actively maintained." Most of the issues open since then have been left unanswered.

The pgx driver can also be used with the standard database/sql package, so replacing pq with pgx on an existing application is a matter of swapping _ "github.com/lib/pq" for _ "github.com/jackc/pgx/v4/stdlib" and renaming the driverName for sql.Open from postgres to pgx.

Apart from the extra features and performance improvements provided by the custom pgx interface, it's also possible to rely on some of these functionalities while using its stdlib interface, like logging and callbacks, which can be configured through pgconn.Config and pgx.ConnConfig, as demonstrated in the docs.

This MR proposes that we start recommending jackc/pgx over lib/pq.

Author's checklist (required)

Do not add the feature, frontend, backend, ~"bug", or database labels if you are only updating documentation. These labels will cause the MR to be added to code verification QA issues.

When applicable:

Review checklist

All reviewers can help ensure accuracy, clarity, completeness, and adherence to the Documentation Guidelines and Style Guide.

1. Primary Reviewer

  • Review by a code reviewer or other selected colleague to confirm accuracy, clarity, and completeness. This can be skipped for minor fixes without substantive content changes.

2. Technical Writer

  • Technical writer review. If not requested for this MR, must be scheduled post-merge. To request for this MR, assign the writer listed for the applicable DevOps stage.

For more information about labels, see Technical Writing workflows - Labels.

For suggestions that you are confident don't need to be reviewed, change them locally and push a commit directly to save others from unneeded reviews. For example:

  • Clear typos, like this is a typpo.
  • Minor issues, like single quotes instead of double quotes, Oxford commas, and periods.

For more information, see our documentation on Merging a merge request.

3. Maintainer

  1. Review by assigned maintainer, who can always request/require the above reviews. Maintainer's review can occur before or after a technical writer review.
  2. Ensure a release milestone is set.
  3. If there has not been a technical writer review, create an issue for one using the Doc Review template.
Edited by Marcia Ramos

Merge request reports