]> git.proxmox.com Git - pve-cluster.git/commitdiff
pmxcfs: db: use SQLITE_STATIC to avoid memory copies
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 22 Apr 2021 08:18:58 +0000 (10:18 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 22 Apr 2021 19:37:55 +0000 (21:37 +0200)
we can trust that we own *value and *name until the sqlite statement
was executed, so use the STATIC bind flag to tell sqlite that it does
not need to make it's own copy in the bind statement.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
data/src/database.c

index bf6dc5dff8bdfb76b326940879238e75f9ed32ac..e3949ef26b392f08dcb0e1ad17dc078c32c31b90 100644 (file)
@@ -185,12 +185,11 @@ static int backend_write_inode(
                cfs_critical("sqlite3_bind failed: %s\n", sqlite3_errmsg(db));
                return rc;
        }
-       /* question: can we use SQLITE_STATIC instead? */
-       if ((rc = sqlite3_bind_text(stmt, 7, name, -1, SQLITE_TRANSIENT)) !=  SQLITE_OK) {
+       if ((rc = sqlite3_bind_text(stmt, 7, name, -1, SQLITE_STATIC)) !=  SQLITE_OK) {
                cfs_critical("sqlite3_bind failed: %s\n", sqlite3_errmsg(db));
                return rc;
        }
-       if ((rc = sqlite3_bind_blob(stmt, 8, value, size, SQLITE_TRANSIENT)) !=  SQLITE_OK) {
+       if ((rc = sqlite3_bind_blob(stmt, 8, value, size, SQLITE_STATIC)) !=  SQLITE_OK) {
                cfs_critical("sqlite3_bind failed: %s\n", sqlite3_errmsg(db));
                return rc;
        }