On 01/17/17 19:07, Adriano dos Santos Fernandes wrote:
> On 17/01/2017 13:48, Dimitry Sibiryakov wrote:
>> 17.01.2017 16:35, Adriano dos Santos Fernandes wrote:
>>> Temporary invalidated state is incompatible with DDL+DML using the
>>> being-changed DDL:
>>     It just require some decisions.
>>
>>> create table t (n integer, c computed by (f(n)));
>>> -- create function f ...
>>> commit;
>>> ----
>>> drop function f;
>>> select * from t; -- ??
>>     At prepare stage existence of object is checked anyway. Current 
>> transaction cannot see
>> function f - "function not found" error is thrown.
> Statement may already be prepared and allowed to be used not only in
> this dirty transaction, but in others one.

Statements prepared in a transaction performing DDL changes should not 
be usable in context of other transactions. Reverse rule should also be 
true - statement prepared outside particular DDL transaction is not 
usable in it. This will be new restriction but IMHO it's reasonable one.

For DDL transaction we should track a set of prepared statements. Each 
statement is also referenced from an object in such transaction's 
virtual metadata. When object is changed all related to it prepared 
statements are invalidated and shall raise an error on execute (and even 
fetch for opened cursors) attempt.

> This a monster much greater and uglier than DFW.
>

Do not beieve we can have good result with trivial metadata management :(
Let's plan our job in another direction - what do we want to get from 
users' POV.



------------------------------------------------------------------------------
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