From: dklawren Date: Tue, 14 Jan 2020 19:19:33 +0000 (-0500) Subject: Bug 1588221 - Update current s3 storage controller to only upload attachments over... X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b5969d3e302ba9d8236dc4896764c47cee7791a0;p=thirdparty%2Fbugzilla.git Bug 1588221 - Update current s3 storage controller to only upload attachments over a certain size (schema only) --- diff --git a/Bugzilla/DB/Schema.pm b/Bugzilla/DB/Schema.pm index 15ce3c337..310970b2e 100644 --- a/Bugzilla/DB/Schema.pm +++ b/Bugzilla/DB/Schema.pm @@ -337,7 +337,7 @@ use constant ABSTRACT_SCHEMA => { REFERENCES => {TABLE => 'bugs', COLUMN => 'bug_id', DELETE => 'CASCADE'} }, attach_id => { - TYPE => 'INT3', + TYPE => 'INT5', REFERENCES => {TABLE => 'attachments', COLUMN => 'attach_id', DELETE => 'CASCADE'} }, @@ -509,7 +509,7 @@ use constant ABSTRACT_SCHEMA => { attachments => { FIELDS => [ - attach_id => {TYPE => 'MEDIUMSERIAL', NOTNULL => 1, PRIMARYKEY => 1}, + attach_id => {TYPE => 'BIGSERIAL', NOTNULL => 1, PRIMARYKEY => 1}, bug_id => { TYPE => 'INT3', NOTNULL => 1, @@ -538,10 +538,11 @@ use constant ABSTRACT_SCHEMA => { attachments_ispatch_idx => ['ispatch'], ], }, + attach_data => { FIELDS => [ id => { - TYPE => 'INT3', + TYPE => 'INT5', NOTNULL => 1, PRIMARYKEY => 1, REFERENCES => @@ -551,6 +552,20 @@ use constant ABSTRACT_SCHEMA => { ], }, + attachment_storage_class => { + FIELDS => [ + id => { + TYPE => 'INT5', + NOTNULL => 1, + PRIMARYKEY => 1, + REFERENCES => + {TABLE => 'attachments', COLUMN => 'attach_id', DELETE => 'CASCADE'} + }, + storage_class => {TYPE => 'varchar(64)', NOTNULL => 1}, + extra_data => {TYPE => 'MEDIUMTEXT'} + ], + }, + duplicates => { FIELDS => [ dupe_of => { @@ -654,7 +669,7 @@ use constant ABSTRACT_SCHEMA => { REFERENCES => {TABLE => 'bugs', COLUMN => 'bug_id', DELETE => 'CASCADE'} }, attach_id => { - TYPE => 'INT3', + TYPE => 'INT5', REFERENCES => {TABLE => 'attachments', COLUMN => 'attach_id', DELETE => 'CASCADE'} }, @@ -1809,7 +1824,7 @@ use constant ABSTRACT_SCHEMA => { user_agent => {TYPE => 'TINYTEXT', NOTNULL => 1}, timestamp => {TYPE => 'DATETIME', NOTNULL => 1}, bug_id => {TYPE => 'INT3', NOTNULL => 0}, - attach_id => {TYPE => 'INT4', NOTNULL => 0}, + attach_id => {TYPE => 'INT5', NOTNULL => 0}, request_url => {TYPE => 'TINYTEXT', NOTNULL => 1}, method => {TYPE => 'TINYTEXT', NOTNULL => 1}, action => {TYPE => 'varchar(20)', NOTNULL => 1}, diff --git a/Bugzilla/DB/Schema/Mysql.pm b/Bugzilla/DB/Schema/Mysql.pm index 21543b4b3..39c1fc45e 100644 --- a/Bugzilla/DB/Schema/Mysql.pm +++ b/Bugzilla/DB/Schema/Mysql.pm @@ -103,10 +103,12 @@ sub _initialize { INT2 => 'smallint', INT3 => 'mediumint', INT4 => 'integer', + INT5 => 'bigint(20)', SMALLSERIAL => 'smallint auto_increment', MEDIUMSERIAL => 'mediumint auto_increment', INTSERIAL => 'integer auto_increment', + BIGSERIAL => 'bigint(20) auto_increment', TINYTEXT => 'tinytext', MEDIUMTEXT => 'mediumtext', diff --git a/Bugzilla/DB/Schema/Oracle.pm b/Bugzilla/DB/Schema/Oracle.pm index 36f957820..751cb718f 100644 --- a/Bugzilla/DB/Schema/Oracle.pm +++ b/Bugzilla/DB/Schema/Oracle.pm @@ -46,10 +46,12 @@ sub _initialize { INT2 => 'integer', INT3 => 'integer', INT4 => 'integer', + INT5 => 'integer', SMALLSERIAL => 'integer', MEDIUMSERIAL => 'integer', INTSERIAL => 'integer', + BIGSERIAL => 'integer', TINYTEXT => 'varchar(255)', MEDIUMTEXT => 'varchar(4000)', diff --git a/Bugzilla/DB/Schema/Pg.pm b/Bugzilla/DB/Schema/Pg.pm index e4c7fae7a..b496f3886 100644 --- a/Bugzilla/DB/Schema/Pg.pm +++ b/Bugzilla/DB/Schema/Pg.pm @@ -55,10 +55,12 @@ sub _initialize { INT2 => 'integer', INT3 => 'integer', INT4 => 'integer', + INT5 => 'integer', SMALLSERIAL => 'serial unique', MEDIUMSERIAL => 'serial unique', INTSERIAL => 'serial unique', + BIGSERIAL => 'serial unique', TINYTEXT => 'varchar(255)', MEDIUMTEXT => 'text', diff --git a/Bugzilla/DB/Schema/Sqlite.pm b/Bugzilla/DB/Schema/Sqlite.pm index 1bd53515a..81cd8c2ea 100644 --- a/Bugzilla/DB/Schema/Sqlite.pm +++ b/Bugzilla/DB/Schema/Sqlite.pm @@ -35,10 +35,12 @@ sub _initialize { INT2 => 'integer', INT3 => 'integer', INT4 => 'integer', + INT5 => 'integer', SMALLSERIAL => 'SERIAL', MEDIUMSERIAL => 'SERIAL', INTSERIAL => 'SERIAL', + BIGSERIAL => 'SERIAL', TINYTEXT => 'text', MEDIUMTEXT => 'text', diff --git a/Bugzilla/Install/DB.pm b/Bugzilla/Install/DB.pm index 9425d95ec..cb5ff2093 100644 --- a/Bugzilla/Install/DB.pm +++ b/Bugzilla/Install/DB.pm @@ -805,6 +805,17 @@ sub update_table_definitions { # Bug 1576667 - dkl@mozilla.com _populate_api_keys_creation_ts(); + # Bug 1588221 - dkl@mozilla.com + $dbh->bz_alter_column('bugs_activity', 'attach_id', {TYPE => 'INT5'}); + $dbh->bz_alter_column('attachments', 'attach_id', + {TYPE => 'BIGSERIAL', NOTNULL => 1, PRIMARYKEY => 1}); + $dbh->bz_alter_column('attach_data', 'id', + {TYPE => 'INT5', NOTNULL => 1, PRIMARYKEY => 1}); + $dbh->bz_alter_column('flags', 'attach_id', {TYPE => 'INT5'}); + $dbh->bz_alter_column('user_request_log', 'attach_id', {TYPE => 'INT5'}); + _populate_attachment_storage_class(); + + ################################################################ # New --TABLE-- changes should go *** A B O V E *** this point # ################################################################ @@ -4326,6 +4337,25 @@ sub _populate_api_keys_creation_ts { {TYPE => 'DATETIME', NOTNULL => 1}); } +sub _populate_attachment_storage_class { + my $dbh = Bugzilla->dbh; + + my $attach_count + = $dbh->selectrow_array('SELECT COUNT(attach_id) FROM attachments'); + my $class_count + = $dbh->selectrow_array('SELECT COUNT(id) FROM attachment_storage_class'); + + # Return if we have already made these changes + if ($attach_count != $class_count) { + print "Populating attachments_storage_class table...\n"; + $dbh->do(" + INSERT INTO attachment_storage_class (id, storage_class) + SELECT attachments.attach_id, 'database' FROM attachments + WHERE NOT EXISTS (SELECT 1 FROM attachment_storage_class WHERE id = attachments.attach_id) + "); + } +} + 1; __END__ diff --git a/extensions/Review/Extension.pm b/extensions/Review/Extension.pm index 8fc103bd6..c60c425a0 100644 --- a/extensions/Review/Extension.pm +++ b/extensions/Review/Extension.pm @@ -874,7 +874,7 @@ sub db_schema_abstract_schema { }, attachment_id => { - TYPE => 'INT3', + TYPE => 'INT5', REFERENCES => {TABLE => 'attachments', COLUMN => 'attach_id', DELETE => 'CASCADE'} },