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 CSV_NAMING_B_THREAD_TIME_SLICE
} CsvNamingType; } CsvNamingType;
typedef struct {
char* buf;
int length;
} CsvRowTagsBuf;
typedef struct { typedef struct {
char* buf; char* buf;
int buf_size; int buf_size;
int length; int length;
} CsvRowFieldsBuf; } CsvRowColsBuf;
typedef struct { typedef struct {
CsvNamingType naming_type; CsvNamingType naming_type;
@ -52,8 +57,9 @@ typedef struct {
time_t end_secs; time_t end_secs;
size_t thread_id; size_t thread_id;
bool output_header; bool output_header;
CsvRowFieldsBuf* tags_buf_bucket; int tags_buf_size;
CsvRowFieldsBuf* cols_buf; CsvRowTagsBuf* tags_buf_bucket;
CsvRowColsBuf* cols_buf;
} CsvThreadMeta; } CsvThreadMeta;
typedef struct { 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; SSuperTable* stb = write_meta->stb;
int ret = 0; int ret = 0;
int64_t tk = 0; int64_t tk = 0;
@ -375,7 +375,7 @@ static CsvRowFieldsBuf* csvGenCtbTagData(CsvWriteMeta* write_meta, CsvThreadMeta
return NULL; 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) { if (!tags_buf_bucket) {
return NULL; return NULL;
} }
@ -388,8 +388,8 @@ static CsvRowFieldsBuf* csvGenCtbTagData(CsvWriteMeta* write_meta, CsvThreadMeta
goto error; goto error;
} }
tags_buf_bucket[i].buf = tags_buf; 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); ret = csvGenRowTagData(tags_buf, tags_buf_size, stb, thread_meta->ctb_start_idx + i, &tk);
if (ret <= 0) { 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) { if (!thread_meta || !tags_buf_bucket) {
return; 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) { 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; SDataBase* db = write_meta->db;
SSuperTable* stb = write_meta->stb; SSuperTable* stb = write_meta->stb;
CsvRowFieldsBuf* tags_buf_bucket = thread_meta->tags_buf_bucket; CsvRowTagsBuf* tags_buf_bucket = thread_meta->tags_buf_bucket;
CsvRowFieldsBuf* tags_buf = &tags_buf_bucket[ctb_idx]; CsvRowColsBuf* tags_buf = &tags_buf_bucket[ctb_idx];
CsvRowFieldsBuf* cols_buf = thread_meta->cols_buf; CsvRowColsBuf* cols_buf = thread_meta->cols_buf;
int ret = 0; int ret = 0;
@ -493,7 +493,7 @@ static void* csvGenStbThread(void* arg) {
// tags buffer // tags buffer
CsvRowFieldsBuf* tags_buf_bucket = csvGenCtbTagData(write_meta, thread_meta); CsvRowTagsBuf* tags_buf_bucket = csvGenCtbTagData(write_meta, thread_meta);
if (!tags_buf_bucket) { if (!tags_buf_bucket) {
errorPrint("Failed to generate csv tag data. database: %s, super table: %s, naming type: %d, thread index: %d.\n", 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); db->dbName, stb->stbName, write_meta.naming_type, thread_meta->thread_id);
@ -509,7 +509,7 @@ static void* csvGenStbThread(void* arg) {
goto end; goto end;
} }
CsvRowFieldsBuf cols_buf = { CsvRowColsBuf cols_buf = {
.buf = buf, .buf = buf,
.buf_size = buf_size, .buf_size = buf_size,
.length = 0 .length = 0