Hello, All.

   Could anybody explain me the purpose of following piece of code in 
VIO_proc_merge_save_point(), please?

>       if ( (sav_point = transaction->tra_save_free) ) {
>               transaction->tra_save_free = sav_point->sav_next;
>       }
>       else {
>               sav_point = FB_NEW(*transaction->tra_pool) Savepoint();
>       }
>       sav_point->sav_next = sav_next;
>       sav_point->sav_number = sav_number;
>       *sav_point_list = sav_point;
>       sav_point_list = &sav_point->sav_next;

   My best guess is that this routine is called on SUSPEND, so all already 
happened 
changes must be merged to procedure savepoint because they must not be 
undonable, but 
stack has to be preserved because nested DML will continue working.

-- 
   WBR, SD.

------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment 
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to