driver

package
v2.326.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 6, 2026 License: MIT Imports: 14 Imported by: 0

Documentation

Overview

Package driver provides low-level SQL driver registration and connection helpers for go-service.

This package is the bridge between driver-specific packages (for example `database/sql/pg`) and the shared SQL wiring used by the higher-level module graph.

Its main responsibilities are:

  • `Register`, which wraps a concrete `database/sql/driver.Driver` with OpenTelemetry instrumentation and installs it in the global `database/sql` driver registry.
  • `Open`, which resolves DSNs from go-service source strings, opens master/slave pools, applies pool settings, registers DB stats metrics, and closes those pools on lifecycle stop.

Most applications use this package indirectly through a driver package such as `database/sql/pg` rather than calling it directly.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Open

func Open(lc di.Lifecycle, name string, fs *os.FS, cfg *config.Config) (*mssqlx.DBs, error)

Open opens master/slave `database/sql` connection pools for a previously registered driver name.

It resolves DSNs from cfg using the provided filesystem (DSNs are configured as go-service "source strings"), connects using `mssqlx.ConnectMasterSlaves`, registers OpenTelemetry DB stats metrics for each pool, and then applies pool settings (connection lifetime, max idle, and max open connections).

Preconditions:

  • cfg must be non-nil and already treated as enabled/validated by the caller.

Lifecycle:

  • Open appends an OnStop hook to the provided lifecycle that closes all returned pools by calling Destroy.

Failure behavior:

  • returns errors encountered while resolving DSNs or connecting, and
  • panics if ConnMaxLifetime cannot be parsed, because it uses time.MustParseDuration.

func Register

func Register(name string, driver Driver) (err error)

Register registers a `database/sql` driver under name and wraps it with OpenTelemetry instrumentation.

This function registers the wrapped driver with the global `database/sql` driver registry. It is therefore intended to be called during process initialization (for example from an init hook or DI registration).

Telemetry:

  • The driver is wrapped using otelsql.WrapDriver.
  • The DB system name attribute is set to the provided name (semconv.DBSystemNameKey).

Errors:

  • If the underlying `sql.Register` panics (for example, due to registering the same name more than once), Register converts that panic into an error and returns it.

Types

type Driver

type Driver = driver.Driver

Driver aliases `database/sql/driver`.Driver.

It is the concrete driver type expected by Register.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL