Skip to content
Prev Previous commit
Next Next commit
Ensure all non-DML statements that write are covered.
  • Loading branch information
coleifer committed May 9, 2019
commit 8b1cceda1f92723f749da4e79632f163859416e5
5 changes: 5 additions & 0 deletions Lib/sqlite3/test/regression.py
Original file line number Diff line number Diff line change
Expand Up @@ -510,6 +510,11 @@ def test_dml_detection_begin_exclusive(self):
conn.execute('ROLLBACK')
self.assertFalse(conn.in_transaction)

def test_dml_detection_vacuum(self):
conn = sqlite.connect(':memory:')
conn.execute('vacuum')
self.assertFalse(conn.in_transaction)


def suite():
regression_suite = unittest.makeSuite(RegressionTests, "Check")
Expand Down
6 changes: 5 additions & 1 deletion Modules/_sqlite/statement.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,11 @@ static int pysqlite_statement_is_dml(sqlite3_stmt *statement, const char *sql)

is_dml = (PyOS_strnicmp(p, "begin", 5) &&
PyOS_strnicmp(p, "create", 6) &&
PyOS_strnicmp(p, "drop", 4));
PyOS_strnicmp(p, "drop", 4) &&
PyOS_strnicmp(p, "alter", 5) &&
PyOS_strnicmp(p, "analyze", 7) &&
PyOS_strnicmp(p, "reindex", 7) &&
PyOS_strnicmp(p, "vacuum", 6));
break;
}
}
Expand Down