On 05/05/2017 14:01, Vlad Khorsun wrote:
>
>    It doesn't forces (nor expresses) new transaction isolation level to be 
> SNAPSHOT.

Yes, I forgot to inform it in comment for now.


> Probably, it would be more natural to extend "snap_shot" rule in parser:
>
> iso_mode
>       : snap_shot
>       | READ UNCOMMITTED version_mode
>       | READ COMMITTED version_mode
>       ;
>
> %type <uintVal>       snap_shot
> snap_shot
>       : SNAPSHOT
>       | SNAPSHOT TABLE
>       | SNAPSHOT TABLE STABILITY
> +     | SNAPSHOT SHARING FROM <N>

I like it.


>    Also, transaction_options() should verify\enforce isc_tpb_concurrency 
> isolation
> level for a new transaction.

Yes.


>    I don't understand for what purpose tra_oldest_snapshot was added.
In my understand, it's a property that new transaction should copy from
the base transaction. Isn't it?

Should I let the original code assign it even for new transactions
that's sharing a snapshot?

But please read answear bellow, may be important for it.


> Also it is not clear why "base_number" variable is introduced in 
> transaction_start()
> and why it replaces "number" in many places.

When first normal (not with sharing snapshot option) transaction is
started, it must record others transaction snapshot until its own *number*.

When second (with sharing snapshot option) transaction is started,
*number* has its new number too, but the snapshot vector must be record
only to the *base_number*, i.e., its snapshot vector should be identical
to the first transaction.


Adriano


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to