From 41953ab2dc154e7379386b8586a9c75406fbfb04 Mon Sep 17 00:00:00 2001
From: Leo Gordon <lg4@ebi.ac.uk>
Date: Fri, 15 Jul 2011 13:21:07 +0000
Subject: [PATCH] more flexible approach: allows to add triggers later by
 simply by sourcing the triggers file

---
 modules/Bio/EnsEMBL/Hive/DBSQL/DBAdaptor.pm             | 4 ++--
 modules/Bio/EnsEMBL/Hive/PipeConfig/HiveGeneric_conf.pm | 2 --
 sql/triggers.mysql                                      | 3 +++
 sql/triggers.sqlite                                     | 2 ++
 4 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/modules/Bio/EnsEMBL/Hive/DBSQL/DBAdaptor.pm b/modules/Bio/EnsEMBL/Hive/DBSQL/DBAdaptor.pm
index 3990d61f3..6cb8f600b 100755
--- a/modules/Bio/EnsEMBL/Hive/DBSQL/DBAdaptor.pm
+++ b/modules/Bio/EnsEMBL/Hive/DBSQL/DBAdaptor.pm
@@ -44,8 +44,8 @@ sub hive_use_triggers {  # getter only, not setter
     my $self = shift @_;
 
     unless( defined($self->{'_hive_use_triggers'}) ) {
-        my $arrRef = $self->get_MetaContainer->list_value_by_key( 'hive_use_triggers' );
-        $self->{'_hive_use_triggers'} = @$arrRef ? $arrRef->[0] : 0;
+        my ($hive_use_triggers) = @{ $self->get_MetaContainer->list_value_by_key( 'hive_use_triggers' ) };
+        $self->{'_hive_use_triggers'} = $hive_use_triggers || 0;
     } 
     return $self->{'_hive_use_triggers'};
 }
diff --git a/modules/Bio/EnsEMBL/Hive/PipeConfig/HiveGeneric_conf.pm b/modules/Bio/EnsEMBL/Hive/PipeConfig/HiveGeneric_conf.pm
index f57e212e2..e0c673d81 100644
--- a/modules/Bio/EnsEMBL/Hive/PipeConfig/HiveGeneric_conf.pm
+++ b/modules/Bio/EnsEMBL/Hive/PipeConfig/HiveGeneric_conf.pm
@@ -314,8 +314,6 @@ sub run {
         warn "Loading pipeline-wide parameters ...\n";
 
         my $pipeline_wide_parameters = $self->pipeline_wide_parameters;
-        $pipeline_wide_parameters->{'hive_use_triggers'} = $self->{'_extra_options'}{'hive_use_triggers'} || 0;  # pass it into the database
-
         while( my($meta_key, $meta_value) = each %$pipeline_wide_parameters ) {
             if($analysis_topup) {
                 $meta_container->delete_key($meta_key);
diff --git a/sql/triggers.mysql b/sql/triggers.mysql
index 6ebe730da..7e7e95775 100644
--- a/sql/triggers.mysql
+++ b/sql/triggers.mysql
@@ -26,3 +26,6 @@ FOR EACH ROW
         failed_job_count    = failed_job_count    + (CASE NEW.status WHEN 'FAILED' THEN 1                          ELSE 0 END)
     WHERE analysis_id = NEW.analysis_id;
 
+
+    # inform the runtime part of the system that triggers are in place:
+INSERT INTO meta (meta_key, meta_value) VALUES ('hive_use_triggers', '1');
diff --git a/sql/triggers.sqlite b/sql/triggers.sqlite
index ee3ce4e57..270fd196d 100644
--- a/sql/triggers.sqlite
+++ b/sql/triggers.sqlite
@@ -32,3 +32,5 @@ BEGIN
     WHERE analysis_id = NEW.analysis_id;
 END;
 
+    # inform the runtime part of the system that triggers are in place:
+INSERT INTO meta (meta_key, meta_value) VALUES ('hive_use_triggers', '1');
-- 
GitLab