On 11/6/20 11:10 AM, Jiří Činčura wrote:
It must be bound to the Database class instance.

It's talked about routines instance in
https://github.com/FirebirdSQL/firebird/blob/master/doc/README.external_routines.txt

For the engine, it must be the same.
In the document I see only:

===
When Firebird wants to load an external routine (function, procedure or 
trigger) into its metadata
cache, it gets (if not already done for the database*) the external engine 
through the plugin
external engine factory and asks it for the routine. The plugin used is the one 
referenced by the
attribute plugin_module of the external engine.

* This is in Super-Server. In [Super-]Classic, different attachments to one 
database create
multiple metadata caches and hence multiple external engine instances.
===

The loading of the plugin is kind of clear. But at the moment I'm looking for 
answers for these questions:
* When is the EE plugin going to be unloaded?

In FB3 - when database is closed.
In FB4 - when last attachmnet using engine is closed

* Will the server, in a single process, call the plugin factory concurrently in 
case i.e. two concurrent command executions happen (concurrent execution is 
obvious)?

There is intermal synchronization (RWLock) in EE manager which ensures no concurrent execution




Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to