more
This commit is contained in:
parent
d0e645e4f5
commit
ed3beb248a
|
@ -58,9 +58,12 @@ SMetaQueryOpts *metaQueryOptionsCreate();
|
||||||
void metaQueryOptionsDestroy(SMetaQueryOpts *);
|
void metaQueryOptionsDestroy(SMetaQueryOpts *);
|
||||||
|
|
||||||
// STableOpts
|
// STableOpts
|
||||||
#define META_TABLE_OPTS_DECLARE(name) STableOpts name = {0};
|
#define META_TABLE_OPTS_DECLARE(name) STableOpts name = {0}
|
||||||
void metaNormalTableOptsInit(STableOpts *, const char *name, const STSchema *pSchema);
|
void metaNormalTableOptsInit(STableOpts *, const char *name, const STSchema *pSchema);
|
||||||
void metaTableOptsDestroy(STableOpts *);
|
void metaSuperTableOptsInit(STableOpts *, const char *name, tb_uid_t uid, const STSchema *pSchema,
|
||||||
|
const STSchema *pTagSchema);
|
||||||
|
void metaChildTableOptsInit(STableOpts *, const char *name, tb_uid_t suid, const SKVRow tags);
|
||||||
|
void metaTableOptsClear(STableOpts *);
|
||||||
|
|
||||||
/* ------------------------ Impl should hidden ------------------------ */
|
/* ------------------------ Impl should hidden ------------------------ */
|
||||||
typedef enum { META_INIT_TABLE = 0, META_SUPER_TABLE = 1, META_CHILD_TABLE = 2, META_NORMAL_TABLE = 3 } EMetaTableT;
|
typedef enum { META_INIT_TABLE = 0, META_SUPER_TABLE = 1, META_CHILD_TABLE = 2, META_NORMAL_TABLE = 3 } EMetaTableT;
|
||||||
|
|
|
@ -167,7 +167,7 @@ static int metaCreateChildTable(SMeta *pMeta, const char *tbname, const SChildTa
|
||||||
vallen = 0;
|
vallen = 0;
|
||||||
pBuf = (void *)buffer;
|
pBuf = (void *)buffer;
|
||||||
vallen += taosEncodeString(&pBuf, tbname);
|
vallen += taosEncodeString(&pBuf, tbname);
|
||||||
vallen += taosEncodeFixedU64(pBuf, pChildTableOpts->suid);
|
vallen += taosEncodeFixedU64(&pBuf, pChildTableOpts->suid);
|
||||||
tkvPut(pMeta->tableDb, NULL, (char *)(&uid), sizeof(uid), buffer, vallen);
|
tkvPut(pMeta->tableDb, NULL, (char *)(&uid), sizeof(uid), buffer, vallen);
|
||||||
|
|
||||||
// Put tbname -> uid
|
// Put tbname -> uid
|
||||||
|
@ -218,18 +218,42 @@ void metaNormalTableOptsInit(STableOpts *pTableOpts, const char *name, const STS
|
||||||
pTableOpts->normalOpts.pSchema = tdDupSchema(pSchema);
|
pTableOpts->normalOpts.pSchema = tdDupSchema(pSchema);
|
||||||
}
|
}
|
||||||
|
|
||||||
void metaTableOptsDestroy(STableOpts *pTableOpts) {
|
void metaSuperTableOptsInit(STableOpts *pTableOpts, const char *name, tb_uid_t uid, const STSchema *pSchema,
|
||||||
|
const STSchema *pTagSchema) {
|
||||||
|
pTableOpts->type = META_SUPER_TABLE;
|
||||||
|
pTableOpts->name = strdup(name);
|
||||||
|
pTableOpts->superOpts.uid = uid;
|
||||||
|
pTableOpts->superOpts.pSchema = tdDupSchema(pSchema);
|
||||||
|
pTableOpts->superOpts.pTagSchema = tdDupSchema(pTagSchema);
|
||||||
|
}
|
||||||
|
|
||||||
|
void metaChildTableOptsInit(STableOpts *pTableOpts, const char *name, tb_uid_t suid, const SKVRow tags) {
|
||||||
|
pTableOpts->type = META_CHILD_TABLE;
|
||||||
|
pTableOpts->name = strdup(name);
|
||||||
|
pTableOpts->childOpts.suid = suid;
|
||||||
|
pTableOpts->childOpts.tags = tdKVRowDup(tags);
|
||||||
|
}
|
||||||
|
|
||||||
|
void metaTableOptsClear(STableOpts *pTableOpts) {
|
||||||
switch (pTableOpts->type) {
|
switch (pTableOpts->type) {
|
||||||
case META_NORMAL_TABLE:
|
case META_NORMAL_TABLE:
|
||||||
tfree(pTableOpts->name);
|
tfree(pTableOpts->name);
|
||||||
tdFreeSchema(pTableOpts->normalOpts.pSchema);
|
tdFreeSchema(pTableOpts->normalOpts.pSchema);
|
||||||
break;
|
break;
|
||||||
|
case META_SUPER_TABLE:
|
||||||
|
tdFreeSchema(pTableOpts->superOpts.pTagSchema);
|
||||||
|
tdFreeSchema(pTableOpts->superOpts.pSchema);
|
||||||
|
tfree(pTableOpts->name);
|
||||||
|
break;
|
||||||
|
case META_CHILD_TABLE:
|
||||||
|
kvRowFree(pTableOpts->childOpts.tags);
|
||||||
|
tfree(pTableOpts->name);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO
|
memset(pTableOpts, 0, sizeof(*pTableOpts));
|
||||||
pTableOpts->type = META_INIT_TABLE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void metaDestroy(const char *path) { taosRemoveDir(path); }
|
void metaDestroy(const char *path) { taosRemoveDir(path); }
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
static STSchema *metaGetSimpleSchema() {
|
static STSchema *metaGetSimpleSchema() {
|
||||||
STSchema * pSchema = NULL;
|
STSchema * pSchema = NULL;
|
||||||
STSchemaBuilder sb;
|
STSchemaBuilder sb = {0};
|
||||||
|
|
||||||
tdInitTSchemaBuilder(&sb, 0);
|
tdInitTSchemaBuilder(&sb, 0);
|
||||||
tdAddColToSchema(&sb, TSDB_DATA_TYPE_TIMESTAMP, 0, 8);
|
tdAddColToSchema(&sb, TSDB_DATA_TYPE_TIMESTAMP, 0, 8);
|
||||||
|
@ -18,13 +18,31 @@ static STSchema *metaGetSimpleSchema() {
|
||||||
return pSchema;
|
return pSchema;
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(MetaTest, meta_create_1m_normal_tables_test) {
|
static SKVRow metaGetSimpleTags() {
|
||||||
|
SKVRowBuilder kvrb = {0};
|
||||||
|
SKVRow row;
|
||||||
|
|
||||||
|
tdInitKVRowBuilder(&kvrb);
|
||||||
|
int64_t ts = 1634287978000;
|
||||||
|
int32_t a = 10;
|
||||||
|
|
||||||
|
tdAddColToKVRow(&kvrb, 0, TSDB_DATA_TYPE_TIMESTAMP, (void *)(&ts));
|
||||||
|
tdAddColToKVRow(&kvrb, 0, TSDB_DATA_TYPE_INT, (void *)(&a));
|
||||||
|
|
||||||
|
row = tdGetKVRowFromBuilder(&kvrb);
|
||||||
|
|
||||||
|
tdDestroyKVRowBuilder(&kvrb);
|
||||||
|
|
||||||
|
return row;
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MetaTest, DISABLED_meta_create_1m_normal_tables_test) {
|
||||||
// Open Meta
|
// Open Meta
|
||||||
SMeta *meta = metaOpen(NULL);
|
SMeta *meta = metaOpen(NULL);
|
||||||
std::cout << "Meta is opened!" << std::endl;
|
std::cout << "Meta is opened!" << std::endl;
|
||||||
|
|
||||||
// Create 1000000 normal tables
|
// Create 1000000 normal tables
|
||||||
META_TABLE_OPTS_DECLARE(tbOpts)
|
META_TABLE_OPTS_DECLARE(tbOpts);
|
||||||
STSchema *pSchema = metaGetSimpleSchema();
|
STSchema *pSchema = metaGetSimpleSchema();
|
||||||
char tbname[128];
|
char tbname[128];
|
||||||
|
|
||||||
|
@ -32,9 +50,49 @@ TEST(MetaTest, meta_create_1m_normal_tables_test) {
|
||||||
sprintf(tbname, "ntb%ld", i);
|
sprintf(tbname, "ntb%ld", i);
|
||||||
metaNormalTableOptsInit(&tbOpts, tbname, pSchema);
|
metaNormalTableOptsInit(&tbOpts, tbname, pSchema);
|
||||||
metaCreateTable(meta, &tbOpts);
|
metaCreateTable(meta, &tbOpts);
|
||||||
metaTableOptsDestroy(&tbOpts);
|
metaTableOptsClear(&tbOpts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tdFreeSchema(pSchema);
|
||||||
|
|
||||||
|
// Close Meta
|
||||||
|
metaClose(meta);
|
||||||
|
std::cout << "Meta is closed!" << std::endl;
|
||||||
|
|
||||||
|
// Destroy Meta
|
||||||
|
metaDestroy("meta");
|
||||||
|
std::cout << "Meta is destroyed!" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(MetaTest, meta_create_1m_child_tables_test) {
|
||||||
|
// Open Meta
|
||||||
|
SMeta *meta = metaOpen(NULL);
|
||||||
|
std::cout << "Meta is opened!" << std::endl;
|
||||||
|
|
||||||
|
// Create a super tables
|
||||||
|
tb_uid_t uid = 477529885843758ul;
|
||||||
|
META_TABLE_OPTS_DECLARE(tbOpts);
|
||||||
|
STSchema *pSchema = metaGetSimpleSchema();
|
||||||
|
STSchema *pTagSchema = metaGetSimpleSchema();
|
||||||
|
|
||||||
|
metaSuperTableOptsInit(&tbOpts, "st", uid, pSchema, pTagSchema);
|
||||||
|
metaCreateTable(meta, &tbOpts);
|
||||||
|
metaTableOptsClear(&tbOpts);
|
||||||
|
|
||||||
|
tdFreeSchema(pSchema);
|
||||||
|
tdFreeSchema(pTagSchema);
|
||||||
|
|
||||||
|
// Create 1000000 child tables
|
||||||
|
char name[128];
|
||||||
|
SKVRow row = metaGetSimpleTags();
|
||||||
|
for (size_t i = 0; i < 1000000; i++) {
|
||||||
|
sprintf(name, "ctb%ld", i);
|
||||||
|
metaChildTableOptsInit(&tbOpts, name, uid, row);
|
||||||
|
metaCreateTable(meta, &tbOpts);
|
||||||
|
metaTableOptsClear(&tbOpts);
|
||||||
|
}
|
||||||
|
kvRowFree(row);
|
||||||
|
|
||||||
// Close Meta
|
// Close Meta
|
||||||
metaClose(meta);
|
metaClose(meta);
|
||||||
std::cout << "Meta is closed!" << std::endl;
|
std::cout << "Meta is closed!" << std::endl;
|
||||||
|
|
Loading…
Reference in New Issue