diff --git a/src/client/inc/tscUtil.h b/src/client/inc/tscUtil.h index 1b7b9161845d428c42b9b12b5f89996684e361bc..e1123b91785328429c37147b2590531cfee91ea7 100644 --- a/src/client/inc/tscUtil.h +++ b/src/client/inc/tscUtil.h @@ -33,7 +33,7 @@ extern "C" { (((metaInfo)->pMeterMeta != NULL) && ((metaInfo)->pMeterMeta->tableType == TSDB_TABLE_TYPE_SUPER_TABLE)) #define UTIL_METER_IS_NOMRAL_METER(metaInfo) (!(UTIL_METER_IS_SUPERTABLE(metaInfo))) #define UTIL_METER_IS_CREATE_FROM_METRIC(metaInfo) \ - (((metaInfo)->pMeterMeta != NULL) && ((metaInfo)->pMeterMeta->tableType == TSDB_TABLE_TYPE_CREATE_FROM_STABLE)) + (((metaInfo)->pMeterMeta != NULL) && ((metaInfo)->pMeterMeta->tableType == TSDB_TABLE_TYPE_CHILD_TABLE)) #define TSDB_COL_IS_TAG(f) (((f)&TSDB_COL_TAG) != 0) diff --git a/src/client/src/tscServer.c b/src/client/src/tscServer.c index 5c841ce8735205c2831f65fd298038dbfbb91d5e..498dcddd049acb69bef33910dd7d0b0972fd08fa 100644 --- a/src/client/src/tscServer.c +++ b/src/client/src/tscServer.c @@ -2992,7 +2992,7 @@ int tscProcessMeterMetaRsp(SSqlObj *pSql) { int32_t tagLen = 0; SSchema *pTagsSchema = tsGetTagSchema(pMeta); - if (pMeta->tableType == TSDB_TABLE_TYPE_CREATE_FROM_STABLE) { + if (pMeta->tableType == TSDB_TABLE_TYPE_CHILD_TABLE) { for (int32_t i = 0; i < pMeta->numOfTags; ++i) { tagLen += pTagsSchema[i].bytes; } @@ -3107,7 +3107,7 @@ int tscProcessMultiMeterMetaRsp(SSqlObj *pSql) { int32_t tagLen = 0; SSchema *pTagsSchema = tsGetTagSchema(pMeta); - if (pMeta->tableType == TSDB_TABLE_TYPE_CREATE_FROM_STABLE) { + if (pMeta->tableType == TSDB_TABLE_TYPE_CHILD_TABLE) { for (int32_t j = 0; j < pMeta->numOfTags; ++j) { tagLen += pTagsSchema[j].bytes; } diff --git a/src/dnode/inc/dnodeWrite.h b/src/dnode/inc/dnodeWrite.h index 5d33c7305119d8a06274ccf694e64b7bd55984d7..77ac78ea0e6e286bd690373c2e124323b9c4a8d6 100644 --- a/src/dnode/inc/dnodeWrite.h +++ b/src/dnode/inc/dnodeWrite.h @@ -20,6 +20,11 @@ extern "C" { #endif +#include +#include +#include "taosdef.h" +#include "taosmsg.h" + /* * Check if table already exists */ @@ -28,7 +33,7 @@ int32_t dnodeCheckTableExist(int vid, int sid, int64_t uid); /* * Create table with specified configuration and open it */ -int32_t dnodeCreateTable(int vid, int sid, SMeterObj *table); +int32_t dnodeCreateTable(int vid, int sid, SCreateMsg *table); /* * Modify table configuration information diff --git a/src/dnode/src/dnodeWrite.c b/src/dnode/src/dnodeWrite.c index 4a2012aa35cb2219d62e1bbf8c1ce696ddbc76ab..d3c4e1a4dece8a6e954edaa62db6d129e306001c 100644 --- a/src/dnode/src/dnodeWrite.c +++ b/src/dnode/src/dnodeWrite.c @@ -14,4 +14,8 @@ */ #define _DEFAULT_SOURCE +#include "dnodeWrite.h" +int32_t dnodeCreateTable(int vid, int sid, SCreateTableMsg *table) { + +} diff --git a/src/inc/mnode.h b/src/inc/mnode.h index ecfd041b0ab5a2fec6a3be9c7dc53e0e5111cfbb..0ae526af42a15c78dd10839ab24986abea88067f 100644 --- a/src/inc/mnode.h +++ b/src/inc/mnode.h @@ -98,12 +98,12 @@ typedef struct { typedef struct { int32_t sid; int32_t vgId; // vnode group ID -} SMeterGid; +} STableGid; typedef struct _tab_obj { char meterId[TSDB_TABLE_ID_LEN + 1]; uint64_t uid; - SMeterGid gid; + STableGid gid; int32_t sversion; // schema version int64_t createdTime; diff --git a/src/inc/tsdb.h b/src/inc/taosdef.h similarity index 99% rename from src/inc/tsdb.h rename to src/inc/taosdef.h index becc630068c09dc1697f63fa3d010fe4f9bdcac5..028e6340cfb7eea10587817ad6a8ba433d7868c0 100644 --- a/src/inc/tsdb.h +++ b/src/inc/taosdef.h @@ -13,8 +13,8 @@ * along with this program. If not, see . */ -#ifndef _tsdb_global_header_ -#define _tsdb_global_header_ +#ifndef TDENGINE_TAOS_DEF_H +#define TDENGINE_TAOS_DEF_H #ifdef __cplusplus extern "C" { diff --git a/src/inc/taosmsg.h b/src/inc/taosmsg.h index 5af7befd873eee67874874ca33c8f85911a6283f..06e03059b236483ff57e97f7ecb5ebdd2cc45024 100644 --- a/src/inc/taosmsg.h +++ b/src/inc/taosmsg.h @@ -181,9 +181,9 @@ enum _mgmt_table { #define TSDB_KILL_MSG_LEN 30 -enum { +typedef enum { TSDB_TABLE_TYPE_SUPER_TABLE = 0, // super table - TSDB_TABLE_TYPE_CREATE_FROM_STABLE = 1, // table created from super table + TSDB_TABLE_TYPE_CHILD_TABLE = 1, // table created from super table TSDB_TABLE_TYPE_NORMAL_TABLE = 2, // ordinary table TSDB_TABLE_TYPE_STREAM_TABLE = 3, // table created from stream computing TSDB_TABLE_TYPE_MAX = 4 diff --git a/src/mnode/inc/mgmtChildTable.h b/src/mnode/inc/mgmtChildTable.h new file mode 100644 index 0000000000000000000000000000000000000000..635c03a110af25687e825a78792024548fba7719 --- /dev/null +++ b/src/mnode/inc/mgmtChildTable.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#ifndef TBASE_MNODE_CHILD_TABLE_H +#define TBASE_MNODE_CHILD_TABLE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "taosdef.h" + +struct SSuperTableObj; + + +typedef struct { + char tableId[TSDB_TABLE_ID_LEN + 1]; + char superTableId[TSDB_TABLE_ID_LEN + 1]; + int64_t uid; + int32_t sid; + int32_t vgId; + int64_t createdTime; + int32_t sversion; + char reserved[3]; + char updateEnd[1]; + struct SSuperTableObj *superTable; +} SChildTableObj; + +int32_t mgmtInitChildTables(); +void mgmtCleanUpChildTables(); +int32_t mgmtCreateChildTable(SDbObj *pDb, SCreateTableMsg *pCreate); +int32_t mgmtDropChildTable(SDbObj *pDb, char *meterId, int ignore); +int32_t mgmtAlterChildTable(SDbObj *pDb, SAlterTableMsg *pAlter); +SChildTableObj* mgmtGetChildTable(char *tableId); +SSchema* mgmtGetChildTableSchema(SChildTableObj *pTable); + + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/mnode/inc/mgmtNormalTable.h b/src/mnode/inc/mgmtNormalTable.h new file mode 100644 index 0000000000000000000000000000000000000000..91a80b032926925f290934e5e664f48e4c6d505a --- /dev/null +++ b/src/mnode/inc/mgmtNormalTable.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#ifndef TBASE_MNODE_NORMAL_TABLE_H +#define TBASE_MNODE_NORMAL_TABLE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +typedef struct { + char tableId[TSDB_TABLE_ID_LEN + 1]; + int64_t uid; + int32_t sid; + int32_t vgId; + int32_t sversion; // schema version + int32_t createdTime; + + int32_t numOfTags; // for metric + int32_t numOfMeters; // for metric + int32_t numOfColumns; + int32_t schemaSize; + short nextColId; + char tableType : 4; + char status : 3; + char isDirty : 1; // if the table change tag column 1 value + char reserved[15]; + char updateEnd[1]; + + pthread_rwlock_t rwLock; + tSkipList * pSkipList; + struct _tab_obj *pHead; // for metric, a link list for all meters created + // according to this metric + char *pTagData; // TSDB_TABLE_ID_LEN(metric_name)+ + // tags_value1/tags_value2/tags_value3 + struct _tab_obj *prev, *next; + char * pSql; // pointer to SQL, for SC, null-terminated string + char * pReserve1; + char * pReserve2; + char * schema; + // SSchema schema[]; +} SNormalTableObj; + + +int32_t mgmtInitSTable(); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/mnode/inc/mgmtStreamTable.h b/src/mnode/inc/mgmtStreamTable.h new file mode 100644 index 0000000000000000000000000000000000000000..26ab05d28701f3be757f77a5f0683562fb371ab5 --- /dev/null +++ b/src/mnode/inc/mgmtStreamTable.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#ifndef TBASE_MNODE_STABLE_H +#define TBASE_MNODE_STABLE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +typedef struct { + char meterId[TSDB_TABLE_ID_LEN + 1]; + uint64_t uid; + STableGid gid; + + int32_t sversion; // schema version + int32_t createdTime; + + int32_t numOfTags; // for metric + int32_t numOfMeters; // for metric + int32_t numOfColumns; + int32_t schemaSize; + short nextColId; + char tableType : 4; + char status : 3; + char isDirty : 1; // if the table change tag column 1 value + char reserved[15]; + char updateEnd[1]; + + pthread_rwlock_t rwLock; + tSkipList * pSkipList; + struct _tab_obj *pHead; // for metric, a link list for all meters created + // according to this metric + char *pTagData; // TSDB_TABLE_ID_LEN(metric_name)+ + // tags_value1/tags_value2/tags_value3 + struct _tab_obj *prev, *next; + char * pSql; // pointer to SQL, for SC, null-terminated string + char * pReserve1; + char * pReserve2; + char * schema; + // SSchema schema[]; +} STabObj; + + +int32_t mgmtInitSTable(); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/mnode/inc/mgmtSuperTable.h b/src/mnode/inc/mgmtSuperTable.h new file mode 100644 index 0000000000000000000000000000000000000000..c997a1b3b0835c7c92c2af3325a39ec93c65239e --- /dev/null +++ b/src/mnode/inc/mgmtSuperTable.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#ifndef TBASE_MNODE_SUPER_TABLE_H +#define TBASE_MNODE_SUPER_TABLE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#include "taosdef.h" + + +typedef struct { + char superTableId[TSDB_TABLE_ID_LEN + 1]; + int64_t uid; + int32_t sid; + int32_t vgId; + int32_t sversion; + int32_t createdTime; + char reserved[7]; + char updateEnd[1]; +} SSuperTableObj; + +int32_t mgmtInitSuperTables(); +void mgmtCleanUpSuperTables(); +int32_t mgmtCreateSuperTable(SDbObj *pDb, SCreateTableMsg *pCreate); +int32_t mgmtDropSuperTable(SDbObj *pDb, char *meterId, int ignore); +int32_t mgmtAlterSuperTable(SDbObj *pDb, SAlterTableMsg *pAlter); +SSuperTableObj* mgmtGetSuperTable(char *tableId); +SSchema* mgmtGetSuperTableSchema(SSuperTableObj *pTable); + + + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/mnode/src/mgmtStable.c b/src/mnode/src/mgmtChildTable.c similarity index 100% rename from src/mnode/src/mgmtStable.c rename to src/mnode/src/mgmtChildTable.c diff --git a/src/mnode/inc/mgmtStable.h b/src/mnode/src/mgmtNormalTable.c similarity index 59% rename from src/mnode/inc/mgmtStable.h rename to src/mnode/src/mgmtNormalTable.c index 161fd816fe8f9db4c3cbd4d7d875029677f243d0..ba278f5457a65282325dd985a30e19c84cd0d6d2 100644 --- a/src/mnode/inc/mgmtStable.h +++ b/src/mnode/src/mgmtNormalTable.c @@ -13,23 +13,25 @@ * along with this program. If not, see . */ -#ifndef TBASE_MNODE_STABLE_H -#define TBASE_MNODE_STABLE_H +#define _DEFAULT_SOURCE +#include "os.h" -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include #include "mnode.h" +#include "mgmtAcct.h" +#include "mgmtGrant.h" +#include "mgmtUtil.h" +#include "mgmtDb.h" +#include "mgmtDnodeInt.h" +#include "mgmtVgroup.h" +#include "mgmtSupertableQuery.h" +#include "mgmtTable.h" +#include "taosmsg.h" +#include "tast.h" +#include "textbuffer.h" +#include "tschemautil.h" +#include "tscompression.h" +#include "tskiplist.h" +#include "tsqlfunction.h" +#include "ttime.h" +#include "tstatus.h" -int32_t mgmtInitSTable(); - - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/mnode/src/mgmtStreamTable.c b/src/mnode/src/mgmtStreamTable.c new file mode 100644 index 0000000000000000000000000000000000000000..ba278f5457a65282325dd985a30e19c84cd0d6d2 --- /dev/null +++ b/src/mnode/src/mgmtStreamTable.c @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#define _DEFAULT_SOURCE +#include "os.h" + +#include "mnode.h" +#include "mgmtAcct.h" +#include "mgmtGrant.h" +#include "mgmtUtil.h" +#include "mgmtDb.h" +#include "mgmtDnodeInt.h" +#include "mgmtVgroup.h" +#include "mgmtSupertableQuery.h" +#include "mgmtTable.h" +#include "taosmsg.h" +#include "tast.h" +#include "textbuffer.h" +#include "tschemautil.h" +#include "tscompression.h" +#include "tskiplist.h" +#include "tsqlfunction.h" +#include "ttime.h" +#include "tstatus.h" + diff --git a/src/mnode/src/mgmtSuperTable.c b/src/mnode/src/mgmtSuperTable.c new file mode 100644 index 0000000000000000000000000000000000000000..ba278f5457a65282325dd985a30e19c84cd0d6d2 --- /dev/null +++ b/src/mnode/src/mgmtSuperTable.c @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#define _DEFAULT_SOURCE +#include "os.h" + +#include "mnode.h" +#include "mgmtAcct.h" +#include "mgmtGrant.h" +#include "mgmtUtil.h" +#include "mgmtDb.h" +#include "mgmtDnodeInt.h" +#include "mgmtVgroup.h" +#include "mgmtSupertableQuery.h" +#include "mgmtTable.h" +#include "taosmsg.h" +#include "tast.h" +#include "textbuffer.h" +#include "tschemautil.h" +#include "tscompression.h" +#include "tskiplist.h" +#include "tsqlfunction.h" +#include "ttime.h" +#include "tstatus.h" + diff --git a/src/mnode/src/mgmtTable.c b/src/mnode/src/mgmtTable.c index 27a5ffd4f962aaef0f6278ebc127db037d2872e3..30b59aa1a163ebc0ea2444d6a9a9e926ea8b361f 100644 --- a/src/mnode/src/mgmtTable.c +++ b/src/mnode/src/mgmtTable.c @@ -35,6 +35,12 @@ #include "ttime.h" #include "tstatus.h" +#include "mgmtSuperTable.h" +#include "mgmtChildTable.h" +#include "mgmtNormalTable.h" +#include "mgmtStreamTable.h" + + extern int64_t sdbVersion; #define mgmtDestroyMeter(pTable) \ @@ -564,15 +570,24 @@ int mgmtCreateMeter(SDbObj *pDb, SCreateTableMsg *pCreate) { if (pTable == NULL) return TSDB_CODE_SERV_OUT_OF_MEMORY; memset(pTable, 0, sizeof(STabObj)); - if (pCreate->numOfColumns == 0 && pCreate->numOfTags == 0) { // MTABLE - pTable->tableType = TSDB_TABLE_TYPE_CREATE_FROM_STABLE; - char *pTagData = (char *)pCreate->schema; // it is a tag key - pMetric = mgmtGetTable(pTagData); - if (pMetric == NULL) { + // + ETableType tableType = TSDB_TABLE_TYPE_MAX; + char *tagData = NULL; + int32_t tagDataSize = 0; + + if (pCreate->numOfColumns == 0 && pCreate->numOfTags == 0) { + tableType = TSDB_TABLE_TYPE_CHILD_TABLE; + tagData = (char *)pCreate->schema; // it is a tag key + + SSuperTableObj *pSuperTable = mgmtGetSuperTable(tagData); + if (pSuperTable == NULL) { mError("table:%s, corresponding super table does not exist", pCreate->meterId); return TSDB_CODE_INVALID_TABLE; } + tagDataSize = mgmtGetTagsLength(pMetric, INT_MAX) + (uint32_t)TSDB_TABLE_ID_LEN; + + /* * for meters created according to metrics, the schema of this meter isn't needed. * so, we don't allocate memory for it in order to save a huge amount of @@ -1667,7 +1682,7 @@ int32_t mgmtFindColumnIndex(STabObj *pTable, const char *colName) { } } - } else if (pTable->tableType == TSDB_TABLE_TYPE_CREATE_FROM_STABLE) { + } else if (pTable->tableType == TSDB_TABLE_TYPE_CHILD_TABLE) { pMetric = mgmtGetTable(pTable->pTagData); if (pMetric == NULL) { mError("MTable not belongs to any metric, meter: %s", pTable->meterId); @@ -1688,7 +1703,7 @@ int32_t mgmtMeterAddColumn(STabObj *pTable, SSchema schema[], int ncols) { SAcctObj *pAcct = NULL; SDbObj * pDb = NULL; - if (pTable == NULL || pTable->tableType == TSDB_TABLE_TYPE_CREATE_FROM_STABLE || pTable->tableType == TSDB_TABLE_TYPE_STREAM_TABLE || ncols <= 0) + if (pTable == NULL || pTable->tableType == TSDB_TABLE_TYPE_CHILD_TABLE || pTable->tableType == TSDB_TABLE_TYPE_STREAM_TABLE || ncols <= 0) return TSDB_CODE_APP_ERROR; // ASSUMPTION: no two tags are the same @@ -1745,7 +1760,7 @@ int32_t mgmtMeterDropColumnByName(STabObj *pTable, const char *name) { SAcctObj *pAcct = NULL; SDbObj * pDb = NULL; - if (pTable == NULL || pTable->tableType == TSDB_TABLE_TYPE_CREATE_FROM_STABLE || pTable->tableType == TSDB_TABLE_TYPE_STREAM_TABLE) + if (pTable == NULL || pTable->tableType == TSDB_TABLE_TYPE_CHILD_TABLE || pTable->tableType == TSDB_TABLE_TYPE_STREAM_TABLE) return TSDB_CODE_APP_ERROR; int32_t index = mgmtFindColumnIndex(pTable, name); diff --git a/src/mnode/src/mgmtUtil.c b/src/mnode/src/mgmtUtil.c index 645758401b78f0ce6b2875d79f967240e516db14..57b9495860f0dcaf96b0305082b0771b7efa0e8e 100644 --- a/src/mnode/src/mgmtUtil.c +++ b/src/mnode/src/mgmtUtil.c @@ -21,7 +21,7 @@ #include "tschemautil.h" bool mgmtTableCreateFromSuperTable(STabObj* pTableObj) { - return pTableObj->tableType == TSDB_TABLE_TYPE_CREATE_FROM_STABLE; + return pTableObj->tableType == TSDB_TABLE_TYPE_CHILD_TABLE; } bool mgmtIsSuperTable(STabObj* pTableObj) { diff --git a/src/vnode/detail/src/vnodeSupertableQuery.c b/src/vnode/detail/src/vnodeSupertableQuery.c index db94a82af041beef221a84f603d697bf8e80dbdf..b8b0d136455479221df41cefa20fbe5a201998f2 100644 --- a/src/vnode/detail/src/vnodeSupertableQuery.c +++ b/src/vnode/detail/src/vnodeSupertableQuery.c @@ -202,7 +202,7 @@ static void mgmtRetrieveByMeterName(tQueryResultset* pRes, char* str, STabObj* p } /* not a table created from metric, ignore */ - if (pMeterObj->tableType != TSDB_TABLE_TYPE_CREATE_FROM_STABLE) { + if (pMeterObj->tableType != TSDB_TABLE_TYPE_CHILD_TABLE) { continue; }