From 0debb5ee00e50f0c5ac798f60ab3053005257d24 Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Tue, 26 Nov 2019 21:02:55 +0100 Subject: [PATCH] FIX initSubEntity (for like patterns) --- procedures/insertLinCon.sql | 2 +- procedures/query/initSubEntity.sql | 28 ++++++++++++++++++++-------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/procedures/insertLinCon.sql b/procedures/insertLinCon.sql index 878b70a..7c03d50 100644 --- a/procedures/insertLinCon.sql +++ b/procedures/insertLinCon.sql @@ -50,7 +50,7 @@ delimiter // CREATE PROCEDURE db_2_0.updateLinCon(in sig_from BIGINT, in sig_to BIGINT, in new_a DECIMAL(65,30), in new_b_dividend BIGINT, in new_b_divisor BIGINT, in new_c DECIMAL(65,30)) BEGIN - UPDATE units_ling_con SET signature_to=sig_to, a=new_a, b_dividend=new_b_dividend, b_divisor=new_b_divisor, c=new_c where signature_from=sig_from; + UPDATE units_lin_con SET signature_to=sig_to, a=new_a, b_dividend=new_b_dividend, b_divisor=new_b_divisor, c=new_c where signature_from=sig_from; END; // diff --git a/procedures/query/initSubEntity.sql b/procedures/query/initSubEntity.sql index 0390fcc..2c3aefb 100644 --- a/procedures/query/initSubEntity.sql +++ b/procedures/query/initSubEntity.sql @@ -28,27 +28,39 @@ DELIMITER // CREATE PROCEDURE db_2_0.initSubEntity(in e_id INT UNSIGNED, in ename VARCHAR(255), in tableName VARCHAR(255)) BEGIN - DECLARE ecount INT DEFAULT 0; - - SET @stmtStr = CONCAT('INSERT IGNORE INTO `', tableName, '` (id) SELECT id FROM entities WHERE name = ? UNION ALL SELECT entity_id FROM name_data WHERE value=? AND domain_id=0;'); + DECLARE ecount INT DEFAULT 0; + DECLARE op VARCHAR(255) DEFAULT '='; + + IF LOCATE("%", ename) > 0 THEN + SET op = "LIKE"; + END IF; + + SET @stmtStr = CONCAT('INSERT IGNORE INTO `', + tableName, + '` (id) SELECT id FROM entities WHERE name ', + op, + ' ? UNION ALL SELECT entity_id FROM name_data WHERE value ', + op, + ' ? AND domain_id=0;'); + PREPARE stmt FROM @stmtStr; - SET @ename = ename; + SET @ename = ename; EXECUTE stmt USING @ename, @ename; SET ecount = ROW_COUNT(); - DEALLOCATE PREPARE stmt; + DEALLOCATE PREPARE stmt; IF e_id IS NOT NULL THEN SET @stmtStr = CONCAT('INSERT IGNORE INTO `', tableName, '` (id) VALUES (', e_id, ')'); PREPARE stmt FROM @stmtStr; EXECUTE stmt; SET ecount = ecount + ROW_COUNT(); - DEALLOCATE PREPARE stmt; + DEALLOCATE PREPARE stmt; END IF; IF ecount > 0 THEN call getChildren(tableName); END IF; - + END; -// +// DELIMITER ; -- GitLab