TDengine/include/libs/nodes/cmdnodes.h

538 lines
14 KiB
C
Raw Normal View History

/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* 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 <http://www.gnu.org/licenses/>.
*/
#ifndef _TD_CMD_NODES_H_
#define _TD_CMD_NODES_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "query.h"
2022-03-02 02:50:51 +00:00
#include "querynodes.h"
#define DESCRIBE_RESULT_COLS 4
#define DESCRIBE_RESULT_FIELD_LEN (TSDB_COL_NAME_LEN - 1 + VARSTR_HEADER_SIZE)
#define DESCRIBE_RESULT_TYPE_LEN (20 + VARSTR_HEADER_SIZE)
#define DESCRIBE_RESULT_NOTE_LEN (8 + VARSTR_HEADER_SIZE)
#define SHOW_CREATE_DB_RESULT_COLS 2
2022-06-18 11:50:53 +00:00
#define SHOW_CREATE_DB_RESULT_FIELD1_LEN (TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE)
#define SHOW_CREATE_DB_RESULT_FIELD2_LEN (TSDB_MAX_BINARY_LEN + VARSTR_HEADER_SIZE)
#define SHOW_CREATE_TB_RESULT_COLS 2
2022-06-20 12:58:36 +00:00
#define SHOW_CREATE_TB_RESULT_FIELD1_LEN (TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE)
2022-10-21 09:24:06 +00:00
#define SHOW_CREATE_TB_RESULT_FIELD2_LEN (TSDB_MAX_ALLOWED_SQL_LEN * 3)
2022-06-20 12:58:36 +00:00
2023-07-14 06:38:35 +00:00
#define SHOW_LOCAL_VARIABLES_RESULT_COLS 3
2022-06-22 09:17:18 +00:00
#define SHOW_LOCAL_VARIABLES_RESULT_FIELD1_LEN (TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE)
#define SHOW_LOCAL_VARIABLES_RESULT_FIELD2_LEN (TSDB_CONFIG_VALUE_LEN + VARSTR_HEADER_SIZE)
2023-07-14 06:38:35 +00:00
#define SHOW_LOCAL_VARIABLES_RESULT_FIELD3_LEN (TSDB_CONFIG_SCOPE_LEN + VARSTR_HEADER_SIZE)
2022-06-22 09:17:18 +00:00
#define SHOW_ALIVE_RESULT_COLS 1
2022-06-07 03:53:32 +00:00
2023-03-03 08:57:13 +00:00
#define BIT_FLAG_MASK(n) (1 << n)
#define BIT_FLAG_SET_MASK(val, mask) ((val) |= (mask))
#define BIT_FLAG_TEST_MASK(val, mask) (((val) & (mask)) != 0)
2022-06-07 03:53:32 +00:00
2023-03-03 08:57:13 +00:00
#define PRIVILEGE_TYPE_ALL BIT_FLAG_MASK(0)
#define PRIVILEGE_TYPE_READ BIT_FLAG_MASK(1)
#define PRIVILEGE_TYPE_WRITE BIT_FLAG_MASK(2)
#define PRIVILEGE_TYPE_SUBSCRIBE BIT_FLAG_MASK(3)
2022-06-07 03:53:32 +00:00
typedef struct SDatabaseOptions {
2022-04-27 10:18:37 +00:00
ENodeType type;
int32_t buffer;
char cacheModelStr[TSDB_CACHE_MODEL_STR_LEN];
int8_t cacheModel;
2022-07-06 10:47:33 +00:00
int32_t cacheLastSize;
2022-04-27 10:18:37 +00:00
int8_t compressionLevel;
int32_t daysPerFile;
2022-04-07 10:19:20 +00:00
SValueNode* pDaysPerFile;
2022-04-27 10:18:37 +00:00
int32_t fsyncPeriod;
int32_t maxRowsPerBlock;
int32_t minRowsPerBlock;
SNodeList* pKeep;
2022-06-11 07:44:49 +00:00
int64_t keep[3];
int32_t keepTimeOffset;
2022-04-27 10:18:37 +00:00
int32_t pages;
int32_t pagesize;
2022-09-13 06:19:50 +00:00
int32_t tsdbPageSize;
2022-04-27 10:18:37 +00:00
char precisionStr[3];
int8_t precision;
int8_t replica;
char strictStr[TSDB_DB_STRICT_STR_LEN];
2022-04-27 10:18:37 +00:00
int8_t strict;
int8_t walLevel;
int32_t numOfVgroups;
int8_t singleStable;
SNodeList* pRetentions;
2022-05-25 13:20:11 +00:00
int8_t schemaless;
2022-07-25 13:09:06 +00:00
int32_t walRetentionPeriod;
int32_t walRetentionSize;
int32_t walRollPeriod;
int32_t walSegmentSize;
bool walRetentionPeriodIsSet;
bool walRetentionSizeIsSet;
bool walRollPeriodIsSet;
int32_t sstTrigger;
int32_t tablePrefix;
int32_t tableSuffix;
} SDatabaseOptions;
typedef struct SCreateDatabaseStmt {
2022-04-27 10:18:37 +00:00
ENodeType type;
char dbName[TSDB_DB_NAME_LEN];
bool ignoreExists;
2022-03-15 08:00:09 +00:00
SDatabaseOptions* pOptions;
} SCreateDatabaseStmt;
typedef struct SUseDatabaseStmt {
ENodeType type;
2022-04-27 10:18:37 +00:00
char dbName[TSDB_DB_NAME_LEN];
} SUseDatabaseStmt;
typedef struct SDropDatabaseStmt {
ENodeType type;
2022-04-27 10:18:37 +00:00
char dbName[TSDB_DB_NAME_LEN];
bool ignoreNotExists;
} SDropDatabaseStmt;
typedef struct SAlterDatabaseStmt {
2022-04-27 10:18:37 +00:00
ENodeType type;
char dbName[TSDB_DB_NAME_LEN];
SDatabaseOptions* pOptions;
} SAlterDatabaseStmt;
2022-06-29 10:20:27 +00:00
typedef struct SFlushDatabaseStmt {
ENodeType type;
char dbName[TSDB_DB_NAME_LEN];
} SFlushDatabaseStmt;
2022-07-11 02:53:06 +00:00
typedef struct STrimDatabaseStmt {
ENodeType type;
char dbName[TSDB_DB_NAME_LEN];
int32_t maxSpeed;
2022-07-11 02:53:06 +00:00
} STrimDatabaseStmt;
2022-12-27 03:11:02 +00:00
typedef struct SCompactDatabaseStmt {
ENodeType type;
char dbName[TSDB_DB_NAME_LEN];
SNode* pStart;
SNode* pEnd;
2022-12-27 03:11:02 +00:00
} SCompactDatabaseStmt;
2022-03-02 02:50:51 +00:00
typedef struct STableOptions {
2022-04-27 10:18:37 +00:00
ENodeType type;
2022-06-16 12:45:00 +00:00
bool commentNull;
char comment[TSDB_TB_COMMENT_LEN];
2022-06-17 09:27:42 +00:00
SNodeList* pMaxDelay;
int64_t maxDelay1;
int64_t maxDelay2;
SNodeList* pWatermark;
int64_t watermark1;
int64_t watermark2;
2022-12-06 08:07:11 +00:00
SNodeList* pDeleteMark;
int64_t deleteMark1;
int64_t deleteMark2;
2022-04-27 10:18:37 +00:00
SNodeList* pRollupFuncs;
int32_t ttl;
2022-03-05 23:12:08 +00:00
SNodeList* pSma;
2022-03-02 02:50:51 +00:00
} STableOptions;
typedef struct SColumnDefNode {
ENodeType type;
2022-04-27 10:18:37 +00:00
char colName[TSDB_COL_NAME_LEN];
2022-03-02 02:50:51 +00:00
SDataType dataType;
char comments[TSDB_TB_COMMENT_LEN];
2022-04-27 10:18:37 +00:00
bool sma;
2022-03-02 02:50:51 +00:00
} SColumnDefNode;
typedef struct SCreateTableStmt {
2022-04-27 10:18:37 +00:00
ENodeType type;
char dbName[TSDB_DB_NAME_LEN];
char tableName[TSDB_TABLE_NAME_LEN];
bool ignoreExists;
SNodeList* pCols;
SNodeList* pTags;
2022-03-15 08:00:09 +00:00
STableOptions* pOptions;
2022-03-02 02:50:51 +00:00
} SCreateTableStmt;
typedef struct SCreateSubTableClause {
ENodeType type;
char dbName[TSDB_DB_NAME_LEN];
char tableName[TSDB_TABLE_NAME_LEN];
char useDbName[TSDB_DB_NAME_LEN];
char useTableName[TSDB_TABLE_NAME_LEN];
bool ignoreExists;
SNodeList* pSpecificTags;
SNodeList* pValsOfTags;
2022-06-14 11:06:14 +00:00
STableOptions* pOptions;
} SCreateSubTableClause;
2022-03-05 23:12:08 +00:00
2022-12-21 05:51:06 +00:00
typedef struct SCreateMultiTablesStmt {
2022-04-27 10:18:37 +00:00
ENodeType type;
2022-03-05 23:12:08 +00:00
SNodeList* pSubTables;
2022-12-21 05:51:06 +00:00
} SCreateMultiTablesStmt;
2022-03-02 02:50:51 +00:00
typedef struct SDropTableClause {
ENodeType type;
2022-04-27 10:18:37 +00:00
char dbName[TSDB_DB_NAME_LEN];
char tableName[TSDB_TABLE_NAME_LEN];
bool ignoreNotExists;
} SDropTableClause;
typedef struct SDropTableStmt {
2022-04-27 10:18:37 +00:00
ENodeType type;
SNodeList* pTables;
} SDropTableStmt;
2022-03-08 09:25:26 +00:00
typedef struct SDropSuperTableStmt {
ENodeType type;
2022-04-27 10:18:37 +00:00
char dbName[TSDB_DB_NAME_LEN];
char tableName[TSDB_TABLE_NAME_LEN];
bool ignoreNotExists;
2022-03-08 09:25:26 +00:00
} SDropSuperTableStmt;
typedef struct SAlterTableStmt {
2022-04-27 10:18:37 +00:00
ENodeType type;
char dbName[TSDB_DB_NAME_LEN];
char tableName[TSDB_TABLE_NAME_LEN];
int8_t alterType;
char colName[TSDB_COL_NAME_LEN];
char newColName[TSDB_COL_NAME_LEN];
STableOptions* pOptions;
2022-04-27 10:18:37 +00:00
SDataType dataType;
SValueNode* pVal;
} SAlterTableStmt;
typedef struct SCreateUserStmt {
ENodeType type;
2022-12-21 05:51:06 +00:00
char userName[TSDB_USER_LEN];
2022-04-27 10:18:37 +00:00
char password[TSDB_USET_PASSWORD_LEN];
2022-06-22 08:35:14 +00:00
int8_t sysinfo;
2023-08-29 09:35:03 +00:00
int32_t numIpRanges;
SIpV4Range* pIpRanges;
2023-08-30 09:12:12 +00:00
SNodeList* pNodeListIpRanges;
} SCreateUserStmt;
typedef struct SAlterUserStmt {
ENodeType type;
2022-12-21 05:51:06 +00:00
char userName[TSDB_USER_LEN];
2022-04-27 10:18:37 +00:00
int8_t alterType;
2022-06-22 08:35:14 +00:00
char password[TSDB_USET_PASSWORD_LEN];
int8_t enable;
int8_t sysinfo;
2023-08-29 09:35:03 +00:00
int32_t numIpRanges;
SIpV4Range* pIpRanges;
2023-08-30 09:12:12 +00:00
SNodeList* pNodeListIpRanges;
} SAlterUserStmt;
typedef struct SDropUserStmt {
ENodeType type;
2022-12-20 08:53:08 +00:00
char userName[TSDB_USER_LEN];
} SDropUserStmt;
typedef struct SCreateDnodeStmt {
ENodeType type;
2022-04-27 10:18:37 +00:00
char fqdn[TSDB_FQDN_LEN];
int32_t port;
} SCreateDnodeStmt;
typedef struct SDropDnodeStmt {
ENodeType type;
2022-04-27 10:18:37 +00:00
int32_t dnodeId;
char fqdn[TSDB_FQDN_LEN];
int32_t port;
bool force;
2023-05-16 01:50:10 +00:00
bool unsafe;
} SDropDnodeStmt;
typedef struct SAlterDnodeStmt {
ENodeType type;
2022-04-27 10:18:37 +00:00
int32_t dnodeId;
char config[TSDB_DNODE_CONFIG_LEN];
char value[TSDB_DNODE_VALUE_LEN];
} SAlterDnodeStmt;
2022-03-08 09:25:26 +00:00
typedef struct SShowStmt {
ENodeType type;
SNode* pDbName; // SValueNode
SNode* pTbName; // SValueNode
EOperatorType tableCondType;
2023-09-19 06:03:06 +00:00
EShowKind showKind; // show databases: user/system, show tables: normal/child, others NULL
2022-03-08 09:25:26 +00:00
} SShowStmt;
typedef struct SShowCreateDatabaseStmt {
ENodeType type;
2022-04-27 10:18:37 +00:00
char dbName[TSDB_DB_NAME_LEN];
char dbFName[TSDB_DB_FNAME_LEN];
void* pCfg; // SDbCfgInfo
} SShowCreateDatabaseStmt;
typedef struct SShowAliveStmt {
ENodeType type;
char dbName[TSDB_DB_NAME_LEN];
} SShowAliveStmt;
typedef struct SShowCreateTableStmt {
ENodeType type;
char dbName[TSDB_DB_NAME_LEN];
char tableName[TSDB_TABLE_NAME_LEN];
2022-08-02 12:20:44 +00:00
void* pDbCfg; // SDbCfgInfo
void* pTableCfg; // STableCfg
} SShowCreateTableStmt;
typedef struct SShowTableDistributedStmt {
ENodeType type;
char dbName[TSDB_DB_NAME_LEN];
char tableName[TSDB_TABLE_NAME_LEN];
} SShowTableDistributedStmt;
typedef struct SShowDnodeVariablesStmt {
ENodeType type;
SNode* pDnodeId;
SNode* pLikePattern;
} SShowDnodeVariablesStmt;
typedef struct SShowVnodesStmt {
ENodeType type;
SNode* pDnodeId;
SNode* pDnodeEndpoint;
} SShowVnodesStmt;
2022-11-10 09:22:13 +00:00
typedef struct SShowTableTagsStmt {
ENodeType type;
SNode* pDbName; // SValueNode
SNode* pTbName; // SValueNode
SNodeList* pTags;
} SShowTableTagsStmt;
2022-12-28 02:31:34 +00:00
typedef enum EIndexType { INDEX_TYPE_SMA = 1, INDEX_TYPE_FULLTEXT, INDEX_TYPE_NORMAL } EIndexType;
2022-03-15 08:00:09 +00:00
typedef struct SIndexOptions {
2022-04-27 10:18:37 +00:00
ENodeType type;
2022-03-15 08:00:09 +00:00
SNodeList* pFuncs;
2022-04-27 10:18:37 +00:00
SNode* pInterval;
SNode* pOffset;
SNode* pSliding;
int8_t tsPrecision;
SNode* pStreamOptions;
2022-03-15 08:00:09 +00:00
} SIndexOptions;
typedef struct SCreateIndexStmt {
ENodeType type;
EIndexType indexType;
bool ignoreExists;
char indexDbName[TSDB_DB_NAME_LEN];
char indexName[TSDB_INDEX_NAME_LEN];
char dbName[TSDB_DB_NAME_LEN];
char tableName[TSDB_TABLE_NAME_LEN];
SNodeList* pCols;
SIndexOptions* pOptions;
SNode* pPrevQuery;
SMCreateSmaReq* pReq;
2022-03-15 08:00:09 +00:00
} SCreateIndexStmt;
typedef struct SDropIndexStmt {
ENodeType type;
2022-04-27 10:18:37 +00:00
bool ignoreNotExists;
2022-08-02 12:20:44 +00:00
char indexDbName[TSDB_DB_NAME_LEN];
2022-04-27 10:18:37 +00:00
char indexName[TSDB_INDEX_NAME_LEN];
} SDropIndexStmt;
typedef struct SCreateComponentNodeStmt {
2022-03-15 12:04:52 +00:00
ENodeType type;
2022-04-27 10:18:37 +00:00
int32_t dnodeId;
} SCreateComponentNodeStmt;
2022-03-15 12:04:52 +00:00
typedef struct SDropComponentNodeStmt {
ENodeType type;
2022-04-27 10:18:37 +00:00
int32_t dnodeId;
} SDropComponentNodeStmt;
2023-05-09 11:19:14 +00:00
typedef struct SRestoreComponentNodeStmt {
ENodeType type;
int32_t dnodeId;
} SRestoreComponentNodeStmt;
typedef struct SCreateTopicStmt {
ENodeType type;
char topicName[TSDB_TOPIC_NAME_LEN];
char subDbName[TSDB_DB_NAME_LEN];
char subSTbName[TSDB_TABLE_NAME_LEN];
bool ignoreExists;
int8_t withMeta;
SNode* pQuery;
SNode* pWhere;
} SCreateTopicStmt;
typedef struct SDropTopicStmt {
ENodeType type;
char topicName[TSDB_TOPIC_NAME_LEN];
2022-04-27 10:18:37 +00:00
bool ignoreNotExists;
} SDropTopicStmt;
2022-05-25 13:20:11 +00:00
typedef struct SDropCGroupStmt {
ENodeType type;
char topicName[TSDB_TOPIC_NAME_LEN];
2022-05-25 13:20:11 +00:00
char cgroup[TSDB_CGROUP_LEN];
bool ignoreNotExists;
} SDropCGroupStmt;
typedef struct SAlterLocalStmt {
ENodeType type;
2022-04-27 10:18:37 +00:00
char config[TSDB_DNODE_CONFIG_LEN];
char value[TSDB_DNODE_VALUE_LEN];
} SAlterLocalStmt;
typedef struct SDescribeStmt {
2022-04-27 10:18:37 +00:00
ENodeType type;
char dbName[TSDB_DB_NAME_LEN];
char tableName[TSDB_TABLE_NAME_LEN];
STableMeta* pMeta;
} SDescribeStmt;
typedef struct SKillStmt {
ENodeType type;
2022-04-27 10:18:37 +00:00
int32_t targetId;
} SKillStmt;
2022-06-15 05:49:29 +00:00
typedef struct SKillQueryStmt {
ENodeType type;
char queryId[TSDB_QUERY_ID_LEN];
} SKillQueryStmt;
2023-03-03 08:57:13 +00:00
typedef enum EStreamOptionsSetFlag {
SOPT_TRIGGER_TYPE_SET = BIT_FLAG_MASK(0),
SOPT_WATERMARK_SET = BIT_FLAG_MASK(1),
SOPT_DELETE_MARK_SET = BIT_FLAG_MASK(2),
SOPT_FILL_HISTORY_SET = BIT_FLAG_MASK(3),
SOPT_IGNORE_EXPIRED_SET = BIT_FLAG_MASK(4),
SOPT_IGNORE_UPDATE_SET = BIT_FLAG_MASK(5),
} EStreamOptionsSetFlag;
typedef struct SStreamOptions {
ENodeType type;
2022-04-27 10:18:37 +00:00
int8_t triggerType;
2022-06-13 06:54:38 +00:00
SNode* pDelay;
2022-04-27 10:18:37 +00:00
SNode* pWatermark;
2022-12-06 08:07:11 +00:00
SNode* pDeleteMark;
int8_t fillHistory;
2022-08-12 07:04:04 +00:00
int8_t ignoreExpired;
int8_t ignoreUpdate;
2023-03-03 08:57:13 +00:00
int64_t setFlag;
} SStreamOptions;
typedef struct SCreateStreamStmt {
ENodeType type;
char streamName[TSDB_TABLE_NAME_LEN];
char targetDbName[TSDB_DB_NAME_LEN];
char targetTabName[TSDB_TABLE_NAME_LEN];
bool ignoreExists;
SStreamOptions* pOptions;
SNode* pQuery;
SNode* pPrevQuery;
SNodeList* pTags;
SNode* pSubtable;
SNodeList* pCols;
SCMCreateStreamReq* pReq;
} SCreateStreamStmt;
typedef struct SDropStreamStmt {
ENodeType type;
2022-04-27 10:18:37 +00:00
char streamName[TSDB_TABLE_NAME_LEN];
bool ignoreNotExists;
} SDropStreamStmt;
typedef struct SPauseStreamStmt {
ENodeType type;
char streamName[TSDB_TABLE_NAME_LEN];
bool ignoreNotExists;
} SPauseStreamStmt;
typedef struct SResumeStreamStmt {
ENodeType type;
char streamName[TSDB_TABLE_NAME_LEN];
bool ignoreNotExists;
bool ignoreUntreated;
} SResumeStreamStmt;
2022-04-20 09:43:02 +00:00
typedef struct SCreateFunctionStmt {
ENodeType type;
bool orReplace;
2022-04-27 10:18:37 +00:00
bool ignoreExists;
char funcName[TSDB_FUNC_NAME_LEN];
bool isAgg;
char libraryPath[PATH_MAX];
2022-04-20 09:43:02 +00:00
SDataType outputDt;
2022-04-27 10:18:37 +00:00
int32_t bufSize;
int8_t language;
2022-04-20 09:43:02 +00:00
} SCreateFunctionStmt;
typedef struct SDropFunctionStmt {
ENodeType type;
char funcName[TSDB_FUNC_NAME_LEN];
bool ignoreNotExists;
} SDropFunctionStmt;
typedef struct SGrantStmt {
ENodeType type;
char userName[TSDB_USER_LEN];
char objName[TSDB_DB_NAME_LEN]; // db or topic
2023-03-28 10:43:58 +00:00
char tabName[TSDB_TABLE_NAME_LEN];
int64_t privileges;
2023-03-28 10:43:58 +00:00
SNode* pTagCond;
} SGrantStmt;
typedef SGrantStmt SRevokeStmt;
2022-06-07 03:53:32 +00:00
typedef struct SBalanceVgroupStmt {
ENodeType type;
} SBalanceVgroupStmt;
2023-03-22 01:36:59 +00:00
typedef struct SBalanceVgroupLeaderStmt {
ENodeType type;
int32_t vgId;
2023-03-22 01:36:59 +00:00
} SBalanceVgroupLeaderStmt;
2022-06-07 03:53:32 +00:00
typedef struct SMergeVgroupStmt {
ENodeType type;
int32_t vgId1;
int32_t vgId2;
} SMergeVgroupStmt;
typedef struct SRedistributeVgroupStmt {
ENodeType type;
int32_t vgId;
int32_t dnodeId1;
int32_t dnodeId2;
int32_t dnodeId3;
SNodeList* pDnodes;
} SRedistributeVgroupStmt;
typedef struct SSplitVgroupStmt {
ENodeType type;
int32_t vgId;
} SSplitVgroupStmt;
#ifdef __cplusplus
}
#endif
#endif /*_TD_CMD_NODES_H_*/