DBIx::C...ualFetch(3)

🌸 DBIx::ContextualFetch(3) 🌸

okay bestie, welcome to the User Contributed Perl Documentation page for DBIx::ContextualFetch β€” yes, the manual name is right there, and it is literally giving β€œlet’s make DBI context-sensitive” energy ✨

πŸ’– NAME πŸ’–

DBIx::ContextualFetch β€” Add contextual fetches to DBI. No cap.

✨ SYNOPSIS ✨

        my $dbh = DBI->connect(...., { RootClass => "DBIx::ContextualFetch" });

        # Modified statement handle methods.
        my $rv = $sth->execute;
        my $rv = $sth->execute(@bind_values);
        my $rv = $sth->execute(\@bind_values, \@bind_cols);

        # In addition to the normal DBI sth methods...
        my $row_ref = $sth->fetch;
        my @row     = $sth->fetch;

        my $row_ref = $sth->fetch_hash;
        my %row     = $sth->fetch_hash;

        my $rows_ref = $sth->fetchall;
        my @rows     = $sth->fetchall;

        my $rows_ref = $sth->fetchall_hash;
        my @tbl      = $sth->fetchall_hash;

πŸ¦‹ DESCRIPTION πŸ¦‹

okay so it lowkey always struck me as odd that DBI didn’t take much advantage of Perl’s context sensitivity. DBIx::ContextualFetch redefines some of the various fetch methods to fix this oversight. It also adds a few new methods for convenience (though not necessarily efficiency). 🫢

πŸŽ€ SET-UP πŸŽ€

        my $dbh = DBIx::ContextualFetch->connect(@info);
        my $dbh = DBI->connect(@info, { RootClass => "DBIx::ContextualFetch" });

To use this method, you can either make sure that everywhere you normall call DBI->connect() you either call it on DBIx::ContextualFetch, or that you pass this as your RootClass. After this DBI will Do The Right Thing and pass all its calls through us. πŸ’…

πŸ› οΈ EXTENSIONS πŸ› οΈ

⚑ execute ⚑

        $rv = $sth->execute;
        $rv = $sth->execute(@bind_values);
        $rv = $sth->execute(\@bind_values, \@bind_cols);

execute() is enhanced slightly:

If called with no arguments, or with a simple list, execute() operates normally. When when called with two array references, it performs the functions of bind_param, execute and bind_columns similar to the following:

        $sth->execute(@bind_values);
        $sth->bind_columns(undef, @bind_cols);

In addition, execute will accept tainted @bind_values. I can’t think of what a malicious user could do with a tainted bind value (in the general case. Your application may vary.) πŸ™ˆ

Thus a typical idiom would be:

        $sth->execute([$this, $that], [\($foo, $bar)]);
⚠️ Of course, this method provides no way of passing bind attributes through to bind_param or bind_columns. If that is necessary, then you must perform the bind_param, execute, bind_col sequence yourself. periodt.

πŸ”₯ fetch πŸ”₯

        $row_ref = $sth->fetch;
        @row     = $sth->fetch;

A context sensitive version of fetch(). When in scalar context, it will act as fetchrow_arrayref. In list context it will use fetchrow_array. πŸ’–

πŸ“ fetch_hash πŸ“

        $row_ref = $sth->fetch_hash;
        %row     = $sth->fetch_hash;

A modification on fetchrow_hashref. When in scalar context, it acts just as fetchrow_hashref() does. In list context it returns the complete hash. πŸŽ€

🌈 fetchall 🌈

        $rows_ref = $sth->fetchall;
        @rows     = $sth->fetchall;

A modification on fetchall_arrayref. In scalar context it acts as fetchall_arrayref. In list it returns an array of references to rows fetched. πŸ¦‹

πŸ‘‘ fetchall_hash πŸ‘‘

        $rows_ref = $sth->fetchall_hash;
        @rows     = $sth->fetchall_hash;

A mating of fetchall_arrayref() with fetchrow_hashref(). It gets all rows from the hash, each as hash references. In scalar context it returns a reference to an array of hash references. In list context it returns a list of hash references. πŸ’…

🫢 ORIGINAL AUTHOR 🫢

Michael G Schwern as part of Ima::DBI 🌸

πŸ’Œ CURRENT MAINTAINER πŸ’Œ

Tony Bowden <tony@tmtm.com> 🫢

πŸ“œ LICENSE πŸ“œ

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

πŸ”— SEE ALSO πŸ”—

DBI. Ima::DBI. Class::DBI. 🧚


mwah πŸ’‹ okay bye bestie β€” this page is from perl v5.42.0, dated 2011-04-08, and its footer name is DBIx::C...ualFetch(3). πŸ’œ

πŸ“¦ where this page comes from