diff --git a/CMakeLists.txt b/CMakeLists.txt index 135a9c3e3239a51214f8528aa75c37dc4465c528..e9b812436517f59b1daa2b0c29170e65f7e725b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ project(cellframe-sdk C) cmake_minimum_required(VERSION 3.0) set(CMAKE_C_STANDARD 11) -set(CELLFRAME_SDK_NATIVE_VERSION "3.0-4") +set(CELLFRAME_SDK_NATIVE_VERSION "3.0-5") add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"") set(DAPSDK_MODULES "") message("Cellframe modules: ${CELLFRAME_MODULES}") diff --git a/modules/global-db/dap_chain_global_db_driver_sqlite.c b/modules/global-db/dap_chain_global_db_driver_sqlite.c index 9b90abff137a177a9727ab6da13d1a65a2bdc5c9..07b4488dabf2ce836c0fa9b66b47ab56c3d121f1 100644 --- a/modules/global-db/dap_chain_global_db_driver_sqlite.c +++ b/modules/global-db/dap_chain_global_db_driver_sqlite.c @@ -564,6 +564,7 @@ int dap_db_driver_sqlite_apply_store_obj(dap_store_obj_t *a_store_obj) return -1; char *l_query = NULL; char *l_error_message = NULL; + char *l_table_name = dap_db_driver_sqlite_make_table_name(a_store_obj->group); if(a_store_obj->type == 'a') { if(!a_store_obj->key || !a_store_obj->value || !a_store_obj->value_len) return -1; @@ -573,10 +574,8 @@ int dap_db_driver_sqlite_apply_store_obj(dap_store_obj_t *a_store_obj) char *l_blob_hash = "";//dap_db_driver_get_string_from_blob((uint8_t*) &l_hash, sizeof(dap_chain_hash_fast_t)); char *l_blob_value = dap_db_driver_get_string_from_blob(a_store_obj->value, (int)a_store_obj->value_len); //add one record - char *table_name = dap_db_driver_sqlite_make_table_name(a_store_obj->group); l_query = sqlite3_mprintf("insert into '%s' values(NULL, '%s', x'%s', '%lld', x'%s')", - table_name, a_store_obj->key, l_blob_hash, a_store_obj->timestamp, l_blob_value); - DAP_DELETE(table_name); + l_table_name, a_store_obj->key, l_blob_hash, a_store_obj->timestamp, l_blob_value); //dap_db_driver_sqlite_free(l_blob_hash); dap_db_driver_sqlite_free(l_blob_value); } @@ -584,12 +583,10 @@ int dap_db_driver_sqlite_apply_store_obj(dap_store_obj_t *a_store_obj) //delete one record if(a_store_obj->key) l_query = sqlite3_mprintf("delete from '%s' where key = '%s'", - a_store_obj->group, a_store_obj->key); + l_table_name, a_store_obj->key); // remove all group - else{ - char * l_table_name = dap_db_driver_sqlite_make_table_name(a_store_obj->group); + else { l_query = sqlite3_mprintf("drop table if exists '%s'", l_table_name); - DAP_DELETE(l_table_name); } } else { @@ -608,9 +605,7 @@ int dap_db_driver_sqlite_apply_store_obj(dap_store_obj_t *a_store_obj) dap_db_driver_sqlite_free(l_error_message); l_error_message = NULL; // create table - char *table_name = dap_db_driver_sqlite_make_table_name(a_store_obj->group); - dap_db_driver_sqlite_create_group_table(table_name); - DAP_DELETE(table_name); + dap_db_driver_sqlite_create_group_table(l_table_name); // repeat request l_ret = dap_db_driver_sqlite_exec(s_db, l_query, &l_error_message); @@ -619,11 +614,9 @@ int dap_db_driver_sqlite_apply_store_obj(dap_store_obj_t *a_store_obj) if(l_ret == SQLITE_CONSTRAINT) { dap_db_driver_sqlite_free(l_error_message); l_error_message = NULL; - char *table_name = dap_db_driver_sqlite_make_table_name(a_store_obj->group); //delete exist record - char *l_query_del = sqlite3_mprintf("delete from '%s' where key = '%s'", table_name, a_store_obj->key); + char *l_query_del = sqlite3_mprintf("delete from '%s' where key = '%s'", l_table_name, a_store_obj->key); l_ret = dap_db_driver_sqlite_exec(s_db, l_query_del, &l_error_message); - DAP_DELETE(table_name); dap_db_driver_sqlite_free(l_query_del); if(l_ret != SQLITE_OK) { log_it(L_INFO, "Entry with the same key is already present and can't delete, %s", l_error_message); @@ -641,6 +634,7 @@ int dap_db_driver_sqlite_apply_store_obj(dap_store_obj_t *a_store_obj) l_ret = -1; } dap_db_driver_sqlite_free(l_query); + DAP_DELETE(l_table_name); return l_ret; }