void kr_db_drop(T_KRDB *ptDB) { kr_list_destroy(ptDB->pTableList); kr_list_destroy(ptDB->pIndexList); kr_list_destroy(ptDB->pIndexTableList); kr_free(ptDB); }
void kr_drop_db(T_KRDB *krdb) { kr_list_foreach(krdb->pTableList, (KRForEachFunc)kr_drop_table, krdb); kr_list_destroy(krdb->pTableList); kr_list_foreach(krdb->pIndexList, (KRForEachFunc)kr_drop_db_index, krdb); kr_list_destroy(krdb->pIndexList); kr_free(krdb); }
int main(int argc,char *argv[]) { int i = 0; T_KRList *ptList = kr_list_new(); kr_list_set_compare(ptList, (KRCompareDataFunc )record_compare); srandom((unsigned int)time(NULL)); for (i=0; i<10; i++) { gstRecord[i].i=random()%9; gstRecord[i].d = i; snprintf(gstRecord[i].s, 20, "record_%d", i); printf("kr_list_add_sorted[%d] [%d]\n", i, gstRecord[i].i); //kr_list_add_tail(ptList, &gstRecord[i]); kr_list_add_sorted(ptList, &gstRecord[i], NULL); } kr_list_foreach(ptList, print_record, NULL); T_KRListNode *ptNode = kr_list_search(ptList, &gstRecord[7]); if (ptNode != NULL) { print_record(kr_list_value(ptNode), NULL); } kr_list_destroy(ptList); return 0; }
static void kr_rebuild_index_del(T_KRIndexTable *ptIndextable, T_KRRecord *ptRecord) { void *key = kr_field_get_value(ptRecord, ptIndextable->iIndexFieldId); T_KRHashTable *pHashTable = ptIndextable->ptIndex->pHashTable; T_KRIndexSolt *ptIndexSlot = kr_hashtable_lookup(pHashTable, key); if (ptIndexSlot != NULL) { /*modify statistical fields of external*/ if (kr_get_proctime(ptRecord) > ptIndexSlot->tExtMaxProcTime) { ptIndexSlot->tExtMaxProcTime = kr_get_proctime(ptRecord); } if (kr_get_transtime(ptRecord) > ptIndexSlot->tExtMaxTransTime) { ptIndexSlot->tExtMaxTransTime = kr_get_transtime(ptRecord); } /*remove record from list*/ kr_list_remove(ptIndexSlot->pRecList, ptRecord); /*free this slot if there is no records*/ if (kr_list_length(ptIndexSlot->pRecList) == 0 ) { kr_hashtable_remove(pHashTable, ptIndexSlot->pKeyValue); kr_list_destroy(ptIndexSlot->pRecList); kr_free(ptIndexSlot->pKeyValue); kr_free(ptIndexSlot); } } }
void kr_index_drop(T_KRIndex *ptIndex) { kr_list_remove(ptIndex->ptDB->pIndexList, ptIndex); kr_hashtable_destroy(ptIndex->pHashTable); kr_list_destroy(ptIndex->pIndexTableList); kr_free(ptIndex); }
void kr_table_drop(T_KRTable *ptTable) { kr_list_remove(ptTable->ptDB->pTableList, ptTable); pthread_mutex_destroy(&ptTable->tLock); kr_list_destroy(ptTable->pIndexTableList); kr_free(ptTable->pRecordBuff); kr_free(ptTable->ptFieldDef); kr_free(ptTable); }
void kr_output_destruct(T_KROutput* ptOutput) { if (ptOutput) { if (ptOutput->ptOutputDefineList) { kr_list_destroy(ptOutput->ptOutputDefineList); } if (ptOutput->ptOutputModule) { kr_module_close(ptOutput->ptOutputModule); } kr_free(ptOutput); } }
void kr_drop_table(T_KRTable *krtable, T_KRDB *krdb) { if (krtable->caMMapFile[0] == '\0') { kr_free(krtable->pRecordBuff); } else { kr_db_unmmap_table(krtable); } kr_list_remove(krdb->pTableList, krtable); kr_list_foreach(krtable->pIndexList, \ (KRForEachFunc )kr_drop_table_index, krtable); kr_list_destroy(krtable->pIndexList); kr_free(krtable->ptFieldDef); kr_free(krtable); }
static void kr_rebuild_index_del(T_KRIndex *krindex, T_KRRecord *krrecord) { void *key = kr_get_field_value(krrecord, krindex->iIndexFieldId); T_KRList *pRecList = kr_hashtable_lookup(krindex->pHashTable, key); if (pRecList != NULL) kr_list_remove(pRecList, krrecord); if (kr_list_length(pRecList) != 0 ) { T_KRRecord *ptRecord = kr_list_value(kr_list_last(pRecList)); T_KRIndex *newIndex = krindex; /* the dropped record and the last record of current list * belongs to different tables */ if (krrecord->ptTable != ptRecord->ptTable) { newIndex = kr_get_table_index(ptRecord->ptTable, krindex->iIndexId); } key = kr_get_field_value(ptRecord, newIndex->iIndexFieldId); kr_hashtable_replace(newIndex->pHashTable, key, pRecList); } else { kr_list_destroy(pRecList); kr_hashtable_remove(krindex->pHashTable, key); } }