| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
package Class::DBI::SQLite; |
|
2
|
|
|
|
|
|
|
|
|
3
|
4
|
|
|
4
|
|
117465
|
use strict; |
|
|
4
|
|
|
|
|
10
|
|
|
|
4
|
|
|
|
|
152
|
|
|
4
|
4
|
|
|
4
|
|
21
|
use vars qw($VERSION); |
|
|
4
|
|
|
|
|
8
|
|
|
|
4
|
|
|
|
|
312
|
|
|
5
|
|
|
|
|
|
|
$VERSION = "0.11"; |
|
6
|
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
require Class::DBI; |
|
8
|
4
|
|
|
4
|
|
20
|
use base qw(Class::DBI); |
|
|
4
|
|
|
|
|
10
|
|
|
|
4
|
|
|
|
|
5347
|
|
|
9
|
|
|
|
|
|
|
|
|
10
|
|
|
|
|
|
|
sub _auto_increment_value { |
|
11
|
21
|
|
|
21
|
|
507410
|
my $self = shift; |
|
12
|
21
|
|
|
|
|
132
|
return $self->db_Main->func("last_insert_rowid"); |
|
13
|
|
|
|
|
|
|
} |
|
14
|
|
|
|
|
|
|
|
|
15
|
|
|
|
|
|
|
sub set_up_table { |
|
16
|
2
|
|
|
2
|
0
|
196092
|
my($class, $table) = @_; |
|
17
|
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
# find all columns. |
|
19
|
2
|
|
|
|
|
78
|
my $sth = $class->db_Main->prepare("PRAGMA table_info('$table')"); |
|
20
|
2
|
|
|
|
|
9384
|
$sth->execute(); |
|
21
|
2
|
|
|
|
|
273
|
my @columns; |
|
22
|
2
|
|
|
|
|
74
|
while (my $row = $sth->fetchrow_hashref) { |
|
23
|
6
|
|
|
|
|
159
|
push @columns, $row->{name}; |
|
24
|
|
|
|
|
|
|
} |
|
25
|
2
|
|
|
|
|
31
|
$sth->finish; |
|
26
|
|
|
|
|
|
|
|
|
27
|
|
|
|
|
|
|
# find primary key. so complex ;-( |
|
28
|
2
|
|
|
|
|
15
|
$sth = $class->db_Main->prepare(<<'SQL'); |
|
29
|
|
|
|
|
|
|
SELECT sql FROM sqlite_master WHERE tbl_name = ? |
|
30
|
|
|
|
|
|
|
SQL |
|
31
|
2
|
|
|
|
|
293
|
$sth->execute($table); |
|
32
|
2
|
|
|
|
|
275
|
my($sql) = $sth->fetchrow_array; |
|
33
|
2
|
|
|
|
|
17
|
$sth->finish; |
|
34
|
2
|
|
|
|
|
39
|
my ($primary) = $sql =~ m/ |
|
35
|
|
|
|
|
|
|
(?:\(|\,) # either a ( to start the definition or a , for next |
|
36
|
|
|
|
|
|
|
\s* # maybe some whitespace |
|
37
|
|
|
|
|
|
|
(\w+) # the col name |
|
38
|
|
|
|
|
|
|
[^,]* # anything but the end or a ',' for next column |
|
39
|
|
|
|
|
|
|
PRIMARY\sKEY/sxi; |
|
40
|
2
|
|
|
|
|
5
|
my @pks; |
|
41
|
2
|
100
|
|
|
|
9
|
if ($primary) { |
|
42
|
1
|
|
|
|
|
3
|
@pks = ($primary); |
|
43
|
|
|
|
|
|
|
} else { |
|
44
|
1
|
|
|
|
|
8
|
my ($pks)= $sql =~ m/PRIMARY\s+KEY\s*\(\s*([^)]+)\s*\)/; |
|
45
|
1
|
50
|
|
|
|
13
|
@pks = split(m/\s*\,\s*/, $pks) if $pks; |
|
46
|
|
|
|
|
|
|
} |
|
47
|
2
|
|
|
|
|
29
|
$class->table($table); |
|
48
|
2
|
|
|
|
|
127
|
$class->columns(Primary => @pks); |
|
49
|
2
|
|
|
|
|
1397
|
$class->columns(All => @columns); |
|
50
|
|
|
|
|
|
|
} |
|
51
|
|
|
|
|
|
|
|
|
52
|
|
|
|
|
|
|
1; |
|
53
|
|
|
|
|
|
|
|
|
54
|
|
|
|
|
|
|
__END__ |