From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from krisdoz.my.domain (schwarze@localhost [127.0.0.1]) by krisdoz.my.domain (8.14.5/8.14.5) with ESMTP id r53MpGmh005923 for ; Mon, 3 Jun 2013 18:51:16 -0400 (EDT) Received: (from schwarze@localhost) by krisdoz.my.domain (8.14.5/8.14.3/Submit) id r53MpFou010545; Mon, 3 Jun 2013 18:51:15 -0400 (EDT) Date: Mon, 3 Jun 2013 18:51:15 -0400 (EDT) Message-Id: <201306032251.r53MpFou010545@krisdoz.my.domain> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: schwarze@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: Changing existing SQLite databases was utterly broken: 1) SQL X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- Changing existing SQLite databases was utterly broken: 1) SQL statements were only prepared when creating a new database. 2) We rely heavily on foreign_keys, but never enabled them. Modified Files: -------------- mdocml: mandocdb.c Revision Data ------------- Index: mandocdb.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mandocdb.c,v retrieving revision 1.56 retrieving revision 1.57 diff -Lmandocdb.c -Lmandocdb.c -u -p -r1.56 -r1.57 --- mandocdb.c +++ mandocdb.c @@ -1933,7 +1933,7 @@ dbopen(const char *base, int real) rc = sqlite3_open_v2(file, &db, ofl, NULL); if (SQLITE_OK == rc) - return(1); + goto prepare_statements; if (SQLITE_CANTOPEN != rc) { perror(file); return(0); @@ -1971,6 +1971,8 @@ dbopen(const char *base, int real) return(0); } +prepare_statements: + SQL_EXEC("PRAGMA foreign_keys = ON"); sql = "DELETE FROM docs where file=?"; sqlite3_prepare_v2(db, sql, -1, &stmts[STMT_DELETE], NULL); sql = "INSERT INTO docs " -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv