TD-2246
This commit is contained in:
parent
c7abe34dc4
commit
86479c1f6a
|
@ -31,8 +31,8 @@ IF (TD_LINUX)
|
|||
#add_executable(createTablePerformance createTablePerformance.c)
|
||||
#target_link_libraries(createTablePerformance taos_static tutil common pthread)
|
||||
|
||||
#add_executable(createNormalTable createNormalTable.c)
|
||||
#target_link_libraries(createNormalTable taos_static tutil common pthread)
|
||||
add_executable(createNormalTable createNormalTable.c)
|
||||
target_link_libraries(createNormalTable taos_static tutil common pthread)
|
||||
|
||||
#add_executable(queryPerformance queryPerformance.c)
|
||||
#target_link_libraries(queryPerformance taos_static tutil common pthread)
|
||||
|
@ -45,5 +45,8 @@ IF (TD_LINUX)
|
|||
|
||||
#add_executable(invalidTableId invalidTableId.c)
|
||||
#target_link_libraries(invalidTableId taos_static tutil common pthread)
|
||||
|
||||
add_executable(hashIterator hashIterator.c)
|
||||
target_link_libraries(hashIterator taos_static tutil common pthread)
|
||||
ENDIF()
|
||||
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
||||
*
|
||||
* This program is free software: you can use, redistribute, and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3
|
||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define _DEFAULT_SOURCE
|
||||
#include "os.h"
|
||||
#include "taos.h"
|
||||
#include "tulog.h"
|
||||
#include "tutil.h"
|
||||
#include "hash.h"
|
||||
|
||||
typedef struct HashTestRow {
|
||||
int32_t keySize;
|
||||
char key[100];
|
||||
} HashTestRow;
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
_hash_fn_t hashFp = taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY);
|
||||
void * hashHandle = taosHashInit(100, hashFp, true, HASH_ENTRY_LOCK);
|
||||
|
||||
pPrint("insert 3 rows to hash");
|
||||
for (int32_t t = 0; t < 3; ++t) {
|
||||
HashTestRow row = {0};
|
||||
row.keySize = sprintf(row.key, "0.db.st%d", t);
|
||||
|
||||
taosHashPut(hashHandle, row.key, row.keySize, &row, sizeof(HashTestRow));
|
||||
}
|
||||
|
||||
pPrint("start iterator");
|
||||
HashTestRow *row = taosHashIterate(hashHandle, NULL);
|
||||
while (row) {
|
||||
pPrint("drop key:%s", row->key);
|
||||
taosHashRemove(hashHandle, row->key, row->keySize);
|
||||
|
||||
pPrint("get rows from hash");
|
||||
for (int32_t t = 0; t < 3; ++t) {
|
||||
HashTestRow r = {0};
|
||||
r.keySize = sprintf(r.key, "0.db.st%d", t);
|
||||
|
||||
void *result = taosHashGet(hashHandle, r.key, r.keySize);
|
||||
pPrint("get key:%s result:%p", r.key, result);
|
||||
}
|
||||
|
||||
//Before getting the next iterator, the object just deleted can be obtained
|
||||
row = taosHashIterate(hashHandle, row);
|
||||
}
|
||||
|
||||
pPrint("stop iterator");
|
||||
taosHashCancelIterate(hashHandle, row);
|
||||
|
||||
pPrint("get rows from hash");
|
||||
for (int32_t t = 0; t < 3; ++t) {
|
||||
HashTestRow r = {0};
|
||||
r.keySize = sprintf(r.key, "0.db.st%d", t);
|
||||
|
||||
void *result = taosHashGet(hashHandle, r.key, r.keySize);
|
||||
pPrint("get key:%s result:%p", r.key, result);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue