Bug 35451: Add record_table to additional_field_values
This patch updates the database to include a record_table field in the additional_field_values table and adds an index on that field. This should facilitate more performant joins. Signed-off-by: David Nind <david@davidnind.com> Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de> Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
parent
882247a474
commit
ddd8e697b4
|
|
@ -0,0 +1,41 @@
|
|||
use Modern::Perl;
|
||||
|
||||
return {
|
||||
bug_number => "35451",
|
||||
description => "Add record_table field and index to additional_field_values",
|
||||
up => sub {
|
||||
my ($args) = @_;
|
||||
my ( $dbh, $out ) = @$args{qw(dbh out)};
|
||||
|
||||
unless ( column_exists( 'additional_field_values', 'record_table' ) ) {
|
||||
$dbh->do(
|
||||
q{
|
||||
ALTER TABLE additional_field_values ADD record_table varchar(255) NOT NULL DEFAULT '' COMMENT 'tablename of the related record' AFTER field_id
|
||||
}
|
||||
);
|
||||
|
||||
$dbh->do(
|
||||
q{
|
||||
UPDATE
|
||||
additional_field_values AS v
|
||||
INNER JOIN
|
||||
additional_fields AS f ON f.id = v.field_id
|
||||
SET
|
||||
v.record_table = f.tablename
|
||||
}
|
||||
);
|
||||
say $out "Added column 'additional_field_values.record_table'";
|
||||
}
|
||||
|
||||
unless ( index_exists( 'additional_field_values', 'record_table' ) ) {
|
||||
$dbh->do(
|
||||
q{
|
||||
ALTER TABLE `additional_field_values`
|
||||
ADD KEY `record_table` (`record_table`)
|
||||
}
|
||||
);
|
||||
|
||||
say $out "Added index 'record_table' to 'additional_field_values'";
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
@ -247,10 +247,12 @@ DROP TABLE IF EXISTS `additional_field_values`;
|
|||
CREATE TABLE `additional_field_values` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key identifier',
|
||||
`field_id` int(11) NOT NULL COMMENT 'foreign key references additional_fields(id)',
|
||||
`record_table` varchar(255) NOT NULL DEFAULT '' COMMENT 'tablename of the related record',
|
||||
`record_id` varchar(80) NOT NULL DEFAULT '' COMMENT 'record_id',
|
||||
`value` varchar(255) NOT NULL DEFAULT '' COMMENT 'value for this field',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `afv_fk` (`field_id`),
|
||||
KEY `record_table` (`record_table`),
|
||||
CONSTRAINT `afv_fk` FOREIGN KEY (`field_id`) REFERENCES `additional_fields` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
|
|
|||
Loading…
Reference in New Issue