---
name: "DBIx::Connector::Driver"
section: "3pm"
platform: "linux"
package: "libdbix-connector-perl"
version: "0.60-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/DBIx::Connector::Driver"
---

# DBIx::Connector::Driver(3pm)

Database-specific connection interface

## NAME

DBIx::Connector::Driver - Database-specific connection interface

## DESCRIPTION

Some of the things that DBIx::Connector does are implemented differently by different drivers, or the official interface provided by the DBI may not be implemented for a particular driver. The driver-specific code therefore is encapsulated in this separate driver class.

Most of the DBI drivers work uniformly, so in most cases the implementation provided here in DBIx::Connector::Driver will work just fine. It's only when something is different that a driver subclass needs to be added. In such a case, the subclass's name is the same as the DBI driver. For example the driver for DBD::Pg is DBIx::Connector::Driver::Pg and the driver for DBD::mysql is DBIx::Connector::Driver::mysql.

If you're just a user of DBIx::Connector, you can ignore the driver classes. DBIx::Connector uses them internally to do its magic, so you needn't worry about them.

## INTERFACE

In case you need to implement a driver, here's the interface you can modify.

### Constructor

*"new"*

```
  my $driver = DBIx::Connector::Driver->new( $driver );
```

Constructs and returns a driver object. Each driver class is implemented as a singleton, so the same driver object is always returned for the same driver. The `"driver"` parameter should be a Perl DBI driver name, such as `"Pg"` for DBD::Pg or `"SQLite"` for DBD::SQLite. If a subclass has been defined for `$driver`, then the object will be of that class. Otherwise it will be an instance of the driver base class.

### Instance Methods

*"ping"*

```
  $driver->ping($dbh);
```

Calls `"$dbh->ping"`. Override if for some reason the DBI driver doesn't do it right.

*"begin\_work"*

```
  $driver->begin_work($dbh);
```

Calls `"$dbh->begin_work"`. Override if for some reason the DBI driver doesn't do it right.

*"commit"*

```
  $driver->commit($dbh);
```

Calls `"$dbh->commit"`. Override if for some reason the DBI driver doesn't do it right.

*"rollback"*

```
  $driver->rollback($dbh);
```

Calls `"$dbh->rollback"`. Override if for some reason the DBI driver doesn't do it right.

*"savepoint"*

```
  $driver->savepoint($dbh, $name);
```

A no-op. Override if your database does in fact support savepoints. The driver subclass should create a savepoint with the given `$name`. See the implementations in DBIx::Connector::Driver::Pg and DBIx::Connector::Driver::Oracle for examples.

*"release"*

```
  $driver->release($dbh, $name);
```

A no-op. Override if your database does in fact support savepoints. The driver subclass should release the savepoint with the given `$name`. See the implementations in DBIx::Connector::Driver::Pg and DBIx::Connector::Driver::Oracle for examples.

*"rollback\_to"*

```
  $driver->rollback_to($dbh, $name);
```

A no-op. Override if your database does in fact support savepoints. The driver subclass should rollback to the savepoint with the given `$name`. See the implementations in DBIx::Connector::Driver::Pg and DBIx::Connector::Driver::Oracle for examples.

## AUTHORS

This module was written by:

- David E. Wheeler \<david@kineticode.com\>

  It is based on code written by:

- Matt S. Trout \<mst@shadowcatsystems.co.uk\>

  - Peter Rabbitson \<rabbit+dbic@rabbit.us\>

  ## COPYRIGHT AND LICENSE

Copyright (c) 2009-2013 David E. Wheeler. Some Rights Reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
