enh: extract bufer size of all child tables

This commit is contained in:
Yaming Pei 2025-02-27 14:17:23 +08:00
parent 80ecd4feb4
commit 3627a54c13
2 changed files with 19 additions and 13 deletions

View File

@ -26,11 +26,16 @@ typedef enum {
CSV_NAMING_B_THREAD_TIME_SLICE
} CsvNamingType;
typedef struct {
char* buf;
int length;
} CsvRowTagsBuf;
typedef struct {
char* buf;
int buf_size;
int length;
} CsvRowFieldsBuf;
} CsvRowColsBuf;
typedef struct {
CsvNamingType naming_type;
@ -52,8 +57,9 @@ typedef struct {
time_t end_secs;
size_t thread_id;
bool output_header;
CsvRowFieldsBuf* tags_buf_bucket;
CsvRowFieldsBuf* cols_buf;
int tags_buf_size;
CsvRowTagsBuf* tags_buf_bucket;
CsvRowColsBuf* cols_buf;
} CsvThreadMeta;
typedef struct {

View File

@ -366,7 +366,7 @@ static int csvGenRowColData(char* buf, int size, SSuperTable* stb, int64_t ts, i
}
static CsvRowFieldsBuf* csvGenCtbTagData(CsvWriteMeta* write_meta, CsvThreadMeta* thread_meta) {
static CsvRowTagsBuf* csvGenCtbTagData(CsvWriteMeta* write_meta, CsvThreadMeta* thread_meta) {
SSuperTable* stb = write_meta->stb;
int ret = 0;
int64_t tk = 0;
@ -375,7 +375,7 @@ static CsvRowFieldsBuf* csvGenCtbTagData(CsvWriteMeta* write_meta, CsvThreadMeta
return NULL;
}
CsvRowFieldsBuf* tags_buf_bucket = (CsvRowFieldsBuf*)benchCalloc(thread_meta->ctb_count, sizeof(CsvRowFieldsBuf), true);
CsvRowTagsBuf* tags_buf_bucket = (CsvRowTagsBuf*)benchCalloc(thread_meta->ctb_count, sizeof(CsvRowTagsBuf), true);
if (!tags_buf_bucket) {
return NULL;
}
@ -389,7 +389,7 @@ static CsvRowFieldsBuf* csvGenCtbTagData(CsvWriteMeta* write_meta, CsvThreadMeta
}
tags_buf_bucket[i].buf = tags_buf;
tags_buf_bucket[i].buf_size = tags_buf_size;
write_meta->tags_buf_size = tags_buf_size;
ret = csvGenRowTagData(tags_buf, tags_buf_size, stb, thread_meta->ctb_start_idx + i, &tk);
if (ret <= 0) {
@ -407,7 +407,7 @@ error:
}
static void csvFreeCtbTagData(CsvThreadMeta* thread_meta, CsvRowFieldsBuf* tags_buf_bucket) {
static void csvFreeCtbTagData(CsvThreadMeta* thread_meta, CsvRowTagsBuf* tags_buf_bucket) {
if (!thread_meta || !tags_buf_bucket) {
return;
}
@ -428,9 +428,9 @@ static void csvFreeCtbTagData(CsvThreadMeta* thread_meta, CsvRowFieldsBuf* tags_
static int csvWriteFile(FILE* fp, uint64_t ctb_idx, int64_t cur_ts, int64_t* ck, CsvWriteMeta* write_meta, CsvThreadMeta* thread_meta) {
SDataBase* db = write_meta->db;
SSuperTable* stb = write_meta->stb;
CsvRowFieldsBuf* tags_buf_bucket = thread_meta->tags_buf_bucket;
CsvRowFieldsBuf* tags_buf = &tags_buf_bucket[ctb_idx];
CsvRowFieldsBuf* cols_buf = thread_meta->cols_buf;
CsvRowTagsBuf* tags_buf_bucket = thread_meta->tags_buf_bucket;
CsvRowColsBuf* tags_buf = &tags_buf_bucket[ctb_idx];
CsvRowColsBuf* cols_buf = thread_meta->cols_buf;
int ret = 0;
@ -493,7 +493,7 @@ static void* csvGenStbThread(void* arg) {
// tags buffer
CsvRowFieldsBuf* tags_buf_bucket = csvGenCtbTagData(write_meta, thread_meta);
CsvRowTagsBuf* tags_buf_bucket = csvGenCtbTagData(write_meta, thread_meta);
if (!tags_buf_bucket) {
errorPrint("Failed to generate csv tag data. database: %s, super table: %s, naming type: %d, thread index: %d.\n",
db->dbName, stb->stbName, write_meta.naming_type, thread_meta->thread_id);
@ -509,7 +509,7 @@ static void* csvGenStbThread(void* arg) {
goto end;
}
CsvRowFieldsBuf cols_buf = {
CsvRowColsBuf cols_buf = {
.buf = buf,
.buf_size = buf_size,
.length = 0