lxr-commits Mailing List for LXR Cross Referencer (Page 9)
Brought to you by:
ajlittoz
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(11) |
Sep
(13) |
Oct
(11) |
Nov
(19) |
Dec
(1) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(11) |
Feb
(14) |
Mar
(10) |
Apr
|
May
|
Jun
|
Jul
(8) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2003 |
Jan
|
Feb
|
Mar
(10) |
Apr
|
May
(2) |
Jun
(4) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2004 |
Jan
|
Feb
|
Mar
|
Apr
(3) |
May
|
Jun
(26) |
Jul
(83) |
Aug
(4) |
Sep
(4) |
Oct
(9) |
Nov
|
Dec
(17) |
2005 |
Jan
(1) |
Feb
(71) |
Mar
(1) |
Apr
(3) |
May
(9) |
Jun
|
Jul
|
Aug
|
Sep
(4) |
Oct
(1) |
Nov
(6) |
Dec
|
2006 |
Jan
|
Feb
|
Mar
|
Apr
(35) |
May
|
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(12) |
2007 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
|
Feb
|
Mar
(30) |
Apr
(55) |
May
(28) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
(5) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(5) |
2013 |
Jan
(35) |
Feb
|
Mar
(7) |
Apr
(12) |
May
(1) |
Jun
(2) |
Jul
|
Aug
(1) |
Sep
(32) |
Oct
|
Nov
(45) |
Dec
(18) |
2014 |
Jan
(9) |
Feb
|
Mar
(10) |
Apr
(2) |
May
(4) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(7) |
Nov
(4) |
Dec
|
From: Malcolm B. <mb...@us...> - 2009-05-14 21:14:12
|
Update of /cvsroot/lxr/lxr-tools/tests In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv564 Modified Files: PostgresTest.pm Log Message: Update tests to use Index::commit to flush changes to disk before trying to check. Tests should now pass on unmodified LXR Index: PostgresTest.pm =================================================================== RCS file: /cvsroot/lxr/lxr-tools/tests/PostgresTest.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- PostgresTest.pm 12 May 2009 15:51:42 -0000 1.1 +++ PostgresTest.pm 14 May 2009 21:13:59 -0000 1.2 @@ -39,6 +39,7 @@ $self->assert_not_equals($id, $id2); # Look in the database for the files + $pg->commit; my $data; $data = $dbh->selectrow_array("SELECT filename FROM lxr_files WHERE fileid = $id"); $self->assert_equals("/lxr/tests/testpath", $data); @@ -130,6 +131,7 @@ # Check that the declarations are in the database my $data; + $pg->commit; $data = $dbh->selectall_arrayref("SELECT s.symname, i.line, i.type FROM lxr_indexes as i, lxr_symbols as s WHERE i.symid = s.symid AND i.fileid = $fid1"); $self->assert_equals( "symbol1", $data->[0]->[0]); $self->assert_equals(1000, $data->[0]->[1]); @@ -182,6 +184,7 @@ # Check directly in database my $data; + $pg->commit; $data = $dbh->selectall_arrayref("SELECT * from lxr_usage WHERE symid=".$pg->symid("symbol1")." ORDER BY line"); $self->assert_equals(2000,$data->[0]->[1]); $self->assert_equals(2001, $data->[1]->[1]); @@ -231,6 +234,7 @@ $self->{'pg'} = new LXR::Index($config->dbname); # Create direct connection to DB $self->{'dbh'} = DBI->connect($config->dbname); + $self->{'dbh'}->{AutoCommit} = 1; } sub tear_down { |
From: Malcolm B. <mb...@us...> - 2009-05-14 21:13:24
|
Update of /cvsroot/lxr/lxr In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv32729 Modified Files: genxref Log Message: Remote obsolete Index::DB backend that used NDBM storage. Now only Postgres, Mysql and Oracle are supported as backends. Add a commit method to the Index interface that flushes a transaction to disk and starts another one. Added appropriate calls from genxref to Index::commit Index: genxref =================================================================== RCS file: /cvsroot/lxr/lxr/genxref,v retrieving revision 1.43 retrieving revision 1.44 diff -u -d -r1.43 -r1.44 --- genxref 10 May 2009 11:54:29 -0000 1.43 +++ genxref 14 May 2009 21:13:07 -0000 1.44 @@ -93,6 +93,7 @@ gensearch($version); genindex('/', $version); genrefs('/', $version); + $index->commit; } $index->DESTROY(); @@ -107,6 +108,7 @@ } else { &LXR::Tagger::processfile($pathname, $releaseid, $config, $files, $index) unless exists $binaryfiles{$pathname}; + $index->commit; } } @@ -120,6 +122,7 @@ } else { &LXR::Tagger::processrefs($pathname, $releaseid, $config, $files, $index) unless exists $binaryfiles{$pathname}; + $index->commit; } } |
From: Malcolm B. <mb...@us...> - 2009-05-14 21:13:22
|
Update of /cvsroot/lxr/lxr/lib/LXR/Index In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv32729/lib/LXR/Index Modified Files: DBI.pm Mysql.pm Oracle.pm Postgres.pm Removed Files: DB.pm Log Message: Remote obsolete Index::DB backend that used NDBM storage. Now only Postgres, Mysql and Oracle are supported as backends. Add a commit method to the Index interface that flushes a transaction to disk and starts another one. Added appropriate calls from genxref to Index::commit Index: DBI.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/DBI.pm,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- DBI.pm 21 Apr 2009 20:03:04 -0000 1.23 +++ DBI.pm 14 May 2009 21:13:07 -0000 1.24 @@ -40,6 +40,7 @@ $index = new LXR::Index::Oracle($dbname); } return $index; -} +} + 1; Index: Mysql.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Mysql.pm,v retrieving revision 1.31 retrieving revision 1.32 diff -u -d -r1.31 -r1.32 --- Mysql.pm 10 May 2009 11:54:29 -0000 1.31 +++ Mysql.pm 14 May 2009 21:13:07 -0000 1.32 @@ -358,6 +358,13 @@ return $id; } +sub commit { + my ($self) = @_; + $self->{dbh}->commit; + $self->{dbh}->begin_work; +} + + sub emptycache { %symcache = (); } Index: Oracle.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Oracle.pm,v retrieving revision 1.21 retrieving revision 1.22 diff -u -d -r1.21 -r1.22 --- Oracle.pm 10 May 2009 11:54:29 -0000 1.21 +++ Oracle.pm 14 May 2009 21:13:07 -0000 1.22 @@ -354,6 +354,13 @@ return $id; } +sub commit { + my ($self) = @_; + $self->{dbh}->commit; + $self->{dbh}->begin_work; +} + + sub emptycache { %symcache = (); } Index: Postgres.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Postgres.pm,v retrieving revision 1.32 retrieving revision 1.33 diff -u -d -r1.32 -r1.33 --- Postgres.pm 10 May 2009 11:54:29 -0000 1.32 +++ Postgres.pm 14 May 2009 21:13:07 -0000 1.33 @@ -31,8 +31,6 @@ # my (%files, %symcache); -my ($commitlimit, $transactions, $dbConnection); - sub new { my ($self, $dbname) = @_; @@ -41,8 +39,6 @@ or fatal "Can't open connection to database: $DBI::errstr\n"; $self->{dbh}->begin_work() or die "begin_work failed: $DBI::errstr"; - $commitlimit = 100; - $transactions = 0; %files = (); %symcache = (); @@ -168,7 +164,6 @@ if ($self->{dbh}) { $self->{dbh}->commit() or die "Commit failed: $DBI::errstr"; - $transactions = 0; $self->{dbh}->disconnect() or die "Disconnect failed: $DBI::errstr"; $self->{dbh} = undef; } @@ -189,7 +184,6 @@ $self->{filenum_nextval}->execute(); ($fileid) = $self->{filenum_nextval}->fetchrow_array(); $self->{files_insert}->execute($filename, $revision, $fileid); - $self->_commitIfLimit(); } $files{"$filename\t$revision"} = $fileid; # $self->{files_select}->finish(); @@ -208,7 +202,6 @@ unless ($firstrow) { $self->{releases_insert}->execute($fileid + 0, $releaseid); - $self->_commitIfLimit(); } } @@ -239,7 +232,6 @@ } else { $self->{status_update}->execute(1, $fileid, 0); } - $self->_commitIfLimit(); } sub filereferenced { @@ -266,7 +258,6 @@ } else { $self->{status_update}->execute(2, $fileid, 1); } - $self->_commitIfLimit(); } sub symdeclarations { @@ -294,7 +285,6 @@ $self->{indexes_insert}->execute($self->symid($symname), $fileid, $line, $langid, $type, $relsym ? $self->symid($relsym) : undef); - $self->_commitIfLimit(); } sub symreferences { @@ -316,7 +306,6 @@ my ($self, $symname, $fileid, $line) = @_; $self->{usage_insert}->execute($fileid, $line, $self->symid($symname)); - $self->_commitIfLimit(); } sub issymbol { @@ -341,7 +330,6 @@ $self->{symnum_nextval}->execute(); ($symid) = $self->{symnum_nextval}->fetchrow_array(); $self->{symbols_insert}->execute($symname, $symid); - $self->_commitIfLimit(); } $symcache{$symname} = $symid; } @@ -368,7 +356,6 @@ $self->{declid_nextnum}->execute(); my ($declid) = $self->{declid_nextnum}->fetchrow_array(); $self->{decl_insert}->execute($declid, $lang, $string); - $self->_commitIfLimit(); } $self->{decl_select}->execute($lang, $string); @@ -393,21 +380,14 @@ $self->{delete_releases}->execute($releaseid); $self->{delete_files}->execute($releaseid); - $self->{dbh}->commit() or die "Commit failed: $DBI::errstr"; - $self->{dbh}->begin_work() or die "begin_work failed: $DBI::errstr"; - $transactions = 0; + $self->commit() or die "Commit failed: $DBI::errstr"; } -# -# Internal subroutines -# - -sub _commitIfLimit { - my $self = shift; - unless (++$transactions % $commitlimit) { - $self->{dbh}->commit() or die "Commit failed: $DBI::errstr"; - $self->{dbh}->begin_work() or die "begin_work failed: $DBI::errstr"; - } +sub commit { + my ($self) = @_; + $self->{dbh}->commit; + $self->{dbh}->begin_work; } + 1; --- DB.pm DELETED --- |
From: Malcolm B. <mb...@us...> - 2009-05-14 21:13:21
|
Update of /cvsroot/lxr/lxr/lib/LXR In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv32729/lib/LXR Modified Files: Index.pm Log Message: Remote obsolete Index::DB backend that used NDBM storage. Now only Postgres, Mysql and Oracle are supported as backends. Add a commit method to the Index interface that flushes a transaction to disk and starts another one. Added appropriate calls from genxref to Index::commit Index: Index.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index.pm,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- Index.pm 10 May 2009 11:54:29 -0000 1.16 +++ Index.pm 14 May 2009 21:13:07 -0000 1.17 @@ -30,9 +30,6 @@ if ($dbname =~ /^DBI:/i) { require LXR::Index::DBI; $index = new LXR::Index::DBI($dbname, @args); - } elsif ($dbname =~ /^DBM:/i) { - require LXR::Index::DB; - $index = new LXR::Index::DB($dbname, @args); } else { die "Can't find database, $dbname"; } @@ -144,6 +141,14 @@ return $decid; } +# Commit the last set of operations and start a new transaction +# If transactions are not supported, it's OK for this to be a no-op + +sub commit { + my ($self) = @_; + warn __PACKAGE__."::commit not implemented. Parameters @_"; +} + # This function should be called before parsing each new file, # if this is not done then too much memory will be used and # things will become very slow. |
From: Malcolm B. <mb...@us...> - 2009-05-12 15:52:24
|
Update of /cvsroot/lxr/lxr-tools/tests In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv12758 Modified Files: AllTests.pm Log Message: Add Postgres tests to standard test suite Index: AllTests.pm =================================================================== RCS file: /cvsroot/lxr/lxr-tools/tests/AllTests.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- AllTests.pm 6 May 2009 22:33:08 -0000 1.2 +++ AllTests.pm 12 May 2009 15:52:14 -0000 1.3 @@ -19,6 +19,7 @@ $suite->add_test(Test::Unit::TestSuite->new("PlainTest")); # $suite->add_test(Test::Unit::TestSuite->new("BKTest")); $suite->add_test(Test::Unit::TestSuite->new("MysqlTest")); + $suite->add_test(Test::Unit::TestSuite->new("PostgresTest")); return $suite; } |
From: Malcolm B. <mb...@us...> - 2009-05-12 15:51:57
|
Update of /cvsroot/lxr/lxr-tools/tests In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv12683 Added Files: PostgresTest.pm initdb-postgres Log Message: Test suite for Index::Postgres.pm --- NEW FILE: PostgresTest.pm --- # Test cases for the Postgres backend # Uses the lxr.conf file in the tests directory # Assumes the use of lxr_tests as the test database package PostgresTest; use strict; use File::Spec; use Test::Unit; use LXR::Config; use LXR::Index::Postgres; use DBI; use base qw(Test::Unit::TestCase); use vars qw($config); sub new { my $self = shift()->SUPER::new(@_); return $self; } # define tests # Test fileid sub test_fileid { my $self = shift; my $pg = $self->{'pg'}; my $dbh = $self->{'dbh'}; my ($id, $id2); # Test generation and matching $id = $pg->fileid("/lxr/tests/testpath", 1); $self->assert_not_null($id, "Fileid null"); $id2 = $pg->fileid("/lxr/tests/testpath", 1); $self->assert_equals($id, $id2, "Fileid doesn't match"); $id2 = $pg->fileid("/lxr/tests/testpath", 2); $self->assert_not_equals($id, $id2, "Match even though revisions different"); $id2 = $pg->fileid("/lxr/tests/testpath/two", 1); $self->assert_not_equals($id, $id2); # Look in the database for the files my $data; $data = $dbh->selectrow_array("SELECT filename FROM lxr_files WHERE fileid = $id"); $self->assert_equals("/lxr/tests/testpath", $data); $data = $dbh->selectrow_array("SELECT revision FROM lxr_files WHERE fileid = $id"); $self->assert_equals(1, $data); $data = $dbh->selectrow_array("SELECT COUNT(filename) FROM lxr_files"); $self->assert_equals(3, $data, "Wrong number of rows in DB"); } # Tests for the fileindexed getter/setters sub test_fileindexed { my $self = shift; my $pg = $self->{'pg'}; my $dbh = $self->{'dbh'}; my $status; # Insert some files into table $dbh->do("insert into lxr_files (filename, revision, fileid) values ('temp', '1.1', 1789)"); $dbh->do("insert into lxr_files (filename, revision, fileid) values ('temp22', '2.2.', 17890)"); # Indexed $status = $pg->fileindexed(1789); $self->assert_equals(0, $status); $pg->setfileindexed(1789); $status = $pg->fileindexed(1789); $self->assert($status, "Indexed should be true"); $pg->setfileindexed(17890); $status = $pg->fileindexed(1789); $self->assert($status); $pg->setfilereferenced(17890); $status = $pg->fileindexed(17890); $self->assert($status, "Expected indexed to be true"); } sub test_filereferenced { my $self = shift; my $pg = $self->{'pg'}; my $dbh = $self->{'dbh'}; my $status; # referenced $status = $pg->filereferenced(17890); $self->assert(!$status, "Referenced should be false (fixture interference?)"); $status = $pg->filereferenced(1789); $self->assert(!$status, "Ref should be false"); $status = $dbh->do("insert into lxr_files values (\'hi\', 1, 1789)"); $self->assert_equals($status, 1); $pg->setfilereferenced(1789); $status = $pg->filereferenced(1789); $self->assert($status); $status = $pg->fileindexed(1789); $self->assert($status, "Setting referenced should set indexed"); } sub test_creation { my $self = shift; $self->assert($config->dbname =~ /^dbi:Pg:dbname/); $self->assert(defined($self->{'pg'}), "Failed to create object"); $self->assert($self->{'pg'}->isa("LXR::Index::Postgres"), "Not a Index::Postgres object"); # Check we have connected to the database $self->assert_not_null($self->{'dbh'}, $DBI::errstr); } # Test symbol insertion and retrieval sub test_symbol { my $self = shift; my ($stat, $symname, $fid1, $fid2, $line, $langid, $type, $relsym); my $dbh = $self->{'dbh'}; my $pg = $self->{'pg'}; # Set up some dummy files $fid1 = $pg->fileid("/lxr/tests/testfile1", "1.0.1"); $fid2 = $pg->fileid("/a/nother/path/to/a/file/that\'s very/long", "longversionstringhere"); $pg->setfilerelease($fid1, 1); $pg->setfilerelease($fid2, 2); # Set up dummy declarations my ($id1, $id2); $id1 = $pg->decid(1, "struct"); $id2 = $pg->decid(1, "class"); # Now insert some symbols into the first release $pg->setsymdeclaration("symbol1", $fid1, 1000, 1, $id1, undef); $pg->setsymdeclaration("aVeryLongSymbolNameWithWeirdCapsGoesHere", $fid2, 101, 1, $id2, undef); # Check that the declarations are in the database my $data; $data = $dbh->selectall_arrayref("SELECT s.symname, i.line, i.type FROM lxr_indexes as i, lxr_symbols as s WHERE i.symid = s.symid AND i.fileid = $fid1"); $self->assert_equals( "symbol1", $data->[0]->[0]); $self->assert_equals(1000, $data->[0]->[1]); $self->assert_equals($id1, $data->[0]->[2]); $data = $dbh->selectall_arrayref("SELECT s.symname, i.line, i.type FROM lxr_indexes as i, lxr_symbols as s WHERE i.symid=s.symid AND i.fileid = $fid2"); $self->assert_equals("aVeryLongSymbolNameWithWeirdCapsGoesHere", $data->[0]->[0]); $self->assert_equals(101, $data->[0]->[1]); $self->assert_equals($id2, $data->[0]->[2]); # Now use the accessors my @syms; @syms = $pg->symdeclarations("symbol1", 1); # returns filename, line, declaration, relsym $self->assert_equals("/lxr/tests/testfile1", $syms[0]->[0]); $self->assert_equals(1000, $syms[0]->[1]); $self->assert_equals("struct", $syms[0]->[2]); $self->assert_null($syms[0]->[3]); } # Test reference insertion and retrival sub test_references { my $self = shift; my $pg = $self->{'pg'}; my $dbh = $self->{'dbh'}; my ($fid1, $fid2); # Set up some dummy files $fid1 = $pg->fileid("/lxr/tests/testfile1", "1.0.1"); $fid2 = $pg->fileid("/a/nother/path/to/a/file/that\'s very/long", "longversionstringhere"); $pg->setfilerelease($fid1, 1); $pg->setfilerelease($fid2, 2); # Set up dummy declarations my ($id1, $id2); $id1 = $pg->decid(1, "struct"); $id2 = $pg->decid(1, "class"); # Now insert some symbols into the first release $pg->setsymdeclaration("symbol1", $fid1, 1000, 1, $id1, undef); $pg->setsymdeclaration("aVeryLongSymbolNameWithWeirdCapsGoesHere", $fid2, 101, 1, $id2, undef); # Set references to symbols $pg->setsymreference("symbol1", $fid1, 2000); $pg->setsymreference("symbol1", $fid2, 3000); $pg->setsymreference("symbol1", $fid1, 2001); # Check directly in database my $data; $data = $dbh->selectall_arrayref("SELECT * from lxr_usage WHERE symid=".$pg->symid("symbol1")." ORDER BY line"); $self->assert_equals(2000,$data->[0]->[1]); $self->assert_equals(2001, $data->[1]->[1]); # And via accessor my @data; @data = $pg->symreferences("symbol1", 1); # returns filename, line $self->assert_equals("/lxr/tests/testfile1", $data[0]->[0]); $self->assert_equals(2000, $data[0]->[1]); $self->assert_equals(1, $#data); $self->assert_equals("/lxr/tests/testfile1", $data[1]->[0]); $self->assert_equals(2001, $data[1]->[1]); @data = $pg->symreferences("symbol1", 2); $self->assert_equals(0, $#data); $self->assert_equals("/a/nother/path/to/a/file/that\'s very/long", $data[0]->[0]); $self->assert_equals(3000, $data[0]->[1]); } # Test the declaration id creation logic sub test_decid { my $self = shift; my $pg = $self->{'pg'}; my ($id1, $id2); $id1 = $pg->decid(1, "struct"); $id2 = $pg->decid(1, "class"); $self->assert($id1 != $id2); } # set_up and tear_down are used to # prepare and release resources need for testing # Prepare the database for the run sub set_up { my $self = shift; # Create config $config = new LXR::Config("http://test/pg/lxr", "./lxr.conf"); # Clear out all data in the database system("psql lxr_tests < initdb-postgres >".File::Spec->devnull()." 2>&1"); # Create Pg object $self->{'pg'} = new LXR::Index($config->dbname); # Create direct connection to DB $self->{'dbh'} = DBI->connect($config->dbname); } sub tear_down { my $self = shift; $self->{'pg'} = undef; $config = undef; $self->{'dbh'}->disconnect(); } 1; --- NEW FILE: initdb-postgres --- drop sequence lxr_filenum; drop sequence lxr_symnum; drop sequence lxr_declnum; drop table lxr_files cascade; drop table lxr_symbols cascade; drop table lxr_indexes cascade; drop table lxr_releases cascade; drop table lxr_usage cascade; drop table lxr_status cascade; drop table lxr_declarations cascade; create sequence lxr_filenum cache 50; create sequence lxr_symnum cache 50; create sequence lxr_declnum cache 10; create table lxr_files ( filename varchar, revision varchar, fileid int, primary key (fileid), unique (filename, revision) ); create table lxr_symbols ( symname varchar, symid int, primary key (symid), unique (symname) ); create table lxr_declarations ( declid smallint not null, langid smallint not null, declaration char(255) not null, primary key (declid, langid) ); create table lxr_indexes ( symid int references lxr_symbols, fileid int references lxr_files, line int, langid smallint not null, type smallint not null, relsym int references lxr_symbols, foreign key (langid, type) references lxr_declarations (langid, declid) ); create table lxr_releases (fileid int references lxr_files, releaseid varchar, primary key (fileid,releaseid) ); create table lxr_usage (fileid int references lxr_files, line int, symid int references lxr_symbols ); create table lxr_status (fileid int references lxr_files, status smallint, primary key (fileid) ); create index lxr_indexindex on lxr_indexes using btree (symid); create index lxr_symbolindex on lxr_symbols using btree (symname); create index lxr_usageindex on lxr_usage using btree (symid); create index lxr_filelookup on lxr_files using btree (filename); grant select on lxr_files to public; grant select on lxr_symbols to public; grant select on lxr_indexes to public; grant select on lxr_releases to public; grant select on lxr_usage to public; grant select on lxr_status to public; grant select on lxr_declarations to public; |
From: AdrianIssott <adr...@us...> - 2009-05-10 11:54:43
|
Update of /cvsroot/lxr/lxr/lib/LXR/Lang In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv3821/lib/LXR/Lang Modified Files: Java.pm Generic.pm Cobol.pm Log Message: Feature 1691378 (Rearchitect the DB backends) Part X * Renamed lxr_release.rel -> releaseid for Mysql * Renamed lxr_release.release -> releaseid for Oracle and Postgres * Renamed $release -> $releaseid generally Index: Java.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Lang/Java.pm,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- Java.pm 10 Aug 2004 16:13:03 -0000 1.7 +++ Java.pm 10 May 2009 11:54:29 -0000 1.8 @@ -41,7 +41,7 @@ # "package java.lang.util" $$frag =~ s#(package\s+)([\w.]+)# "<span class='reserved'>$1</span>". - ($index->issymbol($2, $$self{'release'}) ? + ($index->issymbol($2, $$self{'releaseid'}) ? join($2, @{$$self{'itag'}}) : $2) #e; @@ -49,7 +49,7 @@ # "import java.awt.*" by providing link to the package $$frag =~ s#(import\s+)([\w.]+)(\.\*)# "<span class='reserved'>$1</span>". - ($index->issymbol($2, $$self{'release'}) ? + ($index->issymbol($2, $$self{'releaseid'}) ? join($2, @{$$self{'itag'}}) : $2) . $3 #e; @@ -58,9 +58,9 @@ # package and the class $$frag =~ s#(import\s+)([\w.]+)\.(\w+)(\W)# "<span class='reserved'>$1</span>". - ($index->issymbol($2, $$self{'release'}) ? + ($index->issymbol($2, $$self{'releaseid'}) ? join($2, @{$$self{'itag'}}) : $2) . "." . - ($index->issymbol($3, $$self{'release'}) ? + ($index->issymbol($3, $$self{'releaseid'}) ? join($3, @{$$self{'itag'}}) : $3) . $4#e; } Index: Generic.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Lang/Generic.pm,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- Generic.pm 25 Apr 2009 20:40:24 -0000 1.24 +++ Generic.pm 10 May 2009 11:54:29 -0000 1.25 @@ -35,11 +35,11 @@ @LXR::Lang::Generic::ISA = ('LXR::Lang'); sub new { - my ($proto, $pathname, $release, $lang) = @_; + my ($proto, $pathname, $releaseid, $lang) = @_; my $class = ref($proto) || $proto; my $self = {}; bless($self, $class); - $$self{'release'} = $release; + $$self{'releaseid'} = $releaseid; $$self{'language'} = $lang; read_config() unless defined $generic_config; @@ -161,7 +161,7 @@ } { $1. - ( $index->issymbol($2, $$self{'release'}) ? join($2, @{$$self{'itag'}}) : $2 ); + ( $index->issymbol($2, $$self{'releaseid'}) ? join($2, @{$$self{'itag'}}) : $2 ); }gex; } @@ -227,7 +227,7 @@ $string = $_; # print "considering $string\n"; - if (!$self->isreserved($string) && $index->issymbol($string, $$self{'release'})) + if (!$self->isreserved($string) && $index->issymbol($string, $$self{'releaseid'})) { # print "adding $string to references\n"; Index: Cobol.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Lang/Cobol.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Cobol.pm 11 Apr 2009 11:23:43 -0000 1.2 +++ Cobol.pm 10 May 2009 11:54:29 -0000 1.3 @@ -41,7 +41,7 @@ ( $2 eq "" ? $2 : ($self->isreserved($2) ? "<span class='reserved'>$2</span>" : ( - $index->issymbol($2, $$self{'release'})) ? + $index->issymbol($2, $$self{'releaseid'})) ? join($2, @{$$self{'itag'}}) : $2)); }ge; |
From: AdrianIssott <adr...@us...> - 2009-05-10 11:54:37
|
Update of /cvsroot/lxr/lxr-tools/tests In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv3900/tests Modified Files: initdb-mysql SecurityTest.pm Log Message: Feature 1691378 (Rearchitect the DB backends) Part X * Renamed lxr_release.rel -> releaseid for Mysql * Renamed lxr_release.release -> releaseid for Oracle and Postgres * Renamed $release -> $releaseid generally Index: initdb-mysql =================================================================== RCS file: /cvsroot/lxr/lxr-tools/tests/initdb-mysql,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- initdb-mysql 9 May 2009 15:38:54 -0000 1.2 +++ initdb-mysql 10 May 2009 11:54:33 -0000 1.3 @@ -34,8 +34,8 @@ create table lxr_releases (fileid int not null references lxr_files, - rel char(255) binary not null, - primary key (fileid,rel) + releaseid char(255) binary not null, + primary key (fileid,releaseid) ); create table lxr_usage Index: SecurityTest.pm =================================================================== RCS file: /cvsroot/lxr/lxr-tools/tests/SecurityTest.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- SecurityTest.pm 21 Apr 2009 15:25:00 -0000 1.1 +++ SecurityTest.pm 10 May 2009 11:54:33 -0000 1.2 @@ -75,7 +75,7 @@ $SIG{'__DIE__'} = $die; $SIG{'__WARN__'} = $warn; - $self->assert($release eq '1.0.6', '$release not washed'); + $self->assert($releaseid eq '1.0.6', '$releaseid not washed'); $self->assert($config->variable('v') eq '1.0.6', '$config->variable(v) not washed'); $ENV{'QUERY_STRING'} = '?v=hi%20hippy/../..;file=/some/path;version=../..'; @@ -86,8 +86,8 @@ $SIG{'__DIE__'} = $die; $SIG{'__WARN__'} = $warn; - $self->assert($release eq '1.0.6', '$release not washed'); - $self->assert($config->variable('v') eq $release, '$release not washed'); + $self->assert($releaseid eq '1.0.6', '$releaseid not washed'); + $self->assert($config->variable('v') eq $releaseid, '$releaseid not washed'); $ENV{'QUERY_STRING'} = '?version=hi../..'; $die = $SIG{'__DIE__'}; @@ -97,8 +97,8 @@ $SIG{'__DIE__'} = $die; $SIG{'__WARN__'} = $warn; - $self->assert($release eq '1.0.6', "release not washed, was $release"); - $self->assert($config->variable('v') eq $release, "release not washed, was $release"); + $self->assert($releaseid eq '1.0.6', "releaseid not washed, was $releaseid"); + $self->assert($config->variable('v') eq $releaseid, "releaseid not washed, was $releaseid"); } |
From: AdrianIssott <adr...@us...> - 2009-05-10 11:54:37
|
Update of /cvsroot/lxr/lxr/lib/LXR In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv3821/lib/LXR Modified Files: Files.pm Index.pm Lang.pm Tagger.pm Common.pm Log Message: Feature 1691378 (Rearchitect the DB backends) Part X * Renamed lxr_release.rel -> releaseid for Mysql * Renamed lxr_release.release -> releaseid for Oracle and Postgres * Renamed $release -> $releaseid generally Index: Files.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Files.pm,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- Files.pm 21 Apr 2009 20:03:04 -0000 1.12 +++ Files.pm 10 May 2009 11:54:29 -0000 1.13 @@ -53,21 +53,21 @@ # sub getdir { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; my @dircontents; warn __PACKAGE__."::getdir not implemented. Parameters @_"; return @dircontents; } sub getfile { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; warn __PACKAGE__."::getfile not implemented. Parameters @_"; my $filecontents; return $filecontents; } sub getannotations { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; warn __PACKAGE__."::getannotations not implemented. Parameters @_"; my @annotations; return @annotations; @@ -81,49 +81,49 @@ } sub filerev { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; warn __PACKAGE__."::filerev not implemented. Parameters @_"; my $filerev; return $filerev; } sub getfilehandle { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; warn __PACKAGE__."::getfilehandle not implemented. Parameters @_"; my $fh; return $fh; } sub getfilesize { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; warn __PACKAGE__."::getfilesize not implemented. Parameters @_"; my $filesize; return $filesize; } sub getfiletime { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; warn __PACKAGE__."::getfiletime not implemented. Parameters @_"; my $modificationTimeInSecondsSinceEpoch; return $modificationTimeInSecondsSinceEpoch; } sub getindex { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; warn __PACKAGE__."::getindex not implemented. Parameters @_"; my %index; return %index; } sub isdir { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; warn __PACKAGE__."::isdir not implemented. Parameters: @_"; my $boolean; return $boolean; } sub isfile { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; warn __PACKAGE__."::isfile not implemented. Parameters: @_"; my $boolean; return $boolean; @@ -131,7 +131,7 @@ # FIXME: This function really sucks and should be removed :) sub tmpfile { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; warn __PACKAGE__."::tmpfile not implemented. Parameters: @_"; my $pathToATmpCopyOfTheFile; return $pathToATmpCopyOfTheFile; @@ -140,7 +140,7 @@ # FIXME: this function should probably not exist, since it doesn't make sense for # all file access methods sub toreal { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; warn "toreal called - obsolete"; my $path; return $path; Index: Index.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index.pm,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- Index.pm 9 May 2009 15:39:00 -0000 1.15 +++ Index.pm 10 May 2009 11:54:29 -0000 1.16 @@ -44,15 +44,15 @@ # sub fileid { - my ($self, $filename, $revision) = @_; # CAUTION: $revision is not $release! + my ($self, $filename, $revision) = @_; # CAUTION: $revision is not $releaseid! my $fileid; warn __PACKAGE__."::fileid not implemented. Parameters @_"; return $fileid; } -# Indicate that the file referred to by $fileid is part of $release +# Indicate that the file referred to by $fileid is part of $releaseid sub setfilerelease { - my ($self, $fileid, $release) = @_; + my ($self, $fileid, $releaseid) = @_; warn __PACKAGE__."::setfilerelease not implemented. Parameters @_"; return; } @@ -91,7 +91,7 @@ } sub symdeclarations { - my ($self, $symname, $release) = @_; + my ($self, $symname, $releaseid) = @_; my @indexes; warn __PACKAGE__."::symdeclarations not implemented. Parameters @_"; return @indexes; @@ -104,7 +104,7 @@ } sub symreferences { - my ($self, $symname, $release) = @_; + my ($self, $symname, $releaseid) = @_; my @references; warn __PACKAGE__."::symreferences not implemented. Parameters @_"; return @references; @@ -117,7 +117,7 @@ } sub issymbol { - my ($self, $symname, $release) = @_; + my ($self, $symname, $releaseid) = @_; my $symbolfoundboolean; warn __PACKAGE__."::issymbol not implemented. Parameters @_"; return $symbolfoundboolean; @@ -154,7 +154,7 @@ } sub purge { - my ($self, $release) = @_; + my ($self, $releaseid) = @_; warn __PACKAGE__."::purge not implemented. Parameters @_"; return; } Index: Lang.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Lang.pm,v retrieving revision 1.35 retrieving revision 1.36 diff -u -d -r1.35 -r1.36 --- Lang.pm 21 Apr 2009 20:03:04 -0000 1.35 +++ Lang.pm 10 May 2009 11:54:29 -0000 1.36 @@ -24,14 +24,14 @@ use LXR::Common; sub new { - my ($self, $pathname, $release, @itag) = @_; + my ($self, $pathname, $releaseid, @itag) = @_; my ($lang, $type); foreach $type (values %{ $config->filetype }) { if ($pathname =~ /$$type[1]/) { eval "require $$type[2]"; die "Unable to load $$type[2] Lang class, $@" if $@; - my $create = "new $$type[2]" . '($pathname, $release, $$type[0])'; + my $create = "new $$type[2]" . '($pathname, $releaseid, $$type[0])'; $lang = eval($create); die "Unable to create $$type[2] Lang object, $@" unless defined $lang; last; @@ -41,7 +41,7 @@ if (!defined $lang) { # Try to see if it's a script - my $fh = $files->getfilehandle($pathname, $release); + my $fh = $files->getfilehandle($pathname, $releaseid); return undef if !defined $fh; $fh->getline =~ /^\#!\s*(\S+)/s; @@ -55,7 +55,7 @@ die "Unable to load $filetype{$inter{$patt}}[2] Lang class, $@" if $@; my $create = "new " . $filetype{ $inter{$patt} }[2] - . '($pathname, $release, $filetype{$inter{$patt}}[0])'; + . '($pathname, $releaseid, $filetype{$inter{$patt}}[0])'; $lang = eval($create); last if defined $lang; die "Unable to create $filetype{$inter{$patt}}[2] Lang object, $@"; Index: Tagger.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Tagger.pm,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- Tagger.pm 6 May 2009 22:37:50 -0000 1.24 +++ Tagger.pm 10 May 2009 11:54:29 -0000 1.25 @@ -25,28 +25,28 @@ use LXR::Lang; sub processfile { - my ($pathname, $release, $config, $files, $index) = @_; + my ($pathname, $releaseid, $config, $files, $index) = @_; - my $lang = new LXR::Lang($pathname, $release); + my $lang = new LXR::Lang($pathname, $releaseid); return unless $lang; - my $revision = $files->filerev($pathname, $release); + my $revision = $files->filerev($pathname, $releaseid); return unless $revision; - print(STDERR "--- $pathname $release $revision\n"); + print(STDERR "--- $pathname $releaseid $revision\n"); if ($index) { my $fileid = $index->fileid($pathname, $revision); - $index->setfilerelease($fileid, $release); + $index->setfilerelease($fileid, $releaseid); if (!$index->fileindexed($fileid)) { $index->emptycache(); print(STDERR "--- $pathname $fileid\n"); - my $path = $files->tmpfile($pathname, $release); + my $path = $files->tmpfile($pathname, $releaseid); $lang->indexfile($pathname, $path, $fileid, $index, $config); $index->setfileindexed($fileid); @@ -62,17 +62,17 @@ } sub processrefs { - my ($pathname, $release, $config, $files, $index) = @_; + my ($pathname, $releaseid, $config, $files, $index) = @_; - my $lang = new LXR::Lang($pathname, $release); + my $lang = new LXR::Lang($pathname, $releaseid); return unless $lang; - my $revision = $files->filerev($pathname, $release); + my $revision = $files->filerev($pathname, $releaseid); return unless $revision; - print(STDERR "--- $pathname $release $revision\n"); + print(STDERR "--- $pathname $releaseid $revision\n"); if ($index) { my $fileid = $index->fileid($pathname, $revision); @@ -81,7 +81,7 @@ $index->emptycache(); print(STDERR "--- $pathname $fileid\n"); - my $path = $files->tmpfile($pathname, $release); + my $path = $files->tmpfile($pathname, $releaseid); $lang->referencefile($pathname, $path, $fileid, $index, $config); $index->setfilereferenced($fileid); Index: Common.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Common.pm,v retrieving revision 1.61 retrieving revision 1.62 diff -u -d -r1.61 -r1.62 --- Common.pm 9 May 2009 21:57:34 -0000 1.61 +++ Common.pm 10 May 2009 11:54:29 -0000 1.62 @@ -27,13 +27,13 @@ require Exporter; use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS - $files $index $config $pathname $identifier $release + $files $index $config $pathname $identifier $releaseid $HTTP $wwwdebug $tmpcounter); @ISA = qw(Exporter); @EXPORT = qw($files $index $config &fatal); -@EXPORT_OK = qw($files $index $config $pathname $identifier $release +@EXPORT_OK = qw($files $index $config $pathname $identifier $releaseid $HTTP &warning &fatal &abortall &fflush &urlargs &fileref &idref &incref &htmlquote &freetextmarkup &markupfile @@ -156,7 +156,7 @@ foreach $dir (@paths) { $dir =~ s/\/+$//; $path = $config->mappath($dir . "/" . $file); - return &fileref($name, $css, $path) if $files->isfile($path, $release); + return &fileref($name, $css, $path) if $files->isfile($path, $releaseid); } @@ -265,7 +265,7 @@ $ltag[3] .= " "; my @itag = &idref(1, "fid", 1) =~ /^(.*=)1(\">)1(<\/a>)$/; - my $lang = new LXR::Lang($pathname, $release, @itag); + my $lang = new LXR::Lang($pathname, $releaseid, @itag); # A source code file if ($lang) { @@ -376,7 +376,7 @@ while ($node =~ s|/[^/]+/\.\./|/|g) { } $node =~ s|/\.\./|/|g; - $node .= '/' if $files->isdir($node, $release); + $node .= '/' if $files->isdir($node, $releaseid); $node =~ s|//+|/|g; return $node; @@ -395,7 +395,7 @@ # Todo: check lxr.conf. - my $time = $files->getfiletime($pathname, $release); + my $time = $files->getfiletime($pathname, $releaseid); my $time2 = (stat($config->confpath))[9]; $time = $time2 if !defined $time or $time2 > $time; @@ -504,8 +504,8 @@ delete $HTTP->{'param'}->{$_}; } - $release = clean_release($config->variable('v')); - $config->variable('v', $release); # put back into config obj + $releaseid = clean_release($config->variable('v')); + $config->variable('v', $releaseid); # put back into config obj $HTTP->{'param'}->{'file'} = clean_path($HTTP->{'param'}->{'file'}); $pathname = fixpaths($HTTP->{'path_info'} || $HTTP->{'param'}->{'file'}); @@ -514,15 +514,15 @@ } sub clean_release { - my $release = shift; + my $releaseid = shift; my @rels= $config->varrange('v'); my %test; @test{@rels} = undef; - if(!exists $test{$release}) { - $release = $config->vardefault('v'); + if(!exists $test{$releaseid}) { + $releaseid = $config->vardefault('v'); } - return $release; + return $releaseid; } sub clean_identifier { |
From: AdrianIssott <adr...@us...> - 2009-05-10 11:54:36
|
Update of /cvsroot/lxr/lxr/lib/LXR/Files In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv3821/lib/LXR/Files Modified Files: CVS.pm BK.pm Plain.pm GIT.pm Log Message: Feature 1691378 (Rearchitect the DB backends) Part X * Renamed lxr_release.rel -> releaseid for Mysql * Renamed lxr_release.release -> releaseid for Oracle and Postgres * Renamed $release -> $releaseid generally Index: CVS.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Files/CVS.pm,v retrieving revision 1.35 retrieving revision 1.36 diff -u -d -r1.35 -r1.36 --- CVS.pm 24 Mar 2009 20:04:23 -0000 1.35 +++ CVS.pm 10 May 2009 11:54:29 -0000 1.36 @@ -52,26 +52,26 @@ } sub filerev { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; - if ($release =~ /rev_([\d\.]+)/) { + if ($releaseid =~ /rev_([\d\.]+)/) { return $1; - } elsif ($release =~ /^([\d\.]+)$/) { + } elsif ($releaseid =~ /^([\d\.]+)$/) { return $1; } else { $self->parsecvs($filename); - return $cvs{'header'}{'symbols'}{$release}; + return $cvs{'header'}{'symbols'}{$releaseid}; } } sub getfiletime { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; - return undef if $self->isdir($filename, $release); + return undef if $self->isdir($filename, $releaseid); $self->parsecvs($filename); - my $rev = $self->filerev($filename, $release); + my $rev = $self->filerev($filename, $releaseid); return undef unless defined($rev); @@ -84,31 +84,31 @@ } sub getfilesize { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; - return length($self->getfile($filename, $release)); + return length($self->getfile($filename, $releaseid)); } sub getfile { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; - my $fileh = $self->getfilehandle($filename, $release); + my $fileh = $self->getfilehandle($filename, $releaseid); return undef unless $fileh; return join('', $fileh->getlines); } sub getannotations { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; $self->parsecvs($filename); - my $rev = $self->filerev($filename, $release); + my $rev = $self->filerev($filename, $releaseid); return () unless defined($rev); my $hrev = $cvs{'header'}{'head'}; my $lrev; my @anno; - my $headfh = $self->getfilehandle($filename, $release); + my $headfh = $self->getfilehandle($filename, $releaseid); my @head = $headfh->getlines; while (1) { @@ -156,19 +156,19 @@ } sub getfilehandle { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; my ($fileh); $self->parsecvs($filename); - my $rev = $self->filerev($filename, $release); + my $rev = $self->filerev($filename, $releaseid); return undef unless defined($rev); - return undef unless defined($self->toreal($filename, $release)); + return undef unless defined($self->toreal($filename, $releaseid)); $rev =~ /([\d\.]*)/; $rev = $1; # untaint - my $clean_filename = $self->cleanstring($self->toreal($filename, $release)); + my $clean_filename = $self->cleanstring($self->toreal($filename, $releaseid)); $clean_filename =~ /(.*)/; $clean_filename = $1; # technically untaint here (cleanstring did the real untainting) @@ -211,10 +211,10 @@ } sub tmpfile { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; my ($tmp, $buf); - $buf = $self->getfile($filename, $release); + $buf = $self->getfile($filename, $releaseid); return undef unless defined($buf); $tmp = $config->tmpdir . '/lxrtmp.' . time . '.' . $$ . '.' . &LXR::Common::tmpcounter; @@ -226,10 +226,10 @@ } sub dirempty { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; my ($node, @dirs, @files); my $DIRH = new IO::Handle; - my $real = $self->toreal($pathname, $release); + my $real = $self->toreal($pathname, $releaseid); opendir($DIRH, $real) || return 1; while (defined($node = readdir($DIRH))) { @@ -245,20 +245,20 @@ closedir($DIRH); foreach $node (@files) { - return 0 if $self->filerev($pathname . $node, $release); + return 0 if $self->filerev($pathname . $node, $releaseid); } foreach $node (@dirs) { - return 0 unless $self->dirempty($pathname . $node, $release); + return 0 unless $self->dirempty($pathname . $node, $releaseid); } return 1; } sub getdir { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; my ($node, @dirs, @files); my $DIRH = new IO::Handle; - my $real = $self->toreal($pathname, $release); + my $real = $self->toreal($pathname, $releaseid); opendir($DIRH, $real) || return (); FILE: while (defined($node = readdir($DIRH))) { @@ -269,11 +269,11 @@ next FILE if $node eq $ignoredir; } if ($node eq 'Attic') { - push(@files, $self->getdir($pathname . $node . '/', $release)); + push(@files, $self->getdir($pathname . $node . '/', $releaseid)); } else { push(@dirs, $node . '/') - unless defined($release) - && $self->dirempty($pathname . $node . '/', $release); + unless defined($releaseid) + && $self->dirempty($pathname . $node . '/', $releaseid); } } elsif ($node =~ /(.*),v$/) { if (!$$LXR::Common::HTTP{'param'}{'showattic'}) { @@ -281,14 +281,14 @@ # you can't just check for 'Attic' because for certain versions the file is alive even if in Attic $self->parsecvs($pathname . substr($node, 0, length($node) - 2)) ; # substr is to remove the ',v' - my $rev = $cvs{'header'}{'symbols'}{$release}; + my $rev = $cvs{'header'}{'symbols'}{$releaseid}; if ($cvs{'branch'}{$rev}{'state'} eq "dead") { next; } } push(@files, $1) - if !defined($release) - || $self->getfiletime($pathname . $1, $release); + if !defined($releaseid) + || $self->getfiletime($pathname . $1, $releaseid); } } closedir($DIRH); @@ -297,7 +297,7 @@ } sub toreal { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; my $real = $self->{'rootpath'} . $pathname; # nearly all (if not all) method calls eventually call toreal(), so this is a good place to block file access @@ -311,7 +311,7 @@ # you can't just check for 'Attic' because for certain versions the file is alive even if in Attic $self->parsecvs($pathname); - my $rev = $cvs{'header'}{'symbols'}{$release}; + my $rev = $cvs{'header'}{'symbols'}{$releaseid}; if ($cvs{'branch'}{$rev}{'state'} eq "dead") { return undef; } @@ -345,21 +345,21 @@ } sub isdir { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; - return -d $self->toreal($pathname, $release); + return -d $self->toreal($pathname, $releaseid); } sub isfile { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; - return -f $self->toreal($pathname, $release); + return -f $self->toreal($pathname, $releaseid); } sub getindex { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; - my $index = $self->getfile($pathname, $release); + my $index = $self->getfile($pathname, $releaseid); return $index =~ /\n(\S*)\s*\n\t-\s*([^\n]*)/gs; } Index: BK.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Files/BK.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- BK.pm 20 Dec 2006 19:49:29 -0000 1.4 +++ BK.pm 10 May 2009 11:54:29 -0000 1.5 @@ -50,21 +50,21 @@ # sub getdir { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; - $self->fill_cache($release); + $self->fill_cache($releaseid); $pathname = canonise($pathname); $pathname = File::Spec->rootdir() if $pathname eq ''; - my @nodes = keys %{ $tree_cache{$release}->{$pathname} }; + my @nodes = keys %{ $tree_cache{$releaseid}->{$pathname} }; my @dirs = grep m!/$!, @nodes; my @files = grep !m!/$!, @nodes; return (sort(@dirs), sort(@files)); } sub getfile { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; $pathname = canonise($pathname); - my $fileh = $self->getfilehandle($pathname, $release); + my $fileh = $self->getfilehandle($pathname, $releaseid); return undef unless $fileh; my $buffer = join('', $fileh->getlines); @@ -73,11 +73,11 @@ } sub getfilehandle { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; $pathname = canonise($pathname); my $fileh = undef; - if ($self->file_exists($pathname, $release)) { - my $info = $self->getfileinfo($pathname, $release); + if ($self->file_exists($pathname, $releaseid)) { + my $info = $self->getfileinfo($pathname, $releaseid); my $ver = $info->{'revision'}; my $where = $info->{'curpath'}; $fileh = $self->openbkcommand("bk get -p -r$ver $where 2>/dev/null |"); @@ -86,16 +86,16 @@ } sub filerev { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; - my $info = $self->getfileinfo($filename, $release); + my $info = $self->getfileinfo($filename, $releaseid); return sha1_hex($info->{'curpath'} . '-' . $info->{'revision'}); } sub getfiletime { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; - my $info = $self->getfileinfo($pathname, $release); + my $info = $self->getfileinfo($pathname, $releaseid); return undef if !defined $info; if (!defined($info->{'filetime'})) { @@ -112,22 +112,22 @@ } sub getfilesize { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; - my $info = $self->getfileinfo($pathname, $release); + my $info = $self->getfileinfo($pathname, $releaseid); return undef if !defined($info); if (!defined($info->{'filesize'})) { - $info->{'filesize'} = length($self->getfile($pathname, $release)); + $info->{'filesize'} = length($self->getfile($pathname, $releaseid)); } return $info->{'filesize'}; } sub getauthor { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; - my $info = $self->getfileinfo($pathname, $release); + my $info = $self->getfileinfo($pathname, $releaseid); return undef if !defined $info; if (!defined($info->{'author'})) { @@ -158,24 +158,24 @@ } sub isdir { - my ($self, $pathname, $release) = @_; - $self->fill_cache($release); + my ($self, $pathname, $releaseid) = @_; + $self->fill_cache($releaseid); $pathname = canonise($pathname); - my $info = $tree_cache{$release}{$pathname}; + my $info = $tree_cache{$releaseid}{$pathname}; return (defined($info)); } sub isfile { - my ($self, $pathname, $release) = @_; - my $info = $self->getfileinfo($pathname, $release); + my ($self, $pathname, $releaseid) = @_; + my $info = $self->getfileinfo($pathname, $releaseid); return (defined($info)); } sub tmpfile { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; my ($tmp, $buf); - $buf = $self->getfile($filename, $release); + $buf = $self->getfile($filename, $releaseid); return undef unless defined($buf); $tmp = @@ -202,12 +202,12 @@ } sub fill_cache { - my ($self, $release) = @_; + my ($self, $releaseid) = @_; - return if (defined $tree_cache{$release}); + return if (defined $tree_cache{$releaseid}); # Not in cache, so need to build - my @all_entries = $self->get_tree($release); + my @all_entries = $self->get_tree($releaseid); $memcachecount++; my %newtree = (); @@ -233,32 +233,32 @@ $newtree{ File::Spec->rootdir() } = $newtree{''}; delete $newtree{''}; - $tree_cache{$release} = \%newtree; + $tree_cache{$releaseid} = \%newtree; } sub get_tree { - my ($self, $release) = @_; + my ($self, $releaseid) = @_; # Return entire tree as provided by 'bk rset' # First, check if cache exists my $fileh = new IO::File; - if (-r $self->cachename($release)) { - $fileh->open($self->cachename($release)) or die "Whoops, can't open cached version"; + if (-r $self->cachename($releaseid)) { + $fileh->open($self->cachename($releaseid)) or die "Whoops, can't open cached version"; } else { # This command provide 3 part output - the current filename, the historical filename & the revision - $fileh = $self->openbkcommand("bk rset -h -l$release 2>/dev/null |"); + $fileh = $self->openbkcommand("bk rset -h -l$releaseid 2>/dev/null |"); my $line_to_junk = <$fileh>; # Remove the Changelist|Changelist line at start # Now create the cached copy if we can - if(open(CACHE, ">", $self->cachename($release))) { + if(open(CACHE, ">", $self->cachename($releaseid))) { $diskcachecount++; my @data = <$fileh>; close $fileh; print CACHE @data; close CACHE; $fileh = new IO::File; - $fileh->open($self->cachename($release)) or die "Couldn't open cached version!"; + $fileh->open($self->cachename($releaseid)) or die "Couldn't open cached version!"; } } @@ -273,8 +273,8 @@ } sub cachename { - my ($self, $release) = @_; - return $self->{'cache'}."/treecache-".$release; + my ($self, $releaseid) = @_; + return $self->{'cache'}."/treecache-".$releaseid; } sub canonise { @@ -285,21 +285,21 @@ # Check that the specified pathname, version combination exists in repository sub file_exists { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; # Look the file up in the treecache - return defined($self->getfileinfo($pathname, $release)); + return defined($self->getfileinfo($pathname, $releaseid)); } sub getfileinfo { - my ($self, $pathname, $release) = @_; - $self->fill_cache($release); # Normally expect this to be present anyway + my ($self, $pathname, $releaseid) = @_; + $self->fill_cache($releaseid); # Normally expect this to be present anyway $pathname = canonise($pathname); my ($vol, $path, $file) = File::Spec->splitpath($pathname); $path = File::Spec->rootdir() if $path eq ''; - return $tree_cache{$release}{$path}{$file}; + return $tree_cache{$releaseid}{$path}{$file}; } 1; Index: Plain.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Files/Plain.pm,v retrieving revision 1.25 retrieving revision 1.26 diff -u -d -r1.25 -r1.26 --- Plain.pm 2 Nov 2005 23:39:55 -0000 1.25 +++ Plain.pm 10 May 2009 11:54:29 -0000 1.26 @@ -35,52 +35,52 @@ } sub filerev { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; - # return $release; + # return $releaseid; return - join("-", $self->getfiletime($filename, $release), $self->getfilesize($filename, $release)); + join("-", $self->getfiletime($filename, $releaseid), $self->getfilesize($filename, $releaseid)); } sub getfiletime { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; - return (stat($self->toreal($filename, $release)))[9]; + return (stat($self->toreal($filename, $releaseid)))[9]; } sub getfilesize { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; - return -s $self->toreal($filename, $release); + return -s $self->toreal($filename, $releaseid); } sub getfile { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; my ($buffer); local ($/) = undef; - open(FILE, "<", $self->toreal($filename, $release)) || return undef; + open(FILE, "<", $self->toreal($filename, $releaseid)) || return undef; $buffer = <FILE>; close(FILE); return $buffer; } sub getfilehandle { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; my ($fileh); - $fileh = new FileHandle($self->toreal($filename, $release)); + $fileh = new FileHandle($self->toreal($filename, $releaseid)); return $fileh; } sub tmpfile { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; my ($tmp, $tries); local ($/) = undef; $tmp = $config->tmpdir . '/lxrtmp.' . time . '.' . $$ . '.' . &LXR::Common::tmpcounter; open(TMP, "> $tmp") || return undef; - open(FILE, "<", $self->toreal($filename, $release)) || return undef; + open(FILE, "<", $self->toreal($filename, $releaseid)) || return undef; print(TMP <FILE>); close(FILE); close(TMP); @@ -97,14 +97,14 @@ } sub getdir { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; my ($dir, $node, @dirs, @files); if($pathname !~ m!/$!) { $pathname = $pathname . '/'; } - $dir = $self->toreal($pathname, $release); + $dir = $self->toreal($pathname, $releaseid); opendir(DIR, $dir) || return (); FILE: while (defined($node = readdir(DIR))) { next if $node =~ /^\.|~$|\.orig$/; @@ -130,32 +130,32 @@ # other possible File classes.) sub toreal { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; # nearly all (if not all) method calls eventually call toreal(), so this is a good place to block file access foreach my $ignoredir ($config->ignoredirs) { return undef if $pathname =~ m|/$ignoredir/|; } - return ($self->{'rootpath'} . $release . $pathname); + return ($self->{'rootpath'} . $releaseid . $pathname); } sub isdir { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; - return -d $self->toreal($pathname, $release); + return -d $self->toreal($pathname, $releaseid); } sub isfile { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; - return -f $self->toreal($pathname, $release); + return -f $self->toreal($pathname, $releaseid); } sub getindex { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; my ($index, %index); - my $indexname = $self->toreal($pathname, $release) . "00-INDEX"; + my $indexname = $self->toreal($pathname, $releaseid) . "00-INDEX"; if (-f $indexname) { open(INDEX, "<", $indexname) Index: GIT.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Files/GIT.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- GIT.pm 21 Dec 2006 09:33:36 -0000 1.3 +++ GIT.pm 10 May 2009 11:54:29 -0000 1.4 @@ -47,39 +47,39 @@ } sub isdir { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; $pathname =~ s/^\///; if ($pathname eq "") { return 1 == 1; } else { my $repo = Git->repository (Directory => "$self->{'rootpath'}"); - my $line = $repo->command_oneline ("ls-tree", "$release", "$pathname"); + my $line = $repo->command_oneline ("ls-tree", "$releaseid", "$pathname"); return $line =~ m/^\d+ tree .*$/; } } sub isfile { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; $pathname =~ s/^\///; if ($pathname eq "") { return 1 == 0; } else { my $repo = Git->repository (Directory => "$self->{'rootpath'}"); - my $line = $repo->command_oneline ("ls-tree", "$release", "$pathname"); + my $line = $repo->command_oneline ("ls-tree", "$releaseid", "$pathname"); return $line =~ m/^\d+ blob .*$/; } } sub getdir { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; my ($dir, $node, @dirs, @files); my $repo = Git->repository (Directory => "$self->{'rootpath'}"); $pathname =~ s/^\///; - my ($fh, $c) = $repo->command_output_pipe ("ls-tree", "$release", "$pathname"); + my ($fh, $c) = $repo->command_output_pipe ("ls-tree", "$releaseid", "$pathname"); while (<$fh>) { if (m/(\d+) (\w+) ([[:xdigit:]]+)\t(.*)/) { my ($entrymode, $entrytype, $objectid, $entryname) = ($1, $2, $3, $4); @@ -111,12 +111,12 @@ } sub getfilesize { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; my $repo = Git->repository (Directory => "$self->{'rootpath'}"); $filename =~ s/^\///; - my $sha1hashline = $repo->command_oneline ("ls-tree", "$release", "$filename"); + my $sha1hashline = $repo->command_oneline ("ls-tree", "$releaseid", "$filename"); if ($sha1hashline =~ m/\d+ blob ([[:xdigit:]]+)\t.*/) { return $repo->command_oneline ("cat-file", "-s", "$1"); @@ -126,12 +126,12 @@ } sub tmpfile { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; my ($tmp, $fileh); $tmp = $config->tmpdir . '/lxrtmp.' . time . '.' . $$ . '.' . &LXR::Common::tmpcounter; open (TMP, "> $tmp") || return undef; - $fileh = $self->getfilehandle ($filename, $release); + $fileh = $self->getfilehandle ($filename, $releaseid); print (TMP <$fileh>); close ($fileh); close (TMP); @@ -140,12 +140,12 @@ } sub filerev { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; my $repo = Git->repository (Directory => "$self->{'rootpath'}"); $filename =~ s/^\///; - my $sha1hashline = $repo->command_oneline ("ls-tree", "$release", "$filename"); + my $sha1hashline = $repo->command_oneline ("ls-tree", "$releaseid", "$filename"); if ($sha1hashline =~ m/\d+ blob ([[:xdigit:]]+)\t.*/) { return $1; @@ -155,7 +155,7 @@ } sub getfiletime { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; $filename =~ s/^\///; @@ -167,7 +167,7 @@ } my $repo = Git->repository (Directory => "$self->{'rootpath'}"); - my $lastcommitline = $repo->command_oneline ("log", "--max-count=1", "--pretty=oneline", "$release", "--", "$filename"); + my $lastcommitline = $repo->command_oneline ("log", "--max-count=1", "--pretty=oneline", "$releaseid", "--", "$filename"); if ($lastcommitline =~ m/([[:xdigit:]]+) /) { my $commithash = $1; @@ -184,12 +184,12 @@ } sub getfilehandle { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; my $repo = Git->repository (Directory => "$self->{'rootpath'}"); $filename =~ s/^\///; - my $sha1hashline = $repo->command_oneline ("ls-tree", "$release", "$filename"); + my $sha1hashline = $repo->command_oneline ("ls-tree", "$releaseid", "$filename"); if ($sha1hashline =~ m/^\d+ blob ([[:xdigit:]]+)\t.*/) { my ($fh, $c) = $repo->command_output_pipe ("cat-file", "blob", "$1"); @@ -200,14 +200,14 @@ } sub getannotations { - my ($self, $filename, $release) = @_; + my ($self, $filename, $releaseid) = @_; if ($self->{'do_annotations'}) { my $repo = Git->repository (Directory => "$self->{'rootpath'}"); my @revlist = (); $filename =~ s/^\///; - my (@lines, $c) = $repo->command ("blame", "-l", "$release", "--", "$filename"); + my (@lines, $c) = $repo->command ("blame", "-l", "$releaseid", "--", "$filename"); foreach my $line (@lines) { if ($line =~ m/^([[:xdigit:]]+) .*/) { @@ -224,10 +224,10 @@ } sub getauthor { - my ($self, $pathname, $release) = @_; + my ($self, $pathname, $releaseid) = @_; # - # Note that $release is a real commit this time + # Note that $releaseid is a real commit this time # (returned by getannotations() above). This is # _not_ a tag name! # @@ -238,7 +238,7 @@ $pathname =~ s/^\///; - my (@lines, $c) = $repo->command ("cat-file", "commit", "$release"); + my (@lines, $c) = $repo->command ("cat-file", "commit", "$releaseid"); foreach my $line (@lines) { if ($line =~ m/^author (.*) </) { return $1 |
From: AdrianIssott <adr...@us...> - 2009-05-10 11:54:33
|
Update of /cvsroot/lxr/lxr/lib/LXR/Index In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv3821/lib/LXR/Index Modified Files: Mysql.pm Oracle.pm DB.pm Postgres.pm Log Message: Feature 1691378 (Rearchitect the DB backends) Part X * Renamed lxr_release.rel -> releaseid for Mysql * Renamed lxr_release.release -> releaseid for Oracle and Postgres * Renamed $release -> $releaseid generally Index: Mysql.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Mysql.pm,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- Mysql.pm 9 May 2009 21:57:34 -0000 1.30 +++ Mysql.pm 10 May 2009 11:54:29 -0000 1.31 @@ -73,7 +73,7 @@ . "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 = ? " + . "and s.symname = ? and r.releaseid = ? " . "order by f.filename, i.line, d.declaration"); $self->{indexes_insert} = $self->{dbh}->prepare( @@ -81,9 +81,9 @@ ); $self->{releases_select} = - $self->{dbh}->prepare("select * from ${prefix}releases where fileid = ? and rel = ?"); + $self->{dbh}->prepare("select * from ${prefix}releases where fileid = ? and releaseid = ?"); $self->{releases_insert} = - $self->{dbh}->prepare("insert into ${prefix}releases (fileid, rel) values (?, ?)"); + $self->{dbh}->prepare("insert into ${prefix}releases (fileid, releaseid) values (?, ?)"); $self->{status_select} = $self->{dbh}->prepare("select status from ${prefix}status where fileid = ?"); @@ -100,7 +100,7 @@ . "where s.symid = u.symid " . "and f.fileid = u.fileid " . "and u.fileid = r.fileid " - . "and s.symname = ? and r.rel = ? " + . "and s.symname = ? and r.releaseid = ? " . "order by f.filename, u.line"); $self->{decl_select} = $self->{dbh}->prepare( @@ -113,24 +113,24 @@ $self->{dbh}->prepare("delete from i " . "using ${prefix}indexes i, ${prefix}releases r " . "where i.fileid = r.fileid " - . "and r.rel = ?"); + . "and r.releaseid = ?"); $self->{delete_usage} = $self->{dbh}->prepare("delete from u " . "using ${prefix}usage u, ${prefix}releases r " . "where u.fileid = r.fileid " - . "and r.rel = ?"); + . "and r.releaseid = ?"); $self->{delete_status} = $self->{dbh}->prepare("delete from s " . "using ${prefix}status s, ${prefix}releases r " . "where s.fileid = r.fileid " - . "and r.rel = ?"); + . "and r.releaseid = ?"); $self->{delete_releases} = - $self->{dbh}->prepare("delete from ${prefix}releases where rel = ?"); + $self->{dbh}->prepare("delete from ${prefix}releases where releaseid = ?"); $self->{delete_files} = $self->{dbh}->prepare("delete from f " . "using ${prefix}files f, ${prefix}releases r " . "where f.fileid = r.fileid " - . "and r.rel = ?"); + . "and r.releaseid = ?"); return $self; } @@ -185,13 +185,13 @@ } sub setfilerelease { - my ($self, $fileid, $release) = @_; + my ($self, $fileid, $releaseid) = @_; - my $rows = $self->{releases_select}->execute($fileid + 0, $release); + my $rows = $self->{releases_select}->execute($fileid + 0, $releaseid); $self->{releases_select}->finish(); unless ($rows > 0) { - $self->{releases_insert}->execute($fileid, $release); + $self->{releases_insert}->execute($fileid, $releaseid); } } @@ -251,10 +251,10 @@ } sub symdeclarations { - my ($self, $symname, $release) = @_; + my ($self, $symname, $releaseid) = @_; my ($rows, @ret, @row); - $rows = $self->{indexes_select}->execute("$symname", "$release"); + $rows = $self->{indexes_select}->execute("$symname", "$releaseid"); while (@row = $self->{indexes_select}->fetchrow_array) { $row[3] &&= $self->symname($row[3]); # convert the symid push(@ret, [@row]); @@ -272,10 +272,10 @@ } sub symreferences { - my ($self, $symname, $release) = @_; + my ($self, $symname, $releaseid) = @_; my ($rows, @ret, @row); - $rows = $self->{usage_select}->execute("$symname", "$release"); + $rows = $self->{usage_select}->execute("$symname", "$releaseid"); while (@row = $self->{usage_select}->fetchrow_array) { push(@ret, [@row]); @@ -293,15 +293,15 @@ } sub issymbol { - my ($self, $symname, $release) = @_; # TODO make full use of $release + my ($self, $symname, $releaseid) = @_; # TODO make full use of $releaseid my ($symid); - $symid = $symcache{$release}{$symname}; + $symid = $symcache{$releaseid}{$symname}; unless (defined($symid)) { $self->{symbols_byname}->execute($symname); ($symid) = $self->{symbols_byname}->fetchrow_array(); $self->{symbols_byname}->finish(); - $symcache{$release}{$symname} = $symid; + $symcache{$releaseid}{$symname} = $symid; } return $symid; @@ -363,15 +363,15 @@ } sub purge { - my ($self, $release) = @_; + my ($self, $releaseid) = @_; # 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); + $self->{delete_indexes}->execute($releaseid); + $self->{delete_usage}->execute($releaseid); + $self->{delete_status}->execute($releaseid); + $self->{delete_releases}->execute($releaseid); + $self->{delete_files}->execute($releaseid); } 1; Index: Oracle.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Oracle.pm,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- Oracle.pm 9 May 2009 21:57:34 -0000 1.20 +++ Oracle.pm 10 May 2009 11:54:29 -0000 1.21 @@ -71,7 +71,7 @@ . "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 = ? " + . "and s.symname = ? and r.releaseid = ? " . "order by f.filename, i.line, d.declaration"); $self->{indexes_insert} = $self->{dbh}->prepare( @@ -79,9 +79,9 @@ ); $self->{releases_select} = - $self->{dbh}->prepare("select * from ${prefix}releases where fileid = ? and release = ?"); + $self->{dbh}->prepare("select * from ${prefix}releases where fileid = ? and releaseid = ?"); $self->{releases_insert} = - $self->{dbh}->prepare("insert into ${prefix}releases (fileid, release) values (?, ?)"); + $self->{dbh}->prepare("insert into ${prefix}releases (fileid, releaseid) values (?, ?)"); $self->{status_select} = $self->{dbh}->prepare("select status from ${prefix}status where fileid = ?"); @@ -100,7 +100,7 @@ . "where s.symid = u.symid " . "and f.fileid = u.fileid " . "and u.fileid = r.fileid " - . "and s.symname = ? and r.release = ? " + . "and s.symname = ? and r.releaseid = ? " . "order by f.filename, u.line"); $self->{decl_select} = $self->{dbh}->prepare( @@ -112,21 +112,21 @@ $self->{delete_indexes} = $self->{dbh}->prepare("delete from ${prefix}indexes " . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); + . " (select fileid from ${prefix}releases where releaseid = ?)"); $self->{delete_usage} = $self->{dbh}->prepare("delete from ${prefix}usage " . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); + . " (select fileid from ${prefix}releases where releaseid = ?)"); $self->{delete_status} = $self->{dbh}->prepare("delete from ${prefix}status " . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); + . " (select fileid from ${prefix}releases where releaseid = ?)"); $self->{delete_releases} = - $self->{dbh}->prepare("delete from ${prefix}releases where release = ?"); + $self->{dbh}->prepare("delete from ${prefix}releases where releaseid = ?"); $self->{delete_files} = $self->{dbh}->prepare("delete from ${prefix}files " . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); + . " (select fileid from ${prefix}releases where releaseid = ?)"); return $self; } @@ -181,13 +181,13 @@ } sub setfilerelease { - my ($self, $fileid, $release) = @_; + my ($self, $fileid, $releaseid) = @_; - my $rows = $self->{releases_select}->execute($fileid + 0, $release); + my $rows = $self->{releases_select}->execute($fileid + 0, $releaseid); $self->{releases_select}->finish(); unless ($rows > 0) { - $self->{releases_insert}->execute($fileid, $release); + $self->{releases_insert}->execute($fileid, $releaseid); } } @@ -247,10 +247,10 @@ } sub symdeclarations { - my ($self, $symname, $release) = @_; + my ($self, $symname, $releaseid) = @_; my ($rows, @ret, @row); - $rows = $self->{indexes_select}->execute("$symname", "$release"); + $rows = $self->{indexes_select}->execute("$symname", "$releaseid"); while (@row = $self->{indexes_select}->fetchrow_array) { $row[3] &&= $self->symname($row[3]); # convert the symid push(@ret, [@row]); @@ -268,10 +268,10 @@ } sub symreferences { - my ($self, $symname, $release) = @_; + my ($self, $symname, $releaseid) = @_; my ($rows, @ret, @row); - $rows = $self->{usage_select}->execute("$symname", "$release"); + $rows = $self->{usage_select}->execute("$symname", "$releaseid"); while (@row = $self->{usage_select}->fetchrow_array) { push(@ret, [@row]); @@ -289,15 +289,15 @@ } sub issymbol { - my ($self, $symname, $release) = @_; # TODO make full use of $release + my ($self, $symname, $releaseid) = @_; # TODO make full use of $releaseid my ($symid); - $symid = $symcache{$release}{$symname}; + $symid = $symcache{$releaseid}{$symname}; unless (defined($symid)) { $self->{symbols_byname}->execute($symname); ($symid) = $self->{symbols_byname}->fetchrow_array(); $self->{symbols_byname}->finish(); - $symcache{$release}{$symname} = $symid; + $symcache{$releaseid}{$symname} = $symid; } return $symid; @@ -359,15 +359,15 @@ } sub purge { - my ($self, $release) = @_; + my ($self, $releaseid) = @_; # 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); + $self->{delete_indexes}->execute($releaseid); + $self->{delete_usage}->execute($releaseid); + $self->{delete_status}->execute($releaseid); + $self->{delete_releases}->execute($releaseid); + $self->{delete_files}->execute($releaseid); } 1; Index: DB.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/DB.pm,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- DB.pm 9 May 2009 21:57:34 -0000 1.17 +++ DB.pm 10 May 2009 11:54:29 -0000 1.18 @@ -54,14 +54,14 @@ # Returns array of (fileid, line, type) sub symdeclarations { - my ($self, $symname, $release) = @_; + my ($self, $symname, $releaseid) = @_; my (@d, $f); foreach $f (split(/\0/, $$self{'indexes'}{ $self->symid($symname) })) { my ($fi, $l, $t, $s) = split(/\t/, $f); my %r = map { ($_ => 1) } split(/;/, $self->{'releases'}{$fi}); - next unless $r{$release}; + next unless $r{$releaseid}; push(@d, [ $self->filename($fi), $l, $t, $s ]); } @@ -69,7 +69,7 @@ } sub symreferences { - my ($self, $symname, $release) = @_; + my ($self, $symname, $releaseid) = @_; return (); } @@ -98,11 +98,11 @@ return 1; } -# Indicate that this filerevision is part of this release +# Indicate that this filerevision is part of this releaseid sub setfilerelease { - my ($self, $fileid, $release) = @_; + my ($self, $fileid, $releaseid) = @_; - $self->{'releases'}{$fileid} .= $release . ";"; + $self->{'releases'}{$fileid} .= $releaseid . ";"; } sub symid { @@ -113,7 +113,7 @@ } sub issymbol { - my ($self, $symname, $release) = @_; + my ($self, $symname, $releaseid) = @_; return $$self{'indexes'}{ $self->symid($symname) }; } Index: Postgres.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Postgres.pm,v retrieving revision 1.31 retrieving revision 1.32 diff -u -d -r1.31 -r1.32 --- Postgres.pm 9 May 2009 21:57:34 -0000 1.31 +++ Postgres.pm 10 May 2009 11:54:29 -0000 1.32 @@ -77,14 +77,14 @@ . "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 = ? " + . "and s.symname = ? and r.releaseid = ? " . "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->{releases_select} = - $self->{dbh}->prepare("select * from ${prefix}releases where fileid = ? and release = ?"); + $self->{dbh}->prepare("select * from ${prefix}releases where fileid = ? and releaseid = ?"); $self->{releases_insert} = $self->{dbh}->prepare("insert into ${prefix}releases values (?, ?)"); @@ -103,7 +103,7 @@ . "where s.symid = u.symid " . "and f.fileid = u.fileid " . "and u.fileid = r.fileid " - . "and s.symname = ? and r.release = ? " + . "and s.symname = ? and r.releaseid = ? " . "order by f.filename, u.line"); $self->{declid_nextnum} = @@ -119,21 +119,21 @@ $self->{delete_indexes} = $self->{dbh}->prepare("delete from ${prefix}indexes " . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); + . " (select fileid from ${prefix}releases where releaseid = ?)"); $self->{delete_usage} = $self->{dbh}->prepare("delete from ${prefix}usage " . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); + . " (select fileid from ${prefix}releases where releaseid = ?)"); $self->{delete_status} = $self->{dbh}->prepare("delete from ${prefix}status " . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); + . " (select fileid from ${prefix}releases where releaseid = ?)"); $self->{delete_releases} = - $self->{dbh}->prepare("delete from ${prefix}releases where release = ?"); + $self->{dbh}->prepare("delete from ${prefix}releases where releaseid = ?"); $self->{delete_files} = $self->{dbh}->prepare("delete from ${prefix}files " . "where fileid in " - . " (select fileid from ${prefix}releases where release = ?)"); + . " (select fileid from ${prefix}releases where releaseid = ?)"); return $self; } @@ -199,15 +199,15 @@ } sub setfilerelease { - my ($self, $fileid, $release) = @_; + my ($self, $fileid, $releaseid) = @_; - $self->{releases_select}->execute($fileid + 0, $release); + $self->{releases_select}->execute($fileid + 0, $releaseid); my $firstrow = $self->{releases_select}->fetchrow_array(); # $self->{releases_select}->finish(); unless ($firstrow) { - $self->{releases_insert}->execute($fileid + 0, $release); + $self->{releases_insert}->execute($fileid + 0, $releaseid); $self->_commitIfLimit(); } } @@ -270,10 +270,10 @@ } sub symdeclarations { - my ($self, $symname, $release) = @_; + my ($self, $symname, $releaseid) = @_; my ($rows, @ret, @row); - $rows = $self->{indexes_select }->execute("$symname", "$release"); + $rows = $self->{indexes_select }->execute("$symname", "$releaseid"); while (@row = $self->{indexes_select }->fetchrow_array) { $row[3] &&= $self->symname($row[3]); # convert the symid @@ -298,10 +298,10 @@ } sub symreferences { - my ($self, $symname, $release) = @_; + my ($self, $symname, $releaseid) = @_; my ($rows, @ret, @row); - $rows = $self->{usage_select}->execute("$symname", "$release"); + $rows = $self->{usage_select}->execute("$symname", "$releaseid"); while (@row = $self->{usage_select}->fetchrow_array) { push(@ret, [@row]); @@ -320,7 +320,7 @@ } sub issymbol { - my ($self, $symname, $release) = @_; # TODO make full use of $release + my ($self, $symname, $releaseid) = @_; # TODO make full use of $releaseid unless (exists($symcache{$symname})) { $self->{symbols_byname}->execute($symname); @@ -383,15 +383,15 @@ } sub purge { - my ($self, $release) = @_; + my ($self, $releaseid) = @_; # 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); + $self->{delete_indexes}->execute($releaseid); + $self->{delete_usage}->execute($releaseid); + $self->{delete_status}->execute($releaseid); + $self->{delete_releases}->execute($releaseid); + $self->{delete_files}->execute($releaseid); $self->{dbh}->commit() or die "Commit failed: $DBI::errstr"; $self->{dbh}->begin_work() or die "begin_work failed: $DBI::errstr"; |
Update of /cvsroot/lxr/lxr In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv3821 Modified Files: ident find initdb-oracle.sql search Local.pm diff initdb-postgres genxref initdb-mysql source Log Message: Feature 1691378 (Rearchitect the DB backends) Part X * Renamed lxr_release.rel -> releaseid for Mysql * Renamed lxr_release.release -> releaseid for Oracle and Postgres * Renamed $release -> $releaseid generally Index: ident =================================================================== RCS file: /cvsroot/lxr/lxr/ident,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- ident 25 Apr 2009 20:40:24 -0000 1.23 +++ ident 10 May 2009 11:54:29 -0000 1.24 @@ -49,7 +49,7 @@ my $templ = shift; my $ret = ''; - my @refs = $index->symdeclarations($identifier, $release); + my @refs = $index->symdeclarations($identifier, $releaseid); my $file_hits = 0; my $last_file; @@ -86,7 +86,7 @@ my $templ = shift; my $ret = ''; - my @uses = $index->symreferences($identifier, $release); + my @uses = $index->symreferences($identifier, $releaseid); my $file_hits = 0; my $last_file; foreach my $ref (sort { $$a[0] cmp $$b[0] } @uses) { Index: find =================================================================== RCS file: /cvsroot/lxr/lxr/find,v retrieving revision 1.25 retrieving revision 1.26 diff -u -d -r1.25 -r1.26 --- find 8 Apr 2009 20:49:19 -0000 1.25 +++ find 10 May 2009 11:54:29 -0000 1.26 @@ -66,7 +66,7 @@ my @ret; if ($searchtext ne "") { - my $sourceroot = $config->sourceroot . '/' . $release . '/'; + my $sourceroot = $config->sourceroot . '/' . $releaseid . '/'; while (my $file = <$FILELISTING>) { chomp $file; $file =~ s/^$sourceroot//; @@ -113,21 +113,21 @@ my $FILELISTING; if ($config->swishdir and $config->swishbin) { - unless ($FILELISTING = new IO::File($config->swishdir . "/$release.filenames")) { + unless ($FILELISTING = new IO::File($config->swishdir . "/$releaseid.filenames")) { &warning( - "Version '$release' has not been indexed and is unavailable for searching<br>Could not open " + "Version '$releaseid' has not been indexed and is unavailable for searching<br>Could not open " . $config->swishdir - . "/$release.filenames."); + . "/$releaseid.filenames."); return; } } elsif ($config->glimpsedir and $config->glimpsebin) { unless ($FILELISTING = - new IO::File($config->glimpsedir . "/" . $release . "/.glimpse_filenames")) + new IO::File($config->glimpsedir . "/" . $releaseid . "/.glimpse_filenames")) { &warning( - "Version '$release' has not been indexed and is unavailable for searching<br>Could not open " + "Version '$releaseid' has not been indexed and is unavailable for searching<br>Could not open " . $config->glimpsedir - . "/$release/.glimpse_filenames."); + . "/$releaseid/.glimpse_filenames."); return; } } else { Index: initdb-oracle.sql =================================================================== RCS file: /cvsroot/lxr/lxr/initdb-oracle.sql,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- initdb-oracle.sql 19 Apr 2009 09:16:55 -0000 1.5 +++ initdb-oracle.sql 10 May 2009 11:54:29 -0000 1.6 @@ -90,8 +90,8 @@ create table lxr_releases ( fileid number, - release varchar2(250), - constraint pk_lxr_releases primary key (fileid,release), + releaseid varchar2(250), + constraint pk_lxr_releases primary key (fileid,releaseid), constraint fk_lxr_releases_fileid foreign key (fileid) references lxr_files(fileid) ); Index: search =================================================================== RCS file: /cvsroot/lxr/lxr/search,v retrieving revision 1.32 retrieving revision 1.33 diff -u -d -r1.32 -r1.33 --- search 21 Apr 2009 19:12:25 -0000 1.32 +++ search 10 May 2009 11:54:29 -0000 1.33 @@ -81,7 +81,7 @@ unless (open(GLIMPSE, "-|")) { open(STDERR, ">&STDOUT"); $! = ''; - exec($config->glimpsebin, "-i", "-H" , $config->glimpsedir . "/" . $release, + exec($config->glimpsebin, "-i", "-H" , $config->glimpsedir . "/" . $releaseid, '-y', '-n', $searchtext); print("Glimpse subprocess died unexpextedly: $!\n"); exit; @@ -107,7 +107,7 @@ if ($retval == 0) { my @ret; - my $sourceroot = $config->sourceroot . '/' . $release . '/'; + my $sourceroot = $config->sourceroot . '/' . $releaseid . '/'; my $i = 0; foreach my $glimpseline (@glimpselines) { last if ($i > $maxhits); @@ -141,10 +141,10 @@ sub swishsearch { my ($searchtext, $filetext, $advanced, $casesensitive) = @_; - my $swishIndex = $config->swishdir . "/" . $release . ".index"; + my $swishIndex = $config->swishdir . "/" . $releaseid . ".index"; if (!-e $swishIndex) { print "<p align='center'><i>"; - print "Version '$release' has not been indexed and is unavailable for searching."; + print "Version '$releaseid' has not been indexed and is unavailable for searching."; print "</i></p>"; return; } @@ -252,21 +252,21 @@ } elsif ($filetext ne "") { my $FILELISTING; if ($config->swishdir and $config->swishbin) { - unless ($FILELISTING = new IO::File($config->swishdir . "/$release.filenames")) { + unless ($FILELISTING = new IO::File($config->swishdir . "/$releaseid.filenames")) { &warning( - "Version '$release' has not been indexed and is unavailable for searching<br>Could not open " + "Version '$releaseid' has not been indexed and is unavailable for searching<br>Could not open " . $config->swishdir - . "/$release.filenames."); + . "/$releaseid.filenames."); return; } } elsif ($config->glimpsedir and $config->glimpsebin) { unless ($FILELISTING = - new IO::File($config->glimpsedir . "/" . $release . "/.glimpse_filenames")) + new IO::File($config->glimpsedir . "/" . $releaseid . "/.glimpse_filenames")) { &warning( - "Version '$release' has not been indexed and is unavailable for searching<br>Could not open " + "Version '$releaseid' has not been indexed and is unavailable for searching<br>Could not open " . $config->glimpsedir - . "/$release/.glimpse_filenames."); + . "/$releaseid/.glimpse_filenames."); return; } } else { @@ -275,7 +275,7 @@ ); return; } - my $sourceroot = $config->sourceroot . '/' . $release . '/'; + my $sourceroot = $config->sourceroot . '/' . $releaseid . '/'; while (<$FILELISTING>) { chomp; s/^$sourceroot//; Index: Local.pm =================================================================== RCS file: /cvsroot/lxr/lxr/Local.pm,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- Local.pm 21 Jul 2004 20:44:30 -0000 1.20 +++ Local.pm 10 May 2009 11:54:29 -0000 1.21 @@ -74,7 +74,7 @@ sub fdescexpand { my $filename = shift; my $dir = shift; - my $release = shift; + my $releaseid = shift; my $linecount = 0; my $copy = ""; local $desc = ""; @@ -91,7 +91,7 @@ return ("\ \;"); } - if ($fh = $files->getfilehandle($dir . $filename, $release)) { + if ($fh = $files->getfilehandle($dir . $filename, $releaseid)) { while (<$fh>) { $desc = $desc . $_; if ($linecount++ > 60) { @@ -280,13 +280,13 @@ # In Mozilla, if the directory has a README file look in it for lines # like the ones used in source code: "directoryname --- A short description" sub descexpand { - my ($templ, $node, $dir, $release) = @_; - if ($files->isdir($dir . $node, $release)) { + my ($templ, $node, $dir, $releaseid) = @_; + if ($files->isdir($dir . $node, $releaseid)) { return LXR::Common::expandtemplate($templ, - ('desctext' => sub { return dirdesc($dir . $node, $release); })); + ('desctext' => sub { return dirdesc($dir . $node, $releaseid); })); } else { return LXR::Common::expandtemplate($templ, - ('desctext' => sub { return fdescexpand($node, $dir, $release); })); + ('desctext' => sub { return fdescexpand($node, $dir, $releaseid); })); } } @@ -299,21 +299,21 @@ # possible make this work for randomly formatted files rather than # inventing strict rules which create gobbeldygook when they're broken. sub dirdesc { - my ($path, $release) = @_; - if ($files->isfile($path . "README.txt", $release)) { - descreadme($path . "README.txt", $release); - } elsif ($files->isfile($path . "README", $release)) { - descreadme($path . "README", $release); - } elsif ($files->isfile($path . "README.html", $release)) { - descreadmehtml($path . "README.html", $release); + my ($path, $releaseid) = @_; + if ($files->isfile($path . "README.txt", $releaseid)) { + descreadme($path . "README.txt", $releaseid); + } elsif ($files->isfile($path . "README", $releaseid)) { + descreadme($path . "README", $releaseid); + } elsif ($files->isfile($path . "README.html", $releaseid)) { + descreadmehtml($path . "README.html", $releaseid); } } sub descreadmehtml { - my ($file, $release) = @_; + my ($file, $releaseid) = @_; my $string = ""; - return if !($desc = $files->getfilehandle($file, $release)); + return if !($desc = $files->getfilehandle($file, $releaseid)); # undef $/; $string = <$desc>; @@ -346,7 +346,7 @@ } sub descreadme { - my ($file, $release) = @_; + my ($file, $releaseid) = @_; my $string = ""; @@ -359,7 +359,7 @@ my $minlines = 5; # Too small. Go back and add another paragraph. my $chopto = 10; # Truncate long READMEs to this length - return if !($desc = $files->getfilehandle($file, $release)); + return if !($desc = $files->getfilehandle($file, $releaseid)); # undef $/; $string = <$desc>; Index: diff =================================================================== RCS file: /cvsroot/lxr/lxr/diff,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- diff 8 Apr 2009 20:49:19 -0000 1.17 +++ diff 10 May 2009 11:54:29 -0000 1.18 @@ -84,7 +84,7 @@ my $origval = $config->variable($diffvar); my $origname = $pathname; - my $origtemp = $files->tmpfile($origname, $release); + my $origtemp = $files->tmpfile($origname, $releaseid); $config->variable($diffvar, $diffval); my $diffname = $config->mappath($pathname); Index: initdb-postgres =================================================================== RCS file: /cvsroot/lxr/lxr/initdb-postgres,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- initdb-postgres 6 May 2009 22:34:07 -0000 1.8 +++ initdb-postgres 10 May 2009 11:54:29 -0000 1.9 @@ -47,8 +47,8 @@ create table lxr_releases (fileid int references lxr_files, - release varchar, - primary key (fileid,release) + releaseid varchar, + primary key (fileid,releaseid) ); create table lxr_usage Index: genxref =================================================================== RCS file: /cvsroot/lxr/lxr/genxref,v retrieving revision 1.42 retrieving revision 1.43 diff -u -d -r1.42 -r1.43 --- genxref 9 May 2009 21:57:34 -0000 1.42 +++ genxref 10 May 2009 11:54:29 -0000 1.43 @@ -98,46 +98,46 @@ $index->DESTROY(); sub genindex { - my ($pathname, $release) = @_; + my ($pathname, $releaseid) = @_; - print(STDERR "*** $pathname $release \n"); + print(STDERR "*** $pathname $releaseid \n"); if ($pathname =~ m|/$|) { - map { genindex($pathname . $_, $release) } $files->getdir($pathname, $release); + map { genindex($pathname . $_, $releaseid) } $files->getdir($pathname, $releaseid); } else { - &LXR::Tagger::processfile($pathname, $release, $config, $files, $index) + &LXR::Tagger::processfile($pathname, $releaseid, $config, $files, $index) unless exists $binaryfiles{$pathname}; } } sub genrefs { - my ($pathname, $release) = @_; + my ($pathname, $releaseid) = @_; - print(STDERR "### $pathname $release \n"); + print(STDERR "### $pathname $releaseid \n"); if ($pathname =~ m|/$|) { - map { genrefs($pathname . $_, $release) } $files->getdir($pathname, $release); + map { genrefs($pathname . $_, $releaseid) } $files->getdir($pathname, $releaseid); } else { - &LXR::Tagger::processrefs($pathname, $release, $config, $files, $index) + &LXR::Tagger::processrefs($pathname, $releaseid, $config, $files, $index) unless exists $binaryfiles{$pathname}; } } sub feedswish { - my ($pathname, $release, $swish, $filelist) = @_; + my ($pathname, $releaseid, $swish, $filelist) = @_; - print(STDERR "&&& $pathname $release \n"); + print(STDERR "&&& $pathname $releaseid \n"); if ($pathname =~ m|/$|) { - map { feedswish($pathname . $_, $release, $swish, $filelist) } - $files->getdir($pathname, $release); + map { feedswish($pathname . $_, $releaseid, $swish, $filelist) } + $files->getdir($pathname, $releaseid); } else { print $filelist "$pathname\n"; - my $fh = $files->getfilehandle($pathname, $release); - if ($files->getfilesize($pathname, $release) > 0 + my $fh = $files->getfilehandle($pathname, $releaseid); + if ($files->getfilesize($pathname, $releaseid) > 0 && $filetype->checktype_filehandle($fh) =~ m%(text|message)/%) { - my $contents = $files->getfile($pathname, $release); + my $contents = $files->getfile($pathname, $releaseid); $swish->print( "Path-Name: $pathname\n", "Content-Length: " . length($contents) . "\n", @@ -152,20 +152,20 @@ } sub gensearch { - my ($release) = @_; + my ($releaseid) = @_; my $string; if ($config->glimpsedir and $config->glimpseindex) { - $string = $config->glimpsedir . "/" . $release; + $string = $config->glimpsedir . "/" . $releaseid; mkdir $string; system("chmod 755 $string"); # TODO - fix Unix specific call? my $glimpse = new IO::Handle; my $pid = open($glimpse, "|-"); if ($pid == 0) { exec($config->glimpseindex, "-n", "-o", "-H", - $config->glimpsedir . "/$release", - $config->sourceroot . "/" . $release + $config->glimpsedir . "/$releaseid", + $config->sourceroot . "/" . $releaseid ); print(STDERR "Couldn't exec " . $config->glimpseindex . ": $!\n"); kill(9, $$); @@ -173,15 +173,15 @@ $glimpse->close(); # Need to chmod the glimpse files so everybody can read them. - $string = $config->glimpsedir . "/" . $release . "/.glimpse\*"; + $string = $config->glimpsedir . "/" . $releaseid . "/.glimpse\*"; system("chmod 644 $string"); } if ($config->swishdir and $config->swishbin) { my $swish = new IO::Handle; die $config->swishdir . " does not exist" unless -d $config->swishdir; - my $filelist = new IO::File $config->swishdir . "/$release.filenames", "w" - or die "can't open $release.filenames for writing"; + my $filelist = new IO::File $config->swishdir . "/$releaseid.filenames", "w" + or die "can't open $releaseid.filenames for writing"; # execute swish, as a pipe we can write to @@ -190,11 +190,11 @@ . $config->swishbin . " -S prog -i stdin -v 1 -c swish-e.conf -f " . $config->swishdir . "/" - . $release + . $releaseid . ".index") or die "Couldn't exec " . $config->swishbin . ": $!\n"; - feedswish("/", $release, $swish, $filelist); + feedswish("/", $releaseid, $swish, $filelist); $swish->close(); $filelist->close(); Index: initdb-mysql =================================================================== RCS file: /cvsroot/lxr/lxr/initdb-mysql,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- initdb-mysql 9 May 2009 15:39:00 -0000 1.13 +++ initdb-mysql 10 May 2009 11:54:29 -0000 1.14 @@ -34,8 +34,8 @@ create table lxr_releases (fileid int not null references lxr_files, - rel char(255) binary not null, - primary key (fileid,rel) + releaseid char(255) binary not null, + primary key (fileid,releaseid) ); create table lxr_usage Index: source =================================================================== RCS file: /cvsroot/lxr/lxr/source,v retrieving revision 1.46 retrieving revision 1.47 diff -u -d -r1.46 -r1.47 --- source 8 Apr 2009 20:49:19 -0000 1.46 +++ source 10 May 2009 11:54:29 -0000 1.47 @@ -89,7 +89,7 @@ sub filesize { my ($templ, $node, $dir) = @_; - my $s = $files->getfilesize($dir . $node, $release); + my $s = $files->getfilesize($dir . $node, $releaseid); my $str; if ($s < 1 << 10) { @@ -117,7 +117,7 @@ my ($templ, $node, $dir) = @_; my $current_time = time; - my $file_time = $files->getfiletime($dir . $node, $release); + my $file_time = $files->getfiletime($dir . $node, $releaseid); return '-' unless defined($file_time); @@ -148,7 +148,7 @@ my @nodes; my $node; - @nodes = $files->getdir($dir, $release); + @nodes = $files->getdir($dir, $releaseid); unless (@nodes) { print( "<p align=\"center\">\n<i>The directory " . $dir . " does not exist.</i>\n"); @@ -176,7 +176,7 @@ 'bgcolor' => sub { bgcolor(@_, $line++) }, 'css' => sub { rowclass(@_, $line++) }, 'description' => - sub { descexpand(@_, $node, $dir, $release) } + sub { descexpand(@_, $node, $dir, $releaseid) } ) ); } else { @@ -193,12 +193,12 @@ 'description' => sub { ( $files->isa('LXR::Files::CVS') - && $files->toreal($dir . $node, $release) =~ + && $files->toreal($dir . $node, $releaseid) =~ m|/Attic/| ? "<i>In Attic</i> " : "" ) - . descexpand(@_, $node, $dir, $release); + . descexpand(@_, $node, $dir, $releaseid); } ) ); @@ -224,7 +224,7 @@ } # print the description of the current directory - print dirdesc($dir, $release); + print dirdesc($dir, $releaseid); # print the listing itself print(expandtemplate($templ, ('files' => sub { direxpand(@_, $dir) }))); @@ -236,7 +236,7 @@ if ($pathname =~ m|/$|) { printdir($pathname); } else { - my $fileh = $files->getfilehandle($pathname, $release); + my $fileh = $files->getfilehandle($pathname, $releaseid); if ($fileh) { if ($raw) { @@ -251,7 +251,7 @@ else { if ($config->cvswebprefix) { my $revtarget = ""; - $revtarget = "#rev$release" if lc($release) ne "head"; + $revtarget = "#rev$releaseid" if lc($releaseid) ne "head"; print "<a href='" . $config->cvswebprefix . $pathname @@ -259,7 +259,7 @@ . $revtarget . "'>View CVS Log</a>"; } - my @ann = $files->getannotations($pathname, $release); + my @ann = $files->getannotations($pathname, $releaseid); if (@ann) { my ($a, $b); |
From: AdrianIssott <adr...@us...> - 2009-05-09 21:57:47
|
Update of /cvsroot/lxr/lxr/lib/LXR In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv29829/lib/LXR Modified Files: Common.pm Log Message: Feature 1691378 (Rearchitect the DB backends) Part IX * Converted Postgres to an object-orientated style Note: an explicit call to the destructor of the LXR::Index was required since Perl wasn't doing it as part of the global destruction (on win32 v5.8.8) Index: Common.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Common.pm,v retrieving revision 1.60 retrieving revision 1.61 diff -u -d -r1.60 -r1.61 --- Common.pm 10 Apr 2009 20:13:31 -0000 1.60 +++ Common.pm 9 May 2009 21:57:34 -0000 1.61 @@ -553,6 +553,8 @@ sub httpclean { $config = undef; $files = undef; + + $index->DESTROY(); $index = undef; } |
From: AdrianIssott <adr...@us...> - 2009-05-09 21:57:42
|
Update of /cvsroot/lxr/lxr In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv29829 Modified Files: genxref Log Message: Feature 1691378 (Rearchitect the DB backends) Part IX * Converted Postgres to an object-orientated style Note: an explicit call to the destructor of the LXR::Index was required since Perl wasn't doing it as part of the global destruction (on win32 v5.8.8) Index: genxref =================================================================== RCS file: /cvsroot/lxr/lxr/genxref,v retrieving revision 1.41 retrieving revision 1.42 diff -u -d -r1.41 -r1.42 --- genxref 22 Apr 2009 15:16:57 -0000 1.41 +++ genxref 9 May 2009 21:57:34 -0000 1.42 @@ -95,6 +95,8 @@ genrefs('/', $version); } +$index->DESTROY(); + sub genindex { my ($pathname, $release) = @_; |
From: AdrianIssott <adr...@us...> - 2009-05-09 21:57:41
|
Update of /cvsroot/lxr/lxr/lib/LXR/Index In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv29829/lib/LXR/Index Modified Files: Mysql.pm DB.pm Postgres.pm Oracle.pm Log Message: Feature 1691378 (Rearchitect the DB backends) Part IX * Converted Postgres to an object-orientated style Note: an explicit call to the destructor of the LXR::Index was required since Perl wasn't doing it as part of the global destruction (on win32 v5.8.8) Index: Mysql.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Mysql.pm,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- Mysql.pm 9 May 2009 18:55:31 -0000 1.29 +++ Mysql.pm 9 May 2009 21:57:34 -0000 1.30 @@ -157,7 +157,7 @@ $self->{delete_files} = undef; if ($self->{dbh}) { - $self->{dbh}->disconnect(); + $self->{dbh}->disconnect() or die "Disconnect failed: $DBI::errstr"; $self->{dbh} = undef; } } Index: DB.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/DB.pm,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- DB.pm 25 Apr 2009 20:40:24 -0000 1.16 +++ DB.pm 9 May 2009 21:57:34 -0000 1.17 @@ -121,4 +121,7 @@ sub emptycache { } +sub DESTROY { +} + 1; Index: Postgres.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Postgres.pm,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- Postgres.pm 9 May 2009 18:55:31 -0000 1.30 +++ Postgres.pm 9 May 2009 21:57:34 -0000 1.31 @@ -24,139 +24,154 @@ use DBI; use LXR::Common; -use vars qw($dbh $transactions %files %symcache $commitlimit - $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_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); +our @ISA = ("LXR::Index"); + +# +# Global variables +# +my (%files, %symcache); + +my ($commitlimit, $transactions, $dbConnection); sub new { my ($self, $dbname) = @_; $self = bless({}, $self); - $dbh ||= DBI->connect($dbname, $config->{'dbuser'}, $config->{'dbpass'}); - die($DBI::errstr) unless $dbh; - - $$dbh{'AutoCommit'} = 0; + $self->{dbh} = DBI->connect($dbname, $config->{dbuser}, $config->{dbpass}) + or fatal "Can't open connection to database: $DBI::errstr\n"; - # $dbh->trace(1); + $self->{dbh}->begin_work() or die "begin_work failed: $DBI::errstr"; + $commitlimit = 100; + $transactions = 0; + + %files = (); + %symcache = (); + my $prefix; 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->{filenum_nextval} = + $self->{dbh}->prepare("select nextval('${prefix}filenum')"); + $self->{files_insert} = + $self->{dbh}->prepare("insert into ${prefix}files values (?, ?, ?)"); - $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 (?, ?, ?)"); - - $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 = ?"); + $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->{symnum_nextval} = + $self->{dbh}->prepare("select nextval('${prefix}symnum')"); + $self->{symbols_insert} = + $self->{dbh}->prepare("insert into ${prefix}symbols values (?, ?)"); + $self->{symbols_remove} = + $self->{dbh}->prepare("delete from ${prefix}symbols where symname = ?"); - $indexes_select = - $dbh->prepare("select f.filename, i.line, d.declaration, i.relsym " + $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"); - $indexes_insert = - $dbh->prepare("insert into ${prefix}indexes (symid, fileid, line, langid, type, relsym) " + $self->{indexes_insert} = + $self->{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_select = $dbh->prepare("select status from ${prefix}status where fileid = ?"); - $status_insert = $dbh->prepare + $self->{releases_select} = + $self->{dbh}->prepare("select * from ${prefix}releases where fileid = ? and release = ?"); + $self->{releases_insert} = + $self->{dbh}->prepare("insert into ${prefix}releases values (?, ?)"); + + $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 (?, ?)"); - - $status_update = - $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 <= ?"); - $usage_insert = $dbh->prepare("insert into ${prefix}usage values (?, ?, ?)"); - $usage_select = - $dbh->prepare("select f.filename, u.line " + $self->{usage_insert} = + $self->{dbh}->prepare("insert into ${prefix}usage 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 f.fileid = r.fileid and " - . "s.symname = ? and r.release = ? " + . "and u.fileid = r.fileid " + . "and s.symname = ? and r.release = ? " . "order by f.filename, u.line"); - $declid_nextnum = $dbh->prepare("select nextval('${prefix}declnum')"); + $self->{declid_nextnum} = + $self->{dbh}->prepare("select nextval('${prefix}declnum')"); - $decl_select = - $dbh->prepare( - "select declid from ${prefix}declarations where langid = ? and " . "declaration = ?"); - $decl_insert = - $dbh->prepare( + $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 (?, ?, ?)"); - $delete_indexes = - $dbh->prepare("delete from ${prefix}indexes " + $self->{delete_indexes} = + $self->{dbh}->prepare("delete from ${prefix}indexes " . "where fileid in " . " (select fileid from ${prefix}releases where release = ?)"); - $delete_usage = - $dbh->prepare("delete from ${prefix}usage " + $self->{delete_usage} = + $self->{dbh}->prepare("delete from ${prefix}usage " . "where fileid in " . " (select fileid from ${prefix}releases where release = ?)"); - $delete_status = - $dbh->prepare("delete from ${prefix}status " + $self->{delete_status} = + $self->{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 " + $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; } -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; +sub DESTROY { + my ($self) = @_; + + $self->{files_select} = undef; + $self->{filenum_nextval} = undef; + $self->{files_insert} = undef; + $self->{symbols_byname} = undef; + $self->{symbols_byid} = undef; + $self->{symnum_nextval} = undef; + $self->{symbols_remove} = undef; + $self->{symbols_insert} = undef; + $self->{indexes_select} = undef; + $self->{indexes_insert} = undef; + $self->{releases_select} = 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->{declid_nextnum} = 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; - $dbh->commit(); - $dbh->disconnect(); - $dbh = undef; + if ($self->{dbh}) { + $self->{dbh}->commit() or die "Commit failed: $DBI::errstr"; + $transactions = 0; + $self->{dbh}->disconnect() or die "Disconnect failed: $DBI::errstr"; + $self->{dbh} = undef; + } } # @@ -168,40 +183,42 @@ my ($fileid); unless (defined($fileid = $files{"$filename\t$revision"})) { - $files_select->execute($filename, $revision); - ($fileid) = $files_select->fetchrow_array(); + $self->{files_select}->execute($filename, $revision); + ($fileid) = $self->{files_select}->fetchrow_array(); unless ($fileid) { - $filenum_nextval->execute(); - ($fileid) = $filenum_nextval->fetchrow_array(); - $files_insert->execute($filename, $revision, $fileid); + $self->{filenum_nextval}->execute(); + ($fileid) = $self->{filenum_nextval}->fetchrow_array(); + $self->{files_insert}->execute($filename, $revision, $fileid); + $self->_commitIfLimit(); } $files{"$filename\t$revision"} = $fileid; +# $self->{files_select}->finish(); } - _commitIfLimit(); + return $fileid; } sub setfilerelease { my ($self, $fileid, $release) = @_; - $releases_select->execute($fileid + 0, $release); - my $firstrow = $releases_select->fetchrow_array(); + $self->{releases_select}->execute($fileid + 0, $release); + my $firstrow = $self->{releases_select}->fetchrow_array(); - # $releases_select->finish(); +# $self->{releases_select}->finish(); unless ($firstrow) { - $releases_insert->execute($fileid + 0, $release); + $self->{releases_insert}->execute($fileid + 0, $release); + $self->_commitIfLimit(); } - _commitIfLimit(); } sub fileindexed { my ($self, $fileid) = @_; my ($status); - $status_select->execute($fileid); - $status = $status_select->fetchrow_array(); - $status_select->finish(); + $self->{status_select}->execute($fileid); + $status = $self->{status_select}->fetchrow_array(); + $self->{status_select}->finish(); if (!defined($status)) { $status = 0; @@ -213,24 +230,25 @@ my ($self, $fileid) = @_; my ($status); - $status_select->execute($fileid); - $status = $status_select->fetchrow_array(); - $status_select->finish(); + $self->{status_select}->execute($fileid); + $status = $self->{status_select}->fetchrow_array(); + $self->{status_select}->finish(); if (!defined($status)) { - $status_insert->execute($fileid + 0, 1); + $self->{status_insert}->execute($fileid + 0, 1); } else { - $status_update->execute(1, $fileid, 0); + $self->{status_update}->execute(1, $fileid, 0); } + $self->_commitIfLimit(); } sub filereferenced { my ($self, $fileid) = @_; my ($status); - $status_select->execute($fileid); - $status = $status_select->fetchrow_array(); - $status_select->finish(); + $self->{status_select}->execute($fileid); + $status = $self->{status_select}->fetchrow_array(); + $self->{status_select}->finish(); return defined($status) && $status == 2; } @@ -239,24 +257,25 @@ my ($self, $fileid) = @_; my ($status); - $status_select->execute($fileid); - $status = $status_select->fetchrow_array(); - $status_select->finish(); + $self->{status_select}->execute($fileid); + $status = $self->{status_select}->fetchrow_array(); + $self->{status_select}->finish(); if (!defined($status)) { - $status_insert->execute($fileid + 0, 2); + $self->{status_insert}->execute($fileid + 0, 2); } else { - $status_update->execute(2, $fileid, 1); + $self->{status_update}->execute(2, $fileid, 1); } + $self->_commitIfLimit(); } sub symdeclarations { my ($self, $symname, $release) = @_; my ($rows, @ret, @row); - $rows = $indexes_select->execute("$symname", "$release"); + $rows = $self->{indexes_select }->execute("$symname", "$release"); - while (@row = $indexes_select->fetchrow_array) { + while (@row = $self->{indexes_select }->fetchrow_array) { $row[3] &&= $self->symname($row[3]); # convert the symid # Also need to remove trailing whitespace erroneously added by the db @@ -265,7 +284,7 @@ push(@ret, [@row]); } - $indexes_select->finish(); + $self->{indexes_select }->finish(); return @ret; } @@ -273,22 +292,22 @@ sub setsymdeclaration { my ($self, $symname, $fileid, $line, $langid, $type, $relsym) = @_; - $indexes_insert->execute($self->symid($symname), + $self->{indexes_insert}->execute($self->symid($symname), $fileid, $line, $langid, $type, $relsym ? $self->symid($relsym) : undef); - _commitIfLimit(); + $self->_commitIfLimit(); } sub symreferences { my ($self, $symname, $release) = @_; - my ($rows, @ret); + my ($rows, @ret, @row); - $rows = $usage_select->execute("$symname", "$release"); + $rows = $self->{usage_select}->execute("$symname", "$release"); - while ($rows-- > 0) { - push(@ret, [ $usage_select->fetchrow_array ]); + while (@row = $self->{usage_select}->fetchrow_array) { + push(@ret, [@row]); } - $usage_select->finish(); + $self->{usage_select}->finish(); return @ret; } @@ -296,16 +315,16 @@ sub setsymreference { my ($self, $symname, $fileid, $line) = @_; - $usage_insert->execute($fileid, $line, $self->symid($symname)); - _commitIfLimit(); + $self->{usage_insert}->execute($fileid, $line, $self->symid($symname)); + $self->_commitIfLimit(); } sub issymbol { - my ($self, $symname, $release) = @_; # TODO make use of $release + my ($self, $symname, $release) = @_; # TODO make full use of $release unless (exists($symcache{$symname})) { - $symbols_byname->execute($symname); - ($symcache{$symname}) = $symbols_byname->fetchrow_array(); + $self->{symbols_byname}->execute($symname); + ($symcache{$symname}) = $self->{symbols_byname}->fetchrow_array(); } return $symcache{$symname}; @@ -316,16 +335,16 @@ my ($symid); unless (defined($symid = $symcache{$symname})) { - $symbols_byname->execute($symname); - ($symid) = $symbols_byname->fetchrow_array(); + $self->{symbols_byname}->execute($symname); + ($symid) = $self->{symbols_byname}->fetchrow_array(); unless ($symid) { - $symnum_nextval->execute(); - ($symid) = $symnum_nextval->fetchrow_array(); - $symbols_insert->execute($symname, $symid); + $self->{symnum_nextval}->execute(); + ($symid) = $self->{symnum_nextval}->fetchrow_array(); + $self->{symbols_insert}->execute($symname, $symid); + $self->_commitIfLimit(); } $symcache{$symname} = $symid; } - _commitIfLimit(); return $symid; } @@ -333,8 +352,8 @@ my ($self, $symid) = @_; my ($symname); - $symbols_byid->execute($symid + 0); - ($symname) = $symbols_byid->fetchrow_array(); + $self->{symbols_byid}->execute($symid + 0); + ($symname) = $self->{symbols_byid}->fetchrow_array(); return $symname; } @@ -342,20 +361,20 @@ sub decid { my ($self, $lang, $string) = @_; - my $rows = $decl_select->execute($lang, $string); - $decl_select->finish(); + my $rows = $self->{decl_select}->execute($lang, $string); + $self->{decl_select}->finish(); unless ($rows > 0) { - $declid_nextnum->execute(); - my ($declid) = $declid_nextnum->fetchrow_array(); - $decl_insert->execute($declid, $lang, $string); + $self->{declid_nextnum}->execute(); + my ($declid) = $self->{declid_nextnum}->fetchrow_array(); + $self->{decl_insert}->execute($declid, $lang, $string); + $self->_commitIfLimit(); } - $decl_select->execute($lang, $string); - my $id = $decl_select->fetchrow_array(); - $decl_select->finish(); - - _commitIfLimit(); + $self->{decl_select}->execute($lang, $string); + my $id = $self->{decl_select}->fetchrow_array(); + $self->{decl_select}->finish(); + return $id; } @@ -373,7 +392,10 @@ $self->{delete_status}->execute($release); $self->{delete_releases}->execute($release); $self->{delete_files}->execute($release); - _commitIfLimit(); + + $self->{dbh}->commit() or die "Commit failed: $DBI::errstr"; + $self->{dbh}->begin_work() or die "begin_work failed: $DBI::errstr"; + $transactions = 0; } # @@ -381,8 +403,10 @@ # sub _commitIfLimit { + my $self = shift; unless (++$transactions % $commitlimit) { - $dbh->commit(); + $self->{dbh}->commit() or die "Commit failed: $DBI::errstr"; + $self->{dbh}->begin_work() or die "begin_work failed: $DBI::errstr"; } } Index: Oracle.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Oracle.pm,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- Oracle.pm 9 May 2009 18:55:31 -0000 1.19 +++ Oracle.pm 9 May 2009 21:57:34 -0000 1.20 @@ -153,7 +153,7 @@ $self->{delete_files} = undef; if ($self->{dbh}) { - $self->{dbh}->disconnect(); + $self->{dbh}->disconnect() or die "Disconnect failed: $DBI::errstr"; $self->{dbh} = undef; } } |
From: AdrianIssott <adr...@us...> - 2009-05-09 18:55:36
|
Update of /cvsroot/lxr/lxr/lib/LXR/Index In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv24791/lib/LXR/Index Modified Files: Mysql.pm Postgres.pm Oracle.pm Log Message: Feature 1691378 (Rearchitect the DB backends) Part VIII * Synchronising the implementations of the symdeclarations in Postgres, MySql and Oracle DBI implementations Index: Mysql.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Mysql.pm,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- Mysql.pm 9 May 2009 15:39:00 -0000 1.28 +++ Mysql.pm 9 May 2009 18:55:31 -0000 1.29 @@ -255,15 +255,12 @@ my ($rows, @ret, @row); $rows = $self->{indexes_select}->execute("$symname", "$release"); - while (@row = $self->{indexes_select}->fetchrow_array) { + $row[3] &&= $self->symname($row[3]); # convert the symid push(@ret, [@row]); } - $self->{indexes_select}->finish(); - map { $$_[3] &&= $self->symname($$_[3]) } @ret; - return @ret; } @@ -271,7 +268,7 @@ my ($self, $symname, $fileid, $line, $langid, $type, $relsym) = @_; $self->{indexes_insert}->execute($self->symid($symname), - $fileid, $line, $langid, $type, $relsym ? $self->symid($relsym) : undef); + $fileid, $line, $langid, $type, $relsym ? $self->symid($relsym) : undef); } sub symreferences { @@ -293,7 +290,6 @@ my ($self, $symname, $fileid, $line) = @_; $self->{usage_insert}->execute($fileid, $line, $self->symid($symname)); - } sub issymbol { Index: Postgres.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Postgres.pm,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- Postgres.pm 9 May 2009 15:56:56 -0000 1.29 +++ Postgres.pm 9 May 2009 18:55:31 -0000 1.30 @@ -251,26 +251,23 @@ } sub symdeclarations { - my ($self, $symname, $release) = @_; - my ($rows, @ret); - - $rows = $indexes_select->execute("$symname", "$release"); - - while ($rows-- > 0) { - my @row = $indexes_select->fetchrow_array; + my ($self, $symname, $release) = @_; + my ($rows, @ret, @row); - $row[3] = $self->symname($row[3]); # convert the symid + $rows = $indexes_select->execute("$symname", "$release"); - # Also need to remove trailing whitespace erroneously added by the db - # interface that isn't actually stored in the underlying db - $row[2] =~ s/^(.+?)\s+$/$1/; + while (@row = $indexes_select->fetchrow_array) { + $row[3] &&= $self->symname($row[3]); # convert the symid - push(@ret, \@row); - } + # Also need to remove trailing whitespace erroneously added by the db + # interface that isn't actually stored in the underlying db + $row[2] =~ s/^(.+?)\s+$/$1/; - $indexes_select->finish(); + push(@ret, [@row]); + } + $indexes_select->finish(); - return @ret; + return @ret; } sub setsymdeclaration { Index: Oracle.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Oracle.pm,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- Oracle.pm 9 May 2009 15:56:56 -0000 1.18 +++ Oracle.pm 9 May 2009 18:55:31 -0000 1.19 @@ -188,7 +188,6 @@ unless ($rows > 0) { $self->{releases_insert}->execute($fileid, $release); - $self->{releases_insert}->finish(); } } @@ -249,18 +248,15 @@ sub symdeclarations { my ($self, $symname, $release) = @_; - my ($rows, @ret, @row); + my ($rows, @ret, @row); $rows = $self->{indexes_select}->execute("$symname", "$release"); - while (@row = $self->{indexes_select}->fetchrow_array) { + $row[3] &&= $self->symname($row[3]); # convert the symid push(@ret, [@row]); } - $self->{indexes_select}->finish(); - map { $$_[3] &&= $self->symname($$_[3]) } @ret; - return @ret; } |
From: AdrianIssott <adr...@us...> - 2009-05-09 15:57:08
|
Update of /cvsroot/lxr/lxr/lib/LXR/Index In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv29088/lib/LXR/Index Modified Files: Postgres.pm Oracle.pm Log Message: Feature 1691378 (Rearchitect the DB backends) Part VII * Further standisation of LXR::Index modules * Changed parameter for LXR::Index::purge() from $version -> $release in Oracle and Postgres modules Index: Postgres.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Postgres.pm,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- Postgres.pm 9 May 2009 15:39:00 -0000 1.28 +++ Postgres.pm 9 May 2009 15:56:56 -0000 1.29 @@ -367,15 +367,15 @@ } 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 - $delete_indexes->execute($version); - $delete_usage->execute($version); - $delete_status->execute($version); - $delete_releases->execute($version); - $delete_files->execute($version); + $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); _commitIfLimit(); } Index: Oracle.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Oracle.pm,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- Oracle.pm 9 May 2009 15:39:00 -0000 1.17 +++ Oracle.pm 9 May 2009 15:56:56 -0000 1.18 @@ -24,9 +24,12 @@ 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) = @_; @@ -36,20 +39,20 @@ $self->{dbh} = DBI->connect($dbname, $config->{dbuser}, $config->{dbpass}, { RaiseError => 1, AutoCommit => 1 }) - || fatal "Can't open connection to database\n"; + or fatal "Can't open connection to database: $DBI::errstr\n"; + my $prefix; if (defined($config->{'dbprefix'})) { $prefix = $config->{'dbprefix'}; } else { $prefix = "lxr_"; } - %files = (); - %symcache = (); + %files = (); + %symcache = (); $self->{files_select} = - $self->{dbh} - ->prepare("select fileid from ${prefix}files where filename = ? and revision = ?"); + $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)"); @@ -87,8 +90,7 @@ ("insert into ${prefix}status (fileid, status) values (?, ?)"); $self->{status_update} = - $self->{dbh} - ->prepare("update ${prefix}status set status = ? where fileid = ? and status <= ?"); + $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 (?, ?, ?)"); @@ -120,7 +122,7 @@ . "where fileid in " . " (select fileid from ${prefix}releases where release = ?)"); $self->{delete_releases} = - $self->{dbh}->prepare("delete from ${prefix}releases " . "where release = ?"); + $self->{dbh}->prepare("delete from ${prefix}releases where release = ?"); $self->{delete_files} = $self->{dbh}->prepare("delete from ${prefix}files " . "where fileid in " @@ -145,7 +147,7 @@ $self->{decl_select} = undef; $self->{decl_insert} = undef; $self->{delete_indexes} = undef; - $self->{delete_usage} = undef; + $self->{delete_usage} = undef; $self->{delete_status} = undef; $self->{delete_releases} = undef; $self->{delete_files} = undef; @@ -266,12 +268,12 @@ my ($self, $symname, $fileid, $line, $langid, $type, $relsym) = @_; $self->{indexes_insert}->execute($self->symid($symname), - $fileid, $line, $langid, $type, $relsym ? $self->symid($relsym) : undef); + $fileid, $line, $langid, $type, $relsym ? $self->symid($relsym) : undef); } sub symreferences { my ($self, $symname, $release) = @_; - my ($rows, @ret, @row); + my ($rows, @ret, @row); $rows = $self->{usage_select}->execute("$symname", "$release"); @@ -288,11 +290,10 @@ my ($self, $symname, $fileid, $line) = @_; $self->{usage_insert}->execute($fileid, $line, $self->symid($symname)); - } sub issymbol { - my ($self, $symname, $release) = @_; # TODO make use of $release + my ($self, $symname, $release) = @_; # TODO make full use of $release my ($symid); $symid = $symcache{$release}{$symname}; @@ -362,15 +363,15 @@ } 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_usage}->execute($version); - $self->{delete_status}->execute($version); - $self->{delete_releases}->execute($version); - $self->{delete_files}->execute($version); + $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; |
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] |
From: AdrianIssott <adr...@us...> - 2009-05-09 15:39:07
|
Update of /cvsroot/lxr/lxr/lib/LXR In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv24796/lib/LXR Modified Files: Index.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: Index.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index.pm,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- Index.pm 6 May 2009 22:37:50 -0000 1.14 +++ Index.pm 9 May 2009 15:39:00 -0000 1.15 @@ -24,19 +24,19 @@ use strict; sub new { - my ($self, $dbname, @args) = @_; - my $index; + my ($self, $dbname, @args) = @_; + my $index; - if ($dbname =~ /^DBI:/i) { - require LXR::Index::DBI; - $index = new LXR::Index::DBI($dbname, @args); - } elsif ($dbname =~ /^DBM:/i) { - require LXR::Index::DB; - $index = new LXR::Index::DB($dbname, @args); - } else { - die "Can't find database, $dbname"; - } - return $index; + if ($dbname =~ /^DBI:/i) { + require LXR::Index::DBI; + $index = new LXR::Index::DBI($dbname, @args); + } elsif ($dbname =~ /^DBM:/i) { + require LXR::Index::DB; + $index = new LXR::Index::DB($dbname, @args); + } else { + die "Can't find database, $dbname"; + } + return $index; } # @@ -44,32 +44,32 @@ # sub fileid { - my ($self, $filename, $revision) = @_; # CAUTION: $revision is not $release! - my $fileid; - warn __PACKAGE__."::fileid not implemented. Parameters @_"; - return $fileid; + my ($self, $filename, $revision) = @_; # CAUTION: $revision is not $release! + my $fileid; + warn __PACKAGE__."::fileid not implemented. Parameters @_"; + return $fileid; } # Indicate that the file referred to by $fileid is part of $release sub setfilerelease { - my ($self, $fileid, $release) = @_; - warn __PACKAGE__."::setfilerelease not implemented. Parameters @_"; - return; + my ($self, $fileid, $release) = @_; + warn __PACKAGE__."::setfilerelease not implemented. Parameters @_"; + return; } # If the file referred to by $fileid has already been indexed return true. # Otherwise return false. sub fileindexed { - my ($self, $fileid) = @_; - my $filefoundboolean; - warn __PACKAGE__."::fileindexed not implemented. Parameters @_"; - return $filefoundboolean; + my ($self, $fileid) = @_; + my $filefoundboolean; + warn __PACKAGE__."::fileindexed not implemented. Parameters @_"; + return $filefoundboolean; } sub setfileindexed { - my ($self, $fileid) = @_; - warn __PACKAGE__."::setfileindexed not implemented. Parameters @_"; - return; + my ($self, $fileid) = @_; + warn __PACKAGE__."::setfileindexed not implemented. Parameters @_"; + return; } # If the file referred to by $fileid has already been referenced @@ -78,85 +78,85 @@ # implicitly sets fileindexed as well sub filereferenced { - my ($self, $fileid) = @_; - my $referencefoundboolean; - warn __PACKAGE__."::filereferenced not implemented. Parameters @_"; - return $referencefoundboolean; + my ($self, $fileid) = @_; + my $referencefoundboolean; + warn __PACKAGE__."::filereferenced not implemented. Parameters @_"; + return $referencefoundboolean; } sub setfilereferenced { - my ($self, $fileid) = @_; - warn __PACKAGE__."::setfilereferenced not implemented. Parameters @_"; - return; + my ($self, $fileid) = @_; + warn __PACKAGE__."::setfilereferenced not implemented. Parameters @_"; + return; } sub symdeclarations { - my ($self, $symname, $release) = @_; - my @indexes; - warn __PACKAGE__."::symdeclarations not implemented. Parameters @_"; - return @indexes; + my ($self, $symname, $release) = @_; + my @indexes; + warn __PACKAGE__."::symdeclarations not implemented. Parameters @_"; + return @indexes; } sub setsymdeclaration { - my ($self, $symname, $fileid, $line, $langid, $type, $relsym) = @_; - warn __PACKAGE__."::setsymdeclaration not implemented. Parameters @_"; - return; + my ($self, $symname, $fileid, $line, $langid, $type, $relsym) = @_; + warn __PACKAGE__."::setsymdeclaration not implemented. Parameters @_"; + return; } sub symreferences { - my ($self, $symname, $release) = @_; - my @references; - warn __PACKAGE__."::symreferences not implemented. Parameters @_"; - return @references; + my ($self, $symname, $release) = @_; + my @references; + warn __PACKAGE__."::symreferences not implemented. Parameters @_"; + return @references; } sub setsymreference { - my ($self, $symname, $fileid, $line) = @_; - warn __PACKAGE__."::setsymreference not implemented. Parameters @_"; - return; + my ($self, $symname, $fileid, $line) = @_; + warn __PACKAGE__."::setsymreference not implemented. Parameters @_"; + return; } sub issymbol { - my ($self, $symname, $release) = @_; - my $symbolfoundboolean; - warn __PACKAGE__."::issymbol not implemented. Parameters @_"; - return $symbolfoundboolean; + my ($self, $symname, $release) = @_; + my $symbolfoundboolean; + warn __PACKAGE__."::issymbol not implemented. Parameters @_"; + return $symbolfoundboolean; } sub symid { - my ($self, $symname) = @_; - my $symid; - warn __PACKAGE__."::symid not implemented. Parameters @_"; - return $symid; + my ($self, $symname) = @_; + my $symid; + warn __PACKAGE__."::symid not implemented. Parameters @_"; + return $symid; } sub symname { - my ($self, $symid) = @_; - my $symname; - warn __PACKAGE__."::symname not implemented. Parameters @_"; - return $symname; + my ($self, $symid) = @_; + my $symname; + warn __PACKAGE__."::symname not implemented. Parameters @_"; + return $symname; } sub decid { - my ($self, $lang, $string) = @_; - my $decid; - warn __PACKAGE__."::decid not implemented. Parameters @_"; - return $decid; + my ($self, $lang, $string) = @_; + my $decid; + warn __PACKAGE__."::decid not implemented. Parameters @_"; + return $decid; } # This function should be called before parsing each new file, # if this is not done then too much memory will be used and # things will become very slow. sub emptycache { - my ($self) = @_; - warn __PACKAGE__."::emptycache not implemented. Parameters @_"; - return; + my ($self) = @_; + warn __PACKAGE__."::emptycache not implemented. Parameters @_"; + return; } sub purge { - my ($self, $version) = @_; - warn __PACKAGE__."::purge not implemented. Parameters @_"; - return; + my ($self, $release) = @_; + warn __PACKAGE__."::purge not implemented. Parameters @_"; + return; } 1; |
From: AdrianIssott <adr...@us...> - 2009-05-09 15:39:07
|
Update of /cvsroot/lxr/lxr In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv24796 Modified Files: initdb-mysql 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: initdb-mysql =================================================================== RCS file: /cvsroot/lxr/lxr/initdb-mysql,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- initdb-mysql 23 Mar 2009 12:27:18 -0000 1.12 +++ initdb-mysql 9 May 2009 15:39:00 -0000 1.13 @@ -38,7 +38,7 @@ primary key (fileid,rel) ); -create table lxr_useage +create table lxr_usage (fileid int not null references lxr_files, line int not null, symid int not null references lxr_symbols @@ -60,7 +60,7 @@ create index lxr_indexindex on lxr_indexes (symid) ; create unique index lxr_symbolindex on lxr_symbols (symname) ; -create index lxr_useageindex on lxr_useage (symid) ; +create index lxr_usageindex on lxr_usage (symid) ; create index lxr_filelookup on lxr_files (filename); grant all on lxr.* to lxr@localhost; |
From: AdrianIssott <adr...@us...> - 2009-05-09 15:39:03
|
Update of /cvsroot/lxr/lxr-tools/tests In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv24766/tests Modified Files: initdb-mysql MysqlTest.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: initdb-mysql =================================================================== RCS file: /cvsroot/lxr/lxr-tools/tests/initdb-mysql,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- initdb-mysql 6 May 2009 22:33:08 -0000 1.1 +++ initdb-mysql 9 May 2009 15:38:54 -0000 1.2 @@ -38,7 +38,7 @@ primary key (fileid,rel) ); -create table lxr_useage +create table lxr_usage (fileid int not null references lxr_files, line int not null, symid int not null references lxr_symbols @@ -60,7 +60,7 @@ create index lxr_indexindex on lxr_indexes (symid) ; create unique index lxr_symbolindex on lxr_symbols (symname) ; -create index lxr_useageindex on lxr_useage (symid) ; +create index lxr_usageindex on lxr_usage (symid) ; create index lxr_filelookup on lxr_files (filename); grant all on lxr_tests.* to lxr@localhost; Index: MysqlTest.pm =================================================================== RCS file: /cvsroot/lxr/lxr-tools/tests/MysqlTest.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- MysqlTest.pm 9 May 2009 13:54:24 -0000 1.2 +++ MysqlTest.pm 9 May 2009 15:38:54 -0000 1.3 @@ -177,7 +177,7 @@ # Check directly in database my $data; - $data = $dbh->selectall_arrayref("SELECT * from lxr_useage WHERE symid=".$mysql->symid("symbol1")." ORDER BY line"); + $data = $dbh->selectall_arrayref("SELECT * from lxr_usage WHERE symid=".$mysql->symid("symbol1")." ORDER BY line"); $self->assert_equals(2000,$data->[0]->[1]); $self->assert_equals(2001, $data->[1]->[1]); |
From: AdrianIssott <adr...@us...> - 2009-05-09 14:07:19
|
Update of /cvsroot/lxr/lxr/lib/LXR/Index In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv32029/lib/LXR/Index Modified Files: Oracle.pm Log Message: Oracle Fix for bugs 2787781 and 2787771 for Changes the interface to Oracle to match the documentation so that fileindexed returns whether the file has been indexed, not whether it needs indexing. Aligned the Oracle, Postgres and Mysql implementations of fileindexed, filereferenced, setfileindexed and setfilereferenced. Index: Oracle.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index/Oracle.pm,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- Oracle.pm 26 Apr 2009 09:14:37 -0000 1.15 +++ Oracle.pm 9 May 2009 14:07:13 -0000 1.16 @@ -201,15 +201,24 @@ $self->{status_get}->finish(); if (!defined($status)) { - $self->{status_insert}->execute($fileid + 0, 0); + $status = 0; } - - return $status == 0; + return $status; } sub setfileindexed { my ($self, $fileid) = @_; - $self->{status_update}->execute(1, $fileid, 0); + my ($status); + + $self->{status_get}->execute($fileid); + $status = $self->{status_get}->fetchrow_array(); + $self->{status_get}->finish(); + + if (!defined($status)) { + $self->{status_insert}->execute($fileid + 0, 1); + } else { + $self->{status_update}->execute(1, $fileid, 0); + } } sub filereferenced { @@ -220,12 +229,22 @@ $status = $self->{status_get}->fetchrow_array(); $self->{status_get}->finish(); - return $status < 2; + return defined($status) && $status == 2; } sub setfilereferenced { my ($self, $fileid) = @_; - $self->{status_update}->execute(2, $fileid, 1); + my ($status); + + $self->{status_get}->execute($fileid); + $status = $self->{status_get}->fetchrow_array(); + $self->{status_get}->finish(); + + if (!defined($status)) { + $self->{status_insert}->execute($fileid + 0, 2); + } else { + $self->{status_update}->execute(2, $fileid, 1); + } } sub symdeclarations { |
From: AdrianIssott <adr...@us...> - 2009-05-09 13:55:23
|
Update of /cvsroot/lxr/lxr-tools/tests In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv22260/tests Modified Files: MysqlTest.pm Log Message: Fix for bug 2789413 (MysqlTest.pm Doesn't Work on Windows) * Use File::Spec to get the null device in an OS independent way Index: MysqlTest.pm =================================================================== RCS file: /cvsroot/lxr/lxr-tools/tests/MysqlTest.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- MysqlTest.pm 6 May 2009 22:33:08 -0000 1.1 +++ MysqlTest.pm 9 May 2009 13:54:24 -0000 1.2 @@ -5,6 +5,7 @@ package MysqlTest; use strict; +use File::Spec; use Test::Unit; use LXR::Config; use LXR::Index::Mysql; @@ -218,7 +219,7 @@ my $self = shift; # Clear out all data in the database - system("mysql -u lxr < initdb-mysql > /dev/null 2>&1"); + system("mysql -u lxr < initdb-mysql > ".File::Spec->devnull()." 2>&1"); # Create config $config = new LXR::Config("http://test/lxr", "./lxr.conf"); # Create Mysql object |
From: AdrianIssott <adr...@us...> - 2009-05-09 13:55:17
|
Update of /cvsroot/lxr/lxr-tools In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv22260 Added Files: .cvsignore Log Message: Fix for bug 2789413 (MysqlTest.pm Doesn't Work on Windows) * Use File::Spec to get the null device in an OS independent way --- NEW FILE: .cvsignore --- .project |
From: Malcolm B. <mb...@us...> - 2009-05-06 22:38:03
|
Update of /cvsroot/lxr/lxr/lib/LXR In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv28856/lib/LXR Modified Files: Index.pm Tagger.pm Log Message: Fix for bugs 2787781 and 2787771. Changes the interface to Mysql & Postgres to match the documentation so that fileindexed returns whether the file has been indexed, not whether it needs indexing. Aligned the Postgres and Mysql implementations of fileindexed, filereferenced, setfileindexed and setfilereferenced. NOTE: This commit will break any Index module that has not been updated. Part II will fix these Index: Index.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Index.pm,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- Index.pm 25 Apr 2009 20:40:24 -0000 1.13 +++ Index.pm 6 May 2009 22:37:50 -0000 1.14 @@ -72,6 +72,11 @@ return; } +# If the file referred to by $fileid has already been referenced +# return true. Otherwise return false. NOTE: a file must *always* +# be indexed before being referenced - calling setfilereferenced +# implicitly sets fileindexed as well + sub filereferenced { my ($self, $fileid) = @_; my $referencefoundboolean; Index: Tagger.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Tagger.pm,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- Tagger.pm 25 Apr 2009 20:40:24 -0000 1.23 +++ Tagger.pm 6 May 2009 22:37:50 -0000 1.24 @@ -42,7 +42,7 @@ $index->setfilerelease($fileid, $release); - if ($index->fileindexed($fileid)) { + if (!$index->fileindexed($fileid)) { $index->emptycache(); print(STDERR "--- $pathname $fileid\n"); @@ -77,7 +77,7 @@ if ($index) { my $fileid = $index->fileid($pathname, $revision); - if ($index->filereferenced($fileid)) { + if (!$index->filereferenced($fileid)) { $index->emptycache(); print(STDERR "--- $pathname $fileid\n"); |