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