[Collab-qa-commits] r946 - in udd: doc src/udd

neronus-guest at alioth.debian.org neronus-guest at alioth.debian.org
Sun Jul 27 13:26:35 UTC 2008


Author: neronus-guest
Date: 2008-07-27 13:26:34 +0000 (Sun, 27 Jul 2008)
New Revision: 946

Added:
   udd/doc/NOTES
Modified:
   udd/src/udd/bugs_gatherer.pl
Log:
Added NOTES files, which should contain various notes for UDD
Modified DELETE statments for bugs_gatherer, so that only the correct entries are delted, and not everything


Added: udd/doc/NOTES
===================================================================
--- udd/doc/NOTES	                        (rev 0)
+++ udd/doc/NOTES	2008-07-27 13:26:34 UTC (rev 946)
@@ -0,0 +1,5 @@
+Various notes regarding the Ultimate Debian Database:
+
+bugs-gatherer.pl:
+	if log_modified or date of a bug cannot be determined,
+		NULL is written into the those columns

Modified: udd/src/udd/bugs_gatherer.pl
===================================================================
--- udd/src/udd/bugs_gatherer.pl	2008-07-27 12:53:57 UTC (rev 945)
+++ udd/src/udd/bugs_gatherer.pl	2008-07-27 13:26:34 UTC (rev 946)
@@ -1,11 +1,14 @@
 #!/usr/bin/perl
-# Last-Modified: <Sun Jul 27 12:50:43 2008>
+# Last-Modified: <Sun Jul 27 13:09:48 2008>
 
 use strict;
 use warnings;
 
-use lib qw{./ /org/udd.debian.net/mirrors/bugs.debian.org/perl};
+use FindBin '$Bin';
 
+# We need our own copy of Debbugs::Status for now
+use lib $Bin, qw{/org/udd.debian.net/mirrors/bugs.debian.org/perl};
+
 use DBI;
 use YAML::Syck;
 
@@ -47,20 +50,22 @@
 	$dbh->{AutoCommit} = 0;
 
 	#delete the bug, if it exists
-	$dbh->prepare("DELETE FROM bugs")->execute();
-	$dbh->prepare("DELETE FROM bug_found_in")->execute();
-	$dbh->prepare("DELETE FROM bug_fixed_in")->execute();
-	$dbh->prepare("DELETE FROM bug_merged_with")->execute();
+	map {
+		$dbh->prepare("DELETE FROM $_ WHERE EXISTS (SELECT * FROM bugs WHERE id = bugs.id AND bugs.is_archived = " . ($src_config{archived} ? 'TRUE' : 'FALSE') . ")")->execute();
+	} qw{bug_found_in bug_fixed_in bug_merged_with};
+	$dbh->prepare("DELETE FROM bugs WHERE is_archived = " . ($src_config{archived} ? 'TRUE' : 'FALSE'))->execute();
 
 	my %binarytosource = ();
 
 	my $location = $src_config{archived} ? 'archive' : 'db_h';
 	# Read all bugs
 	foreach my $bug_nr ($src_config{archived} ? get_bugs(archive => 1) : get_bugs()) {
-		next unless $bug_nr =~ /00$/;
+		#next unless $bug_nr =~ /00$/;
 		# Fetch bug using Debbugs
+		# Bugs which were once archived and have been unarchived again will appear in get_bugs(archive => 1).
+		# However, those bugs are not to be found in location 'archive', so we detect them, and skip them
+		my $bug_ref = read_bug(bug => $bug_nr, location => $location) or (print STDERR "Could not read file for bug $bug_nr in $location; skipping\n" and next);
 		# Yeah, great, why does get_bug_status not accept a location?
-		my $bug_ref = read_bug(bug => $bug_nr, location => $location) or (print STDERR "Could not read file for bug $bug_nr in $location; skipping\n" and next);
 		my %bug = %{get_bug_status(bug => $bug_nr, status => $bug_ref)};
 		
 		# Convert data where necessary




More information about the Collab-qa-commits mailing list