File Coverage

blib/lib/DBD/BlackHole.pm
Criterion Covered Total %
statement 71 73 97.2
branch 7 10 70.0
condition 3 8 37.5
subroutine 31 34 91.1
pod 0 1 0.0
total 112 126 88.8


line stmt bran cond sub pod time code
1             package DBD::BlackHole;
2 7     7   3633 use 5.008001;
  7         24  
3 7     7   39 use strict;
  7         12  
  7         134  
4 7     7   29 use warnings;
  7         12  
  7         648  
5              
6             our $VERSION = "0.04";
7              
8 7     7   1158 use DBI;
  7         14124  
  7         1160  
9              
10             our $drh = undef;
11             our $err = '';
12             our $errstr = '';
13              
14             sub driver {
15 6     6 0 774 my ($class, $attr) = @_;
16 6   33     77 return $drh ||= DBI::_new_drh("${class}::dr", {
17             Name => 'BlackHole',
18             Version => $VERSION,
19             Attribution => 'BlackHole DBD driver',
20             Err => \$err,
21             Errstr => \$errstr,
22             });
23             }
24              
25             sub CLONE {
26 0     0   0 undef $drh;
27             }
28              
29             package DBD::BlackHole::dr;
30 7     7   49 use strict;
  7         20  
  7         152  
31 7     7   33 use warnings;
  7         20  
  7         643  
32              
33             our $imp_data_size = 0;
34              
35             sub connect {
36 6 50   6   720 my $dbh = shift->SUPER::connect(@_)
37             or return;
38 6         397 $dbh->STORE(Active => 1);
39 6         22 return $dbh;
40             }
41              
42 0     0   0 sub data_sources { qw/dbi:BlackHole:/ }
43              
44             package DBD::BlackHole::db;
45 7     7   39 use strict;
  7         20  
  7         173  
46 7     7   34 use warnings;
  7         14  
  7         231  
47              
48 7     7   40 use Carp qw/croak/;
  7         13  
  7         360  
49              
50 7     7   38 use constant DEFAULT_IDENTIFIER => '`';
  7         14  
  7         2503  
51              
52             our $imp_data_size = 0;
53              
54             sub get_info {
55 3     3   810 my ($dbh, $type) = @_;
56             # identifier quote
57 3 100 50     13 return $dbh->FETCH('blackhole_identifier') || DEFAULT_IDENTIFIER if $type == 29;
58 2         10 return;
59             }
60              
61             sub prepare {
62 16     16   6474 my ($dbh, $statement) = @_;
63              
64 16         71 my $sth = DBI::_new_sth($dbh, {
65             Statement => $statement,
66             NAME => ['dummy'],
67             NUM_OF_FIELDS => -1,
68             });
69              
70 16         409 return $sth;
71             }
72              
73 2     2   229 sub ping { shift->FETCH('Active') }
74              
75 7     7   36 sub disconnect { shift->STORE(Active => 0) }
76              
77 2     2   28 sub begin_work { 1 }
78 1     1   6 sub commit { 1 }
79 1     1   7 sub rollback { 1 }
80       0     sub tables {}
81              
82             sub FETCH {
83 5     5   573 my $dbh = shift;
84 5         8 my $key = shift;
85 5 50       12 return 1 if $key eq 'AutoCommit';
86 5         47 return $dbh->SUPER::FETCH($key);
87             }
88              
89             sub STORE {
90 38     38   447 my $dbh = shift;
91 38         76 my ($key, $value) = @_;
92              
93 38 100       90 if ($key eq 'AutoCommit') {
94 6 50 33     28 croak 'Cannot disable AutoCommit' if !$value && $dbh->FETCH('AutoCommit');
95 6         26 return $value;
96             }
97 32         721 return $dbh->SUPER::STORE($key, $value);
98             }
99              
100 6     6   11849 sub DESTROY { shift->disconnect }
101              
102             package DBD::BlackHole::st;
103 7     7   44 use strict;
  7         13  
  7         122  
104 7     7   34 use warnings;
  7         19  
  7         874  
105              
106             our $imp_data_size = 0;
107              
108 4     4   56 sub bind_col { 1 }
109 3     3   54 sub bind_columns { 1 }
110 2     2   540 sub bind_param { 1 }
111              
112             sub execute {
113 14     14   4873 my $sth = shift;
114 14         69 $sth->STORE(NUM_OF_FIELDS => 1);
115 14         45 $sth->STORE(NUM_OF_PARAMS => 0);
116 14         33 1;
117             }
118              
119 5     5   2117 sub rows { 0 }
120              
121       15     sub fetch {}
122              
123 1     1   11 sub fetchall_hashref { +{} }
124              
125             1;
126             __END__