/* * Copyright (c) 2019 TAOS Data, Inc. * * 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 . */ #ifndef __INDEX_CACHE_H__ #define __INDEX_CACHE_H__ #include "index.h" #include "indexInt.h" #include "tlockfree.h" #include "tskiplist.h" // ----------------- key structure in skiplist --------------------- /* A data row, the format is like below: * content: |<--totalLen-->|<-- fieldid-->|<--field type-->|<-- value len--->| * |<-- value -->|<--uid -->|<--version--->|<-- itermType -->| * len : |<--int32_t -->|<-- int16_t-->|<-- int8_t --->|<--- int32_t --->| * <--valuelen->|<--uint64_t->| * <-- int32_t-->|<-- int8_t --->| */ #ifdef __cplusplus extern "C" { #endif typedef struct IndexCache { T_REF_DECLARE() SSkipList* skiplist; } IndexCache; // IndexCache* indexCacheCreate(); void indexCacheDestroy(void* cache); int indexCachePut(void* cache, SIndexTerm* term, int16_t colId, int32_t version, uint64_t uid); // int indexCacheGet(void *cache, uint64_t *rst); int indexCacheSearch(void* cache, SIndexTermQuery* query, int16_t colId, int32_t version, SArray* result, STermValueType* s); #ifdef __cplusplus } #endif #endif