SQLite itself will only write to the database file page-size chunks that are aligned to a page boundary. But beware: Intermediate VFS shims might change that. Also, an application could, if it wanted to, acquire the sqlite3_file object for the database and then invoke the xWrite method with any parameters it wants. So, in other words, it would be reasonable to return SQLITE_IOERR or some other error code if you get an iAmt that is different from the page size, but it would not be reasonable to assert().