tests/C_C++/finalize_reprepare.c
2024-12-10 20:40:17 +01:00

50 lines
1.1 KiB
C

// @BAKE gcc -o finalize_reprepare finalize_reprepare.c -lsqlite3
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
#define DB_NAME "test.db"
#define ITERATIONS 10000
void handle_error(int rc, sqlite3 *db) {
if (rc != SQLITE_OK) {
fprintf(stderr, "Error: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
}
void finalize_reprepare_performance() {
sqlite3 *db;
sqlite3_stmt *stmt;
int rc;
const char *sql = "INSERT INTO test (value) VALUES (?);";
rc = sqlite3_open(DB_NAME, &db);
handle_error(rc, db);
rc = sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, value TEXT);", NULL, NULL, NULL);
handle_error(rc, db);
for (int i = 0; i < ITERATIONS; i++) {
rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
handle_error(rc, db);
rc = sqlite3_bind_text(stmt, 1, "test", -1, SQLITE_STATIC);
handle_error(rc, db);
rc = sqlite3_step(stmt);
if (rc != SQLITE_DONE) handle_error(rc, db);
sqlite3_finalize(stmt);
}
sqlite3_close(db);
}
int main() {
finalize_reprepare_performance();
return 0;
}