diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2013-06-03 22:51:14 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2013-06-03 22:51:14 +0000 |
commit | 91ed0105333c4ac483f7581f13a317c5560bdf58 (patch) | |
tree | 00513f07817b3a4c68546458f41d470502134cf2 | |
parent | 03d06e8338edaee3140d0b492f3323d5a686ed90 (diff) | |
download | mandoc-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.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -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 " |