提交 ed3beb24 编写于 作者: H Hongze Cheng

more

上级 d0e645e4
...@@ -58,9 +58,12 @@ SMetaQueryOpts *metaQueryOptionsCreate(); ...@@ -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 ...@@ -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 ...@@ -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 @@ ...@@ -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() { ...@@ -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,8 +50,48 @@ TEST(MetaTest, meta_create_1m_normal_tables_test) { ...@@ -32,8 +50,48 @@ 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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册