06.03.2021 20:50, Mark Rotteveel wrote:
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.
Yes, and usually it is op_commit.
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?
I don't think it makes much sence as there are a lot of other ways to hold
metadata locks.
Regards,
Vlad
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel