Project

General

Profile

Bug #11630

Updated by Enis Nuredini about 2 years ago

Im IK-Tool #11625 hat das SQL 'CALL()' noch funktioniert mit 20.4.1. Nach dem Update auf 20.11.0 funktioniert es nicht mehr. 

 In #11325 wurde CALL() angeblich implementiert (fuer 20.11.0) - es muss aber vorher schon mal funktioniert haben! Und nun, nachdem es neu implementiert ist, funktioniert es nicht mehr. Das macht alles kein Sinn. 

 Code aus IK Tool: 
 <pre> 
     # Action: 'moveToPool' 
     10 { 
       sql = SELECT '' FROM (SELECT '') AS fake WHERE '{{action:SE}}' = 'moveToPool' 
      
       10.sql = SELECT '' FROM (SELECT '') AS fake WHERE {{grIdPool:S0}}={{grIdPool2Bm:R}} 
       10.10.sql = CALL copyApplicationPostingUpload(@srcId:={{apId:S0}}) 

       20.sql = UPDATE Application 
                   SET grIdPool = {{grIdPool:S0}}, 
                       dateReceipt = IF( {{grIdPool:S0}}={{grIdPool2Bm:R}}, NOW(), dateReceipt), 
                       finalCostCategory = IF({{grIdPool:S0}}={{grIdPool1Bm:R}}, 
                                              CASE 
                                                WHEN totalCost=0 THEN '' 
                                                WHEN totalCost<100000 THEN 'below 100k' 
                                                WHEN totalCost<250000 THEN '100k to 250k' 
                                                ELSE 'above 250k' 
                                              END, 
                                              finalCostCategory) 
                   WHERE id = {{apId:S0}} AND '{{action:SE}}' = 'moveToPool' 
     } 
 </pre> 

 <pre> 
 DELIMITER $$ 
 CREATE DEFINER=`admino`@`localhost` PROCEDURE `copyApplicationPostingUpload`(IN `srcId` INT) 
     MODIFIES SQL DATA 
     SQL SECURITY INVOKER 
 BEGIN 

  
   CREATE TEMPORARY TABLE `tmp` SELECT * FROM Application WHERE 0; 

   INSERT INTO `tmp` SELECT * FROM `Application` WHERE id=@srcId; 

   UPDATE `tmp` SET id=0, srcId=@srcId, created=NOW(), modified=NOW(); 

   INSERT INTO `Application` SELECT * FROM `tmp`; 

   /* Variable will be used in QFQ after copying application */ 
   SET @newId=LAST_INSERT_ID(); 

   DROP TABLE `tmp`; 


  
   CREATE TEMPORARY TABLE `tmp` SELECT * FROM `Posting` WHERE 0; 

   INSERT INTO `tmp` SELECT `po`.* FROM `Posting` AS po, `Ggroup` AS gr WHERE po.apId=@srcId AND po.grId=gr.id AND gr.reference='mi_posting_nicht_budgetierte_mittel'; 

   UPDATE `tmp` SET id=0, apId=@newId, created=NOW(), modified=NOW(); 

   INSERT INTO `Posting` SELECT * FROM `tmp`; 

   DROP TABLE `tmp`; 


  
   CREATE TEMPORARY TABLE `tmp` SELECT * FROM `Note` WHERE 0; 

   INSERT INTO `tmp` SELECT `no`.* FROM `Note` AS no, `Ggroup` AS gr, Ggroup AS grFilter WHERE no.apId=@srcId AND no.grId=gr.id AND gr.grId=grFilter.id AND grFilter.reference='mi_upload'; 

   UPDATE `tmp` SET id=0, apId=@newId, created=NOW(), modified=NOW(); 

   INSERT INTO `Note` SELECT * FROM `tmp`; 

   DROP TABLE `tmp`; 


 END$$ 
 DELIMITER ; 
 </pre> 
 *Befuerchtung:* 

 * In 20.4.1 war noch Code in QFQ das `CALL()` funktioniert und dieser Code ist bis 20.11.0 verloren gegangen. 
 * Warum funktioniert es nicht, obwohl CR das als 'fixed/implemented' markiert hat in 20.11.0.

Back