@@ -130,7 +130,7 @@ DELIMITER ;
130130/*!50003 SET character_set_results = utf8mb3 */ ;
131131/*!50003 SET collation_connection = utf8mb3_general_ci */ ;
132132DELIMITER ;;
133- CREATE FUNCTION `retrieve_proposal_title`(p_proposal_code varchar(5), p_proposal_number int) RETURNS varchar(255) CHARSET latin1 COLLATE latin1_swedish_ci
133+ CREATE FUNCTION `retrieve_proposal_title`(p_proposal_code varchar(5), p_proposal_number int) RETURNS varchar(255) CHARSET latin1
134134 READS SQL DATA
135135BEGIN
136136 DECLARE ret_title varchar(255);
@@ -155,7 +155,7 @@ DELIMITER ;
155155/*!50003 SET character_set_results = utf8mb3 */ ;
156156/*!50003 SET collation_connection = utf8mb3_general_ci */ ;
157157DELIMITER ;;
158- CREATE FUNCTION `retrieve_proposal_title_v2`(p_proposalCode varchar(5), p_proposalNumber int) RETURNS varchar(255) CHARSET latin1 COLLATE latin1_swedish_ci
158+ CREATE FUNCTION `retrieve_proposal_title_v2`(p_proposalCode varchar(5), p_proposalNumber int) RETURNS varchar(255) CHARSET latin1
159159 READS SQL DATA
160160 COMMENT 'Retrieve the title for a given proposal code and number.'
161161BEGIN
@@ -206,7 +206,7 @@ DELIMITER ;
206206/*!50003 SET character_set_results = utf8mb3 */ ;
207207/*!50003 SET collation_connection = utf8mb3_general_ci */ ;
208208DELIMITER ;;
209- CREATE FUNCTION `root_replace`(p_str varchar(255), p_oldroot varchar(255), p_newroot varchar(255)) RETURNS varchar(255) CHARSET latin1 COLLATE latin1_swedish_ci
209+ CREATE FUNCTION `root_replace`(p_str varchar(255), p_oldroot varchar(255), p_newroot varchar(255)) RETURNS varchar(255) CHARSET latin1
210210 COMMENT 'Returns a varchar where the old root p_oldroot (the leftmost part) of p_str has been replaced with a new root p_newroot'
211211BEGIN
212212 DECLARE path_len smallint unsigned DEFAULT LENGTH(p_oldroot);
@@ -9448,7 +9448,7 @@ CREATE PROCEDURE `upsert_dc_group_v3`(
94489448 p_sessionNumber int(10),
94499449 p_sampleId int(10) unsigned,
94509450 p_sampleBarcode varchar(45),
9451- p_experimenttype varchar(45),
9451+ p_experimenttype varchar(45),
94529452 p_starttime datetime,
94539453 p_endtime datetime,
94549454 p_crystalClass varchar(20),
@@ -9459,53 +9459,57 @@ CREATE PROCEDURE `upsert_dc_group_v3`(
94599459 p_actualContainerSlotInSC integer(10),
94609460 p_comments varchar(1024),
94619461 p_xtalSnapshotFullPath varchar(255),
9462- p_scanParameters longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
9462+ p_scanParameters longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
94639463 )
94649464 MODIFIES SQL DATA
94659465 COMMENT 'Inserts or updates info about data collection group (p_id).\nMandatory columns:\nFor insert: Either p_sessionId or a valid session described by (p_proposalCode, p_proposalNumber, p_sessionNumber)\nFor update: p_id\nNote: In order to associate the data collection group with a sample, one of the following sets of parameters are required:\n* p_sampleId\n* p_proposalCode, p_proposalNumber, p_sessionNumber + p_sampleBarcode\n* p_actualContainerBarcode + p_actualSampleSlotInContainer\nReturns: Record ID in p_id.'
94669466BEGIN
9467- DECLARE row_proposal_id int(10) unsigned DEFAULT NULL;
9468- DECLARE row_sample_id int(10) unsigned DEFAULT NULL;
9467+ DECLARE row_proposal_id int(10) unsigned DEFAULT NULL;
9468+ DECLARE row_sample_id int(10) unsigned DEFAULT NULL;
9469+ DECLARE row_experiment_id int(10) unsigned DEFAULT NULL;
94699470
9470- IF p_sessionId IS NULL AND p_proposalCode IS NOT NULL AND p_proposalNumber IS NOT NULL AND p_sessionNumber IS NOT NULL THEN
9471+ IF p_sessionId IS NULL AND p_proposalCode IS NOT NULL AND p_proposalNumber IS NOT NULL AND p_sessionNumber IS NOT NULL THEN
94719472 SELECT max(bs.sessionid), p.proposalId INTO p_sessionId, row_proposal_id
94729473 FROM Proposal p INNER JOIN BLSession bs ON p.proposalid = bs.proposalid
94739474 WHERE p.proposalCode = p_proposalCode AND p.proposalNumber = p_proposalNumber AND bs.visit_number = p_sessionNumber;
94749475 END IF;
94759476
94769477 IF p_id IS NOT NULL OR p_sessionId IS NOT NULL THEN
9477-
9478+
94789479 IF p_sessionId IS NOT NULL AND p_sampleId IS NULL AND p_sampleBarcode IS NOT NULL THEN
9479- IF row_proposal_id IS NULL THEN
9480- SELECT proposalId INTO row_proposal_id
9481- FROM BLSession
9482- WHERE sessionId = p_sessionId;
9480+ IF row_proposal_id IS NULL THEN
9481+ SELECT proposalId INTO row_proposal_id
9482+ FROM BLSession
9483+ WHERE sessionId = p_sessionId;
9484+ END IF;
9485+ SELECT max(bls.blSampleId) INTO p_sampleId
9486+ FROM BLSample bls
9487+ INNER JOIN Container c on c.containerId = bls.containerId
9488+ INNER JOIN Dewar d on d.dewarId = c.dewarId
9489+ INNER JOIN Shipping s on s.shippingId = d.shippingId
9490+ WHERE bls.code = p_sampleBarcode AND s.proposalId = row_proposal_id;
94839491 END IF;
9484- SELECT max(bls.blSampleId) INTO p_sampleId
9485- FROM BLSample bls
9486- INNER JOIN Container c on c.containerId = bls.containerId
9487- INNER JOIN Dewar d on d.dewarId = c.dewarId
9488- INNER JOIN Shipping s on s.shippingId = d.shippingId
9489- WHERE bls.code = p_sampleBarcode AND s.proposalId = row_proposal_id;
9490- END IF;
94919492
9492- IF p_sampleId IS NULL AND (p_actualContainerBarcode IS NOT NULL) AND (p_actualSampleSlotInContainer IS NOT NULL) THEN
9493- SELECT max(bls.blSampleId) INTO p_sampleId
9494- FROM BLSample bls
9495- INNER JOIN Container c on c.containerId = bls.containerId
9496- WHERE c.barcode = p_actualContainerBarcode AND bls.location = p_actualSampleSlotInContainer;
9497- END IF;
9493+ IF p_sampleId IS NULL AND (p_actualContainerBarcode IS NOT NULL) AND (p_actualSampleSlotInContainer IS NOT NULL) THEN
9494+ SELECT max(bls.blSampleId) INTO p_sampleId
9495+ FROM BLSample bls
9496+ INNER JOIN Container c on c.containerId = bls.containerId
9497+ WHERE c.barcode = p_actualContainerBarcode AND bls.location = p_actualSampleSlotInContainer;
9498+ END IF;
94989499
9499- INSERT INTO DataCollectionGroup (datacollectionGroupId, sessionId, blsampleId, experimenttype, starttime, endtime,
9500+ SELECT experimentTypeId INTO row_experiment_id FROM ExperimentType WHERE name = p_experimenttype;
9501+
9502+ INSERT INTO DataCollectionGroup (datacollectionGroupId, sessionId, blsampleId, experimenttype, experimentTypeId, starttime, endtime,
95009503 crystalClass, detectorMode, actualSampleBarcode, actualSampleSlotInContainer, actualContainerBarcode, actualContainerSlotInSC,
95019504 comments, xtalSnapshotFullPath, scanParameters)
9502- VALUES (p_id, p_sessionId, p_sampleId, p_experimenttype, p_starttime, p_endtime, p_crystalClass, p_detectorMode,
9505+ VALUES (p_id, p_sessionId, p_sampleId, p_experimenttype, row_experiment_id, p_starttime, p_endtime, p_crystalClass, p_detectorMode,
95039506 p_actualSampleBarcode, p_actualSampleSlotInContainer, p_actualContainerBarcode, p_actualContainerSlotInSC,
95049507 p_comments, p_xtalSnapshotFullPath, p_scanParameters)
95059508 ON DUPLICATE KEY UPDATE
95069509 sessionId = IFNULL(p_sessionId, sessionId),
95079510 blsampleId = IFNULL(p_sampleId, blsampleId),
95089511 experimenttype = IFNULL(p_experimenttype, experimenttype),
9512+ experimentTypeId = row_experiment_id,
95099513 starttime = IFNULL(p_starttime, starttime),
95109514 endtime = IFNULL(p_endtime, endtime),
95119515 crystalClass = IFNULL(p_crystalClass, crystalClass),
@@ -9518,13 +9522,13 @@ BEGIN
95189522 xtalSnapshotFullPath = IFNULL(p_xtalSnapshotFullPath, xtalSnapshotFullPath),
95199523 scanParameters = IFNULL (p_scanParameters, scanParameters);
95209524
9521- IF p_id IS NULL THEN
9522- SET p_id = LAST_INSERT_ID();
9525+ IF p_id IS NULL THEN
9526+ SET p_id = LAST_INSERT_ID();
95239527 END IF;
9524- ELSE
9525- SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO=1644, MESSAGE_TEXT='Mandatory argument(s) are NULL: p_id OR p_sessionId OR a valid session described by (p_proposalCode and p_proposalNumber and p_sessionNumber) must be non-NULL.';
9526- END IF;
9527- END ;;
9528+ ELSE
9529+ SIGNAL SQLSTATE '45000' SET MYSQL_ERRNO=1644, MESSAGE_TEXT='Mandatory argument(s) are NULL: p_id OR p_sessionId OR a valid session described by (p_proposalCode and p_proposalNumber and p_sessionNumber) must be non-NULL.';
9530+ END IF;
9531+ END ;;
95289532DELIMITER ;
95299533/*!50003 SET sql_mode = @saved_sql_mode */ ;
95309534/*!50003 SET character_set_client = @saved_cs_client */ ;
0 commit comments