Freeing the statement with DSQL_close, DSQL_drop or DSQL_unprepare is deferred (since the v11 protocol). As a result, the free is only sent when something else is subsequently sent over the connection.

I wonder if this makes sense for DSQL_drop and DSQL_unprepare, because the end result is that if you free the statement and then leave it alone for a long time, the statement remains prepared and holding existence locks, which can cause issues if you execute DDL dropping or modifying those metadata objects using another connection.

I think that sending the free immediately (at least for DSQL_drop and DSQL_unprepare), and only deferring the processing of the response might make more sense.

What do you think?

Mark
--
Mark Rotteveel


Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to