Skip to content
DBI connection and transaction management
Perl Perl6
Latest commit e3ae683 Apr 11, 2016 @karupanerura karupanerura Checking in changes prior to tagging of version 0.14.
Changelog diff is:

diff --git a/Changes b/Changes
index b68dd3e..8196f7b 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,8 @@
 Revision history for Perl extension DBIx::Handler

 {{$NEXT}}
+
+0.14 2016-04-11T10:11:40Z
     - fixed caller when exit in a txn callback
     - fixed dependencies
Failed to load latest commit information.
lib/DBIx Checking in changes prior to tagging of version 0.14. Apr 11, 2016
t fixed caller when exit in a txn callback Apr 11, 2016
xt
.gitignore minil migrate Jan 16, 2014
Build.PL minil migrate Feb 9, 2016
Changes Checking in changes prior to tagging of version 0.14. Apr 11, 2016
LICENSE minil migrate Jan 16, 2014
META.json Checking in changes prior to tagging of version 0.14. Apr 11, 2016
README.md added some stopwords for Test::Spellunker Apr 2, 2016
cpanfile fixed deps Apr 11, 2016
minil.toml minil migrate Feb 8, 2016

README.md

NAME

DBIx::Handler - fork-safe and easy transaction handling DBI handler

SYNOPSIS

use DBIx::Handler;
my $handler = DBIx::Handler->new($dsn, $user, $pass, $opts);
my $dbh = $handler->dbh;
$dbh->do(...);

DESCRIPTION

DBIx::Handler is fork-safe and easy transaction handling DBI handler.

DBIx::Handler provide scope base transaction, fork safe dbh handling, simple.

METHODS

  • my $handler = DBIx::Handler->new($dsn, $user, $pass, $opts);

    get database handling instance.

    Options:

    • on_connect_do : CodeRef|ArrayRef[Str]|Str
    • on_disconnect_do : CodeRef|ArrayRef[Str]|Str

      Execute SQL or CodeRef when connected/disconnected.

    • result_class : ClassName

      This is a query method's result class. If this value is defined, $result_class-new($handler, $sth)> is called in query() and query() returns the instance.

    • trace_query : Bool

      Enables to inject a caller information as SQL comment.

    • trace_ignore_if : CodeRef

      Ignore to inject the SQL comment when trace_ignore_if's return value is true.

    • no_ping : Bool

      By default, ping before each executing query. If it affect performance then you can set to true for ping stopping.

  • my $handler = DBIx::Handler->connect($dsn, $user, $pass, $opts);

    connect method is alias for new method.

  • my $dbh = $handler->dbh;

    get fork safe DBI handle.

  • $handler->disconnect;

    disconnect current database handle.

  • my $txn_guard = $handler->txn_scope

    Creates a new transaction scope guard object.

    do {
        my $txn_guard = $handler->txn_scope;
            # some process
        $txn_guard->commit;
    }
    

    If an exception occurs, or the guard object otherwise leaves the scope before $txn->commit is called, the transaction will be rolled back by an explicit "txn_rollback" call. In essence this is akin to using a "txn_begin"/"txn_commit" pair, without having to worry about calling "txn_rollback" at the right places. Note that since there is no defined code closure, there will be no retries and other magic upon database disconnection.

  • $txn_manager = $handler->txn_manager

    Get the DBIx::TransactionManager instance.

  • $handler->txn_begin

    start new transaction.

  • $handler->txn_commit

    commit transaction.

  • $handler->txn_rollback

    rollback transaction.

  • $handler->in_txn

    are you in transaction?

  • my @result = $handler->txn($coderef);

    execute $coderef in auto transaction scope.

    begin transaction before $coderef execute, do $coderef with database handle, after commit or rollback transaction.

    $handler->txn(sub {
        my $dbh = shift;
        $dbh->do(...);
    });
    

    equals to:

    $handler->txn_begin;
        my $dbh = $handler->dbh;
        $dbh->do(...);
    $handler->txn_rollback;
    
  • my @result = $handler->run($coderef);

    execute $coderef.

    my $rs = $handler->run(sub {
        my $dbh = shift;
        $dbh->selectall_arrayref(...);
    });
    

    or

    my @result = $handler->run(sub {
        my $dbh = shift;
        $dbh->selectrow_array('...');
    });
    
  • my $sth = $handler->query($sql, [\@bind | \%bind]);

    execute query. return database statement handler.

  • my $sql = $handler->trace_query_set_comment($sql);

    inject a caller information as a SQL comment to $sql when trace_query is true.

ACCESSORS

The setters and the getters for options.

  • result_class
  • trace_query
  • trace_ignore_if
  • no_ping
  • on_connect_do
  • on_disconnect_do

AUTHOR

Atsushi Kobayashi <nekokak _at_ gmail _dot_ com>

LICENSE

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

Something went wrong with that request. Please try again.