From 91ed0105333c4ac483f7581f13a317c5560bdf58 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Mon, 3 Jun 2013 22:51:14 +0000 Subject: 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. --- mandocdb.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mandocdb.c b/mandocdb.c index ee0366ab..c3f1c4be 100644 --- a/mandocdb.c +++ b/mandocdb.c @@ -1,4 +1,4 @@ -/* $Id: mandocdb.c,v 1.56 2013/06/03 19:01:31 schwarze Exp $ */ +/* $Id: mandocdb.c,v 1.57 2013/06/03 22:51:14 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Kristaps Dzonsons * Copyright (c) 2011, 2012, 2013 Ingo Schwarze @@ -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 " -- cgit v1.2.3-56-ge451