update tindex write and search
This commit is contained in:
parent
a655dd2e0b
commit
199eb90e0f
|
@ -39,6 +39,7 @@ static int tfileWriteFstOffset(TFileWriter* tw, int32_t offset);
|
||||||
static int tfileWriteData(TFileWriter* write, TFileValue* tval);
|
static int tfileWriteData(TFileWriter* write, TFileValue* tval);
|
||||||
|
|
||||||
static int tfileReadLoadHeader(TFileReader* reader);
|
static int tfileReadLoadHeader(TFileReader* reader);
|
||||||
|
static int tfileReadLoadFst(TFileReader* reader);
|
||||||
static int tfileReadLoadTableIds(TFileReader* reader, int32_t offset, SArray* result);
|
static int tfileReadLoadTableIds(TFileReader* reader, int32_t offset, SArray* result);
|
||||||
|
|
||||||
static int tfileGetFileList(const char* path, SArray* result);
|
static int tfileGetFileList(const char* path, SArray* result);
|
||||||
|
@ -73,9 +74,13 @@ TFileCache* tfileCacheCreate(const char* path) {
|
||||||
TFileReader* reader = tfileReaderCreate(wc);
|
TFileReader* reader = tfileReaderCreate(wc);
|
||||||
if (0 != tfileReadLoadHeader(reader)) {
|
if (0 != tfileReadLoadHeader(reader)) {
|
||||||
tfileReaderDestroy(reader);
|
tfileReaderDestroy(reader);
|
||||||
indexError("failed to load index header, index Id: %s", file);
|
indexError("failed to load index header, index file: %s", file);
|
||||||
goto End;
|
goto End;
|
||||||
}
|
}
|
||||||
|
if (0 != tfileReadLoadFst(reader)) {
|
||||||
|
tfileReaderDestroy(reader);
|
||||||
|
indexError("failed to load index fst, index file: %s", file);
|
||||||
|
}
|
||||||
// loader fst and validate it
|
// loader fst and validate it
|
||||||
|
|
||||||
TFileHeader* header = &reader->header;
|
TFileHeader* header = &reader->header;
|
||||||
|
@ -136,6 +141,7 @@ TFileReader* tfileReaderCreate(WriterCtx* ctx) {
|
||||||
void tfileReaderDestroy(TFileReader* reader) {
|
void tfileReaderDestroy(TFileReader* reader) {
|
||||||
if (reader == NULL) { return; }
|
if (reader == NULL) { return; }
|
||||||
// T_REF_INC(reader);
|
// T_REF_INC(reader);
|
||||||
|
fstDestroy(reader->fst);
|
||||||
writerCtxDestroy(reader->ctx);
|
writerCtxDestroy(reader->ctx);
|
||||||
free(reader);
|
free(reader);
|
||||||
}
|
}
|
||||||
|
@ -340,6 +346,25 @@ static int tfileReadLoadHeader(TFileReader* reader) {
|
||||||
memcpy(&reader->header, buf, sizeof(buf));
|
memcpy(&reader->header, buf, sizeof(buf));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
static int tfileReadLoadFst(TFileReader* reader) {
|
||||||
|
// current load fst into memory, refactor it later
|
||||||
|
static int FST_MAX_SIZE = 16 * 1024;
|
||||||
|
|
||||||
|
char* buf = calloc(1, sizeof(char) * FST_MAX_SIZE);
|
||||||
|
if (buf == NULL) { return -1; }
|
||||||
|
|
||||||
|
WriterCtx* ctx = reader->ctx;
|
||||||
|
int32_t nread = ctx->readFrom(ctx, buf, FST_MAX_SIZE, reader->header.fstOffset);
|
||||||
|
// we assuse fst size less than FST_MAX_SIZE
|
||||||
|
assert(nread > 0 && nread < FST_MAX_SIZE);
|
||||||
|
|
||||||
|
FstSlice st = fstSliceCreate((uint8_t*)buf, nread);
|
||||||
|
reader->fst = fstCreate(&st);
|
||||||
|
free(buf);
|
||||||
|
fstSliceDestroy(&st);
|
||||||
|
|
||||||
|
return reader->fst == NULL ? 0 : -1;
|
||||||
|
}
|
||||||
static int tfileReadLoadTableIds(TFileReader* reader, int32_t offset, SArray* result) {
|
static int tfileReadLoadTableIds(TFileReader* reader, int32_t offset, SArray* result) {
|
||||||
int32_t nid;
|
int32_t nid;
|
||||||
WriterCtx* ctx = reader->ctx;
|
WriterCtx* ctx = reader->ctx;
|
||||||
|
|
Loading…
Reference in New Issue