Problem/Motivation
Running the HHVM unit tests for Drupal 7, I found that the Transaction tests were passing, however with exceptions. Determining the exact tests failing pointed out that it was a group of tests involving DDL statements with transactions, while using a MySQL server.
The crux of the issue was that the Drupal tests were testing for savepoints in MySQL, after running a DDL statement. The MySQL documentation explicitly states that the active transaction is immediately committed when a DDL statement is run, hence the savepoints would no longer exist (raising the said errors.)
Proposed resolution
Later on in the test there is a branch that handles the situation where a database server does not support transactions. I propose wrapping all of the DDL+transaction tests in the block, instead of just testing ROLLBACK.
This also seems strange to me because why would we be testing for DDL+transactions if the server does not support it?
Remaining tasks
There might be some implications in the value supportsTransactionalDDL() returns. According to this test, it might mean that the database supports rolling back after DDL changes.