From e2ea6c51587e0d96c73c9270115680a9844a83f1 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Wed, 1 Dec 2021 17:10:40 +0800 Subject: [PATCH] test integrate SQLite --- cmake/cmake.options | 2 +- deps/CMakeLists.txt | 5 +++ deps/test/sqlite/sqliteTest.c | 58 ++++++++++++++++++++++++++++++++++- 3 files changed, 63 insertions(+), 2 deletions(-) diff --git a/cmake/cmake.options b/cmake/cmake.options index c8d6e33c1a..4c082fe79a 100644 --- a/cmake/cmake.options +++ b/cmake/cmake.options @@ -46,7 +46,7 @@ option( option( BUILD_DEPENDENCY_TESTS "If build dependency tests" - OFF + ON ) option( diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 08b1f113c1..e8699a6b04 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -96,6 +96,11 @@ if(${BUILD_WITH_SQLITE}) IMPORTED_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/sqlite/.libs/libsqlite3.a" INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/sqlite" ) + target_link_libraries(sqlite + INTERFACE m + INTERFACE pthread + INTERFACE dl + ) endif(${BUILD_WITH_SQLITE}) diff --git a/deps/test/sqlite/sqliteTest.c b/deps/test/sqlite/sqliteTest.c index ecc0d99ec8..ae0829181c 100644 --- a/deps/test/sqlite/sqliteTest.c +++ b/deps/test/sqlite/sqliteTest.c @@ -1,6 +1,62 @@ #include +#include "sqlite3.h" int main(int argc, char const *argv[]) { - printf("Hello world!\n"); + sqlite3 *db; + char * err_msg = 0; + + int rc = sqlite3_open("test.db", &db); + + if (rc != SQLITE_OK) { + fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db)); + sqlite3_close(db); + + return 1; + } + + char *sql = + "DROP TABLE IF EXISTS t;" + "CREATE TABLE t(id BIGINT);"; + + rc = sqlite3_exec(db, sql, 0, 0, &err_msg); + + if (rc != SQLITE_OK) { + fprintf(stderr, "SQL error: %s\n", err_msg); + + sqlite3_free(err_msg); + sqlite3_close(db); + + return 1; + } + + // Write a lot of data + int nrows = 100000; + int batch = 1000; + char tsql[1024]; + + int v = 0; + for (int k = 0; k < nrows / batch; k++) { + sqlite3_exec(db, "begin;", 0, 0, &err_msg); + + for (int i = 0; i < batch; i++) { + v++; + sprintf(tsql, "insert into t values (%d)", v); + rc = sqlite3_exec(db, tsql, 0, 0, &err_msg); + + if (rc != SQLITE_OK) { + fprintf(stderr, "SQL error: %s\n", err_msg); + + sqlite3_free(err_msg); + sqlite3_close(db); + + return 1; + } + } + + sqlite3_exec(db, "commit;", 0, 0, &err_msg); + } + + sqlite3_close(db); + return 0; }