aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2013-06-03 22:51:14 +0000
committerIngo Schwarze <schwarze@openbsd.org>2013-06-03 22:51:14 +0000
commit91ed0105333c4ac483f7581f13a317c5560bdf58 (patch)
tree00513f07817b3a4c68546458f41d470502134cf2
parent03d06e8338edaee3140d0b492f3323d5a686ed90 (diff)
downloadmandoc-91ed0105333c4ac483f7581f13a317c5560bdf58.tar.gz
mandoc-91ed0105333c4ac483f7581f13a317c5560bdf58.tar.zst
mandoc-91ed0105333c4ac483f7581f13a317c5560bdf58.zip
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.
-rw-r--r--mandocdb.c6
1 files 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 <kristaps@bsd.lv>
* Copyright (c) 2011, 2012, 2013 Ingo Schwarze <schwarze@openbsd.org>
@@ -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 "