72 lines
2.1 KiB
C
72 lines
2.1 KiB
C
/*
|
|
* 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;
|
|
} |