From 8129bef2fbbe20af77fa0a0b369f9bac61b4c335 Mon Sep 17 00:00:00 2001 From: Graham Knop Date: Thu, 28 Feb 2008 15:39:04 +0000 Subject: [PATCH] add another index to SQL Form tables --- docs/upgrades/upgrade_7.5.3-7.5.4.pl | 25 ++++++++++++++++++++++++- lib/WebGUI/Asset/Wobject/SQLForm.pm | 4 +++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/docs/upgrades/upgrade_7.5.3-7.5.4.pl b/docs/upgrades/upgrade_7.5.3-7.5.4.pl index 913d693ef..c79629671 100644 --- a/docs/upgrades/upgrade_7.5.3-7.5.4.pl +++ b/docs/upgrades/upgrade_7.5.3-7.5.4.pl @@ -22,11 +22,34 @@ my $quiet; # this line required my $session = start(); # this line required -# upgrade functions go here +addIndexesToSQLForms($session); finish($session); # this line required +#------------------------------------------------- +sub addIndexesToSQLForms { + my $session = shift; + print "\tAdding extra indexes to SQL Forms.\n" unless ($quiet); + my $sqlForms = WebGUI::Asset->getRoot($session)->getLineage(['descendants'], { + statusToInclude => [qw(pending approved archived)], + statesToInclude => [qw(published trash trash-limbo clipboard clipboard-limbo)], + returnObjects => 1, + includeOnlyClasses => ['WebGUI::Asset::Wobject::SQLForm'], + }); + for my $sqlForm (@$sqlForms) { + my $dbLink = WebGUI::DatabaseLink->new($session, $sqlForm->getValue('databaseLinkId'))->db; + my $dbh = $dbLink->dbh; + $dbh->{PrintError} = 0; + eval { + # We don't care about failure + $dbh->do('CREATE INDEX `recordId_archived` ON ' . $dbh->quote_identifier($sqlForm->get('tableName')) . ' (__recordId, __archived)'); + }; + $dbLink->disconnect; + } +} + + ##------------------------------------------------- #sub exampleFunction { # my $session = shift; diff --git a/lib/WebGUI/Asset/Wobject/SQLForm.pm b/lib/WebGUI/Asset/Wobject/SQLForm.pm index 12e904169..08a7a50ee 100644 --- a/lib/WebGUI/Asset/Wobject/SQLForm.pm +++ b/lib/WebGUI/Asset/Wobject/SQLForm.pm @@ -1395,6 +1395,7 @@ my $hasPrimaryKey = 0; } $dbLink->db->write("alter table $tableName add primary key (__recordId, __revision)"); + $dbLink->db->write("alter table $tableName add key recordId_archived (__recordId, __archived)"); } else { #new table @@ -1409,7 +1410,8 @@ my $hasPrimaryKey = 0; " __deletedBy varchar(22),". " __archived tinyint(1) default 0,". " __revision int(11) not null,". - " primary key (__recordId, __revision)". + " primary key (__recordId, __revision),". + " key recordId_archived (__recordId, __archived)". ")"); } }