Subject Re: [Firebird-Architect] RFC: External Engine API
Author Adriano dos Santos Fernandes
Vlad Khorsun escreveu:
>> Attachment and Transaction will be equivalent to Connection.
>>
>
> Why ? Are you going to disable multiply active transaction at one
> attachment ?
>
No, and that is the reason to have Attachment and Transaction instead of
JDBC Connection.

We create a method Attachment::startTransaction...

> ...
>
>>> There's one issue with such model - it requires TLS in plugin.
>>>
>> Where you see TLS required? All handles are accessible via structures
>> passed by the engine to the plugin.
>> Way to obtain connection and transaction handle is encapsulated inside
>> ExternalContext.
>>
>>
>>> I like Vlad's idea of having special DPB/TPB parameters for a current
>>> attachment/transaction more attractive. Do you have any objections to it?
>>>
>> AFAIU, this requires TLS.
>>
>
> It is implemented in B2_1_ExecStmt branch and not requires TLS.
>
I didn't reviewed it yet. Do it means something is passed in the DPB/TPB?

>
>> But I have no problem to have this, also it's in my plans to have it.
>> It makes connection to database automatically usable in Delphi, for example.
>>
>> For the transaction obtained via special TPB, what should be the
>> behavior of COMMIT and ROLLBACK? Should it act in a savepoint?
>>
>
> It is not allowed as transaction must be finished where it was started.
> I.e. if client application started transaction - client application must finish it.
> Another DBMS's may have own behavior, but in FB\IB it always worked
> this way.
But ISC API only closes transaction with commit or rollback, and current
clients components do it.

I suppose COMMIT/ROLLBACK in the server could work with savepoints, to
not change user transaction.


Adriano