Hello Marko!
On Wed, Jun 13, 2007 at 12:05:32PM +0300, Marko Mäkelä wrote:
> I wonder if the following is correct behavior. This is from
> innodb.test:
>
> create table t1 (i int, j int ) ENGINE=innodb;
> insert into t1 values (1,2);
> select * from t1 where i=1 and j=2;
> create index ax1 on t1 (i,j);
> select * from t1 where i=1 and j=2;
>
> If I set a breakpoint on innobase_commit, it gets invoked for the
> INSERT, but not for the CREATE TABLE or CREATE INDEX statements.
>
> I have the impression that this behavior has been changed in the past
> few weeks.
>
> The documentation of CREATE INDEX doesn't mention transactions. I
> suppose that InnoDB is not the only transactional engine where data
> dictionary operations are not truly transactional. Is it OK for the
> engine to commit the transaction when it feels like that, or should
> MySQL instead invoke commit?
Strange, I see innobase_commit called by this CREATE INDEX both in 5.1
and 5.0. There is a ha_commit_stmt() in copy_data_between_tables().
Which version and which source tree are you on?