Thread: [Lxr-commits] CVS: lxr/lib/LXR/Index Mysql.pm, 1.27, 1.28 Postgres.pm, 1.27, 1.28 Oracle.pm, 1.16,
Brought to you by:
ajlittoz
From: AdrianIssott <adr...@us...> - 2009-05-09 15:39:09
|
Update of /cvsroot/lxr/lxr/lib/LXR/Index In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv24796/lib/LXR/Index Modified Files: Mysql.pm Postgres.pm Oracle.pm Log Message: Feature 1691378 (Rearchitect the DB backends) Part VI: * Changed MySql table name from lxr_useage to lxr_usage * Changed parameter for LXR::Index::purge() from $version -> $release * Replaced tabs with spaces in LXR::Index modules * Changed status_get SQL statement name to status_select to match naming convention NOTE that the change to the table name in MySql means that any existing databases will not work with this version of lxr. This is unavoidable if we wish to standardise the DBs Index: Mysql.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Mysql.pm,v retrieving revision 1.27 retrieving revision 1.28 diff -u -d -r1.27 -r1.28 --- Mysql.pm 6 May 2009 22:37:50 -0000 1.27 +++ Mysql.pm 9 May 2009 15:39:00 -0000 1.28 @@ -24,145 +24,142 @@ use DBI; use LXR::Common; -use vars qw(%files %symcache @ISA $prefix); +our @ISA = ("LXR::Index"); -@ISA = ("LXR::Index"); +# +# Global variables +# +my (%files, %symcache); sub new { - my ($self, $dbname) = @_; - - $self = bless({}, $self); - if (defined($config->{dbpass})) { - $self->{dbh} = DBI->connect($dbname, $config->{dbuser}, $config->{dbpass}) - || fatal "Can't open connection to database\n"; - } else { - $self->{dbh} = DBI->connect($dbname, "lxr", $config->{dbpass}) - || fatal "Can't open connection to database\n"; - } - - if (defined($config->{'dbprefix'})) { - $prefix = $config->{'dbprefix'}; - } else { - $prefix = "lxr_"; - } - - %files = (); - %symcache = (); + my ($self, $dbname) = @_; - $self->{files_select} = - $self->{dbh} - ->prepare("select fileid from ${prefix}files where filename = ? and revision = ?"); - $self->{files_insert} = - $self->{dbh} - ->prepare("insert into ${prefix}files (filename, revision, fileid) values (?, ?, NULL)"); + $self = bless({}, $self); + if (defined($config->{dbpass})) { + $self->{dbh} = DBI->connect($dbname, $config->{dbuser}, $config->{dbpass}) + or fatal "Can't open connection to database: $DBI::errstr\n"; + } else { + $self->{dbh} = DBI->connect($dbname, "lxr", $config->{dbpass}) + or fatal "Can't open connection to database: $DBI::errstr\n"; + } - $self->{symbols_byname} = - $self->{dbh}->prepare("select symid from ${prefix}symbols where symname = ?"); - $self->{symbols_byid} = - $self->{dbh}->prepare("select symname from ${prefix}symbols where symid = ?"); - $self->{symbols_insert} = - $self->{dbh}->prepare("insert into ${prefix}symbols (symname, symid) values ( ?, NULL)"); - $self->{symbols_remove} = - $self->{dbh}->prepare("delete from ${prefix}symbols where symname = ?"); + my $prefix; + if (defined($config->{'dbprefix'})) { + $prefix = $config->{'dbprefix'}; + } else { + $prefix = "lxr_"; + } - $self->{indexes_select} = - $self->{dbh}->prepare("select f.filename, i.line, d.declaration, i.relsym " - . "from ${prefix}symbols s, ${prefix}indexes i, ${prefix}files f, ${prefix}releases r, ${prefix}declarations d " - . "where s.symid = i.symid and i.fileid = f.fileid " - . "and f.fileid = r.fileid " - . "and i.langid = d.langid and i.type = d.declid " - . "and s.symname = ? and r.rel = ? " - . "order by f.filename, i.line, d.declaration"); - $self->{indexes_insert} = - $self->{dbh}->prepare( - "insert into ${prefix}indexes (symid, fileid, line, langid, type, relsym) values (?, ?, ?, ?, ?, ?)" - ); + %files = (); + %symcache = (); - $self->{releases_select} = - $self->{dbh}->prepare("select * from ${prefix}releases where fileid = ? and rel = ?"); - $self->{releases_insert} = - $self->{dbh}->prepare("insert into ${prefix}releases (fileid, rel) values (?, ?)"); + $self->{files_select} = + $self->{dbh}->prepare("select fileid from ${prefix}files where filename = ? and revision = ?"); + $self->{files_insert} = + $self->{dbh}->prepare("insert into ${prefix}files (filename, revision, fileid) values (?, ?, NULL)"); - $self->{status_get} = - $self->{dbh}->prepare("select status from ${prefix}status where fileid = ?"); + $self->{symbols_byname} = + $self->{dbh}->prepare("select symid from ${prefix}symbols where symname = ?"); + $self->{symbols_byid} = + $self->{dbh}->prepare("select symname from ${prefix}symbols where symid = ?"); + $self->{symbols_insert} = + $self->{dbh}->prepare("insert into ${prefix}symbols (symname, symid) values ( ?, NULL)"); + $self->{symbols_remove} = + $self->{dbh}->prepare("delete from ${prefix}symbols where symname = ?"); - $self->{status_insert} = $self->{dbh}->prepare + $self->{indexes_select} = + $self->{dbh}->prepare("select f.filename, i.line, d.declaration, i.relsym " + . "from ${prefix}symbols s, ${prefix}indexes i, ${prefix}files f, ${prefix}releases r, ${prefix}declarations d " + . "where s.symid = i.symid and i.fileid = f.fileid " + . "and f.fileid = r.fileid " + . "and i.langid = d.langid and i.type = d.declid " + . "and s.symname = ? and r.rel = ? " + . "order by f.filename, i.line, d.declaration"); + $self->{indexes_insert} = + $self->{dbh}->prepare( + "insert into ${prefix}indexes (symid, fileid, line, langid, type, relsym) values (?, ?, ?, ?, ?, ?)" + ); - # ("insert into status select ?, 0 except select fileid, 0 from status"); - ("insert into ${prefix}status (fileid, status) values (?, ?)"); + $self->{releases_select} = + $self->{dbh}->prepare("select * from ${prefix}releases where fileid = ? and rel = ?"); + $self->{releases_insert} = + $self->{dbh}->prepare("insert into ${prefix}releases (fileid, rel) values (?, ?)"); - $self->{status_update} = - $self->{dbh} - ->prepare("update ${prefix}status set status = ? where fileid = ? and status <= ?"); + $self->{status_select} = + $self->{dbh}->prepare("select status from ${prefix}status where fileid = ?"); + $self->{status_insert} = $self->{dbh}->prepare + ("insert into ${prefix}status (fileid, status) values (?, ?)"); + $self->{status_update} = + $self->{dbh}->prepare("update ${prefix}status set status = ? where fileid = ? and status <= ?"); - $self->{usage_insert} = - $self->{dbh}->prepare("insert into ${prefix}useage (fileid, line, symid) values (?, ?, ?)"); - $self->{usage_select} = - $self->{dbh}->prepare("select f.filename, u.line " - . "from ${prefix}symbols s, ${prefix}files f, ${prefix}releases r, ${prefix}useage u " - . "where s.symid = u.symid " - . "and f.fileid = u.fileid " - . "and u.fileid = r.fileid " - . "and s.symname = ? and r.rel = ? " - . "order by f.filename, u.line"); - $self->{decl_select} = - $self->{dbh}->prepare( - "select declid from ${prefix}declarations where langid = ? and " . "declaration = ?"); - $self->{decl_insert} = - $self->{dbh}->prepare( - "insert into ${prefix}declarations (declid, langid, declaration) values (NULL, ?, ?)"); + $self->{usage_insert} = + $self->{dbh}->prepare("insert into ${prefix}usage (fileid, line, symid) values (?, ?, ?)"); + $self->{usage_select} = + $self->{dbh}->prepare("select f.filename, u.line " + . "from ${prefix}symbols s, ${prefix}files f, ${prefix}releases r, ${prefix}usage u " + . "where s.symid = u.symid " + . "and f.fileid = u.fileid " + . "and u.fileid = r.fileid " + . "and s.symname = ? and r.rel = ? " + . "order by f.filename, u.line"); + $self->{decl_select} = + $self->{dbh}->prepare( + "select declid from ${prefix}declarations where langid = ? and declaration = ?"); + $self->{decl_insert} = + $self->{dbh}->prepare( + "insert into ${prefix}declarations (declid, langid, declaration) values (NULL, ?, ?)"); - $self->{delete_indexes} = - $self->{dbh}->prepare("delete from i " - . "using ${prefix}indexes i, ${prefix}releases r " - . "where i.fileid = r.fileid " - . "and r.rel = ?"); - $self->{delete_useage} = - $self->{dbh}->prepare("delete from u " - . "using ${prefix}useage u, ${prefix}releases r " - . "where u.fileid = r.fileid " - . "and r.rel = ?"); - $self->{delete_status} = - $self->{dbh}->prepare("delete from s " - . "using ${prefix}status s, ${prefix}releases r " - . "where s.fileid = r.fileid " - . "and r.rel = ?"); - $self->{delete_releases} = - $self->{dbh}->prepare("delete from ${prefix}releases " . "where rel = ?"); - $self->{delete_files} = - $self->{dbh}->prepare("delete from f " - . "using ${prefix}files f, ${prefix}releases r " - . "where f.fileid = r.fileid " - . "and r.rel = ?"); + $self->{delete_indexes} = + $self->{dbh}->prepare("delete from i " + . "using ${prefix}indexes i, ${prefix}releases r " + . "where i.fileid = r.fileid " + . "and r.rel = ?"); + $self->{delete_usage} = + $self->{dbh}->prepare("delete from u " + . "using ${prefix}usage u, ${prefix}releases r " + . "where u.fileid = r.fileid " + . "and r.rel = ?"); + $self->{delete_status} = + $self->{dbh}->prepare("delete from s " + . "using ${prefix}status s, ${prefix}releases r " + . "where s.fileid = r.fileid " + . "and r.rel = ?"); + $self->{delete_releases} = + $self->{dbh}->prepare("delete from ${prefix}releases where rel = ?"); + $self->{delete_files} = + $self->{dbh}->prepare("delete from f " + . "using ${prefix}files f, ${prefix}releases r " + . "where f.fileid = r.fileid " + . "and r.rel = ?"); - return $self; + return $self; } sub DESTROY { - my ($self) = @_; - $self->{files_select} = undef; - $self->{files_insert} = undef; - $self->{symbols_byname} = undef; - $self->{symbols_byid} = undef; - $self->{symbols_insert} = undef; - $self->{indexes_insert} = undef; - $self->{releases_insert} = undef; - $self->{status_insert} = undef; - $self->{status_update} = undef; - $self->{usage_insert} = undef; - $self->{usage_select} = undef; - $self->{decl_select} = undef; - $self->{decl_insert} = undef; - $self->{delete_indexes} = undef; - $self->{delete_useage} = undef; - $self->{delete_status} = undef; - $self->{delete_releases} = undef; - $self->{delete_files} = undef; + my ($self) = @_; + $self->{files_select} = undef; + $self->{files_insert} = undef; + $self->{symbols_byname} = undef; + $self->{symbols_byid} = undef; + $self->{symbols_insert} = undef; + $self->{indexes_insert} = undef; + $self->{releases_insert} = undef; + $self->{status_insert} = undef; + $self->{status_update} = undef; + $self->{usage_insert} = undef; + $self->{usage_select} = undef; + $self->{decl_select} = undef; + $self->{decl_insert} = undef; + $self->{delete_indexes} = undef; + $self->{delete_usage} = undef; + $self->{delete_status} = undef; + $self->{delete_releases} = undef; + $self->{delete_files} = undef; - if ($self->{dbh}) { - $self->{dbh}->disconnect(); - $self->{dbh} = undef; - } + if ($self->{dbh}) { + $self->{dbh}->disconnect(); + $self->{dbh} = undef; + } } # @@ -170,216 +167,215 @@ # sub fileid { - my ($self, $filename, $revision) = @_; - my ($fileid); + my ($self, $filename, $revision) = @_; + my ($fileid); - unless (defined($fileid = $files{"$filename\t$revision"})) { - $self->{files_select}->execute($filename, $revision); - ($fileid) = $self->{files_select}->fetchrow_array(); - unless ($fileid) { - $self->{files_insert}->execute($filename, $revision); - $self->{files_select}->execute($filename, $revision); - ($fileid) = $self->{files_select}->fetchrow_array(); - } - $files{"$filename\t$revision"} = $fileid; - $self->{files_select}->finish(); - } - return $fileid; + unless (defined($fileid = $files{"$filename\t$revision"})) { + $self->{files_select}->execute($filename, $revision); + ($fileid) = $self->{files_select}->fetchrow_array(); + unless ($fileid) { + $self->{files_insert}->execute($filename, $revision); + $self->{files_select}->execute($filename, $revision); + ($fileid) = $self->{files_select}->fetchrow_array(); + } + $files{"$filename\t$revision"} = $fileid; + $self->{files_select}->finish(); + } + return $fileid; } sub setfilerelease { - my ($self, $fileid, $release) = @_; + my ($self, $fileid, $release) = @_; - my $rows = $self->{releases_select}->execute($fileid + 0, $release); - $self->{releases_select}->finish(); + my $rows = $self->{releases_select}->execute($fileid + 0, $release); + $self->{releases_select}->finish(); - unless ($rows > 0) { - $self->{releases_insert}->execute($fileid, $release); - $self->{releases_insert}->finish(); - } + unless ($rows > 0) { + $self->{releases_insert}->execute($fileid, $release); + } } sub fileindexed { - my ($self, $fileid) = @_; - my ($status); + my ($self, $fileid) = @_; + my ($status); - $self->{status_get}->execute($fileid); - $status = $self->{status_get}->fetchrow_array(); - $self->{status_get}->finish(); + $self->{status_select}->execute($fileid); + $status = $self->{status_select}->fetchrow_array(); + $self->{status_select}->finish(); - if (!defined($status)) { - $status = 0; - } - return $status; + if (!defined($status)) { + $status = 0; + } + return $status; } sub setfileindexed { - my ($self, $fileid) = @_; - my ($status); - - $self->{status_get}->execute($fileid); - $status = $self->{status_get}->fetchrow_array(); - $self->{status_get}->finish(); + my ($self, $fileid) = @_; + my ($status); + + $self->{status_select}->execute($fileid); + $status = $self->{status_select}->fetchrow_array(); + $self->{status_select}->finish(); - if (!defined($status)) { - $self->{status_insert}->execute($fileid + 0, 1); - } else { - $self->{status_update}->execute(1, $fileid, 0); - } + if (!defined($status)) { + $self->{status_insert}->execute($fileid + 0, 1); + } else { + $self->{status_update}->execute(1, $fileid, 0); + } } sub filereferenced { - my ($self, $fileid) = @_; - my ($status); + my ($self, $fileid) = @_; + my ($status); - $self->{status_get}->execute($fileid); - $status = $self->{status_get}->fetchrow_array(); - $self->{status_get}->finish(); + $self->{status_select}->execute($fileid); + $status = $self->{status_select}->fetchrow_array(); + $self->{status_select}->finish(); - return defined($status) && $status == 2; + return defined($status) && $status == 2; } sub setfilereferenced { - my ($self, $fileid) = @_; - my ($status); - - $self->{status_get}->execute($fileid); - $status = $self->{status_get}->fetchrow_array(); - $self->{status_get}->finish(); + my ($self, $fileid) = @_; + my ($status); + + $self->{status_select}->execute($fileid); + $status = $self->{status_select}->fetchrow_array(); + $self->{status_select}->finish(); - if (!defined($status)) { - $self->{status_insert}->execute($fileid + 0, 2); - } else { - $self->{status_update}->execute(2, $fileid, 1); - } + if (!defined($status)) { + $self->{status_insert}->execute($fileid + 0, 2); + } else { + $self->{status_update}->execute(2, $fileid, 1); + } } sub symdeclarations { - my ($self, $symname, $release) = @_; - my ($rows, @ret); + my ($self, $symname, $release) = @_; + my ($rows, @ret, @row); - $rows = $self->{indexes_select}->execute("$symname", "$release"); + $rows = $self->{indexes_select}->execute("$symname", "$release"); - while ($rows-- > 0) { - push(@ret, [ $self->{indexes_select}->fetchrow_array ]); - } + while (@row = $self->{indexes_select}->fetchrow_array) { + push(@ret, [@row]); + } - $self->{indexes_select}->finish(); + $self->{indexes_select}->finish(); - map { $$_[3] &&= $self->symname($$_[3]) } @ret; + map { $$_[3] &&= $self->symname($$_[3]) } @ret; - return @ret; + return @ret; } sub setsymdeclaration { - my ($self, $symname, $fileid, $line, $langid, $type, $relsym) = @_; + my ($self, $symname, $fileid, $line, $langid, $type, $relsym) = @_; - $self->{indexes_insert}->execute($self->symid($symname), - $fileid, $line, $langid, $type, $relsym ? $self->symid($relsym) : undef); + $self->{indexes_insert}->execute($self->symid($symname), + $fileid, $line, $langid, $type, $relsym ? $self->symid($relsym) : undef); } sub symreferences { - my ($self, $symname, $release) = @_; - my ($rows, @ret); + my ($self, $symname, $release) = @_; + my ($rows, @ret, @row); - $rows = $self->{usage_select}->execute("$symname", "$release"); + $rows = $self->{usage_select}->execute("$symname", "$release"); - while ($rows-- > 0) { - push(@ret, [ $self->{usage_select}->fetchrow_array ]); - } + while (@row = $self->{usage_select}->fetchrow_array) { + push(@ret, [@row]); + } - $self->{usage_select}->finish(); + $self->{usage_select}->finish(); - return @ret; + return @ret; } sub setsymreference { - my ($self, $symname, $fileid, $line) = @_; + my ($self, $symname, $fileid, $line) = @_; - $self->{usage_insert}->execute($fileid, $line, $self->symid($symname)); + $self->{usage_insert}->execute($fileid, $line, $self->symid($symname)); } sub issymbol { - my ($self, $symname, $release) = @_; # TODO make use of $release - my ($symid); + my ($self, $symname, $release) = @_; # TODO make full use of $release + my ($symid); - $symid = $symcache{$symname}; - unless (defined($symid)) { - $self->{symbols_byname}->execute($symname); - ($symid) = $self->{symbols_byname}->fetchrow_array(); - $self->{symbols_byname}->finish(); - $symcache{$symname} = $symid; - } + $symid = $symcache{$release}{$symname}; + unless (defined($symid)) { + $self->{symbols_byname}->execute($symname); + ($symid) = $self->{symbols_byname}->fetchrow_array(); + $self->{symbols_byname}->finish(); + $symcache{$release}{$symname} = $symid; + } - return $symid; + return $symid; } sub symid { - my ($self, $symname) = @_; - my ($symid); + my ($self, $symname) = @_; + my ($symid); - $symid = $symcache{$symname}; - unless (defined($symid)) { - $self->{symbols_byname}->execute($symname); - ($symid) = $self->{symbols_byname}->fetchrow_array(); - $self->{symbols_byname}->finish(); - unless ($symid) { - $self->{symbols_insert}->execute($symname); + $symid = $symcache{$symname}; + unless (defined($symid)) { + $self->{symbols_byname}->execute($symname); + ($symid) = $self->{symbols_byname}->fetchrow_array(); + $self->{symbols_byname}->finish(); + unless ($symid) { + $self->{symbols_insert}->execute($symname); - # Get the id of the new symbol - $self->{symbols_byname}->execute($symname); - ($symid) = $self->{symbols_byname}->fetchrow_array(); - $self->{symbols_byname}->finish(); - } - $symcache{$symname} = $symid; - } + # Get the id of the new symbol + $self->{symbols_byname}->execute($symname); + ($symid) = $self->{symbols_byname}->fetchrow_array(); + $self->{symbols_byname}->finish(); + } + $symcache{$symname} = $symid; + } - return $symid; + return $symid; } sub symname { - my ($self, $symid) = @_; - my ($symname); + my ($self, $symid) = @_; + my ($symname); - $self->{symbols_byid}->execute($symid + 0); - ($symname) = $self->{symbols_byid}->fetchrow_array(); - $self->{symbols_byid}->finish(); + $self->{symbols_byid}->execute($symid + 0); + ($symname) = $self->{symbols_byid}->fetchrow_array(); + $self->{symbols_byid}->finish(); - return $symname; + return $symname; } sub decid { - my ($self, $lang, $string) = @_; + my ($self, $lang, $string) = @_; - my $rows = $self->{decl_select}->execute($lang, $string); - $self->{decl_select}->finish(); + my $rows = $self->{decl_select}->execute($lang, $string); + $self->{decl_select}->finish(); - unless ($rows > 0) { - $self->{decl_insert}->execute($lang, $string); - } + unless ($rows > 0) { + $self->{decl_insert}->execute($lang, $string); + } - $self->{decl_select}->execute($lang, $string); - my $id = $self->{decl_select}->fetchrow_array(); - $self->{decl_select}->finish(); + $self->{decl_select}->execute($lang, $string); + my $id = $self->{decl_select}->fetchrow_array(); + $self->{decl_select}->finish(); - return $id; + return $id; } sub emptycache { - %symcache = (); + %symcache = (); } sub purge { - my ($self, $version) = @_; + my ($self, $release) = @_; - # we don't delete symbols, because they might be used by other versions - # so we can end up with unused symbols, but that doesn't cause any problems - $self->{delete_indexes}->execute($version); - $self->{delete_useage}->execute($version); - $self->{delete_status}->execute($version); - $self->{delete_releases}->execute($version); - $self->{delete_files}->execute($version); + # we don't delete symbols, because they might be used by other versions + # so we can end up with unused symbols, but that doesn't cause any problems + $self->{delete_indexes}->execute($release); + $self->{delete_usage}->execute($release); + $self->{delete_status}->execute($release); + $self->{delete_releases}->execute($release); + $self->{delete_files}->execute($release); } 1; Index: Postgres.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Postgres.pm,v retrieving revision 1.27 retrieving revision 1.28 diff -u -d -r1.27 -r1.28 --- Postgres.pm 6 May 2009 22:37:50 -0000 1.27 +++ Postgres.pm 9 May 2009 15:39:00 -0000 1.28 @@ -1,4 +1,4 @@ -# -*- tab-width: 4 -*- ############################################### +# -*- tab-width: 4 perl-indent-level: 4-*- ############################### # # $Id$ @@ -28,135 +28,135 @@ $files_select $filenum_nextval $files_insert $symbols_byname $symbols_byid $symnum_nextval $symbols_remove $symbols_insert $indexes_select $indexes_insert - $releases_select $releases_insert $status_get $status_insert + $releases_select $releases_insert $status_select $status_insert $status_update $usage_insert $usage_select $decl_select $declid_nextnum $decl_insert $delete_indexes $delete_usage $delete_status $delete_releases $delete_files $prefix); sub new { - my ($self, $dbname) = @_; + my ($self, $dbname) = @_; - $self = bless({}, $self); - $dbh ||= DBI->connect($dbname, $config->{'dbuser'}, $config->{'dbpass'}); - die($DBI::errstr) unless $dbh; + $self = bless({}, $self); + $dbh ||= DBI->connect($dbname, $config->{'dbuser'}, $config->{'dbpass'}); + die($DBI::errstr) unless $dbh; - $$dbh{'AutoCommit'} = 0; + $$dbh{'AutoCommit'} = 0; - # $dbh->trace(1); + # $dbh->trace(1); - if (defined($config->{'dbprefix'})) { - $prefix = $config->{'dbprefix'}; - } else { - $prefix = "lxr_"; - } + if (defined($config->{'dbprefix'})) { + $prefix = $config->{'dbprefix'}; + } else { + $prefix = "lxr_"; + } - $commitlimit = 100; - $transactions = 0; - %files = (); - %symcache = (); + $commitlimit = 100; + $transactions = 0; + %files = (); + %symcache = (); - $files_select = - $dbh->prepare("select fileid from ${prefix}files where filename = ? and revision = ?"); - $filenum_nextval = $dbh->prepare("select nextval('${prefix}filenum')"); - $files_insert = $dbh->prepare("insert into ${prefix}files values (?, ?, ?)"); + $files_select = + $dbh->prepare("select fileid from ${prefix}files where filename = ? and revision = ?"); + $filenum_nextval = $dbh->prepare("select nextval('${prefix}filenum')"); + $files_insert = $dbh->prepare("insert into ${prefix}files values (?, ?, ?)"); - $symbols_byname = $dbh->prepare("select symid from ${prefix}symbols where symname = ?"); - $symbols_byid = $dbh->prepare("select symname from ${prefix}symbols where symid = ?"); - $symnum_nextval = $dbh->prepare("select nextval('${prefix}symnum')"); - $symbols_insert = $dbh->prepare("insert into ${prefix}symbols values (?, ?)"); - $symbols_remove = $dbh->prepare("delete from ${prefix}symbols where symname = ?"); + $symbols_byname = $dbh->prepare("select symid from ${prefix}symbols where symname = ?"); + $symbols_byid = $dbh->prepare("select symname from ${prefix}symbols where symid = ?"); + $symnum_nextval = $dbh->prepare("select nextval('${prefix}symnum')"); + $symbols_insert = $dbh->prepare("insert into ${prefix}symbols values (?, ?)"); + $symbols_remove = $dbh->prepare("delete from ${prefix}symbols where symname = ?"); - $indexes_select = - $dbh->prepare("select f.filename, i.line, d.declaration, i.relsym " - . "from ${prefix}symbols s, ${prefix}indexes i, ${prefix}files f, ${prefix}releases r, ${prefix}declarations d " - . "where s.symid = i.symid and i.fileid = f.fileid " - . "and f.fileid = r.fileid " - . "and i.langid = d.langid and i.type = d.declid " - . "and s.symname = ? and r.release = ? " - . "order by f.filename, i.line, d.declaration"); - $indexes_insert = - $dbh->prepare("insert into ${prefix}indexes (symid, fileid, line, langid, type, relsym) " - . "values (?, ?, ?, ?, ?, ?)"); + $indexes_select = + $dbh->prepare("select f.filename, i.line, d.declaration, i.relsym " + . "from ${prefix}symbols s, ${prefix}indexes i, ${prefix}files f, ${prefix}releases r, ${prefix}declarations d " + . "where s.symid = i.symid and i.fileid = f.fileid " + . "and f.fileid = r.fileid " + . "and i.langid = d.langid and i.type = d.declid " + . "and s.symname = ? and r.release = ? " + . "order by f.filename, i.line, d.declaration"); + $indexes_insert = + $dbh->prepare("insert into ${prefix}indexes (symid, fileid, line, langid, type, relsym) " + . "values (?, ?, ?, ?, ?, ?)"); - $releases_select = - $dbh->prepare("select * from ${prefix}releases where fileid = ? and release = ?"); - $releases_insert = $dbh->prepare("insert into ${prefix}releases values (?, ?)"); - $status_get = $dbh->prepare("select status from ${prefix}status where fileid = ?"); - $status_insert = $dbh->prepare - ("insert into ${prefix}status (fileid, status) values (?, ?)"); - - $status_update = - $dbh->prepare("update ${prefix}status set status = ? where fileid = ? and status <= ?"); + $releases_select = + $dbh->prepare("select * from ${prefix}releases where fileid = ? and release = ?"); + $releases_insert = $dbh->prepare("insert into ${prefix}releases values (?, ?)"); + $status_select = $dbh->prepare("select status from ${prefix}status where fileid = ?"); + $status_insert = $dbh->prepare + ("insert into ${prefix}status (fileid, status) values (?, ?)"); + + $status_update = + $dbh->prepare("update ${prefix}status set status = ? where fileid = ? and status <= ?"); - $usage_insert = $dbh->prepare("insert into ${prefix}usage values (?, ?, ?)"); - $usage_select = - $dbh->prepare("select f.filename, u.line " - . "from ${prefix}symbols s, ${prefix}files f, ${prefix}releases r, ${prefix}usage u " - . "where s.symid = u.symid " - . "and f.fileid = u.fileid " - . "and f.fileid = r.fileid and " - . "s.symname = ? and r.release = ? " - . "order by f.filename, u.line"); + $usage_insert = $dbh->prepare("insert into ${prefix}usage values (?, ?, ?)"); + $usage_select = + $dbh->prepare("select f.filename, u.line " + . "from ${prefix}symbols s, ${prefix}files f, ${prefix}releases r, ${prefix}usage u " + . "where s.symid = u.symid " + . "and f.fileid = u.fileid " + . "and f.fileid = r.fileid and " + . "s.symname = ? and r.release = ? " + . "order by f.filename, u.line"); - $declid_nextnum = $dbh->prepare("select nextval('${prefix}declnum')"); + $declid_nextnum = $dbh->prepare("select nextval('${prefix}declnum')"); - $decl_select = - $dbh->prepare( - "select declid from ${prefix}declarations where langid = ? and " . "declaration = ?"); - $decl_insert = - $dbh->prepare( - "insert into ${prefix}declarations (declid, langid, declaration) values (?, ?, ?)"); + $decl_select = + $dbh->prepare( + "select declid from ${prefix}declarations where langid = ? and " . "declaration = ?"); + $decl_insert = + $dbh->prepare( + "insert into ${prefix}declarations (declid, langid, declaration) values (?, ?, ?)"); - $delete_indexes = - $dbh->prepare("delete from ${prefix}indexes " - . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); - $delete_usage = - $dbh->prepare("delete from ${prefix}usage " - . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); - $delete_status = - $dbh->prepare("delete from ${prefix}status " - . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); - $delete_releases = $dbh->prepare("delete from ${prefix}releases " . "where release = ?"); - $delete_files = - $dbh->prepare("delete from ${prefix}files " - . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); + $delete_indexes = + $dbh->prepare("delete from ${prefix}indexes " + . "where fileid in " + . " (select fileid from ${prefix}releases where release = ?)"); + $delete_usage = + $dbh->prepare("delete from ${prefix}usage " + . "where fileid in " + . " (select fileid from ${prefix}releases where release = ?)"); + $delete_status = + $dbh->prepare("delete from ${prefix}status " + . "where fileid in " + . " (select fileid from ${prefix}releases where release = ?)"); + $delete_releases = $dbh->prepare("delete from ${prefix}releases " . "where release = ?"); + $delete_files = + $dbh->prepare("delete from ${prefix}files " + . "where fileid in " + . " (select fileid from ${prefix}releases where release = ?)"); - return $self; + return $self; } sub END { - $files_select = undef; - $filenum_nextval = undef; - $files_insert = undef; - $symbols_byname = undef; - $symbols_byid = undef; - $symnum_nextval = undef; - $symbols_remove = undef; - $symbols_insert = undef; - $indexes_select = undef; - $indexes_insert = undef; - $releases_select = undef; - $releases_insert = undef; - $status_insert = undef; - $status_update = undef; - $usage_insert = undef; - $usage_select = undef; - $decl_select = undef; - $declid_nextnum = undef; - $decl_insert = undef; - $delete_indexes = undef; - $delete_usage = undef; - $delete_status = undef; - $delete_releases = undef; - $delete_files = undef; + $files_select = undef; + $filenum_nextval = undef; + $files_insert = undef; + $symbols_byname = undef; + $symbols_byid = undef; + $symnum_nextval = undef; + $symbols_remove = undef; + $symbols_insert = undef; + $indexes_select = undef; + $indexes_insert = undef; + $releases_select = undef; + $releases_insert = undef; + $status_insert = undef; + $status_update = undef; + $usage_insert = undef; + $usage_select = undef; + $decl_select = undef; + $declid_nextnum = undef; + $decl_insert = undef; + $delete_indexes = undef; + $delete_usage = undef; + $delete_status = undef; + $delete_releases = undef; + $delete_files = undef; - $dbh->commit(); - $dbh->disconnect(); - $dbh = undef; + $dbh->commit(); + $dbh->disconnect(); + $dbh = undef; } # @@ -164,90 +164,90 @@ # sub fileid { - my ($self, $filename, $revision) = @_; - my ($fileid); + my ($self, $filename, $revision) = @_; + my ($fileid); - unless (defined($fileid = $files{"$filename\t$revision"})) { - $files_select->execute($filename, $revision); - ($fileid) = $files_select->fetchrow_array(); - unless ($fileid) { - $filenum_nextval->execute(); - ($fileid) = $filenum_nextval->fetchrow_array(); - $files_insert->execute($filename, $revision, $fileid); - } - $files{"$filename\t$revision"} = $fileid; - } - _commitIfLimit(); - return $fileid; + unless (defined($fileid = $files{"$filename\t$revision"})) { + $files_select->execute($filename, $revision); + ($fileid) = $files_select->fetchrow_array(); + unless ($fileid) { + $filenum_nextval->execute(); + ($fileid) = $filenum_nextval->fetchrow_array(); + $files_insert->execute($filename, $revision, $fileid); + } + $files{"$filename\t$revision"} = $fileid; + } + _commitIfLimit(); + return $fileid; } sub setfilerelease { - my ($self, $fileid, $release) = @_; + my ($self, $fileid, $release) = @_; - $releases_select->execute($fileid + 0, $release); - my $firstrow = $releases_select->fetchrow_array(); + $releases_select->execute($fileid + 0, $release); + my $firstrow = $releases_select->fetchrow_array(); - # $releases_select->finish(); + # $releases_select->finish(); - unless ($firstrow) { - $releases_insert->execute($fileid + 0, $release); - } - _commitIfLimit(); + unless ($firstrow) { + $releases_insert->execute($fileid + 0, $release); + } + _commitIfLimit(); } sub fileindexed { - my ($self, $fileid) = @_; - my ($status); + my ($self, $fileid) = @_; + my ($status); - $status_get->execute($fileid); - $status = $status_get->fetchrow_array(); - $status_get->finish(); + $status_select->execute($fileid); + $status = $status_select->fetchrow_array(); + $status_select->finish(); - if (!defined($status)) { - $status = 0; - } - return $status; + if (!defined($status)) { + $status = 0; + } + return $status; } sub setfileindexed { - my ($self, $fileid) = @_; - my ($status); - - $status_get->execute($fileid); - $status = $status_get->fetchrow_array(); - $status_get->finish(); + my ($self, $fileid) = @_; + my ($status); + + $status_select->execute($fileid); + $status = $status_select->fetchrow_array(); + $status_select->finish(); - if (!defined($status)) { - $status_insert->execute($fileid + 0, 1); - } else { - $status_update->execute(1, $fileid, 0); - } + if (!defined($status)) { + $status_insert->execute($fileid + 0, 1); + } else { + $status_update->execute(1, $fileid, 0); + } } sub filereferenced { - my ($self, $fileid) = @_; - my ($status); + my ($self, $fileid) = @_; + my ($status); - $status_get->execute($fileid); - $status = $status_get->fetchrow_array(); - $status_get->finish(); + $status_select->execute($fileid); + $status = $status_select->fetchrow_array(); + $status_select->finish(); - return defined($status) && $status == 2; + return defined($status) && $status == 2; } sub setfilereferenced { - my ($self, $fileid) = @_; - my ($status); - - $status_get->execute($fileid); - $status = $status_get->fetchrow_array(); - $status_get->finish(); + my ($self, $fileid) = @_; + my ($status); + + $status_select->execute($fileid); + $status = $status_select->fetchrow_array(); + $status_select->finish(); - if (!defined($status)) { - $status_insert->execute($fileid + 0, 2); - } else { - $status_update->execute(2, $fileid, 1); - } + if (!defined($status)) { + $status_insert->execute($fileid + 0, 2); + } else { + $status_update->execute(2, $fileid, 1); + } } sub symdeclarations { @@ -274,109 +274,109 @@ } sub setsymdeclaration { - my ($self, $symname, $fileid, $line, $langid, $type, $relsym) = @_; + my ($self, $symname, $fileid, $line, $langid, $type, $relsym) = @_; - $indexes_insert->execute($self->symid($symname), - $fileid, $line, $langid, $type, $relsym ? $self->symid($relsym) : undef); - _commitIfLimit(); + $indexes_insert->execute($self->symid($symname), + $fileid, $line, $langid, $type, $relsym ? $self->symid($relsym) : undef); + _commitIfLimit(); } sub symreferences { - my ($self, $symname, $release) = @_; - my ($rows, @ret); + my ($self, $symname, $release) = @_; + my ($rows, @ret); - $rows = $usage_select->execute("$symname", "$release"); + $rows = $usage_select->execute("$symname", "$release"); - while ($rows-- > 0) { - push(@ret, [ $usage_select->fetchrow_array ]); - } + while ($rows-- > 0) { + push(@ret, [ $usage_select->fetchrow_array ]); + } - $usage_select->finish(); + $usage_select->finish(); - return @ret; + return @ret; } sub setsymreference { - my ($self, $symname, $fileid, $line) = @_; + my ($self, $symname, $fileid, $line) = @_; - $usage_insert->execute($fileid, $line, $self->symid($symname)); - _commitIfLimit(); + $usage_insert->execute($fileid, $line, $self->symid($symname)); + _commitIfLimit(); } sub issymbol { - my ($self, $symname, $release) = @_; # TODO make use of $release + my ($self, $symname, $release) = @_; # TODO make use of $release - unless (exists($symcache{$symname})) { - $symbols_byname->execute($symname); - ($symcache{$symname}) = $symbols_byname->fetchrow_array(); - } + unless (exists($symcache{$symname})) { + $symbols_byname->execute($symname); + ($symcache{$symname}) = $symbols_byname->fetchrow_array(); + } - return $symcache{$symname}; + return $symcache{$symname}; } sub symid { - my ($self, $symname) = @_; - my ($symid); + my ($self, $symname) = @_; + my ($symid); - unless (defined($symid = $symcache{$symname})) { - $symbols_byname->execute($symname); - ($symid) = $symbols_byname->fetchrow_array(); - unless ($symid) { - $symnum_nextval->execute(); - ($symid) = $symnum_nextval->fetchrow_array(); - $symbols_insert->execute($symname, $symid); - } - $symcache{$symname} = $symid; - } - _commitIfLimit(); - return $symid; + unless (defined($symid = $symcache{$symname})) { + $symbols_byname->execute($symname); + ($symid) = $symbols_byname->fetchrow_array(); + unless ($symid) { + $symnum_nextval->execute(); + ($symid) = $symnum_nextval->fetchrow_array(); + $symbols_insert->execute($symname, $symid); + } + $symcache{$symname} = $symid; + } + _commitIfLimit(); + return $symid; } sub symname { - my ($self, $symid) = @_; - my ($symname); + my ($self, $symid) = @_; + my ($symname); - $symbols_byid->execute($symid + 0); - ($symname) = $symbols_byid->fetchrow_array(); + $symbols_byid->execute($symid + 0); + ($symname) = $symbols_byid->fetchrow_array(); - return $symname; + return $symname; } sub decid { - my ($self, $lang, $string) = @_; + my ($self, $lang, $string) = @_; - my $rows = $decl_select->execute($lang, $string); - $decl_select->finish(); + my $rows = $decl_select->execute($lang, $string); + $decl_select->finish(); - unless ($rows > 0) { - $declid_nextnum->execute(); - my ($declid) = $declid_nextnum->fetchrow_array(); - $decl_insert->execute($declid, $lang, $string); - } + unless ($rows > 0) { + $declid_nextnum->execute(); + my ($declid) = $declid_nextnum->fetchrow_array(); + $decl_insert->execute($declid, $lang, $string); + } - $decl_select->execute($lang, $string); - my $id = $decl_select->fetchrow_array(); - $decl_select->finish(); + $decl_select->execute($lang, $string); + my $id = $decl_select->fetchrow_array(); + $decl_select->finish(); - _commitIfLimit(); - return $id; + _commitIfLimit(); + return $id; } sub emptycache { - %symcache = (); + %symcache = (); } sub purge { - my ($self, $version) = @_; + my ($self, $version) = @_; - # we don't delete symbols, because they might be used by other versions - # so we can end up with unused symbols, but that doesn't cause any problems - $delete_indexes->execute($version); - $delete_usage->execute($version); - $delete_status->execute($version); - $delete_releases->execute($version); - $delete_files->execute($version); - _commitIfLimit(); + # we don't delete symbols, because they might be used by other versions + # so we can end up with unused symbols, but that doesn't cause any problems + $delete_indexes->execute($version); + $delete_usage->execute($version); + $delete_status->execute($version); + $delete_releases->execute($version); + $delete_files->execute($version); + _commitIfLimit(); } # @@ -384,9 +384,9 @@ # sub _commitIfLimit { - unless (++$transactions % $commitlimit) { - $dbh->commit(); - } + unless (++$transactions % $commitlimit) { + $dbh->commit(); + } } 1; Index: Oracle.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Oracle.pm,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- Oracle.pm 9 May 2009 14:07:13 -0000 1.16 +++ Oracle.pm 9 May 2009 15:39:00 -0000 1.17 @@ -1,4 +1,4 @@ -# -*- tab-width: 4 -*- ############################################### +# -*- tab-width: 4 perl-indent-level: 4-*- ############################### # # $Id$ @@ -29,133 +29,131 @@ @ISA = ("LXR::Index"); sub new { - my ($self, $dbname) = @_; - - $self = bless({}, $self); + my ($self, $dbname) = @_; - $self->{dbh} = - DBI->connect($dbname, $config->{dbuser}, $config->{dbpass}, - { RaiseError => 1, AutoCommit => 1 }) - || fatal "Can't open connection to database\n"; + $self = bless({}, $self); - if (defined($config->{'dbprefix'})) { - $prefix = $config->{'dbprefix'}; - } else { - $prefix = "lxr_"; - } + $self->{dbh} = + DBI->connect($dbname, $config->{dbuser}, $config->{dbpass}, + { RaiseError => 1, AutoCommit => 1 }) + || fatal "Can't open connection to database\n"; - %files = (); - %symcache = (); + if (defined($config->{'dbprefix'})) { + $prefix = $config->{'dbprefix'}; + } else { + $prefix = "lxr_"; + } - $self->{files_select} = - $self->{dbh} - ->prepare("select fileid from ${prefix}files where filename = ? and revision = ?"); - $self->{files_insert} = - $self->{dbh}->prepare("insert into ${prefix}files values (?, ?, ${prefix}filenum.nextval)"); + %files = (); + %symcache = (); - $self->{symbols_byname} = - $self->{dbh}->prepare("select symid from ${prefix}symbols where symname = ?"); - $self->{symbols_byid} = - $self->{dbh}->prepare("select symname from ${prefix}symbols where symid = ?"); - $self->{symbols_insert} = - $self->{dbh}->prepare("insert into ${prefix}symbols values ( ?, ${prefix}symnum.nextval)"); - $self->{symbols_remove} = - $self->{dbh}->prepare("delete from ${prefix}symbols where symname = ?"); + $self->{files_select} = + $self->{dbh} + ->prepare("select fileid from ${prefix}files where filename = ? and revision = ?"); + $self->{files_insert} = + $self->{dbh}->prepare("insert into ${prefix}files values (?, ?, ${prefix}filenum.nextval)"); - $self->{indexes_select} = - $self->{dbh}->prepare("select f.filename, i.line, d.declaration, i.relsym " - . "from ${prefix}symbols s, ${prefix}indexes i, ${prefix}files f, ${prefix}releases r, ${prefix}declarations d " - . "where s.symid = i.symid and i.fileid = f.fileid " - . "and f.fileid = r.fileid " - . "and i.langid = d.langid and i.type = d.declid " - . "and s.symname = ? and r.release = ? " - . "order by f.filename, i.line, d.declaration"); - $self->{indexes_insert} = - $self->{dbh}->prepare( - "insert into ${prefix}indexes (symid, fileid, line, langid, type, relsym) values (?, ?, ?, ?, ?, ?)" - ); + $self->{symbols_byname} = + $self->{dbh}->prepare("select symid from ${prefix}symbols where symname = ?"); + $self->{symbols_byid} = + $self->{dbh}->prepare("select symname from ${prefix}symbols where symid = ?"); + $self->{symbols_insert} = + $self->{dbh}->prepare("insert into ${prefix}symbols values ( ?, ${prefix}symnum.nextval)"); + $self->{symbols_remove} = + $self->{dbh}->prepare("delete from ${prefix}symbols where symname = ?"); - $self->{releases_select} = - $self->{dbh}->prepare("select * from ${prefix}releases where fileid = ? and release = ?"); - $self->{releases_insert} = - $self->{dbh}->prepare("insert into ${prefix}releases (fileid, release) values (?, ?)"); + $self->{indexes_select} = + $self->{dbh}->prepare("select f.filename, i.line, d.declaration, i.relsym " + . "from ${prefix}symbols s, ${prefix}indexes i, ${prefix}files f, ${prefix}releases r, ${prefix}declarations d " + . "where s.symid = i.symid and i.fileid = f.fileid " + . "and f.fileid = r.fileid " + . "and i.langid = d.langid and i.type = d.declid " + . "and s.symname = ? and r.release = ? " + . "order by f.filename, i.line, d.declaration"); + $self->{indexes_insert} = + $self->{dbh}->prepare( + "insert into ${prefix}indexes (symid, fileid, line, langid, type, relsym) values (?, ?, ?, ?, ?, ?)" + ); - $self->{status_get} = - $self->{dbh}->prepare("select status from ${prefix}status where fileid = ?"); + $self->{releases_select} = + $self->{dbh}->prepare("select * from ${prefix}releases where fileid = ? and release = ?"); + $self->{releases_insert} = + $self->{dbh}->prepare("insert into ${prefix}releases (fileid, release) values (?, ?)"); - $self->{status_insert} = $self->{dbh}->prepare + $self->{status_select} = + $self->{dbh}->prepare("select status from ${prefix}status where fileid = ?"); - # ("insert into status select ?, 0 except select fileid, 0 from status"); - ("insert into ${prefix}status (fileid, status) values (?, ?)"); + $self->{status_insert} = $self->{dbh}->prepare + ("insert into ${prefix}status (fileid, status) values (?, ?)"); - $self->{status_update} = - $self->{dbh} - ->prepare("update ${prefix}status set status = ? where fileid = ? and status <= ?"); + $self->{status_update} = + $self->{dbh} + ->prepare("update ${prefix}status set status = ? where fileid = ? and status <= ?"); - $self->{usage_insert} = - $self->{dbh}->prepare("insert into ${prefix}usage (fileid, line, symid) values (?, ?, ?)"); - $self->{usage_select} = - $self->{dbh}->prepare("select f.filename, u.line " - . "from ${prefix}symbols s, ${prefix}files f, ${prefix}releases r, ${prefix}usage u " - . "where s.symid = u.symid " - . "and f.fileid = u.fileid " - . "and u.fileid = r.fileid " - . "and s.symname = ? and r.release = ? " - . "order by f.filename, u.line"); - $self->{decl_select} = - $self->{dbh}->prepare( - "select declid from ${prefix}declarations where langid = ? and declaration = ?"); - $self->{decl_insert} = - $self->{dbh}->prepare( - "insert into ${prefix}declarations (declid, langid, declaration) values (${prefix}declnum.nextval, ?, ?)"); + $self->{usage_insert} = + $self->{dbh}->prepare("insert into ${prefix}usage (fileid, line, symid) values (?, ?, ?)"); + $self->{usage_select} = + $self->{dbh}->prepare("select f.filename, u.line " + . "from ${prefix}symbols s, ${prefix}files f, ${prefix}releases r, ${prefix}usage u " + . "where s.symid = u.symid " + . "and f.fileid = u.fileid " + . "and u.fileid = r.fileid " + . "and s.symname = ? and r.release = ? " + . "order by f.filename, u.line"); + $self->{decl_select} = + $self->{dbh}->prepare( + "select declid from ${prefix}declarations where langid = ? and declaration = ?"); + $self->{decl_insert} = + $self->{dbh}->prepare( + "insert into ${prefix}declarations (declid, langid, declaration) values (${prefix}declnum.nextval, ?, ?)"); - $self->{delete_indexes} = - $self->{dbh}->prepare("delete from ${prefix}indexes " - . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); - $self->{delete_usage} = - $self->{dbh}->prepare("delete from ${prefix}usage " - . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); - $self->{delete_status} = - $self->{dbh}->prepare("delete from ${prefix}status " - . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); - $self->{delete_releases} = - $self->{dbh}->prepare("delete from ${prefix}releases " . "where release = ?"); - $self->{delete_files} = - $self->{dbh}->prepare("delete from ${prefix}files " - . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); + $self->{delete_indexes} = + $self->{dbh}->prepare("delete from ${prefix}indexes " + . "where fileid in " + . " (select fileid from ${prefix}releases where release = ?)"); + $self->{delete_usage} = + $self->{dbh}->prepare("delete from ${prefix}usage " + . "where fileid in " + . " (select fileid from ${prefix}releases where release = ?)"); + $self->{delete_status} = + $self->{dbh}->prepare("delete from ${prefix}status " + . "where fileid in " + . " (select fileid from ${prefix}releases where release = ?)"); + $self->{delete_releases} = + $self->{dbh}->prepare("delete from ${prefix}releases " . "where release = ?"); + $self->{delete_files} = + $self->{dbh}->prepare("delete from ${prefix}files " + . "where fileid in " + . " (select fileid from ${prefix}releases where release = ?)"); - return $self; + return $self; } sub DESTROY { - my ($self) = @_; - $self->{files_select} = undef; - $self->{files_insert} = undef; - $self->{symbols_byname} = undef; - $self->{symbols_byid} = undef; - $self->{symbols_insert} = undef; - $self->{indexes_insert} = undef; - $self->{releases_insert} = undef; - $self->{status_insert} = undef; - $self->{status_update} = undef; - $self->{usage_insert} = undef; - $self->{usage_select} = undef; - $self->{decl_select} = undef; - $self->{decl_insert} = undef; - $self->{delete_indexes} = undef; - $self->{delete_usage} = undef; - $self->{delete_status} = undef; - $self->{delete_releases} = undef; - $self->{delete_files} = undef; + my ($self) = @_; + $self->{files_select} = undef; + $self->{files_insert} = undef; + $self->{symbols_byname} = undef; + $self->{symbols_byid} = undef; + $self->{symbols_insert} = undef; + $self->{indexes_insert} = undef; + $self->{releases_insert} = undef; + $self->{status_insert} = undef; + $self->{status_update} = undef; + $self->{usage_insert} = undef; + $self->{usage_select} = undef; + $self->{decl_select} = undef; + $self->{decl_insert} = undef; + $self->{delete_indexes} = undef; + $self->{delete_usage} = undef; + $self->{delete_status} = undef; + $self->{delete_releases} = undef; + $self->{delete_files} = undef; - if ($self->{dbh}) { - $self->{dbh}->disconnect(); - $self->{dbh} = undef; - } + if ($self->{dbh}) { + $self->{dbh}->disconnect(); + $self->{dbh} = undef; + } } # @@ -163,216 +161,216 @@ # sub fileid { - my ($self, $filename, $revision) = @_; - my ($fileid); + my ($self, $filename, $revision) = @_; + my ($fileid); - unless (defined($fileid = $files{"$filename\t$revision"})) { - $self->{files_select}->execute($filename, $revision); - ($fileid) = $self->{files_select}->fetchrow_array(); - unless ($fileid) { - $self->{files_insert}->execute($filename, $revision); - $self->{files_select}->execute($filename, $revision); - ($fileid) = $self->{files_select}->fetchrow_array(); - } - $files{"$filename\t$revision"} = $fileid; - $self->{files_select}->finish(); - } - return $fileid; + unless (defined($fileid = $files{"$filename\t$revision"})) { + $self->{files_select}->execute($filename, $revision); + ($fileid) = $self->{files_select}->fetchrow_array(); + unless ($fileid) { + $self->{files_insert}->execute($filename, $revision); + $self->{files_select}->execute($filename, $revision); + ($fileid) = $self->{files_select}->fetchrow_array(); + } + $files{"$filename\t$revision"} = $fileid; + $self->{files_select}->finish(); + } + return $fileid; } sub setfilerelease { - my ($self, $fileid, $release) = @_; + my ($self, $fileid, $release) = @_; - my $rows = $self->{releases_select}->execute($fileid + 0, $release); - $self->{releases_select}->finish(); + my $rows = $self->{releases_select}->execute($fileid + 0, $release); + $self->{releases_select}->finish(); - unless ($rows > 0) { - $self->{releases_insert}->execute($fileid, $release); - $self->{releases_insert}->finish(); - } + unless ($rows > 0) { + $self->{releases_insert}->execute($fileid, $release); + $self->{releases_insert}->finish(); + } } sub fileindexed { - my ($self, $fileid) = @_; - my ($status); + my ($self, $fileid) = @_; + my ($status); - $self->{status_get}->execute($fileid); - $status = $self->{status_get}->fetchrow_array(); - $self->{status_get}->finish(); + $self->{status_select}->execute($fileid); + $status = $self->{status_select}->fetchrow_array(); + $self->{status_select}->finish(); - if (!defined($status)) { - $status = 0; - } - return $status; + if (!defined($status)) { + $status = 0; + } + return $status; } sub setfileindexed { - my ($self, $fileid) = @_; - my ($status); - - $self->{status_get}->execute($fileid); - $status = $self->{status_get}->fetchrow_array(); - $self->{status_get}->finish(); + my ($self, $fileid) = @_; + my ($status); + + $self->{status_select}->execute($fileid); + $status = $self->{status_select}->fetchrow_array(); + $self->{status_select}->finish(); - if (!defined($status)) { - $self->{status_insert}->execute($fileid + 0, 1); - } else { - $self->{status_update}->execute(1, $fileid, 0); - } + if (!defined($status)) { + $self->{status_insert}->execute($fileid + 0, 1); + } else { + $self->{status_update}->execute(1, $fileid, 0); + } } sub filereferenced { - my ($self, $fileid) = @_; - my ($status); + my ($self, $fileid) = @_; + my ($status); - $self->{status_get}->execute($fileid); - $status = $self->{status_get}->fetchrow_array(); - $self->{status_get}->finish(); + $self->{status_select}->execute($fileid); + $status = $self->{status_select}->fetchrow_array(); + $self->{status_select}->finish(); - return defined($status) && $status == 2; + return defined($status) && $status == 2; } sub setfilereferenced { - my ($self, $fileid) = @_; - my ($status); - - $self->{status_get}->execute($fileid); - $status = $self->{status_get}->fetchrow_array(); - $self->{status_get}->finish(); + my ($self, $fileid) = @_; + my ($status); + + $self->{status_select}->execute($fileid); + $status = $self->{status_select}->fetchrow_array(); + $self->{status_select}->finish(); - if (!defined($status)) { - $self->{status_insert}->execute($fileid + 0, 2); - } else { - $self->{status_update}->execute(2, $fileid, 1); - } + if (!defined($status)) { + $self->{status_insert}->execute($fileid + 0, 2); + } else { + $self->{status_update}->execute(2, $fileid, 1); + } } sub symdeclarations { - my ($self, $symname, $release) = @_; - my ($rows, @ret, @row); + my ($self, $symname, $release) = @_; + my ($rows, @ret, @row); - $rows = $self->{indexes_select}->execute("$symname", "$release"); + $rows = $self->{indexes_select}->execute("$symname", "$release"); - while (@row = $self->{indexes_select}->fetchrow_array) { - push(@ret, [@row]); - } + while (@row = $self->{indexes_select}->fetchrow_array) { + push(@ret, [@row]); + } - $self->{indexes_select}->finish(); + $self->{indexes_select}->finish(); - map { $$_[3] &&= $self->symname($$_[3]) } @ret; + map { $$_[3] &&= $self->symname($$_[3]) } @ret; - return @ret; + return @ret; } sub setsymdeclaration { - my ($self, $symname, $fileid, $line, $langid, $type, $relsym) = @_; + my ($self, $symname, $fileid, $line, $langid, $type, $relsym) = @_; - $self->{indexes_insert}->execute($self->symid($symname), - $fileid, $line, $langid, $type, $relsym ? $self->symid($relsym) : undef); + $self->{indexes_insert}->execute($self->symid($symname), + $fileid, $line, $langid, $type, $relsym ? $self->symid($relsym) : undef); } sub symreferences { - my ($self, $symname, $release) = @_; - my ($rows, @ret, @row); + my ($self, $symname, $release) = @_; + my ($rows, @ret, @row); - $rows = $self->{usage_select}->execute("$symname", "$release"); + $rows = $self->{usage_select}->execute("$symname", "$release"); - while (@row = $self->{usage_select}->fetchrow_array) { - push(@ret, [@row]); - } + while (@row = $self->{usage_select}->fetchrow_array) { + push(@ret, [@row]); + } - $self->{usage_select}->finish(); + $self->{usage_select}->finish(); - return @ret; + return @ret; } sub setsymreference { - my ($self, $symname, $fileid, $line) = @_; + my ($self, $symname, $fileid, $line) = @_; - $self->{usage_insert}->execute($fileid, $line, $self->symid($symname)); + $self->{usage_insert}->execute($fileid, $line, $self->symid($symname)); } sub issymbol { - my ($self, $symname, $release) = @_; # TODO make use of $release - my ($symid); + my ($self, $symname, $release) = @_; # TODO make use of $release + my ($symid); - $symid = $symcache{$release}{$symname}; - unless (defined($symid)) { - $self->{symbols_byname}->execute($symname); - ($symid) = $self->{symbols_byname}->fetchrow_array(); - $self->{symbols_byname}->finish(); - $symcache{$release}{$symname} = $symid; - } + $symid = $symcache{$release}{$symname}; + unless (defined($symid)) { + $self->{symbols_byname}->execute($symname); + ($symid) = $self->{symbols_byname}->fetchrow_array(); + $self->{symbols_byname}->finish(); + $symcache{$release}{$symname} = $symid; + } - return $symid; + return $symid; } sub symid { - my ($self, $symname) = @_; - my ($symid); + my ($self, $symname) = @_; + my ($symid); - $symid = $symcache{$symname}; - unless (defined($symid)) { - $self->{symbols_byname}->execute($symname); - ($symid) = $self->{symbols_byname}->fetchrow_array(); - $self->{symbols_byname}->finish(); - unless ($symid) { - $self->{symbols_insert}->execute($symname); + $symid = $symcache{$symname}; + unless (defined($symid)) { + $self->{symbols_byname}->execute($symname); + ($symid) = $self->{symbols_byname}->fetchrow_array(); + $self->{symbols_byname}->finish(); + unless ($symid) { + $self->{symbols_insert}->execute($symname); - # Get the id of the new symbol - $self->{symbols_byname}->execute($symname); - ($symid) = $self->{symbols_byname}->fetchrow_array(); - $self->{symbols_byname}->finish(); - } - $symcache{$symname} = $symid; - } + # Get the id of the new symbol + $self->{symbols_byname}->execute($symname); + ($symid) = $self->{symbols_byname}->fetchrow_array(); + $self->{symbols_byname}->finish(); + } + $symcache{$symname} = $symid; + } - return $symid; + return $symid; } sub symname { - my ($self, $symid) = @_; - my ($symname); + my ($self, $symid) = @_; + my ($symname); - $self->{symbols_byid}->execute($symid + 0); - ($symname) = $self->{symbols_byid}->fetchrow_array(); - $self->{symbols_byid}->finish(); + $self->{symbols_byid}->execute($symid + 0); + ($symname) = $self->{symbols_byid}->fetchrow_array(); + $self->{symbols_byid}->finish(); - return $symname; + return $symname; } sub decid { - my ($self, $lang, $string) = @_; + my ($self, $lang, $string) = @_; - my $rows = $self->{decl_select}->execute($lang, $string); - $self->{decl_select}->finish(); + my $rows = $self->{decl_select}->execute($lang, $string); + $self->{decl_select}->finish(); - unless ($rows > 0) { - $... [truncated message content] |