Skip to content

Commit b507f17

Browse files
committed
feat: use summary tables and triggers (PilotAgentsDB.PilotAgents, distinct values)
1 parent 640e764 commit b507f17

File tree

2 files changed

+89
-3
lines changed

2 files changed

+89
-3
lines changed

src/DIRAC/WorkloadManagementSystem/DB/PilotAgentsDB.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -943,11 +943,12 @@ def getPilotSummaryWeb(self, selectDict, sortList, startItem, maxItems):
943943
def getPilotMonitorSelectors(self):
944944
"""Get distinct values for the Pilot Monitor page selectors"""
945945

946-
paramNames = ["VO", "GridType", "Status", "DestinationSite", "GridSite"]
946+
paramNames = ["VO", "Status", "DestinationSite", "GridSite"]
947947

948948
resultDict = {}
949949
for param in paramNames:
950-
result = self.getDistinctAttributeValues("PilotAgents", param)
950+
sql = f"SELECT * FROM Summary_{param} ORDER BY {param};"
951+
result = self._query(sql)
951952
if result["OK"]:
952953
resultDict[param] = result["Value"]
953954
else:

src/DIRAC/WorkloadManagementSystem/DB/PilotAgentsDB.sql

Lines changed: 86 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ CREATE TABLE `PilotAgents` (
4848
KEY `Statuskey` (`GridSite`,`DestinationSite`,`Status`)
4949
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
5050

51-
5251
DROP TABLE IF EXISTS `JobToPilotMapping`;
5352
CREATE TABLE `JobToPilotMapping` (
5453
`PilotID` INT(11) UNSIGNED NOT NULL,
@@ -65,3 +64,89 @@ CREATE TABLE `PilotOutput` (
6564
`StdError` MEDIUMTEXT,
6665
PRIMARY KEY (`PilotID`)
6766
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
67+
68+
69+
-- ------------------------------------------------------------------------------
70+
-- summary tables and triggers
71+
-- ------------------------------------------------------------------------------
72+
73+
-- distict values for GridType, GridSite, DestinationSite, Status and VO
74+
75+
DROP TABLE IF EXISTS Summary_GridType;
76+
CREATE TABLE Summary_GridSite (
77+
GridSite VARCHAR(128) PRIMARY KEY
78+
);
79+
DROP TABLE IF EXISTS Summary_DestinationSite;
80+
CREATE TABLE Summary_DestinationSite (
81+
DestinationSite VARCHAR(128) PRIMARY KEY
82+
);
83+
DROP TABLE IF EXISTS Summary_Status;
84+
CREATE TABLE Summary_Status (
85+
Status VARCHAR(128) PRIMARY KEY
86+
);
87+
DROP TABLE IF EXISTS Summary_VO;
88+
CREATE TABLE Summary_VO (
89+
VO VARCHAR(128) PRIMARY KEY
90+
);
91+
92+
DELIMITER //
93+
94+
CREATE TRIGGER trg_pa_insert
95+
AFTER INSERT ON PilotAgents
96+
FOR EACH ROW
97+
BEGIN
98+
INSERT IGNORE INTO Summary_GridSite (GridSite)
99+
VALUES (NEW.GridSite);
100+
101+
INSERT IGNORE INTO Summary_DestinationSite (DestinationSite)
102+
VALUES (NEW.DestinationSite);
103+
104+
INSERT IGNORE INTO Summary_Status (Status)
105+
VALUES (NEW.Status);
106+
107+
INSERT IGNORE INTO Summary_VO (VO)
108+
VALUES (NEW.VO);
109+
END;
110+
//
111+
112+
DELIMITER ;
113+
114+
DELIMITER //
115+
116+
CREATE TRIGGER trg_pa_delete
117+
AFTER DELETE ON PilotAgents
118+
FOR EACH ROW
119+
BEGIN
120+
IF NOT EXISTS (
121+
SELECT 1 FROM PilotAgents WHERE GridType = OLD.GridType
122+
) THEN
123+
DELETE FROM Summary_GridType WHERE GridType = OLD.GridType;
124+
END IF;
125+
126+
IF NOT EXISTS (
127+
SELECT 1 FROM PilotAgents WHERE GridSite = OLD.GridSite
128+
) THEN
129+
DELETE FROM Summary_GridSite WHERE GridSite = OLD.GridSite;
130+
END IF;
131+
132+
IF NOT EXISTS (
133+
SELECT 1 FROM PilotAgents WHERE DestinationSite = OLD.DestinationSite
134+
) THEN
135+
DELETE FROM Summary_DestinationSite WHERE DestinationSite = OLD.DestinationSite;
136+
END IF;
137+
138+
IF NOT EXISTS (
139+
SELECT 1 FROM PilotAgents WHERE Status = OLD.Status
140+
) THEN
141+
DELETE FROM Summary_Status WHERE Status = OLD.Status;
142+
END IF;
143+
144+
IF NOT EXISTS (
145+
SELECT 1 FROM PilotAgents WHERE VO = OLD.VO
146+
) THEN
147+
DELETE FROM Summary_VO WHERE VO = OLD.VO;
148+
END IF;
149+
END;
150+
//
151+
152+
DELIMITER ;

0 commit comments

Comments
 (0)