DBIx-Squirrel
view release on metacpan or search on metacpan
lib/DBIx/Squirrel/it.pm view on Meta::CPAN
use strict;
use warnings;
use 5.010_001;
package # hide from PAUSE
DBIx::Squirrel::it;
=head1 NAME
DBIx::Squirrel::it - Statement iterator iterator base class
=head1 SYNOPSIS
=head1 DESCRIPTION
This module provides a base class for statement iterators. It is usable as
is, but is also subclassed by the L<DBIx::Squirrel::rs> (Results) class.
=cut
use Exporter ();
use Scalar::Util qw(
looks_like_number
weaken
);
use Sub::Name 'subname';
use DBIx::Squirrel::util qw(
cluckf
confessf
callbacks_args
);
use namespace::clean;
use constant E_BAD_STH => 'Expected a statement handle object';
use constant E_BAD_SLICE => 'Slice must be a reference to an ARRAY or HASH';
use constant E_BAD_CACHE_SIZE =>
'Maximum row count must be an integer greater than zero';
use constant W_MORE_ROWS => 'Query would yield more than one result';
use constant E_EXP_ARRAY_REF => 'Expected an ARRAY-REF';
BEGIN {
require DBIx::Squirrel
unless keys %DBIx::Squirrel::;
*DBIx::Squirrel::it::VERSION = *DBIx::Squirrel::VERSION;
@DBIx::Squirrel::it::ISA = 'Exporter';
%DBIx::Squirrel::it::EXPORT_TAGS = ( all => [
@DBIx::Squirrel::it::EXPORT_OK = qw(
database
iterator
result
result_current
result_first
result_number
result_offset
result_original
result_prev
result_previous
result_transform
statement
)
] );
$DBIx::Squirrel::it::DEFAULT_SLICE = []; # Faster!
$DBIx::Squirrel::it::DEFAULT_CACHE_SIZE = 2; # Initial buffer size and autoscaling increment
$DBIx::Squirrel::it::CACHE_SIZE_LIMIT = 64; # Absolute maximum buffersize
}
our $_DATABASE;
our $_ITERATOR;
our $_RESULT;
our $_RESULT_FIRST;
our $_RESULT_NUMBER;
our $_RESULT_OFFSET;
our $_RESULT_ORIGINAL;
our $_RESULT_PREV;
our $_STATEMENT;
sub _cache_charge {
my( $attr, $self ) = shift->_private_state;
my $sth = $attr->{sth};
unless ( $sth->{Executed} ) {
return unless defined $self->start;
}
return unless $sth->{Active};
my( $slice, $cache_size ) = @{$attr}{qw(slice cache_size)};
( run in 1.927 second using v1.01-cache-2.11-cpan-2398b32b56e )