From bc7607c1c4e31b9583a6a772c41567c1b1928e6d Mon Sep 17 00:00:00 2001 From: "bugreport%peshkin.net" <> Date: Sat, 27 Aug 2005 06:11:30 +0000 Subject: Bug 305333: Move attachments.thedata to its own table Patch by Joel Peshkin r=lpsolit, a=justdave --- Bugzilla/Attachment.pm | 2 ++ Bugzilla/DB/Schema.pm | 8 +++++++- Bugzilla/Search.pm | 13 +++++++++++++ Bugzilla/Search/Quicksearch.pm | 4 ++-- 4 files changed, 24 insertions(+), 3 deletions(-) (limited to 'Bugzilla') diff --git a/Bugzilla/Attachment.pm b/Bugzilla/Attachment.pm index 78f4ceed5..558d7f8bc 100644 --- a/Bugzilla/Attachment.pm +++ b/Bugzilla/Attachment.pm @@ -78,6 +78,8 @@ sub query isobsolete, isprivate, LENGTH(thedata), submitter_id FROM attachments + INNER JOIN attach_data + ON id = attach_id WHERE bug_id = ? ORDER BY attach_id", undef, $bugid); diff --git a/Bugzilla/DB/Schema.pm b/Bugzilla/DB/Schema.pm index 3e86cc50d..e77e6d85b 100644 --- a/Bugzilla/DB/Schema.pm +++ b/Bugzilla/DB/Schema.pm @@ -301,7 +301,6 @@ use constant ABSTRACT_SCHEMA => { mimetype => {TYPE => 'MEDIUMTEXT', NOTNULL => 1}, ispatch => {TYPE => 'BOOLEAN'}, filename => {TYPE => 'varchar(100)', NOTNULL => 1}, - thedata => {TYPE => 'LONGBLOB', NOTNULL => 1}, submitter_id => {TYPE => 'INT3', NOTNULL => 1}, isobsolete => {TYPE => 'BOOLEAN', NOTNULL => 1, DEFAULT => 'FALSE'}, @@ -314,6 +313,13 @@ use constant ABSTRACT_SCHEMA => { attachments_submitter_id_idx => ['submitter_id', 'bug_id'], ], }, + attach_data => { + FIELDS => [ + id => {TYPE => 'INT3', NOTNULL => 1, + PRIMARYKEY => 1}, + thedata => {TYPE => 'LONGBLOB', NOTNULL => 1}, + ], + }, duplicates => { FIELDS => [ diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm index f30fe733b..64342d17c 100644 --- a/Bugzilla/Search.pm +++ b/Bugzilla/Search.pm @@ -756,6 +756,19 @@ sub init { "ON groups_$chartid.id = bug_group_map_$chartid.group_id"); $f = "groups_$chartid.name"; }, + "^attach_data\.thedata," => sub { + my $atable = "attachments_$chartid"; + my $dtable = "attachdata_$chartid"; + my $extra = ""; + if (Param("insidergroup") && !UserInGroup(Param("insidergroup"))) { + $extra = "AND $atable.isprivate = 0"; + } + push(@supptables, "INNER JOIN attachments AS $atable " . + "ON bugs.bug_id = $atable.bug_id $extra"); + push(@supptables, "INNER JOIN attach_data AS $dtable " . + "ON $dtable.id = $atable.attach_id"); + $f = "$dtable.thedata"; + }, "^attachments\..*," => sub { my $table = "attachments_$chartid"; my $extra = ""; diff --git a/Bugzilla/Search/Quicksearch.pm b/Bugzilla/Search/Quicksearch.pm index 9f6724507..365e56469 100644 --- a/Bugzilla/Search/Quicksearch.pm +++ b/Bugzilla/Search/Quicksearch.pm @@ -80,8 +80,8 @@ my %mappings = (# Status, Resolution, Platform, OS, Priority, Severity "attachment" => "attachments.description", "attachmentdesc" => "attachments.description", "attachdesc" => "attachments.description", - "attachmentdata" => "attachments.thedata", - "attachdata" => "attachments.thedata", + "attachmentdata" => "attach_data.thedata", + "attachdata" => "attach_data.thedata", "attachmentmimetype" => "attachments.mimetype", "attachmimetype" => "attachments.mimetype"); -- cgit v1.2.3-24-g4f1b