Skip to content
Snippets Groups Projects
Commit b087d9f4 authored by Roman Khlopkov's avatar Roman Khlopkov 🔜 Committed by dmitriy.gerasimov
Browse files

hotfix-4916

parent dd7e99f3
No related branches found
No related tags found
1 merge request!342hotfix-4916
...@@ -2,7 +2,7 @@ project(cellframe-sdk C) ...@@ -2,7 +2,7 @@ project(cellframe-sdk C)
cmake_minimum_required(VERSION 3.0) cmake_minimum_required(VERSION 3.0)
set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD 11)
set(CELLFRAME_SDK_NATIVE_VERSION "2.9-42") set(CELLFRAME_SDK_NATIVE_VERSION "2.9-43")
add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"") add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"")
set(DAPSDK_MODULES "") set(DAPSDK_MODULES "")
message("Cellframe modules: ${CELLFRAME_MODULES}") message("Cellframe modules: ${CELLFRAME_MODULES}")
......
...@@ -87,7 +87,7 @@ dap_chain_cell_t * dap_chain_cell_create_fill(dap_chain_t * a_chain, dap_chain_c ...@@ -87,7 +87,7 @@ dap_chain_cell_t * dap_chain_cell_create_fill(dap_chain_t * a_chain, dap_chain_c
dap_chain_cell_t * l_cell = DAP_NEW_Z(dap_chain_cell_t); dap_chain_cell_t * l_cell = DAP_NEW_Z(dap_chain_cell_t);
l_cell->chain = a_chain; l_cell->chain = a_chain;
l_cell->id.uint64 = a_cell_id.uint64; l_cell->id.uint64 = a_cell_id.uint64;
l_cell->file_storage_path = dap_strdup_printf("%0llx.dchaincell", l_cell->id.uint64); l_cell->file_storage_path = dap_strdup_printf("%0"DAP_UINT64_FORMAT_x".dchaincell", l_cell->id.uint64);
pthread_rwlock_wrlock(&a_chain->cell_rwlock); pthread_rwlock_wrlock(&a_chain->cell_rwlock);
HASH_ADD(hh, a_chain->cells, id, sizeof(dap_chain_cell_id_t), l_cell); HASH_ADD(hh, a_chain->cells, id, sizeof(dap_chain_cell_id_t), l_cell);
pthread_rwlock_unlock(&a_chain->cell_rwlock); pthread_rwlock_unlock(&a_chain->cell_rwlock);
...@@ -98,7 +98,7 @@ dap_chain_cell_t * dap_chain_cell_create_fill2(dap_chain_t * a_chain, const char ...@@ -98,7 +98,7 @@ dap_chain_cell_t * dap_chain_cell_create_fill2(dap_chain_t * a_chain, const char
{ {
dap_chain_cell_t * l_cell = DAP_NEW_Z(dap_chain_cell_t); dap_chain_cell_t * l_cell = DAP_NEW_Z(dap_chain_cell_t);
l_cell->chain = a_chain; l_cell->chain = a_chain;
sscanf(a_filename, "%0llx.dchaincell", &l_cell->id.uint64); sscanf(a_filename, "%"DAP_UINT64_FORMAT_x".dchaincell", &l_cell->id.uint64);
l_cell->file_storage_path = dap_strdup_printf(a_filename); l_cell->file_storage_path = dap_strdup_printf(a_filename);
pthread_rwlock_wrlock(&a_chain->cell_rwlock); pthread_rwlock_wrlock(&a_chain->cell_rwlock);
HASH_ADD(hh, a_chain->cells, id, sizeof(dap_chain_cell_id_t), l_cell); HASH_ADD(hh, a_chain->cells, id, sizeof(dap_chain_cell_id_t), l_cell);
......
...@@ -564,6 +564,7 @@ int dap_db_driver_sqlite_apply_store_obj(dap_store_obj_t *a_store_obj) ...@@ -564,6 +564,7 @@ int dap_db_driver_sqlite_apply_store_obj(dap_store_obj_t *a_store_obj)
return -1; return -1;
char *l_query = NULL; char *l_query = NULL;
char *l_error_message = 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->type == 'a') {
if(!a_store_obj->key || !a_store_obj->value || !a_store_obj->value_len) if(!a_store_obj->key || !a_store_obj->value || !a_store_obj->value_len)
return -1; return -1;
...@@ -573,10 +574,8 @@ int dap_db_driver_sqlite_apply_store_obj(dap_store_obj_t *a_store_obj) ...@@ -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_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); char *l_blob_value = dap_db_driver_get_string_from_blob(a_store_obj->value, (int)a_store_obj->value_len);
//add one record //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')", 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); l_table_name, a_store_obj->key, l_blob_hash, a_store_obj->timestamp, l_blob_value);
DAP_DELETE(table_name);
//dap_db_driver_sqlite_free(l_blob_hash); //dap_db_driver_sqlite_free(l_blob_hash);
dap_db_driver_sqlite_free(l_blob_value); 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) ...@@ -584,12 +583,10 @@ int dap_db_driver_sqlite_apply_store_obj(dap_store_obj_t *a_store_obj)
//delete one record //delete one record
if(a_store_obj->key) if(a_store_obj->key)
l_query = sqlite3_mprintf("delete from '%s' where key = '%s'", 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 // remove all group
else{ else {
char * l_table_name = dap_db_driver_sqlite_make_table_name(a_store_obj->group);
l_query = sqlite3_mprintf("drop table if exists '%s'", l_table_name); l_query = sqlite3_mprintf("drop table if exists '%s'", l_table_name);
DAP_DELETE(l_table_name);
} }
} }
else { else {
...@@ -608,9 +605,7 @@ int dap_db_driver_sqlite_apply_store_obj(dap_store_obj_t *a_store_obj) ...@@ -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); dap_db_driver_sqlite_free(l_error_message);
l_error_message = NULL; l_error_message = NULL;
// create table // create table
char *table_name = dap_db_driver_sqlite_make_table_name(a_store_obj->group); dap_db_driver_sqlite_create_group_table(l_table_name);
dap_db_driver_sqlite_create_group_table(table_name);
DAP_DELETE(table_name);
// repeat request // repeat request
l_ret = dap_db_driver_sqlite_exec(s_db, l_query, &l_error_message); 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) ...@@ -619,11 +614,9 @@ int dap_db_driver_sqlite_apply_store_obj(dap_store_obj_t *a_store_obj)
if(l_ret == SQLITE_CONSTRAINT) { if(l_ret == SQLITE_CONSTRAINT) {
dap_db_driver_sqlite_free(l_error_message); dap_db_driver_sqlite_free(l_error_message);
l_error_message = NULL; l_error_message = NULL;
char *table_name = dap_db_driver_sqlite_make_table_name(a_store_obj->group);
//delete exist record //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); 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); dap_db_driver_sqlite_free(l_query_del);
if(l_ret != SQLITE_OK) { 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); 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) ...@@ -641,6 +634,7 @@ int dap_db_driver_sqlite_apply_store_obj(dap_store_obj_t *a_store_obj)
l_ret = -1; l_ret = -1;
} }
dap_db_driver_sqlite_free(l_query); dap_db_driver_sqlite_free(l_query);
DAP_DELETE(l_table_name);
return l_ret; return l_ret;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment