1
1
/* Some tests:
2
2
SET @id = NULL;
3
- CALL upsert_dc_group_v2(@id, NULL, 'nt', 17192, 1, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
4
- SELECT * FROM DataCollectionGroup WHERE dataCollectionGroupId = @id;
5
- CALL upsert_dc_group_v2(@id, NULL, 'nt', 17192, 1, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'my funny comment','/dls/i03/data/2017/nt17192-1/jpegs/test.png');
3
+ CALL upsert_dc_group_v3(@id, NULL, 'cm', 14451, 1, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'funny comment','/dls/i03/data/2024/cm14451-1/jpegs/test.png', NULL);
6
4
SELECT * FROM DataCollectionGroup WHERE dataCollectionGroupId = @id;
7
5
8
- SET @id = NULL;
9
- CALL upsert_dc_group_v2(@id, 403, NULL, NULL, NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'my very funny comment','/dls/i03/data/2007/nt20-1/jpegs/test.png');
10
6
*/
11
7
12
8
DELIMITER ;;
@@ -29,7 +25,7 @@ CREATE OR REPLACE DEFINER=`ispyb_root`@`%` PROCEDURE `upsert_dc_group_v3`(
29
25
p_actualContainerSlotInSC integer (10 ),
30
26
p_comments varchar (1024 ),
31
27
p_xtalSnapshotFullPath varchar (255 ),
32
- p_scanParameters longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
28
+ p_scanParameters longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
33
29
)
34
30
MODIFIES SQL DATA
35
31
COMMENT ' Inserts or updates info about data collection group (p_id).
@@ -42,10 +38,11 @@ Note: In order to associate the data collection group with a sample, one of the
42
38
* p_actualContainerBarcode + p_actualSampleSlotInContainer
43
39
Returns: Record ID in p_id.'
44
40
BEGIN
45
- DECLARE row_proposal_id int (10 ) unsigned DEFAULT NULL ;
46
- DECLARE row_sample_id int (10 ) unsigned DEFAULT NULL ;
41
+ DECLARE row_proposal_id int (10 ) unsigned DEFAULT NULL ;
42
+ DECLARE row_sample_id int (10 ) unsigned DEFAULT NULL ;
43
+ DECLARE row_experiment_id int (10 ) unsigned DEFAULT NULL ;
47
44
48
- IF p_sessionId IS NULL AND p_proposalCode IS NOT NULL AND p_proposalNumber IS NOT NULL AND p_sessionNumber IS NOT NULL THEN
45
+ IF p_sessionId IS NULL AND p_proposalCode IS NOT NULL AND p_proposalNumber IS NOT NULL AND p_sessionNumber IS NOT NULL THEN
49
46
SELECT max (bs .sessionid ), p .proposalId INTO p_sessionId, row_proposal_id
50
47
FROM Proposal p INNER JOIN BLSession bs ON p .proposalid = bs .proposalid
51
48
WHERE p .proposalCode = p_proposalCode AND p .proposalNumber = p_proposalNumber AND bs .visit_number = p_sessionNumber;
@@ -54,36 +51,39 @@ BEGIN
54
51
IF p_id IS NOT NULL OR p_sessionId IS NOT NULL THEN
55
52
-- set p_sampleId if not already set
56
53
IF p_sessionId IS NOT NULL AND p_sampleId IS NULL AND p_sampleBarcode IS NOT NULL THEN
57
- IF row_proposal_id IS NULL THEN
58
- SELECT proposalId INTO row_proposal_id
59
- FROM BLSession
60
- WHERE sessionId = p_sessionId;
54
+ IF row_proposal_id IS NULL THEN
55
+ SELECT proposalId INTO row_proposal_id
56
+ FROM BLSession
57
+ WHERE sessionId = p_sessionId;
58
+ END IF;
59
+ SELECT max (bls .blSampleId ) INTO p_sampleId
60
+ FROM BLSample bls
61
+ INNER JOIN Container c on c .containerId = bls .containerId
62
+ INNER JOIN Dewar d on d .dewarId = c .dewarId
63
+ INNER JOIN Shipping s on s .shippingId = d .shippingId
64
+ WHERE bls .code = p_sampleBarcode AND s .proposalId = row_proposal_id;
61
65
END IF;
62
- SELECT max (bls .blSampleId ) INTO p_sampleId
63
- FROM BLSample bls
64
- INNER JOIN Container c on c .containerId = bls .containerId
65
- INNER JOIN Dewar d on d .dewarId = c .dewarId
66
- INNER JOIN Shipping s on s .shippingId = d .shippingId
67
- WHERE bls .code = p_sampleBarcode AND s .proposalId = row_proposal_id;
68
- END IF;
69
66
70
- IF p_sampleId IS NULL AND (p_actualContainerBarcode IS NOT NULL ) AND (p_actualSampleSlotInContainer IS NOT NULL ) THEN
71
- SELECT max (bls .blSampleId ) INTO p_sampleId
72
- FROM BLSample bls
73
- INNER JOIN Container c on c .containerId = bls .containerId
74
- WHERE c .barcode = p_actualContainerBarcode AND bls .location = p_actualSampleSlotInContainer;
75
- END IF;
67
+ IF p_sampleId IS NULL AND (p_actualContainerBarcode IS NOT NULL ) AND (p_actualSampleSlotInContainer IS NOT NULL ) THEN
68
+ SELECT max (bls .blSampleId ) INTO p_sampleId
69
+ FROM BLSample bls
70
+ INNER JOIN Container c on c .containerId = bls .containerId
71
+ WHERE c .barcode = p_actualContainerBarcode AND bls .location = p_actualSampleSlotInContainer;
72
+ END IF;
73
+
74
+ SELECT experimentTypeId INTO row_experiment_id FROM ExperimentType WHERE name = p_experimenttype;
76
75
77
- INSERT INTO DataCollectionGroup (datacollectionGroupId, sessionId, blsampleId, experimenttype, starttime, endtime,
76
+ INSERT INTO DataCollectionGroup (datacollectionGroupId, sessionId, blsampleId, experimenttype, experimentTypeId, starttime, endtime,
78
77
crystalClass, detectorMode, actualSampleBarcode, actualSampleSlotInContainer, actualContainerBarcode, actualContainerSlotInSC,
79
78
comments, xtalSnapshotFullPath, scanParameters)
80
- VALUES (p_id, p_sessionId, p_sampleId, p_experimenttype, p_starttime, p_endtime, p_crystalClass, p_detectorMode,
79
+ VALUES (p_id, p_sessionId, p_sampleId, p_experimenttype, row_experiment_id, p_starttime, p_endtime, p_crystalClass, p_detectorMode,
81
80
p_actualSampleBarcode, p_actualSampleSlotInContainer, p_actualContainerBarcode, p_actualContainerSlotInSC,
82
81
p_comments, p_xtalSnapshotFullPath, p_scanParameters)
83
82
ON DUPLICATE KEY UPDATE
84
83
sessionId = IFNULL(p_sessionId, sessionId),
85
84
blsampleId = IFNULL(p_sampleId, blsampleId),
86
85
experimenttype = IFNULL(p_experimenttype, experimenttype),
86
+ experimentTypeId = row_experiment_id,
87
87
starttime = IFNULL(p_starttime, starttime),
88
88
endtime = IFNULL(p_endtime, endtime),
89
89
crystalClass = IFNULL(p_crystalClass, crystalClass),
@@ -96,11 +96,11 @@ BEGIN
96
96
xtalSnapshotFullPath = IFNULL(p_xtalSnapshotFullPath, xtalSnapshotFullPath),
97
97
scanParameters = IFNULL (p_scanParameters, scanParameters);
98
98
99
- IF p_id IS NULL THEN
100
- SET p_id = LAST_INSERT_ID();
99
+ IF p_id IS NULL THEN
100
+ SET p_id = LAST_INSERT_ID();
101
101
END IF;
102
- ELSE
103
- 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.' ;
104
- END IF;
105
- END;;
102
+ ELSE
103
+ 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.' ;
104
+ END IF;
105
+ END;;
106
106
DELIMITER ;
0 commit comments