- if (needsCreate) SQL_createDatabase();
-
- int dbr;
-
- dbr = sqlite3_prepare_v2(
- dbh
- , "INSERT INTO `action`"
- " ( `actor`, `timestamp`, `type`,"
- " `list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodeMeta`,"
- " `x`, `y`, `z`,"
- " `oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,"
- " `newNode`, `newParam1`, `newParam2`, `newMeta`,"
- " `guessedActor`"
- " )"
- "VALUES"
- " ( ?, ?, ?,"
- " ?, ?, ?, ?, ?, ?,"
- " ?, ?, ?,"
- " ?, ?, ?, ?,"
- " ?, ?, ?, ?,"
- " ?"
- " );"
- , -1, &dbs_insert, NULL
- );
-
- if (dbr != SQLITE_OK)
- throw FileNotGoodException(sqlite3_errmsg(dbh));
-
- dbr = sqlite3_prepare_v2(
- dbh
- , "REPLACE INTO `action`"
- " ( `actor`, `timestamp`, `type`,"
- " `list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodeMeta`,"
- " `x`, `y`, `z`,"
- " `oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,"
- " `newNode`, `newParam1`, `newParam2`, `newMeta`,"
- " `guessedActor`, `id`"
- " )"
- "VALUES"
- " ( ?, ?, ?,"
- " ?, ?, ?, ?, ?, ?,"
- " ?, ?, ?,"
- " ?, ?, ?, ?,"
- " ?, ?, ?, ?,"
- " ?, ?"
- " );"
- , -1, &dbs_replace, NULL
- );
-
- if (dbr != SQLITE_OK)
- throw FileNotGoodException(sqlite3_errmsg(dbh));
-
- dbr = sqlite3_prepare_v2(dbh
- , "SELECT "
- " `actor`, `timestamp`, `type`"
- " , `list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodemeta`"
- " , `x`, `y`, `z`"
- " , `oldNode`, `oldParam1`, `oldParam2`, `oldMeta`"
- " , `newNode`, `newParam1`, `newParam2`, `newMeta`"
- " , `guessedActor`"
- " FROM `action`"
- " WHERE `timestamp` >= ?"
- " ORDER BY `timestamp` DESC, `id` DESC"
- , -1, &dbs_select, NULL
- );
- if (dbr != SQLITE_OK)
- throw FileNotGoodException(itos(dbr).c_str());
-
- dbr = sqlite3_prepare_v2(dbh
- , "SELECT "
- " `actor`, `timestamp`, `type`"
- " , `list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodemeta`"
- " , `x`, `y`, `z`"
- " , `oldNode`, `oldParam1`, `oldParam2`, `oldMeta`"
- " , `newNode`, `newParam1`, `newParam2`, `newMeta`"
- " , `guessedActor`"
- " FROM `action`"
- " WHERE `timestamp` >= ?"
- " AND `x` IS NOT NULL"
- " AND `y` IS NOT NULL"
- " AND `z` IS NOT NULL"
- " AND (ABS(`x`) - ABS(?)) <= ?"
- " AND (ABS(`y`) - ABS(?)) <= ?"
- " AND (ABS(`z`) - ABS(?)) <= ?"
- " ORDER BY `timestamp` DESC, `id` DESC"
- " LIMIT 0,5"
- , -1, &dbs_select_range, NULL
- );
- if (dbr != SQLITE_OK)
- throw FileNotGoodException(itos(dbr).c_str());
-
- dbr = sqlite3_prepare_v2(dbh
- , "SELECT "
- " `actor`, `timestamp`, `type`"
- " , `list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodemeta`"
- " , `x`, `y`, `z`"
- " , `oldNode`, `oldParam1`, `oldParam2`, `oldMeta`"
- " , `newNode`, `newParam1`, `newParam2`, `newMeta`"
- " , `guessedActor`"
- " FROM `action`"
- " WHERE `timestamp` >= ?"
- " AND `actor` = ?"
- " ORDER BY `timestamp` DESC, `id` DESC"
- , -1, &dbs_select_withActor, NULL
- );
- if (dbr != SQLITE_OK)
- throw FileNotGoodException(itos(dbr).c_str());
-
- dbr = sqlite3_prepare_v2(dbh, "SELECT `id`, `name` FROM `actor`", -1, &dbs_knownActor_select, NULL);
- if (dbr != SQLITE_OK)
- throw FileNotGoodException(itos(dbr).c_str());
-
- dbr = sqlite3_prepare_v2(dbh, "INSERT INTO `actor` (`name`) VALUES (?)", -1, &dbs_knownActor_insert, NULL);
- if (dbr != SQLITE_OK)
- throw FileNotGoodException(itos(dbr).c_str());
-
- dbr = sqlite3_prepare_v2(dbh, "SELECT `id`, `name` FROM `node`", -1, &dbs_knownNode_select, NULL);
- if (dbr != SQLITE_OK)
- throw FileNotGoodException(itos(dbr).c_str());
-
- dbr = sqlite3_prepare_v2(dbh, "INSERT INTO `node` (`name`) VALUES (?)", -1, &dbs_knownNode_insert, NULL);
- if (dbr != SQLITE_OK)
- throw FileNotGoodException(itos(dbr).c_str());
-
- infostream << "SQL prepared statements setup correctly" << std::endl;
-
- int select;
-
- sqlite3_reset(dbs_knownActor_select);
- while (SQLITE_ROW == (select = sqlite3_step(dbs_knownActor_select)))
+ SQLOK(sqlite3_prepare_v2(db,
+ "INSERT INTO `action` (\n"
+ " `actor`, `timestamp`, `type`,\n"
+ " `list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodeMeta`,\n"
+ " `x`, `y`, `z`,\n"
+ " `oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,\n"
+ " `newNode`, `newParam1`, `newParam2`, `newMeta`,\n"
+ " `guessedActor`\n"
+ ") VALUES (\n"
+ " ?, ?, ?,\n"
+ " ?, ?, ?, ?, ?, ?,\n"
+ " ?, ?, ?,\n"
+ " ?, ?, ?, ?,\n"
+ " ?, ?, ?, ?,\n"
+ " ?"
+ ");",
+ -1, &stmt_insert, NULL));
+
+ SQLOK(sqlite3_prepare_v2(db,
+ "REPLACE INTO `action` (\n"
+ " `actor`, `timestamp`, `type`,\n"
+ " `list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodeMeta`,\n"
+ " `x`, `y`, `z`,\n"
+ " `oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,\n"
+ " `newNode`, `newParam1`, `newParam2`, `newMeta`,\n"
+ " `guessedActor`, `id`\n"
+ ") VALUES (\n"
+ " ?, ?, ?,\n"
+ " ?, ?, ?, ?, ?, ?,\n"
+ " ?, ?, ?,\n"
+ " ?, ?, ?, ?,\n"
+ " ?, ?, ?, ?,\n"
+ " ?, ?\n"
+ ");",
+ -1, &stmt_replace, NULL));
+
+ SQLOK(sqlite3_prepare_v2(db,
+ "SELECT\n"
+ " `actor`, `timestamp`, `type`,\n"
+ " `list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodemeta`,\n"
+ " `x`, `y`, `z`,\n"
+ " `oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,\n"
+ " `newNode`, `newParam1`, `newParam2`, `newMeta`,\n"
+ " `guessedActor`\n"
+ " FROM `action`\n"
+ " WHERE `timestamp` >= ?\n"
+ " ORDER BY `timestamp` DESC, `id` DESC",
+ -1, &stmt_select, NULL));
+
+ SQLOK(sqlite3_prepare_v2(db,
+ "SELECT\n"
+ " `actor`, `timestamp`, `type`,\n"
+ " `list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodemeta`,\n"
+ " `x`, `y`, `z`,\n"
+ " `oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,\n"
+ " `newNode`, `newParam1`, `newParam2`, `newMeta`,\n"
+ " `guessedActor`\n"
+ "FROM `action`\n"
+ "WHERE `timestamp` >= ?\n"
+ " AND `x` IS NOT NULL\n"
+ " AND `y` IS NOT NULL\n"
+ " AND `z` IS NOT NULL\n"
+ " AND `x` BETWEEN ? AND ?\n"
+ " AND `y` BETWEEN ? AND ?\n"
+ " AND `z` BETWEEN ? AND ?\n"
+ "ORDER BY `timestamp` DESC, `id` DESC\n"
+ "LIMIT 0,?",
+ -1, &stmt_select_range, NULL));
+
+ SQLOK(sqlite3_prepare_v2(db,
+ "SELECT\n"
+ " `actor`, `timestamp`, `type`,\n"
+ " `list`, `index`, `add`, `stackNode`, `stackQuantity`, `nodemeta`,\n"
+ " `x`, `y`, `z`,\n"
+ " `oldNode`, `oldParam1`, `oldParam2`, `oldMeta`,\n"
+ " `newNode`, `newParam1`, `newParam2`, `newMeta`,\n"
+ " `guessedActor`\n"
+ "FROM `action`\n"
+ "WHERE `timestamp` >= ?\n"
+ " AND `actor` = ?\n"
+ "ORDER BY `timestamp` DESC, `id` DESC\n",
+ -1, &stmt_select_withActor, NULL));
+
+ SQLOK(sqlite3_prepare_v2(db, "SELECT `id`, `name` FROM `actor`",
+ -1, &stmt_knownActor_select, NULL));
+
+ SQLOK(sqlite3_prepare_v2(db, "INSERT INTO `actor` (`name`) VALUES (?)",
+ -1, &stmt_knownActor_insert, NULL));
+
+ SQLOK(sqlite3_prepare_v2(db, "SELECT `id`, `name` FROM `node`",
+ -1, &stmt_knownNode_select, NULL));
+
+ SQLOK(sqlite3_prepare_v2(db, "INSERT INTO `node` (`name`) VALUES (?)",
+ -1, &stmt_knownNode_insert, NULL));
+
+ verbosestream << "SQL prepared statements setup correctly" << std::endl;
+
+ while (sqlite3_step(stmt_knownActor_select) == SQLITE_ROW) {