diff -Nu -r --show-c-func work/Python-2.6.1/Modules/_sqlite/cursor.c work.new/Python-2.6.1/Modules/_sqlite/cursor.c --- work/Python-2.6.1/Modules/_sqlite/cursor.c 2008-09-12 15:33:22.000000000 -0700 +++ work.new/Python-2.6.1/Modules/_sqlite/cursor.c 2010-12-17 14:26:48.323301733 -0800 @@ -69,6 +69,14 @@ static pysqlite_StatementKind detect_sta return STATEMENT_DELETE; } else if (!strcmp(buf, "replace")) { return STATEMENT_REPLACE; + } else if (!strcmp(buf, "create")) { + return STATEMENT_CREATE; + } else if (!strcmp(buf, "alter")) { + return STATEMENT_ALTER; + } else if (!strcmp(buf, "drop")) { + return STATEMENT_DROP; + } else if (!strcmp(buf, "pragma")) { + return STATEMENT_PRAGMA; } else { return STATEMENT_OTHER; } @@ -560,6 +568,10 @@ PyObject* _pysqlite_query_execute(pysqli case STATEMENT_DELETE: case STATEMENT_INSERT: case STATEMENT_REPLACE: + case STATEMENT_CREATE: + case STATEMENT_ALTER: + case STATEMENT_DROP: + case STATEMENT_PRAGMA: if (!self->connection->inTransaction) { result = _pysqlite_connection_begin(self->connection); if (!result) { @@ -569,8 +581,9 @@ PyObject* _pysqlite_query_execute(pysqli } break; case STATEMENT_OTHER: - /* it's a DDL statement or something similar - - we better COMMIT first so it works for all cases */ + /* something else + - we better COMMIT first so it works for all cases. + - XXX this is probably a bad idea (surprising) */ if (self->connection->inTransaction) { result = pysqlite_connection_commit(self->connection, NULL); if (!result) { diff -Nu -r --show-c-func work/Python-2.6.1/Modules/_sqlite/cursor.h work.new/Python-2.6.1/Modules/_sqlite/cursor.h --- work/Python-2.6.1/Modules/_sqlite/cursor.h 2008-05-31 14:33:27.000000000 -0700 +++ work.new/Python-2.6.1/Modules/_sqlite/cursor.h 2010-12-17 14:27:24.893792279 -0800 @@ -48,7 +48,8 @@ typedef struct typedef enum { STATEMENT_INVALID, STATEMENT_INSERT, STATEMENT_DELETE, STATEMENT_UPDATE, STATEMENT_REPLACE, STATEMENT_SELECT, - STATEMENT_OTHER + STATEMENT_CREATE, STATEMENT_ALTER, STATEMENT_DROP, + STATEMENT_PRAGMA, STATEMENT_OTHER } pysqlite_StatementKind; extern PyTypeObject pysqlite_CursorType;