d: Mon, 29 Dec 2025 22:15:16 GMT Expires: Thu, 27 Dec 2035 22:15:16 GMT ETag: "8e1e27ff0829ab81addf2e10846401d23e99c884" /* Copyright (c) 2015 Red Hat, Inc. This file is part of GlusterFS. This file is licensed to you under your choice of the GNU Lesser General Public License, version 3 or any later version (LGPLv3 or later), or the GNU General Public License, version 2 (GPLv2), in all cases as published by the Free Software Foundation. */ #include "gfdb_sqlite3_helper.h" #define GFDB_SQL_STMT_SIZE 256 /***************************************************************************** * * Helper function to execute actual sql queries * * * ****************************************************************************/ static int gf_sql_delete_all (gf_sql_connection_t *sql_conn, char *gfid, gf_boolean_t ignore_errors) { int ret = -1; sqlite3_stmt *delete_file_stmt = NULL; sqlite3_stmt *delete_link_stmt = NULL; char *delete_link_str = "DELETE FROM " GF_FILE_LINK_TABLE " WHERE GF_ID = ? ;"; char *delete_file_str = "DELETE FROM " GF_FILE_TABLE " WHERE GF_ID = ? ;"; CHECK_SQL_CONN (sql_conn, out); GF_VALIDATE_OR_GOTO (GFDB_STR_SQLITE3, gfid, out); /* * Delete all links associated with this GFID * * */ /*Prepare statement for delete all links*/ ret = sqlite3_prepare(sql_conn->sqlite3_db_conn, delete_link_str, -1, &delete_link_stmt, 0); if (ret != SQLITE_OK) { gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_PREPARE_FAILED, "Failed preparing delete " "statement %s : %s", delete_link_str, sqlite3_errmsg (sql_conn->sqlite3_db_conn)); ret = -1; goto out; } /*Bind gfid*/ ret = sqlite3_bind_text (delete_link_stmt, 1, gfid, -1, NULL); if (ret != SQLITE_OK) { gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_BINDING_FAILED, "Failed binding gfid %s : %s", gfid, sqlite3_errmsg (sql_conn->sqlite3_db_conn)); ret = -1; goto out; } /*Execute the prepare statement*/ if (sqlite3_step (delete_link_stmt) != SQLITE_DONE) { gf_msg (GFDB_STR_SQLITE3, _gfdb_log_level (GF_LOG_ERROR, ignore_errors), 0, LG_MSG_EXEC_FAILED, "Failed executing the prepared stmt %s : %s", delete_link_str, sqlite3_errmsg (sql_conn->sqlite3_db_conn)); ret = -1; goto out; } /* * Delete entry from file table associated with this GFID * * */ /*Prepare statement for delete all links*/ ret = sqlite3_prepare (sql_conn->sqlite3_db_conn, delete_file_str, -1, &delete_file_stmt, 0); if (ret != SQLITE_OK) { gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_PREPARE_FAILED, "Failed preparing delete " "statement %s : %s", delete_file_str, sqlite3_errmsg (sql_conn->sqlite3_db_conn)); ret = -1; goto out; } /*Bind gfid*/ ret = sqlite3_bind_text (delete_file_stmt, 1, gfid, -1, NULL); if (ret != SQLITE_OK) {