diff src/sqlite.sml @ 1115:150465f2895c

Database quotas
author Adam Chlipala <adamc@hcoop.net>
date Sun, 03 Jan 2010 17:13:45 -0500
parents db52c32dbe42
children 134da5110bf7
line wrap: on
line diff
--- a/src/sqlite.sml	Sun Jan 03 15:58:34 2010 -0500
+++ b/src/sqlite.sml	Sun Jan 03 17:13:45 2010 -0500
@@ -260,6 +260,8 @@
              newline,
              string "sqlite3 *sqlite;",
              newline,
+             string "sqlite3_stmt *stmt;",
+             newline,
              string "uw_conn *conn;",
              newline,
              newline,
@@ -269,6 +271,44 @@
              string "\"Can't open SQLite database.\");",
              newline,
              newline,
+             string "if (uw_database_max < SIZE_MAX) {",
+             newline,
+             box [string "char buf[100];",
+                  newline,
+                  newline,
+
+                  string "sprintf(buf, \"PRAGMA max_page_count = %llu\", (unsigned long long)(uw_database_max / 1024));",
+                  newline,
+                  newline,
+
+                  string "if (sqlite3_prepare_v2(sqlite, buf, -1, &stmt, NULL) != SQLITE_OK) {",
+                  newline,
+                  box [string "sqlite3_close(sqlite);",
+                       newline,
+                       string "uw_error(ctx, FATAL, \"Can't prepare max_page_count query for SQLite database\");",
+                       newline],
+                  string "}",
+                  newline,
+                  newline,
+
+                  string "if (sqlite3_step(stmt) != SQLITE_ROW) {",
+                  newline,
+                  box [string "sqlite3_finalize(stmt);",
+                       newline,
+                       string "sqlite3_close(sqlite);",
+                       newline,
+                       string "uw_error(ctx, FATAL, \"Can't set max_page_count parameter for SQLite database\");",
+                       newline],
+                  string "}",
+                  newline,
+                  newline,
+
+                  string "sqlite3_finalize(stmt);",
+                  newline],
+             string "}",
+             newline,
+             newline,
+                  
              string "conn = calloc(1, sizeof(uw_conn));",
              newline,
              string "conn->conn = sqlite;",