Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/Tools/prepareHiveDatabase.sql @ 6033

Last change on this file since 6033 was 6033, checked in by cneumuel, 13 years ago

#1233

  • created baseclass for jobs (ItemJob) which derives OperatorJobs and EngineJobs
  • created special view for OptimizerJobs which derives from a more general view
  • removed logic from domain class HiveExperiment and moved it into RefreshableHiveExperiment
  • improved ItemTreeView
  • corrected plugin dependencies
  • fixed bug in database trigger when deleting HiveExperiments
  • added delete cascade for Plugin and PluginData
  • lots of fixes
File size: 7.3 KB
Line 
1/* this script is supposed to be executed after the plain DB is generated by the linq-to-sql schema */
2
3/* use these DROP commands if you want to run this query a second time on the same db */
4
5/*
6ALTER TABLE dbo.AssignedResources ALTER COLUMN AssignedRessourcesId DROP ROWGUIDCOL;
7ALTER TABLE dbo.Job ALTER COLUMN JobId DROP ROWGUIDCOL;
8ALTER TABLE dbo.SlaveGroup_Resource ALTER COLUMN SlaveGroup_RessourceId DROP ROWGUIDCOL;
9ALTER TABLE dbo.Plugin ALTER COLUMN PluginId DROP ROWGUIDCOL;
10ALTER TABLE dbo.RequiredPlugins ALTER COLUMN RequiredPluginId DROP ROWGUIDCOL;
11ALTER TABLE dbo.Resource ALTER COLUMN ResourceId DROP ROWGUIDCOL;
12ALTER TABLE dbo.UptimeCalendar ALTER COLUMN UptimeCalendarId DROP ROWGUIDCOL;
13ALTER TABLE dbo.HiveExperiment ALTER COLUMN HiveExperimentId DROP ROWGUIDCOL;
14
15ALTER TABLE dbo.AssignedResources DROP CONSTRAINT [DF_AssignedResources_AssignedRessourcesId];
16ALTER TABLE dbo.Job DROP CONSTRAINT [DF_Job_JobId];
17ALTER TABLE dbo.SlaveGroup_Resource DROP CONSTRAINT [DF_SlaveGroup_ResourceSlaveGroup_RessourceId];
18ALTER TABLE dbo.Plugin DROP CONSTRAINT [DF_Plugin_PluginId];
19ALTER TABLE dbo.RequiredPlugins DROP CONSTRAINT [DF_RequiredPlugins_RequiredPluginId];
20ALTER TABLE dbo.Resource DROP CONSTRAINT [DF_Resource_ResourceId];
21ALTER TABLE dbo.UptimeCalendar DROP CONSTRAINT [DF_UptimeCalendar_UptimeCalendarId];
22ALTER TABLE dbo.HiveExperiment DROP CONSTRAINT [DF_HiveExperiment_HiveExperimentId];
23*/
24
25ALTER TABLE dbo.AssignedResources ALTER COLUMN AssignedRessourcesId ADD ROWGUIDCOL;
26ALTER TABLE dbo.AssignedResources WITH NOCHECK ADD CONSTRAINT [DF_AssignedResources_AssignedRessourcesId] DEFAULT (newid()) FOR AssignedRessourcesId;
27ALTER TABLE [dbo].[AssignedResources]  DROP  CONSTRAINT [Job_AssignedResource]
28ALTER TABLE [dbo].[AssignedResources]  WITH CHECK ADD  CONSTRAINT [Job_AssignedResource] FOREIGN KEY([JobId])
29REFERENCES [dbo].[Job] ([JobId])
30ON UPDATE CASCADE
31ON DELETE CASCADE
32GO
33ALTER TABLE [dbo].[AssignedResources]  DROP  CONSTRAINT [Resource_AssignedResource]
34ALTER TABLE [dbo].[AssignedResources]  WITH CHECK ADD  CONSTRAINT [Resource_AssignedResource] FOREIGN KEY([ResourceId])
35REFERENCES [dbo].[Resource] ([ResourceId])
36ON UPDATE CASCADE
37ON DELETE CASCADE
38GO
39
40ALTER TABLE dbo.Job ALTER COLUMN JobId ADD ROWGUIDCOL;
41ALTER TABLE dbo.Job WITH NOCHECK ADD CONSTRAINT [DF_Job_JobId] DEFAULT (newid()) FOR JobId;
42GO
43
44ALTER TABLE [dbo].[StateLog]  DROP  CONSTRAINT [Job_StateLog]
45ALTER TABLE [dbo].[StateLog]  WITH CHECK ADD CONSTRAINT [Job_StateLog] FOREIGN KEY([JobId])
46REFERENCES [dbo].[Job] ([JobId])
47ON UPDATE CASCADE
48ON DELETE CASCADE
49GO
50ALTER TABLE [dbo].[StateLog]  DROP  CONSTRAINT [Resource_StateLog]
51ALTER TABLE [dbo].[StateLog]  WITH CHECK ADD CONSTRAINT [Resource_StateLog] FOREIGN KEY([SlaveId])
52REFERENCES [dbo].[Resource] ([ResourceId])
53ON UPDATE CASCADE
54ON DELETE SET NULL
55GO
56
57ALTER TABLE dbo.Plugin ALTER COLUMN PluginId ADD ROWGUIDCOL;
58ALTER TABLE dbo.Plugin WITH NOCHECK ADD CONSTRAINT [DF_Plugin_PluginId] DEFAULT (newid()) FOR PluginId;
59
60ALTER TABLE dbo.PluginData ALTER COLUMN PluginDataId ADD ROWGUIDCOL;
61ALTER TABLE dbo.PluginData WITH NOCHECK ADD CONSTRAINT [DF_PluginData_PluginDataId] DEFAULT (newid()) FOR PluginDataId;
62
63ALTER TABLE [dbo].[PluginData]  DROP  CONSTRAINT [Plugin_PluginData]
64ALTER TABLE [dbo].[PluginData]  WITH CHECK ADD  CONSTRAINT [Plugin_PluginData] FOREIGN KEY([PluginId])
65REFERENCES [dbo].[Plugin] ([PluginId])
66ON UPDATE CASCADE
67ON DELETE CASCADE
68GO
69
70ALTER TABLE dbo.RequiredPlugins ALTER COLUMN RequiredPluginId ADD ROWGUIDCOL;
71ALTER TABLE dbo.RequiredPlugins WITH NOCHECK ADD CONSTRAINT [DF_RequiredPlugins_RequiredPluginId] DEFAULT (newid()) FOR RequiredPluginId;
72
73ALTER TABLE [dbo].[RequiredPlugins]  DROP  CONSTRAINT [Job_RequiredPlugin]
74ALTER TABLE [dbo].[RequiredPlugins]  WITH CHECK ADD  CONSTRAINT [Job_RequiredPlugin] FOREIGN KEY([JobId])
75REFERENCES [dbo].[Job] ([JobId])
76ON UPDATE CASCADE
77ON DELETE CASCADE
78GO
79
80ALTER TABLE [dbo].[RequiredPlugins]  DROP  CONSTRAINT [Plugin_RequiredPlugin]
81ALTER TABLE [dbo].[RequiredPlugins]  WITH CHECK ADD  CONSTRAINT [Plugin_RequiredPlugin] FOREIGN KEY([PluginId])
82REFERENCES [dbo].[Plugin] ([PluginId])
83ON UPDATE CASCADE
84ON DELETE CASCADE
85GO
86
87ALTER TABLE dbo.Resource ALTER COLUMN ResourceId ADD ROWGUIDCOL;
88ALTER TABLE dbo.Resource WITH NOCHECK ADD CONSTRAINT [DF_Resource_ResourceId] DEFAULT (newid()) FOR ResourceId;
89
90ALTER TABLE dbo.UptimeCalendar ALTER COLUMN UptimeCalendarId ADD ROWGUIDCOL;
91ALTER TABLE dbo.UptimeCalendar WITH NOCHECK ADD CONSTRAINT [DF_UptimeCalendar_UptimeCalendarId] DEFAULT (newid()) FOR UptimeCalendarId;
92
93ALTER TABLE dbo.HiveExperiment ALTER COLUMN HiveExperimentId ADD ROWGUIDCOL;
94ALTER TABLE dbo.HiveExperiment WITH NOCHECK ADD CONSTRAINT [DF_HiveExperiment_HiveExperimentId] DEFAULT (newid()) FOR HiveExperimentId;
95
96ALTER TABLE dbo.StateLog ALTER COLUMN StateLogId ADD ROWGUIDCOL;
97ALTER TABLE dbo.StateLog WITH NOCHECK ADD CONSTRAINT [DF_StateLog_StateLogId] DEFAULT (newid()) FOR StateLogId;
98
99ALTER TABLE [dbo].[HiveExperimentPermission]  DROP  CONSTRAINT [HiveExperiment_HiveExperimentPermission]
100ALTER TABLE [dbo].[HiveExperimentPermission]  WITH CHECK ADD CONSTRAINT [HiveExperiment_HiveExperimentPermission] FOREIGN KEY([HiveExperimentId])
101REFERENCES [dbo].[HiveExperiment] ([HiveExperimentId])
102ON UPDATE CASCADE
103ON DELETE CASCADE
104GO
105
106/* create indices */
107CREATE INDEX Index_RequiredPlugins_JobId ON RequiredPlugins(JobId);
108
109/* triggers */
110USE [HeuristicLab.Hive-3.4]
111GO
112/****** Object:  Trigger [dbo].[tr_HiveExperimentDeleteCascade]    Script Date: 04/19/2011 16:31:53 ******/
113SET ANSI_NULLS ON
114GO
115SET QUOTED_IDENTIFIER ON
116GO
117-- =============================================
118-- Author:    cneumuel
119-- Create date: 19.04.2011
120-- Description: Deletes all associated jobs. This cannot be done with cascading delete,
121--              because the job table defines a INSTEAD OF DELETE trigger itself, which
122--              is not compatible with cascading deletes.
123-- =============================================
124CREATE TRIGGER [dbo].[tr_HiveExperimentDeleteCascade] ON [dbo].[HiveExperiment] INSTEAD OF DELETE AS
125BEGIN
126  DELETE Job FROM deleted, Job WHERE deleted.HiveExperimentId = Job.HiveExperimentId
127  DELETE HiveExperiment FROM deleted, HiveExperiment WHERE deleted.HiveExperimentId = HiveExperiment.HiveExperimentId
128END
129GO
130
131-- =============================================
132-- Author:    cneumuel
133-- Create date: 11.11.2010
134-- Description: Recursively deletes all child-jobs of a job when it is deleted. (Source: http://devio.wordpress.com/2008/05/23/recursive-delete-in-sql-server/)
135-- =============================================
136CREATE TRIGGER [dbo].[tr_JobDeleteCascade] ON [dbo].[Job] INSTEAD OF DELETE AS
137BEGIN
138  CREATE TABLE #Table(
139    JobId uniqueidentifier
140  )
141  INSERT INTO #Table (JobId)
142  SELECT JobId FROM deleted
143 
144  DECLARE @c INT
145  SET @c = 0
146 
147  WHILE @c <> (SELECT COUNT(JobId) FROM #Table) BEGIN
148    SELECT @c = COUNT(JobId) FROM #Table
149   
150    INSERT INTO #Table (JobId)
151      SELECT Job.JobId
152      FROM Job
153      LEFT OUTER JOIN #Table ON Job.JobId = #Table.JobId
154      WHERE Job.ParentJobId IN (SELECT JobId FROM #Table)
155        AND #Table.JobId IS NULL
156  END
157 
158  DELETE JobData FROM JobData INNER JOIN #Table ON JobData.JobId = #Table.JobId
159  DELETE Job FROM Job INNER JOIN #Table ON Job.JobId = #Table.JobId
160END
Note: See TracBrowser for help on using the repository browser.