The version related getters and setters provided by sql::MetaTable do not expose the same error detection return values as the generic ones. This poses a risk to systems relying on this class as actions might be taken based on values returned due to errors that otherwise characterize a different situation.
Example: MetaTable::SetVersionNumber fails internally when attempting to set a new value after a schema was upgraded. As this is not detected by the caller the transaction is committed. Now the database is as a different stage than its labeled version.
Working with Offline Pages we recently learned that Chrome's SQLite databases can get temporarily "unstable". If an instability moment should cause one of these calls to fail, wrong actions might be taken that might lead to data loss.
Comment 1 by carlosk@chromium.org
, Sep 14 2017