]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-sql: driver-sqlite - Extract result preparation to driver_sqlite_statement_result...
authorAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 10 Oct 2025 08:00:58 +0000 (11:00 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Thu, 29 Jan 2026 16:45:30 +0000 (16:45 +0000)
src/lib-sql/driver-sqlite.c

index 7d4cd6a3f377964025781288e48d7e1e48ebc3d7..50fc424af1959231ba5b098357ad04ebfc59bfe8 100644 (file)
@@ -514,15 +514,12 @@ static void driver_sqlite_exec(struct sql_db *_db, const char *query)
        (void)driver_sqlite_exec_query(db, query, &error);
 }
 
-static struct sql_result *
-driver_sqlite_query_s(struct sql_db *_db, const char *query)
+static struct sqlite_result *
+driver_sqlite_statement_result_prepare(struct sqlite_statement *stmt)
 {
        struct sqlite_result *result;
 
        result = i_new(struct sqlite_result, 1);
-       struct sql_statement *_stmt = driver_sqlite_statement_init(_db, query);
-       struct sqlite_statement *stmt =
-               container_of(_stmt, struct sqlite_statement, api);
 
        if (stmt->error != NULL) {
                result->api = driver_sqlite_error_result;
@@ -540,9 +537,21 @@ driver_sqlite_query_s(struct sql_db *_db, const char *query)
                        result->row = i_new(const char *, result->cols);
        }
 
-       result->api.db = _db;
+       result->api.db = stmt->api.db;
        result->api.refcount = 1;
-       result->api.event = event_create(_db->event);
+       result->api.event = event_create(stmt->api.db->event);
+
+       return result;
+}
+
+static struct sql_result *
+driver_sqlite_query_s(struct sql_db *_db, const char *query)
+{
+       struct sql_statement *_stmt = driver_sqlite_statement_init(_db, query);
+       struct sqlite_statement *stmt =
+               container_of(_stmt, struct sqlite_statement, api);
+       struct sqlite_result *result =
+               driver_sqlite_statement_result_prepare(stmt);
        driver_sqlite_result_log(result, query);
 
        return &result->api;