As we know, for specifying table reservation the valid order is
isc_tpb_lock_write | isc_tpb_lock_read
<TABLE NAME>
isc_tpb_shared | isc_tpb_protected | isc_tpb_exclusive
In following TPB declaration
static char isc_tpb[] = {isc_tpb_version3,
isc_tpb_write,
isc_tpb_concurrency,
isc_tpb_nowait,
isc_tpb_protected, isc_tpb_lock_read, "EMPLOYEE"};
isc_tpb_protected will be ignored and default isc_tpb_shared will be used.
The reason is in tra.cpp:
case isc_tpb_shared:
case isc_tpb_protected:
case isc_tpb_exclusive:
break;
To correct this bug, the code should be replaced by
case gds__tpb_shared:
case gds__tpb_protected:
case gds__tpb_exclusive:
ERR_post(isc_bad_tpb_form, 0);
break;
Why is it important?
The above-mentioned erroneous TPB declaration originates in APIGuide.pdf for IB6
So, APIGuide misleads developers and FB doesn't clarify a matter
Source: Russian-speaking conference
http://www.sql.ru/forum/actualthread.aspx?bid=2&tid=388371
With best regards, Eugene