File Coverage

blib/lib/DBD/Cassandra/db.pm
Criterion Covered Total %
statement 8 52 15.3
branch 0 22 0.0
condition 0 6 0.0
subroutine 3 11 27.2
pod 0 6 0.0
total 11 97 11.3


line stmt bran cond sub pod time code
1             package DBD::Cassandra::db;
2             our $AUTHORITY = 'cpan:TVDW';
3             $DBD::Cassandra::db::VERSION = '0.56_002'; # TRIAL
4              
5             $DBD::Cassandra::db::VERSION = '0.56002';# ABSTRACT: DBD::Cassandra database handle
6              
7 1     1   15 use 5.010;
  1         3  
8 1     1   5 use strict;
  1         1  
  1         18  
9 1     1   7 use warnings;
  1         2  
  1         409  
10              
11             # This cargocult comes straight from DBI::DBD docs. No idea what it does.
12             $DBD::Cassandra::db::imp_data_size = 0;
13              
14             sub prepare {
15 0     0 0   my ($dbh, $statement, $attribs)= @_;
16              
17 0 0         if ($attribs->{server_side_prepare}) {
18 0           my $client= $dbh->{cass_client};
19              
20 0           my ($error)= $client->call_prepare($statement);
21 0 0         if ($error) {
22 0           return $dbh->set_err($DBI::stderr, $error);
23             }
24             }
25              
26 0           my ($outer, $sth)= DBI::_new_sth($dbh, { Statement => $statement });
27 0   0       $sth->{cass_consistency}= $attribs->{consistency} || $attribs->{Consistency};
28 0   0       $sth->{cass_page_size}= $attribs->{perpage} || $attribs->{PerPage} || $attribs->{per_page};
29 0           $sth->{cass_async}= $attribs->{async};
30              
31 0           return $outer;
32             }
33              
34             sub commit {
35 0     0 0   my ($dbh)= @_;
36 0 0         if ($dbh->FETCH('Warn')) {
37 0           warn "Commit ineffective while AutoCommit is on";
38             }
39 0           0;
40             }
41              
42             sub rollback {
43 0     0 0   my ($dbh)= @_;
44 0 0         if ($dbh->FETCH('Warn')) {
45 0           warn "Rollback ineffective while AutoCommit is on";
46             }
47 0           0;
48             }
49              
50             sub STORE {
51 0     0     my ($dbh, $attr, $val)= @_;
52 0 0         if ($attr eq 'AutoCommit') {
53 0 0         if (!$val) { die "DBD::Cassandra does not support transactions"; }
  0            
54 0           return 1;
55             }
56 0 0         if ($attr =~ m/\Acass_/) {
57 0           $dbh->{$attr}= $val;
58 0           return 1;
59             }
60 0           return $dbh->SUPER::STORE($attr, $val);
61             }
62              
63             sub FETCH {
64 0     0     my ($dbh, $attr)= @_;
65 0 0         return 1 if $attr eq 'AutoCommit';
66 0 0         return $dbh->{$attr} if $attr =~ m/\Acass_/;
67              
68             # Sort of a workaround for unrecoverable errors in st.pm
69 0 0         if ($attr eq 'Active') {
70 0           return $dbh->{cass_client}->is_active;
71             }
72 0           return $dbh->SUPER::FETCH($attr);
73             }
74              
75             sub disconnect {
76 0     0 0   my ($dbh)= @_;
77 0           $dbh->STORE('Active', 0);
78              
79 0           $dbh->{cass_client}->shutdown;
80             }
81              
82             sub ping {
83 0     0 0   my ($dbh)= @_;
84 0           return $dbh->FETCH('Active');
85             }
86              
87             sub x_wait_for_schema_agreement {
88 0     0 0   my ($dbh)= @_;
89 0           my ($error)= $dbh->{cass_client}->call_wait_for_schema_agreement;
90 0 0         if ($error) {
91 0           return $dbh->set_err($DBI::stderr, $error);
92             }
93 0           return 1;
94             }
95              
96             1;
97              
98             __END__