1+ /*M!999999\- enable the sandbox mode */
12
23/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
34/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
@@ -11126,15 +11127,15 @@ CREATE PROCEDURE `upsert_processing_program`(
1112611127 p_recordTimestamp datetime
1112711128 )
1112811129 MODIFIES SQL DATA
11129- COMMENT 'If p_id is not provided, inserts new row. Otherwise updates exis '
11130+ COMMENT 'If p_id is not provided, inserts new row. Otherwise updates existing row if uts processingStatus is NULL + other conditions. '
1113011131BEGIN
1113111132 DECLARE row_processingStatus tinyint(1) DEFAULT NULL;
1113211133 DECLARE row_processingEndTime datetime DEFAULT NULL;
1113311134
11134-
11135+
1113511136
1113611137 IF p_id IS NULL THEN
11137-
11138+
1113811139 INSERT INTO AutoProcProgram (processingStatus, processingStartTime, processingEndTime, processingMessage, processingJobId,
1113911140 processingCommandLine, processingPrograms, processingEnvironment, recordTimestamp)
1114011141 VALUES (
@@ -11146,45 +11147,43 @@ BEGIN
1114611147 p_commandLine,
1114711148 p_programs,
1114811149 p_environment,
11149-
11150+
1115011151 IFNULL(p_recordTimestamp, NOW())
1115111152 );
1115211153 SET p_id = LAST_INSERT_ID();
1115311154 ELSE
1115411155 START TRANSACTION;
11155- SELECT processingStatus, processingEndTime INTO row_processingStatus, row_processingEndTime
11156+ SELECT processingStatus, processingEndTime INTO row_processingStatus, row_processingEndTime
1115611157 FROM AutoProcProgram
11157- WHERE autoProcProgramId = p_id;
11158-
11159-
11160-
11161-
11158+ WHERE autoProcProgramId = p_id;
1116211159
11160+
11161+
11162+
11163+
1116311164 IF row_processingStatus IS NULL AND (
1116411165 row_processingEndTime IS NULL OR p_updateTimestamp IS NULL OR
1116511166 row_processingEndTime <= p_updateTimestamp OR p_status IS NOT NULL) THEN
1116611167
1116711168 UPDATE AutoProcProgram
1116811169 SET
11169-
11170+
1117011171 processingStatus = p_status,
11171-
11172-
11172+
11173+
1117311174 processingStartTime = COALESCE(processingStartTime, p_startTimestamp, NOW()),
11174-
11175+
1117511176 processingEndTime = IFNULL(p_updateTimestamp, NOW()),
11176-
11177+
1117711178 processingMessage = IFNULL(p_updateMessage, processingMessage),
1117811179 processingJobId = IFNULL(p_processingJobId, processingJobId),
1117911180 processingCommandLine = IFNULL(p_commandLine, processingCommandLine),
1118011181 processingPrograms = IFNULL(p_programs, processingPrograms),
1118111182 processingEnvironment = IFNULL(p_environment, processingEnvironment)
1118211183 WHERE autoProcProgramId = p_id;
11183- END IF;
11184- COMMIT;
1118511184 END IF;
11186-
1118711185 COMMIT;
11186+ END IF;
1118811187END ;;
1118911188DELIMITER ;
1119011189/*!50003 SET sql_mode = @saved_sql_mode */ ;
@@ -11319,6 +11318,95 @@ DELIMITER ;
1131911318/*!50003 SET collation_connection = @saved_col_connection */ ;
1132011319/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
1132111320/*!50003 SET sql_mode = '' */ ;
11321+ /*!50003 DROP PROCEDURE IF EXISTS `upsert_processing_program_v2` */;
11322+ /*!50003 SET @saved_cs_client = @@character_set_client */ ;
11323+ /*!50003 SET @saved_cs_results = @@character_set_results */ ;
11324+ /*!50003 SET @saved_col_connection = @@collation_connection */ ;
11325+ /*!50003 SET character_set_client = utf8mb3 */ ;
11326+ /*!50003 SET character_set_results = utf8mb3 */ ;
11327+ /*!50003 SET collation_connection = utf8mb3_general_ci */ ;
11328+ DELIMITER ;;
11329+ CREATE PROCEDURE `upsert_processing_program_v2`(
11330+ INOUT p_id int(11) unsigned,
11331+ p_commandLine varchar(255),
11332+ p_programs varchar(255),
11333+ p_status int(11),
11334+ p_updateMessage varchar(80),
11335+ p_startTimestamp datetime,
11336+ p_updateTimestamp datetime,
11337+ p_environment varchar(255),
11338+ p_processingJobId int(11) unsigned,
11339+ p_processingPipelineId int(11) unsigned,
11340+ p_recordTimestamp datetime
11341+ )
11342+ MODIFIES SQL DATA
11343+ COMMENT 'If p_id is not provided, inserts new row. Otherwise updates existing row if uts processingStatus is NULL + other conditions.'
11344+ BEGIN
11345+ DECLARE row_processingStatus tinyint(1) DEFAULT NULL;
11346+ DECLARE row_processingEndTime datetime DEFAULT NULL;
11347+
11348+
11349+
11350+ IF p_id IS NULL THEN
11351+
11352+ INSERT INTO AutoProcProgram (processingStatus, processingStartTime, processingEndTime, processingMessage, processingJobId,
11353+ processingPipelineId, processingCommandLine, processingPrograms, processingEnvironment, recordTimestamp)
11354+ VALUES (
11355+ p_status,
11356+ p_startTimestamp,
11357+ p_updateTimestamp,
11358+ p_updateMessage,
11359+ p_processingJobId,
11360+ p_processingPipelineId,
11361+ p_commandLine,
11362+ p_programs,
11363+ p_environment,
11364+
11365+ IFNULL(p_recordTimestamp, NOW())
11366+ );
11367+ SET p_id = LAST_INSERT_ID();
11368+ ELSE
11369+ START TRANSACTION;
11370+ SELECT processingStatus, processingEndTime INTO row_processingStatus, row_processingEndTime
11371+ FROM AutoProcProgram
11372+ WHERE autoProcProgramId = p_id;
11373+
11374+
11375+
11376+
11377+
11378+ IF row_processingStatus IS NULL AND (
11379+ row_processingEndTime IS NULL OR p_updateTimestamp IS NULL OR
11380+ row_processingEndTime <= p_updateTimestamp OR p_status IS NOT NULL) THEN
11381+
11382+ UPDATE AutoProcProgram
11383+ SET
11384+
11385+ processingStatus = p_status,
11386+
11387+
11388+ processingStartTime = COALESCE(processingStartTime, p_startTimestamp, NOW()),
11389+
11390+ processingEndTime = IFNULL(p_updateTimestamp, NOW()),
11391+
11392+ processingMessage = IFNULL(p_updateMessage, processingMessage),
11393+ processingJobId = IFNULL(p_processingJobId, processingJobId),
11394+ processingPipelineId = IFNULL(p_processingPipelineId, processingPipelineId),
11395+ processingCommandLine = IFNULL(p_commandLine, processingCommandLine),
11396+ processingPrograms = IFNULL(p_programs, processingPrograms),
11397+ processingEnvironment = IFNULL(p_environment, processingEnvironment)
11398+ WHERE autoProcProgramId = p_id;
11399+ END IF;
11400+ COMMIT;
11401+ END IF;
11402+ END ;;
11403+ DELIMITER ;
11404+ /*!50003 SET sql_mode = @saved_sql_mode */ ;
11405+ /*!50003 SET character_set_client = @saved_cs_client */ ;
11406+ /*!50003 SET character_set_results = @saved_cs_results */ ;
11407+ /*!50003 SET collation_connection = @saved_col_connection */ ;
11408+ /*!50003 SET @saved_sql_mode = @@sql_mode */ ;
11409+ /*!50003 SET sql_mode = '' */ ;
1132211410/*!50003 DROP PROCEDURE IF EXISTS `upsert_proposal` */;
1132311411/*!50003 SET @saved_cs_client = @@character_set_client */ ;
1132411412/*!50003 SET @saved_cs_results = @@character_set_results */ ;
@@ -12115,6 +12203,7 @@ DELIMITER ;
1211512203/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
1211612204/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
1211712205
12206+ /*M!999999\- enable the sandbox mode */
1211812207
1211912208/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
1212012209/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
0 commit comments