I have seen some curious behavior with storage engines, and I was
wondering what the motivation is.
If I do the following:
lock tables foo write;
insert into foo values (1);
insert into foo values (2);
Our engine is transactional. In the above case, each insert statement
gets a call to start_stmt registers a transaction by calling
trans_register_ha, and at the end of each statement,
handlerton->commit is called.
However, if I have a function:
create function bug13825_2() returns int
insert into t1 values (1);
insert into t1 values (2);
and if I execute this function, for each statement, start_stmt is
called, but handlerton->commit is NOT called.
Why is handlerton->commit not called in this case? Is this a bug?