TD-13675 rollup, alter db, alter table syntax definition
This commit is contained in:
parent
16e5fd226e
commit
4e0b56324a
|
@ -33,129 +33,148 @@
|
||||||
#define TK_NK_SLASH 15
|
#define TK_NK_SLASH 15
|
||||||
#define TK_NK_REM 16
|
#define TK_NK_REM 16
|
||||||
#define TK_NK_CONCAT 17
|
#define TK_NK_CONCAT 17
|
||||||
#define TK_CREATE 18
|
#define TK_ALTER 18
|
||||||
#define TK_USER 19
|
#define TK_ACCOUNT 19
|
||||||
#define TK_PASS 20
|
#define TK_NK_ID 20
|
||||||
#define TK_NK_STRING 21
|
#define TK_PASS 21
|
||||||
#define TK_ALTER 22
|
#define TK_PPS 22
|
||||||
#define TK_PRIVILEGE 23
|
#define TK_TSERIES 23
|
||||||
#define TK_DROP 24
|
#define TK_STORAGE 24
|
||||||
#define TK_SHOW 25
|
#define TK_STREAMS 25
|
||||||
#define TK_USERS 26
|
#define TK_QTIME 26
|
||||||
#define TK_DNODE 27
|
#define TK_DBS 27
|
||||||
#define TK_PORT 28
|
#define TK_USERS 28
|
||||||
#define TK_NK_INTEGER 29
|
#define TK_CONNS 29
|
||||||
#define TK_DNODES 30
|
#define TK_STATE 30
|
||||||
#define TK_NK_ID 31
|
#define TK_CREATE 31
|
||||||
#define TK_NK_IPTOKEN 32
|
#define TK_USER 32
|
||||||
#define TK_QNODE 33
|
#define TK_NK_STRING 33
|
||||||
#define TK_ON 34
|
#define TK_PRIVILEGE 34
|
||||||
#define TK_QNODES 35
|
#define TK_DROP 35
|
||||||
#define TK_DATABASE 36
|
#define TK_SHOW 36
|
||||||
#define TK_DATABASES 37
|
#define TK_DNODE 37
|
||||||
#define TK_USE 38
|
#define TK_PORT 38
|
||||||
#define TK_IF 39
|
#define TK_NK_INTEGER 39
|
||||||
#define TK_NOT 40
|
#define TK_DNODES 40
|
||||||
#define TK_EXISTS 41
|
#define TK_NK_IPTOKEN 41
|
||||||
#define TK_BLOCKS 42
|
#define TK_LOCAL 42
|
||||||
#define TK_CACHE 43
|
#define TK_QNODE 43
|
||||||
#define TK_CACHELAST 44
|
#define TK_ON 44
|
||||||
#define TK_COMP 45
|
#define TK_QNODES 45
|
||||||
#define TK_DAYS 46
|
#define TK_DATABASE 46
|
||||||
#define TK_FSYNC 47
|
#define TK_DATABASES 47
|
||||||
#define TK_MAXROWS 48
|
#define TK_USE 48
|
||||||
#define TK_MINROWS 49
|
#define TK_IF 49
|
||||||
#define TK_KEEP 50
|
#define TK_NOT 50
|
||||||
#define TK_PRECISION 51
|
#define TK_EXISTS 51
|
||||||
#define TK_QUORUM 52
|
#define TK_BLOCKS 52
|
||||||
#define TK_REPLICA 53
|
#define TK_CACHE 53
|
||||||
#define TK_TTL 54
|
#define TK_CACHELAST 54
|
||||||
#define TK_WAL 55
|
#define TK_COMP 55
|
||||||
#define TK_VGROUPS 56
|
#define TK_DAYS 56
|
||||||
#define TK_SINGLE_STABLE 57
|
#define TK_FSYNC 57
|
||||||
#define TK_STREAM_MODE 58
|
#define TK_MAXROWS 58
|
||||||
#define TK_TABLE 59
|
#define TK_MINROWS 59
|
||||||
#define TK_NK_LP 60
|
#define TK_KEEP 60
|
||||||
#define TK_NK_RP 61
|
#define TK_PRECISION 61
|
||||||
#define TK_STABLE 62
|
#define TK_QUORUM 62
|
||||||
#define TK_TABLES 63
|
#define TK_REPLICA 63
|
||||||
#define TK_STABLES 64
|
#define TK_TTL 64
|
||||||
#define TK_USING 65
|
#define TK_WAL 65
|
||||||
#define TK_TAGS 66
|
#define TK_VGROUPS 66
|
||||||
#define TK_NK_DOT 67
|
#define TK_SINGLE_STABLE 67
|
||||||
#define TK_NK_COMMA 68
|
#define TK_STREAM_MODE 68
|
||||||
#define TK_COMMENT 69
|
#define TK_RETENTIONS 69
|
||||||
#define TK_BOOL 70
|
#define TK_FILE_FACTOR 70
|
||||||
#define TK_TINYINT 71
|
#define TK_NK_FLOAT 71
|
||||||
#define TK_SMALLINT 72
|
#define TK_TABLE 72
|
||||||
#define TK_INT 73
|
#define TK_NK_LP 73
|
||||||
#define TK_INTEGER 74
|
#define TK_NK_RP 74
|
||||||
#define TK_BIGINT 75
|
#define TK_STABLE 75
|
||||||
#define TK_FLOAT 76
|
#define TK_TABLES 76
|
||||||
#define TK_DOUBLE 77
|
#define TK_STABLES 77
|
||||||
#define TK_BINARY 78
|
#define TK_ADD 78
|
||||||
#define TK_TIMESTAMP 79
|
#define TK_COLUMN 79
|
||||||
#define TK_NCHAR 80
|
#define TK_MODIFY 80
|
||||||
#define TK_UNSIGNED 81
|
#define TK_RENAME 81
|
||||||
#define TK_JSON 82
|
#define TK_TAG 82
|
||||||
#define TK_VARCHAR 83
|
#define TK_SET 83
|
||||||
#define TK_MEDIUMBLOB 84
|
#define TK_NK_EQ 84
|
||||||
#define TK_BLOB 85
|
#define TK_USING 85
|
||||||
#define TK_VARBINARY 86
|
#define TK_TAGS 86
|
||||||
#define TK_DECIMAL 87
|
#define TK_NK_DOT 87
|
||||||
#define TK_SMA 88
|
#define TK_NK_COMMA 88
|
||||||
#define TK_INDEX 89
|
#define TK_COMMENT 89
|
||||||
#define TK_FULLTEXT 90
|
#define TK_BOOL 90
|
||||||
#define TK_FUNCTION 91
|
#define TK_TINYINT 91
|
||||||
#define TK_INTERVAL 92
|
#define TK_SMALLINT 92
|
||||||
#define TK_TOPIC 93
|
#define TK_INT 93
|
||||||
#define TK_AS 94
|
#define TK_INTEGER 94
|
||||||
#define TK_MNODES 95
|
#define TK_BIGINT 95
|
||||||
#define TK_NK_FLOAT 96
|
#define TK_FLOAT 96
|
||||||
#define TK_NK_BOOL 97
|
#define TK_DOUBLE 97
|
||||||
#define TK_NK_VARIABLE 98
|
#define TK_BINARY 98
|
||||||
#define TK_BETWEEN 99
|
#define TK_TIMESTAMP 99
|
||||||
#define TK_IS 100
|
#define TK_NCHAR 100
|
||||||
#define TK_NULL 101
|
#define TK_UNSIGNED 101
|
||||||
#define TK_NK_LT 102
|
#define TK_JSON 102
|
||||||
#define TK_NK_GT 103
|
#define TK_VARCHAR 103
|
||||||
#define TK_NK_LE 104
|
#define TK_MEDIUMBLOB 104
|
||||||
#define TK_NK_GE 105
|
#define TK_BLOB 105
|
||||||
#define TK_NK_NE 106
|
#define TK_VARBINARY 106
|
||||||
#define TK_NK_EQ 107
|
#define TK_DECIMAL 107
|
||||||
#define TK_LIKE 108
|
#define TK_SMA 108
|
||||||
#define TK_MATCH 109
|
#define TK_ROLLUP 109
|
||||||
#define TK_NMATCH 110
|
#define TK_INDEX 110
|
||||||
#define TK_IN 111
|
#define TK_FULLTEXT 111
|
||||||
#define TK_FROM 112
|
#define TK_FUNCTION 112
|
||||||
#define TK_JOIN 113
|
#define TK_INTERVAL 113
|
||||||
#define TK_INNER 114
|
#define TK_TOPIC 114
|
||||||
#define TK_SELECT 115
|
#define TK_AS 115
|
||||||
#define TK_DISTINCT 116
|
#define TK_MNODES 116
|
||||||
#define TK_WHERE 117
|
#define TK_NK_BOOL 117
|
||||||
#define TK_PARTITION 118
|
#define TK_NK_VARIABLE 118
|
||||||
#define TK_BY 119
|
#define TK_BETWEEN 119
|
||||||
#define TK_SESSION 120
|
#define TK_IS 120
|
||||||
#define TK_STATE_WINDOW 121
|
#define TK_NULL 121
|
||||||
#define TK_SLIDING 122
|
#define TK_NK_LT 122
|
||||||
#define TK_FILL 123
|
#define TK_NK_GT 123
|
||||||
#define TK_VALUE 124
|
#define TK_NK_LE 124
|
||||||
#define TK_NONE 125
|
#define TK_NK_GE 125
|
||||||
#define TK_PREV 126
|
#define TK_NK_NE 126
|
||||||
#define TK_LINEAR 127
|
#define TK_LIKE 127
|
||||||
#define TK_NEXT 128
|
#define TK_MATCH 128
|
||||||
#define TK_GROUP 129
|
#define TK_NMATCH 129
|
||||||
#define TK_HAVING 130
|
#define TK_IN 130
|
||||||
#define TK_ORDER 131
|
#define TK_FROM 131
|
||||||
#define TK_SLIMIT 132
|
#define TK_JOIN 132
|
||||||
#define TK_SOFFSET 133
|
#define TK_INNER 133
|
||||||
#define TK_LIMIT 134
|
#define TK_SELECT 134
|
||||||
#define TK_OFFSET 135
|
#define TK_DISTINCT 135
|
||||||
#define TK_ASC 136
|
#define TK_WHERE 136
|
||||||
#define TK_DESC 137
|
#define TK_PARTITION 137
|
||||||
#define TK_NULLS 138
|
#define TK_BY 138
|
||||||
#define TK_FIRST 139
|
#define TK_SESSION 139
|
||||||
#define TK_LAST 140
|
#define TK_STATE_WINDOW 140
|
||||||
|
#define TK_SLIDING 141
|
||||||
|
#define TK_FILL 142
|
||||||
|
#define TK_VALUE 143
|
||||||
|
#define TK_NONE 144
|
||||||
|
#define TK_PREV 145
|
||||||
|
#define TK_LINEAR 146
|
||||||
|
#define TK_NEXT 147
|
||||||
|
#define TK_GROUP 148
|
||||||
|
#define TK_HAVING 149
|
||||||
|
#define TK_ORDER 150
|
||||||
|
#define TK_SLIMIT 151
|
||||||
|
#define TK_SOFFSET 152
|
||||||
|
#define TK_LIMIT 153
|
||||||
|
#define TK_OFFSET 154
|
||||||
|
#define TK_ASC 155
|
||||||
|
#define TK_DESC 156
|
||||||
|
#define TK_NULLS 157
|
||||||
|
#define TK_FIRST 158
|
||||||
|
#define TK_LAST 159
|
||||||
|
|
||||||
#define TK_NK_SPACE 300
|
#define TK_NK_SPACE 300
|
||||||
#define TK_NK_COMMENT 301
|
#define TK_NK_COMMENT 301
|
||||||
|
|
|
@ -127,6 +127,13 @@ typedef struct SDropSuperTableStmt {
|
||||||
bool ignoreNotExists;
|
bool ignoreNotExists;
|
||||||
} SDropSuperTableStmt;
|
} SDropSuperTableStmt;
|
||||||
|
|
||||||
|
typedef struct SAlterTableStmt {
|
||||||
|
ENodeType type;
|
||||||
|
char dbName[TSDB_DB_NAME_LEN];
|
||||||
|
char tableName[TSDB_TABLE_NAME_LEN];
|
||||||
|
// todo
|
||||||
|
} SAlterTableStmt;
|
||||||
|
|
||||||
typedef struct SCreateUserStmt {
|
typedef struct SCreateUserStmt {
|
||||||
ENodeType type;
|
ENodeType type;
|
||||||
char useName[TSDB_USER_LEN];
|
char useName[TSDB_USER_LEN];
|
||||||
|
@ -158,6 +165,13 @@ typedef struct SDropDnodeStmt {
|
||||||
int32_t port;
|
int32_t port;
|
||||||
} SDropDnodeStmt;
|
} SDropDnodeStmt;
|
||||||
|
|
||||||
|
typedef struct SAlterDnodeStmt {
|
||||||
|
ENodeType type;
|
||||||
|
int32_t dnodeId;
|
||||||
|
char config[TSDB_DNODE_CONFIG_LEN];
|
||||||
|
char value[TSDB_DNODE_VALUE_LEN];
|
||||||
|
} SAlterDnodeStmt;
|
||||||
|
|
||||||
typedef struct SShowStmt {
|
typedef struct SShowStmt {
|
||||||
ENodeType type;
|
ENodeType type;
|
||||||
char dbName[TSDB_DB_NAME_LEN];
|
char dbName[TSDB_DB_NAME_LEN];
|
||||||
|
@ -215,6 +229,12 @@ typedef struct SDropTopicStmt {
|
||||||
bool ignoreNotExists;
|
bool ignoreNotExists;
|
||||||
} SDropTopicStmt;
|
} SDropTopicStmt;
|
||||||
|
|
||||||
|
typedef struct SAlterLocalStmt {
|
||||||
|
ENodeType type;
|
||||||
|
char config[TSDB_DNODE_CONFIG_LEN];
|
||||||
|
char value[TSDB_DNODE_VALUE_LEN];
|
||||||
|
} SAlterLocalStmt;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -85,6 +85,7 @@ typedef enum ENodeType {
|
||||||
QUERY_NODE_DROP_TABLE_CLAUSE,
|
QUERY_NODE_DROP_TABLE_CLAUSE,
|
||||||
QUERY_NODE_DROP_TABLE_STMT,
|
QUERY_NODE_DROP_TABLE_STMT,
|
||||||
QUERY_NODE_DROP_SUPER_TABLE_STMT,
|
QUERY_NODE_DROP_SUPER_TABLE_STMT,
|
||||||
|
QUERY_NODE_ALTER_TABLE_STMT,
|
||||||
QUERY_NODE_SHOW_TABLES_STMT, // temp
|
QUERY_NODE_SHOW_TABLES_STMT, // temp
|
||||||
QUERY_NODE_SHOW_STABLES_STMT,
|
QUERY_NODE_SHOW_STABLES_STMT,
|
||||||
QUERY_NODE_CREATE_USER_STMT,
|
QUERY_NODE_CREATE_USER_STMT,
|
||||||
|
@ -94,6 +95,7 @@ typedef enum ENodeType {
|
||||||
QUERY_NODE_USE_DATABASE_STMT,
|
QUERY_NODE_USE_DATABASE_STMT,
|
||||||
QUERY_NODE_CREATE_DNODE_STMT,
|
QUERY_NODE_CREATE_DNODE_STMT,
|
||||||
QUERY_NODE_DROP_DNODE_STMT,
|
QUERY_NODE_DROP_DNODE_STMT,
|
||||||
|
QUERY_NODE_ALTER_DNODE_STMT,
|
||||||
QUERY_NODE_SHOW_DNODES_STMT,
|
QUERY_NODE_SHOW_DNODES_STMT,
|
||||||
QUERY_NODE_SHOW_VGROUPS_STMT,
|
QUERY_NODE_SHOW_VGROUPS_STMT,
|
||||||
QUERY_NODE_SHOW_MNODES_STMT,
|
QUERY_NODE_SHOW_MNODES_STMT,
|
||||||
|
@ -104,6 +106,7 @@ typedef enum ENodeType {
|
||||||
QUERY_NODE_DROP_QNODE_STMT,
|
QUERY_NODE_DROP_QNODE_STMT,
|
||||||
QUERY_NODE_CREATE_TOPIC_STMT,
|
QUERY_NODE_CREATE_TOPIC_STMT,
|
||||||
QUERY_NODE_DROP_TOPIC_STMT,
|
QUERY_NODE_DROP_TOPIC_STMT,
|
||||||
|
QUERY_NODE_ALTER_LOCAL_STMT,
|
||||||
|
|
||||||
// logic plan node
|
// logic plan node
|
||||||
QUERY_NODE_LOGIC_PLAN_SCAN,
|
QUERY_NODE_LOGIC_PLAN_SCAN,
|
||||||
|
|
|
@ -481,6 +481,7 @@ int32_t* taosGetErrno();
|
||||||
#define TSDB_CODE_PAR_PASSWD_EMPTY TAOS_DEF_ERROR_CODE(0, 0x2611)
|
#define TSDB_CODE_PAR_PASSWD_EMPTY TAOS_DEF_ERROR_CODE(0, 0x2611)
|
||||||
#define TSDB_CODE_PAR_INVALID_PORT TAOS_DEF_ERROR_CODE(0, 0x2612)
|
#define TSDB_CODE_PAR_INVALID_PORT TAOS_DEF_ERROR_CODE(0, 0x2612)
|
||||||
#define TSDB_CODE_PAR_INVALID_ENDPOINT TAOS_DEF_ERROR_CODE(0, 0x2613)
|
#define TSDB_CODE_PAR_INVALID_ENDPOINT TAOS_DEF_ERROR_CODE(0, 0x2613)
|
||||||
|
#define TSDB_CODE_PAR_EXPRIE_STATEMENT TAOS_DEF_ERROR_CODE(0, 0x2614)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,6 +125,8 @@ SNodeptr nodesMakeNode(ENodeType type) {
|
||||||
return makeNode(type, sizeof(SCreateDnodeStmt));
|
return makeNode(type, sizeof(SCreateDnodeStmt));
|
||||||
case QUERY_NODE_DROP_DNODE_STMT:
|
case QUERY_NODE_DROP_DNODE_STMT:
|
||||||
return makeNode(type, sizeof(SDropDnodeStmt));
|
return makeNode(type, sizeof(SDropDnodeStmt));
|
||||||
|
case QUERY_NODE_ALTER_DNODE_STMT:
|
||||||
|
return makeNode(type, sizeof(SAlterDnodeStmt));
|
||||||
case QUERY_NODE_SHOW_DNODES_STMT:
|
case QUERY_NODE_SHOW_DNODES_STMT:
|
||||||
return makeNode(type, sizeof(SShowStmt));
|
return makeNode(type, sizeof(SShowStmt));
|
||||||
case QUERY_NODE_SHOW_VGROUPS_STMT:
|
case QUERY_NODE_SHOW_VGROUPS_STMT:
|
||||||
|
|
|
@ -50,8 +50,10 @@ typedef enum EDatabaseOptionType {
|
||||||
DB_OPTION_TTL,
|
DB_OPTION_TTL,
|
||||||
DB_OPTION_WAL,
|
DB_OPTION_WAL,
|
||||||
DB_OPTION_VGROUPS,
|
DB_OPTION_VGROUPS,
|
||||||
DB_OPTION_SINGLESTABLE,
|
DB_OPTION_SINGLE_STABLE,
|
||||||
DB_OPTION_STREAMMODE,
|
DB_OPTION_STREAM_MODE,
|
||||||
|
DB_OPTION_RETENTIONS,
|
||||||
|
DB_OPTION_FILE_FACTOR,
|
||||||
|
|
||||||
DB_OPTION_MAX
|
DB_OPTION_MAX
|
||||||
} EDatabaseOptionType;
|
} EDatabaseOptionType;
|
||||||
|
@ -65,6 +67,11 @@ typedef enum ETableOptionType {
|
||||||
TABLE_OPTION_MAX
|
TABLE_OPTION_MAX
|
||||||
} ETableOptionType;
|
} ETableOptionType;
|
||||||
|
|
||||||
|
typedef struct SAlterOption {
|
||||||
|
int32_t type;
|
||||||
|
SToken val;
|
||||||
|
} SAlterOption;
|
||||||
|
|
||||||
extern SToken nil_token;
|
extern SToken nil_token;
|
||||||
|
|
||||||
void initAstCreateContext(SParseContext* pParseCxt, SAstCreateContext* pCxt);
|
void initAstCreateContext(SParseContext* pParseCxt, SAstCreateContext* pCxt);
|
||||||
|
@ -110,13 +117,16 @@ SNode* createSelectStmt(SAstCreateContext* pCxt, bool isDistinct, SNodeList* pPr
|
||||||
SNode* createSetOperator(SAstCreateContext* pCxt, ESetOperatorType type, SNode* pLeft, SNode* pRight);
|
SNode* createSetOperator(SAstCreateContext* pCxt, ESetOperatorType type, SNode* pLeft, SNode* pRight);
|
||||||
|
|
||||||
SNode* createDefaultDatabaseOptions(SAstCreateContext* pCxt);
|
SNode* createDefaultDatabaseOptions(SAstCreateContext* pCxt);
|
||||||
|
SNode* createDefaultAlterDatabaseOptions(SAstCreateContext* pCxt);
|
||||||
SNode* setDatabaseOption(SAstCreateContext* pCxt, SNode* pOptions, EDatabaseOptionType type, const SToken* pVal);
|
SNode* setDatabaseOption(SAstCreateContext* pCxt, SNode* pOptions, EDatabaseOptionType type, const SToken* pVal);
|
||||||
SNode* createCreateDatabaseStmt(SAstCreateContext* pCxt, bool ignoreExists, const SToken* pDbName, SNode* pOptions);
|
SNode* createCreateDatabaseStmt(SAstCreateContext* pCxt, bool ignoreExists, const SToken* pDbName, SNode* pOptions);
|
||||||
SNode* createDropDatabaseStmt(SAstCreateContext* pCxt, bool ignoreNotExists, const SToken* pDbName);
|
SNode* createDropDatabaseStmt(SAstCreateContext* pCxt, bool ignoreNotExists, const SToken* pDbName);
|
||||||
SNode* createAlterDatabaseStmt(SAstCreateContext* pCxt, const SToken* pDbName, SNode* pOptions);
|
SNode* createAlterDatabaseStmt(SAstCreateContext* pCxt, const SToken* pDbName, SNode* pOptions);
|
||||||
SNode* createDefaultTableOptions(SAstCreateContext* pCxt);
|
SNode* createDefaultTableOptions(SAstCreateContext* pCxt);
|
||||||
|
SNode* createDefaultAlterTableOptions(SAstCreateContext* pCxt);
|
||||||
SNode* setTableOption(SAstCreateContext* pCxt, SNode* pOptions, ETableOptionType type, const SToken* pVal);
|
SNode* setTableOption(SAstCreateContext* pCxt, SNode* pOptions, ETableOptionType type, const SToken* pVal);
|
||||||
SNode* setTableSmaOption(SAstCreateContext* pCxt, SNode* pOptions, SNodeList* pSma);
|
SNode* setTableSmaOption(SAstCreateContext* pCxt, SNode* pOptions, SNodeList* pSma);
|
||||||
|
SNode* setTableRollupOption(SAstCreateContext* pCxt, SNode* pOptions, SNodeList* pFuncs);
|
||||||
SNode* createColumnDefNode(SAstCreateContext* pCxt, const SToken* pColName, SDataType dataType, const SToken* pComment);
|
SNode* createColumnDefNode(SAstCreateContext* pCxt, const SToken* pColName, SDataType dataType, const SToken* pComment);
|
||||||
SDataType createDataType(uint8_t type);
|
SDataType createDataType(uint8_t type);
|
||||||
SDataType createVarLenDataType(uint8_t type, const SToken* pLen);
|
SDataType createVarLenDataType(uint8_t type, const SToken* pLen);
|
||||||
|
@ -126,6 +136,11 @@ SNode* createCreateMultiTableStmt(SAstCreateContext* pCxt, SNodeList* pSubTables
|
||||||
SNode* createDropTableClause(SAstCreateContext* pCxt, bool ignoreNotExists, SNode* pRealTable);
|
SNode* createDropTableClause(SAstCreateContext* pCxt, bool ignoreNotExists, SNode* pRealTable);
|
||||||
SNode* createDropTableStmt(SAstCreateContext* pCxt, SNodeList* pTables);
|
SNode* createDropTableStmt(SAstCreateContext* pCxt, SNodeList* pTables);
|
||||||
SNode* createDropSuperTableStmt(SAstCreateContext* pCxt, bool ignoreNotExists, SNode* pRealTable);
|
SNode* createDropSuperTableStmt(SAstCreateContext* pCxt, bool ignoreNotExists, SNode* pRealTable);
|
||||||
|
SNode* createAlterTableOption(SAstCreateContext* pCxt, SNode* pRealTable, SNode* pOptions);
|
||||||
|
SNode* createAlterTableAddModifyCol(SAstCreateContext* pCxt, SNode* pRealTable, int8_t alterType, const SToken* pColName, SDataType dataType);
|
||||||
|
SNode* createAlterTableDropCol(SAstCreateContext* pCxt, SNode* pRealTable, int8_t alterType, const SToken* pColName);
|
||||||
|
SNode* createAlterTableRenameCol(SAstCreateContext* pCxt, SNode* pRealTable, int8_t alterType, const SToken* pOldColName, const SToken* pNewColName);
|
||||||
|
SNode* createAlterTableSetTag(SAstCreateContext* pCxt, SNode* pRealTable, const SToken* pTagName, SNode* pVal);
|
||||||
SNode* createUseDatabaseStmt(SAstCreateContext* pCxt, const SToken* pDbName);
|
SNode* createUseDatabaseStmt(SAstCreateContext* pCxt, const SToken* pDbName);
|
||||||
SNode* createShowStmt(SAstCreateContext* pCxt, ENodeType type, const SToken* pDbName);
|
SNode* createShowStmt(SAstCreateContext* pCxt, ENodeType type, const SToken* pDbName);
|
||||||
SNode* createCreateUserStmt(SAstCreateContext* pCxt, const SToken* pUserName, const SToken* pPassword);
|
SNode* createCreateUserStmt(SAstCreateContext* pCxt, const SToken* pUserName, const SToken* pPassword);
|
||||||
|
@ -133,6 +148,7 @@ SNode* createAlterUserStmt(SAstCreateContext* pCxt, const SToken* pUserName, int
|
||||||
SNode* createDropUserStmt(SAstCreateContext* pCxt, const SToken* pUserName);
|
SNode* createDropUserStmt(SAstCreateContext* pCxt, const SToken* pUserName);
|
||||||
SNode* createCreateDnodeStmt(SAstCreateContext* pCxt, const SToken* pFqdn, const SToken* pPort);
|
SNode* createCreateDnodeStmt(SAstCreateContext* pCxt, const SToken* pFqdn, const SToken* pPort);
|
||||||
SNode* createDropDnodeStmt(SAstCreateContext* pCxt, const SToken* pDnode);
|
SNode* createDropDnodeStmt(SAstCreateContext* pCxt, const SToken* pDnode);
|
||||||
|
SNode* createAlterDnodeStmt(SAstCreateContext* pCxt, const SToken* pDnode, const SToken* pConfig, const SToken* pValue);
|
||||||
SNode* createCreateIndexStmt(SAstCreateContext* pCxt, EIndexType type, const SToken* pIndexName, const SToken* pTableName, SNodeList* pCols, SNode* pOptions);
|
SNode* createCreateIndexStmt(SAstCreateContext* pCxt, EIndexType type, const SToken* pIndexName, const SToken* pTableName, SNodeList* pCols, SNode* pOptions);
|
||||||
SNode* createIndexOption(SAstCreateContext* pCxt, SNodeList* pFuncs, SNode* pInterval, SNode* pOffset, SNode* pSliding);
|
SNode* createIndexOption(SAstCreateContext* pCxt, SNodeList* pFuncs, SNode* pInterval, SNode* pOffset, SNode* pSliding);
|
||||||
SNode* createDropIndexStmt(SAstCreateContext* pCxt, const SToken* pIndexName, const SToken* pTableName);
|
SNode* createDropIndexStmt(SAstCreateContext* pCxt, const SToken* pIndexName, const SToken* pTableName);
|
||||||
|
@ -140,6 +156,7 @@ SNode* createCreateQnodeStmt(SAstCreateContext* pCxt, const SToken* pDnodeId);
|
||||||
SNode* createDropQnodeStmt(SAstCreateContext* pCxt, const SToken* pDnodeId);
|
SNode* createDropQnodeStmt(SAstCreateContext* pCxt, const SToken* pDnodeId);
|
||||||
SNode* createCreateTopicStmt(SAstCreateContext* pCxt, bool ignoreExists, const SToken* pTopicName, SNode* pQuery, const SToken* pSubscribeDbName);
|
SNode* createCreateTopicStmt(SAstCreateContext* pCxt, bool ignoreExists, const SToken* pTopicName, SNode* pQuery, const SToken* pSubscribeDbName);
|
||||||
SNode* createDropTopicStmt(SAstCreateContext* pCxt, bool ignoreNotExists, const SToken* pTopicName);
|
SNode* createDropTopicStmt(SAstCreateContext* pCxt, bool ignoreNotExists, const SToken* pTopicName);
|
||||||
|
SNode* createAlterLocalStmt(SAstCreateContext* pCxt, const SToken* pConfig, const SToken* pValue);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,12 +22,14 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
%syntax_error {
|
%syntax_error {
|
||||||
|
if (pCxt->valid) {
|
||||||
if(TOKEN.z) {
|
if(TOKEN.z) {
|
||||||
generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_SYNTAX_ERROR, TOKEN.z);
|
generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_SYNTAX_ERROR, TOKEN.z);
|
||||||
} else {
|
} else {
|
||||||
generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INCOMPLETE_SQL);
|
generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INCOMPLETE_SQL);
|
||||||
}
|
}
|
||||||
pCxt->valid = false;
|
pCxt->valid = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
%left OR.
|
%left OR.
|
||||||
|
@ -41,6 +43,27 @@
|
||||||
%left NK_CONCAT.
|
%left NK_CONCAT.
|
||||||
//%right NK_BITNOT.
|
//%right NK_BITNOT.
|
||||||
|
|
||||||
|
/************************************************ create/alter account *****************************************/
|
||||||
|
cmd ::= ALTER ACCOUNT NK_ID account_options. { pCxt->valid = false; generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_EXPRIE_STATEMENT); }
|
||||||
|
|
||||||
|
%type account_options { int32_t }
|
||||||
|
%destructor account_options { }
|
||||||
|
account_options ::= account_option. { }
|
||||||
|
account_options ::= account_options account_option. { }
|
||||||
|
|
||||||
|
%type account_option { int32_t }
|
||||||
|
%destructor account_option { }
|
||||||
|
account_option ::= PASS literal. { }
|
||||||
|
account_option ::= PPS literal. { }
|
||||||
|
account_option ::= TSERIES literal. { }
|
||||||
|
account_option ::= STORAGE literal. { }
|
||||||
|
account_option ::= STREAMS literal. { }
|
||||||
|
account_option ::= QTIME literal. { }
|
||||||
|
account_option ::= DBS literal. { }
|
||||||
|
account_option ::= USERS literal. { }
|
||||||
|
account_option ::= CONNS literal. { }
|
||||||
|
account_option ::= STATE literal. { }
|
||||||
|
|
||||||
/************************************************ create/alter/drop/show user *****************************************/
|
/************************************************ create/alter/drop/show user *****************************************/
|
||||||
cmd ::= CREATE USER user_name(A) PASS NK_STRING(B). { pCxt->pRootNode = createCreateUserStmt(pCxt, &A, &B); }
|
cmd ::= CREATE USER user_name(A) PASS NK_STRING(B). { pCxt->pRootNode = createCreateUserStmt(pCxt, &A, &B); }
|
||||||
cmd ::= ALTER USER user_name(A) PASS NK_STRING(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_PASSWD, &B); }
|
cmd ::= ALTER USER user_name(A) PASS NK_STRING(B). { pCxt->pRootNode = createAlterUserStmt(pCxt, &A, TSDB_ALTER_USER_PASSWD, &B); }
|
||||||
|
@ -48,12 +71,16 @@ cmd ::= ALTER USER user_name(A) PRIVILEGE NK_STRING(B).
|
||||||
cmd ::= DROP USER user_name(A). { pCxt->pRootNode = createDropUserStmt(pCxt, &A); }
|
cmd ::= DROP USER user_name(A). { pCxt->pRootNode = createDropUserStmt(pCxt, &A); }
|
||||||
cmd ::= SHOW USERS. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_USERS_STMT, NULL); }
|
cmd ::= SHOW USERS. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_USERS_STMT, NULL); }
|
||||||
|
|
||||||
/************************************************ create/drop/show dnode **********************************************/
|
/************************************************ create/drop/alter/show dnode ****************************************/
|
||||||
cmd ::= CREATE DNODE dnode_endpoint(A). { pCxt->pRootNode = createCreateDnodeStmt(pCxt, &A, NULL); }
|
cmd ::= CREATE DNODE dnode_endpoint(A). { pCxt->pRootNode = createCreateDnodeStmt(pCxt, &A, NULL); }
|
||||||
cmd ::= CREATE DNODE dnode_host_name(A) PORT NK_INTEGER(B). { pCxt->pRootNode = createCreateDnodeStmt(pCxt, &A, &B); }
|
cmd ::= CREATE DNODE dnode_host_name(A) PORT NK_INTEGER(B). { pCxt->pRootNode = createCreateDnodeStmt(pCxt, &A, &B); }
|
||||||
cmd ::= DROP DNODE NK_INTEGER(A). { pCxt->pRootNode = createDropDnodeStmt(pCxt, &A); }
|
cmd ::= DROP DNODE NK_INTEGER(A). { pCxt->pRootNode = createDropDnodeStmt(pCxt, &A); }
|
||||||
cmd ::= DROP DNODE dnode_endpoint(A). { pCxt->pRootNode = createDropDnodeStmt(pCxt, &A); }
|
cmd ::= DROP DNODE dnode_endpoint(A). { pCxt->pRootNode = createDropDnodeStmt(pCxt, &A); }
|
||||||
cmd ::= SHOW DNODES. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_DNODES_STMT, NULL); }
|
cmd ::= SHOW DNODES. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_DNODES_STMT, NULL); }
|
||||||
|
cmd ::= ALTER DNODE NK_INTEGER(A) NK_STRING(B). { pCxt->pRootNode = createAlterDnodeStmt(pCxt, &A, &B, NULL); }
|
||||||
|
cmd ::= ALTER DNODE NK_INTEGER(A) NK_STRING(B) NK_STRING(C). { pCxt->pRootNode = createAlterDnodeStmt(pCxt, &A, &B, &C); }
|
||||||
|
cmd ::= ALTER ALL DNODES NK_STRING(A). { pCxt->pRootNode = createAlterDnodeStmt(pCxt, NULL, &A, NULL); }
|
||||||
|
cmd ::= ALTER ALL DNODES NK_STRING(A) NK_STRING(B). { pCxt->pRootNode = createAlterDnodeStmt(pCxt, NULL, &A, &B); }
|
||||||
|
|
||||||
%type dnode_endpoint { SToken }
|
%type dnode_endpoint { SToken }
|
||||||
%destructor dnode_endpoint { }
|
%destructor dnode_endpoint { }
|
||||||
|
@ -64,6 +91,10 @@ dnode_endpoint(A) ::= NK_STRING(B).
|
||||||
dnode_host_name(A) ::= NK_ID(B). { A = B; }
|
dnode_host_name(A) ::= NK_ID(B). { A = B; }
|
||||||
dnode_host_name(A) ::= NK_IPTOKEN(B). { A = B; }
|
dnode_host_name(A) ::= NK_IPTOKEN(B). { A = B; }
|
||||||
|
|
||||||
|
/************************************************ alter local *********************************************************/
|
||||||
|
cmd ::= ALTER LOCAL NK_STRING(A). { pCxt->pRootNode = createAlterLocalStmt(pCxt, &A, NULL); }
|
||||||
|
cmd ::= ALTER LOCAL NK_STRING(A) NK_STRING(B). { pCxt->pRootNode = createAlterLocalStmt(pCxt, &A, &B); }
|
||||||
|
|
||||||
/************************************************ create/drop qnode ***************************************************/
|
/************************************************ create/drop qnode ***************************************************/
|
||||||
cmd ::= CREATE QNODE ON DNODE NK_INTEGER(A). { pCxt->pRootNode = createCreateQnodeStmt(pCxt, &A); }
|
cmd ::= CREATE QNODE ON DNODE NK_INTEGER(A). { pCxt->pRootNode = createCreateQnodeStmt(pCxt, &A); }
|
||||||
cmd ::= DROP QNODE ON DNODE NK_INTEGER(A). { pCxt->pRootNode = createDropQnodeStmt(pCxt, &A); }
|
cmd ::= DROP QNODE ON DNODE NK_INTEGER(A). { pCxt->pRootNode = createDropQnodeStmt(pCxt, &A); }
|
||||||
|
@ -74,7 +105,7 @@ cmd ::= CREATE DATABASE not_exists_opt(A) db_name(B) db_options(C).
|
||||||
cmd ::= DROP DATABASE exists_opt(A) db_name(B). { pCxt->pRootNode = createDropDatabaseStmt(pCxt, A, &B); }
|
cmd ::= DROP DATABASE exists_opt(A) db_name(B). { pCxt->pRootNode = createDropDatabaseStmt(pCxt, A, &B); }
|
||||||
cmd ::= SHOW DATABASES. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_DATABASES_STMT, NULL); }
|
cmd ::= SHOW DATABASES. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_DATABASES_STMT, NULL); }
|
||||||
cmd ::= USE db_name(A). { pCxt->pRootNode = createUseDatabaseStmt(pCxt, &A); }
|
cmd ::= USE db_name(A). { pCxt->pRootNode = createUseDatabaseStmt(pCxt, &A); }
|
||||||
cmd ::= ALTER DATABASE db_name(A) db_options(B). { pCxt->pRootNode = createAlterDatabaseStmt(pCxt, &A, B); }
|
cmd ::= ALTER DATABASE db_name(A) alter_db_options(B). { pCxt->pRootNode = createAlterDatabaseStmt(pCxt, &A, B); }
|
||||||
|
|
||||||
%type not_exists_opt { bool }
|
%type not_exists_opt { bool }
|
||||||
%destructor not_exists_opt { }
|
%destructor not_exists_opt { }
|
||||||
|
@ -102,20 +133,55 @@ db_options(A) ::= db_options(B) REPLICA NK_INTEGER(C).
|
||||||
db_options(A) ::= db_options(B) TTL NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_TTL, &C); }
|
db_options(A) ::= db_options(B) TTL NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_TTL, &C); }
|
||||||
db_options(A) ::= db_options(B) WAL NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_WAL, &C); }
|
db_options(A) ::= db_options(B) WAL NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_WAL, &C); }
|
||||||
db_options(A) ::= db_options(B) VGROUPS NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_VGROUPS, &C); }
|
db_options(A) ::= db_options(B) VGROUPS NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_VGROUPS, &C); }
|
||||||
db_options(A) ::= db_options(B) SINGLE_STABLE NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_SINGLESTABLE, &C); }
|
db_options(A) ::= db_options(B) SINGLE_STABLE NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_SINGLE_STABLE, &C); }
|
||||||
db_options(A) ::= db_options(B) STREAM_MODE NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_STREAMMODE, &C); }
|
db_options(A) ::= db_options(B) STREAM_MODE NK_INTEGER(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_STREAM_MODE, &C); }
|
||||||
|
db_options(A) ::= db_options(B) RETENTIONS NK_STRING(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_RETENTIONS, &C); }
|
||||||
|
db_options(A) ::= db_options(B) FILE_FACTOR NK_FLOAT(C). { A = setDatabaseOption(pCxt, B, DB_OPTION_FILE_FACTOR, &C); }
|
||||||
|
|
||||||
|
alter_db_options(A) ::= alter_db_option(B). { A = createDefaultAlterDatabaseOptions(pCxt); A = setDatabaseOption(pCxt, A, B.type, &B.val); }
|
||||||
|
alter_db_options(A) ::= alter_db_options(B) alter_db_option(C). { A = setDatabaseOption(pCxt, B, C.type, &C.val); }
|
||||||
|
|
||||||
|
%type alter_db_option { SAlterOption }
|
||||||
|
%destructor alter_db_option { }
|
||||||
|
alter_db_option(A) ::= BLOCKS NK_INTEGER(B). { A.type = DB_OPTION_BLOCKS; A.val = B; }
|
||||||
|
alter_db_option(A) ::= FSYNC NK_INTEGER(B). { A.type = DB_OPTION_FSYNC; A.val = B; }
|
||||||
|
alter_db_option(A) ::= KEEP NK_INTEGER(B). { A.type = DB_OPTION_KEEP; A.val = B; }
|
||||||
|
alter_db_option(A) ::= WAL NK_INTEGER(B). { A.type = DB_OPTION_WAL; A.val = B; }
|
||||||
|
alter_db_option(A) ::= QUORUM NK_INTEGER(B). { A.type = DB_OPTION_QUORUM; A.val = B; }
|
||||||
|
alter_db_option(A) ::= CACHELAST NK_INTEGER(B). { A.type = DB_OPTION_CACHELAST; A.val = B; }
|
||||||
|
|
||||||
/************************************************ create/drop/show table/stable ***************************************/
|
/************************************************ create/drop/show table/stable ***************************************/
|
||||||
cmd ::= CREATE TABLE not_exists_opt(A) full_table_name(B)
|
cmd ::= CREATE TABLE not_exists_opt(A) full_table_name(B)
|
||||||
NK_LP column_def_list(C) NK_RP tags_def_opt(D) table_options(E). { pCxt->pRootNode = createCreateTableStmt(pCxt, A, B, C, D, E);}
|
NK_LP column_def_list(C) NK_RP tags_def_opt(D) table_options(E). { pCxt->pRootNode = createCreateTableStmt(pCxt, A, B, C, D, E); }
|
||||||
cmd ::= CREATE TABLE multi_create_clause(A). { pCxt->pRootNode = createCreateMultiTableStmt(pCxt, A);}
|
cmd ::= CREATE TABLE multi_create_clause(A). { pCxt->pRootNode = createCreateMultiTableStmt(pCxt, A); }
|
||||||
cmd ::= CREATE STABLE not_exists_opt(A) full_table_name(B)
|
cmd ::= CREATE STABLE not_exists_opt(A) full_table_name(B)
|
||||||
NK_LP column_def_list(C) NK_RP tags_def(D) table_options(E). { pCxt->pRootNode = createCreateTableStmt(pCxt, A, B, C, D, E);}
|
NK_LP column_def_list(C) NK_RP tags_def(D) table_options(E). { pCxt->pRootNode = createCreateTableStmt(pCxt, A, B, C, D, E); }
|
||||||
cmd ::= DROP TABLE multi_drop_clause(A). { pCxt->pRootNode = createDropTableStmt(pCxt, A); }
|
cmd ::= DROP TABLE multi_drop_clause(A). { pCxt->pRootNode = createDropTableStmt(pCxt, A); }
|
||||||
cmd ::= DROP STABLE exists_opt(A) full_table_name(B). { pCxt->pRootNode = createDropSuperTableStmt(pCxt, A, B); }
|
cmd ::= DROP STABLE exists_opt(A) full_table_name(B). { pCxt->pRootNode = createDropSuperTableStmt(pCxt, A, B); }
|
||||||
cmd ::= SHOW TABLES. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_TABLES_STMT, NULL); }
|
cmd ::= SHOW TABLES. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_TABLES_STMT, NULL); }
|
||||||
cmd ::= SHOW STABLES. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_STABLES_STMT, NULL); }
|
cmd ::= SHOW STABLES. { pCxt->pRootNode = createShowStmt(pCxt, QUERY_NODE_SHOW_STABLES_STMT, NULL); }
|
||||||
|
|
||||||
|
cmd ::= ALTER TABLE alter_table_clause(A). { pCxt->pRootNode = A; }
|
||||||
|
cmd ::= ALTER STABLE alter_table_clause(A). { pCxt->pRootNode = A; }
|
||||||
|
|
||||||
|
alter_table_clause(A) ::= full_table_name(B) alter_table_options(C). { A = createAlterTableOption(pCxt, B, C); }
|
||||||
|
alter_table_clause(A) ::=
|
||||||
|
full_table_name(B) ADD COLUMN column_name(C) type_name(D). { A = createAlterTableAddModifyCol(pCxt, B, TSDB_ALTER_TABLE_ADD_COLUMN, &C, D); }
|
||||||
|
alter_table_clause(A) ::= full_table_name(B) DROP COLUMN column_name(C). { A = createAlterTableDropCol(pCxt, B, TSDB_ALTER_TABLE_ADD_COLUMN, &C); }
|
||||||
|
alter_table_clause(A) ::=
|
||||||
|
full_table_name(B) MODIFY COLUMN column_name(C) type_name(D). { A = createAlterTableAddModifyCol(pCxt, B, TSDB_ALTER_TABLE_ADD_COLUMN, &C, D); }
|
||||||
|
alter_table_clause(A) ::=
|
||||||
|
full_table_name(B) RENAME COLUMN column_name(C) column_name(D). { A = createAlterTableRenameCol(pCxt, B, TSDB_ALTER_TABLE_ADD_COLUMN, &C, &D); }
|
||||||
|
alter_table_clause(A) ::=
|
||||||
|
full_table_name(B) ADD TAG column_name(C) type_name(D). { A = createAlterTableAddModifyCol(pCxt, B, TSDB_ALTER_TABLE_ADD_COLUMN, &C, D); }
|
||||||
|
alter_table_clause(A) ::= full_table_name(B) DROP TAG column_name(C). { A = createAlterTableDropCol(pCxt, B, TSDB_ALTER_TABLE_ADD_COLUMN, &C); }
|
||||||
|
alter_table_clause(A) ::=
|
||||||
|
full_table_name(B) MODIFY TAG column_name(C) type_name(D). { A = createAlterTableAddModifyCol(pCxt, B, TSDB_ALTER_TABLE_ADD_COLUMN, &C, D); }
|
||||||
|
alter_table_clause(A) ::=
|
||||||
|
full_table_name(B) RENAME TAG column_name(C) column_name(D). { A = createAlterTableRenameCol(pCxt, B, TSDB_ALTER_TABLE_ADD_COLUMN, &C, &D); }
|
||||||
|
alter_table_clause(A) ::=
|
||||||
|
full_table_name(B) SET TAG column_name(C) NK_EQ literal(D). { A = createAlterTableSetTag(pCxt, B, &C, D); }
|
||||||
|
|
||||||
%type multi_create_clause { SNodeList* }
|
%type multi_create_clause { SNodeList* }
|
||||||
%destructor multi_create_clause { nodesDestroyList($$); }
|
%destructor multi_create_clause { nodesDestroyList($$); }
|
||||||
multi_create_clause(A) ::= create_subtable_clause(B). { A = createNodeList(pCxt, B); }
|
multi_create_clause(A) ::= create_subtable_clause(B). { A = createNodeList(pCxt, B); }
|
||||||
|
@ -183,11 +249,21 @@ tags_def_opt(A) ::= tags_def(B).
|
||||||
%destructor tags_def { nodesDestroyList($$); }
|
%destructor tags_def { nodesDestroyList($$); }
|
||||||
tags_def(A) ::= TAGS NK_LP column_def_list(B) NK_RP. { A = B; }
|
tags_def(A) ::= TAGS NK_LP column_def_list(B) NK_RP. { A = B; }
|
||||||
|
|
||||||
table_options(A) ::= . { A = createDefaultTableOptions(pCxt);}
|
table_options(A) ::= . { A = createDefaultTableOptions(pCxt); }
|
||||||
table_options(A) ::= table_options(B) COMMENT NK_STRING(C). { A = setTableOption(pCxt, B, TABLE_OPTION_COMMENT, &C); }
|
table_options(A) ::= table_options(B) COMMENT NK_STRING(C). { A = setTableOption(pCxt, B, TABLE_OPTION_COMMENT, &C); }
|
||||||
table_options(A) ::= table_options(B) KEEP NK_INTEGER(C). { A = setTableOption(pCxt, B, TABLE_OPTION_KEEP, &C); }
|
table_options(A) ::= table_options(B) KEEP NK_INTEGER(C). { A = setTableOption(pCxt, B, TABLE_OPTION_KEEP, &C); }
|
||||||
table_options(A) ::= table_options(B) TTL NK_INTEGER(C). { A = setTableOption(pCxt, B, TABLE_OPTION_TTL, &C); }
|
table_options(A) ::= table_options(B) TTL NK_INTEGER(C). { A = setTableOption(pCxt, B, TABLE_OPTION_TTL, &C); }
|
||||||
table_options(A) ::= table_options(B) SMA NK_LP col_name_list(C) NK_RP. { A = setTableSmaOption(pCxt, B, C); }
|
table_options(A) ::= table_options(B) SMA NK_LP col_name_list(C) NK_RP. { A = setTableSmaOption(pCxt, B, C); }
|
||||||
|
table_options(A) ::= table_options(B) ROLLUP NK_LP func_name_list(C) NK_RP. { A = setTableRollupOption(pCxt, B, C); }
|
||||||
|
|
||||||
|
alter_table_options(A) ::= alter_table_option(B). { A = createDefaultAlterTableOptions(pCxt); A = setTableOption(pCxt, A, B.type, &B.val); }
|
||||||
|
alter_table_options(A) ::= alter_table_options(B) alter_table_option(C). { A = setTableOption(pCxt, B, C.type, &C.val); }
|
||||||
|
|
||||||
|
%type alter_table_option { SAlterOption }
|
||||||
|
%destructor alter_table_option { }
|
||||||
|
alter_table_option(A) ::= COMMENT NK_STRING(B). { A.type = TABLE_OPTION_COMMENT; A.val = B; }
|
||||||
|
alter_table_option(A) ::= KEEP NK_INTEGER(B). { A.type = TABLE_OPTION_KEEP; A.val = B; }
|
||||||
|
alter_table_option(A) ::= TTL NK_INTEGER(B). { A.type = TABLE_OPTION_TTL; A.val = B; }
|
||||||
|
|
||||||
%type col_name_list { SNodeList* }
|
%type col_name_list { SNodeList* }
|
||||||
%destructor col_name_list { nodesDestroyList($$); }
|
%destructor col_name_list { nodesDestroyList($$); }
|
||||||
|
@ -196,6 +272,13 @@ col_name_list(A) ::= col_name_list(B) NK_COMMA col_name(C).
|
||||||
|
|
||||||
col_name(A) ::= column_name(B). { A = createColumnNode(pCxt, NULL, &B); }
|
col_name(A) ::= column_name(B). { A = createColumnNode(pCxt, NULL, &B); }
|
||||||
|
|
||||||
|
%type func_name_list { SNodeList* }
|
||||||
|
%destructor func_name_list { nodesDestroyList($$); }
|
||||||
|
func_name_list(A) ::= func_name(B). { A = createNodeList(pCxt, B); }
|
||||||
|
func_name_list(A) ::= func_name_list(B) NK_COMMA col_name(C). { A = addNodeToList(pCxt, B, C); }
|
||||||
|
|
||||||
|
func_name(A) ::= function_name(B). { A = createFunctionNode(pCxt, &B, NULL); }
|
||||||
|
|
||||||
/************************************************ create index ********************************************************/
|
/************************************************ create index ********************************************************/
|
||||||
cmd ::= CREATE SMA INDEX index_name(A) ON table_name(B) index_options(C). { pCxt->pRootNode = createCreateIndexStmt(pCxt, INDEX_TYPE_SMA, &A, &B, NULL, C); }
|
cmd ::= CREATE SMA INDEX index_name(A) ON table_name(B) index_options(C). { pCxt->pRootNode = createCreateIndexStmt(pCxt, INDEX_TYPE_SMA, &A, &B, NULL, C); }
|
||||||
cmd ::= CREATE FULLTEXT INDEX
|
cmd ::= CREATE FULLTEXT INDEX
|
||||||
|
@ -546,7 +629,7 @@ query_expression_body(A) ::=
|
||||||
query_primary(A) ::= query_specification(B). { A = B; }
|
query_primary(A) ::= query_specification(B). { A = B; }
|
||||||
//query_primary(A) ::=
|
//query_primary(A) ::=
|
||||||
// NK_LP query_expression_body(B)
|
// NK_LP query_expression_body(B)
|
||||||
// order_by_clause_opt slimit_clause_opt limit_clause_opt NK_RP. { A = B;}
|
// order_by_clause_opt slimit_clause_opt limit_clause_opt NK_RP. { A = B; }
|
||||||
|
|
||||||
%type order_by_clause_opt { SNodeList* }
|
%type order_by_clause_opt { SNodeList* }
|
||||||
%destructor order_by_clause_opt { nodesDestroyList($$); }
|
%destructor order_by_clause_opt { nodesDestroyList($$); }
|
||||||
|
|
|
@ -246,6 +246,16 @@ static SDatabaseOptions* setDbStreamMode(SAstCreateContext* pCxt, SDatabaseOptio
|
||||||
return pOptions;
|
return pOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static SDatabaseOptions* setDbRetentions(SAstCreateContext* pCxt, SDatabaseOptions* pOptions, const SToken* pVal) {
|
||||||
|
// todo
|
||||||
|
return pOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
static SDatabaseOptions* setDbFileFactor(SAstCreateContext* pCxt, SDatabaseOptions* pOptions, const SToken* pVal) {
|
||||||
|
// todo
|
||||||
|
return pOptions;
|
||||||
|
}
|
||||||
|
|
||||||
static void initSetDatabaseOptionFp() {
|
static void initSetDatabaseOptionFp() {
|
||||||
setDbOptionFuncs[DB_OPTION_BLOCKS] = setDbBlocks;
|
setDbOptionFuncs[DB_OPTION_BLOCKS] = setDbBlocks;
|
||||||
setDbOptionFuncs[DB_OPTION_CACHE] = setDbCache;
|
setDbOptionFuncs[DB_OPTION_CACHE] = setDbCache;
|
||||||
|
@ -262,8 +272,10 @@ static void initSetDatabaseOptionFp() {
|
||||||
setDbOptionFuncs[DB_OPTION_TTL] = setDbTtl;
|
setDbOptionFuncs[DB_OPTION_TTL] = setDbTtl;
|
||||||
setDbOptionFuncs[DB_OPTION_WAL] = setDbWal;
|
setDbOptionFuncs[DB_OPTION_WAL] = setDbWal;
|
||||||
setDbOptionFuncs[DB_OPTION_VGROUPS] = setDbVgroups;
|
setDbOptionFuncs[DB_OPTION_VGROUPS] = setDbVgroups;
|
||||||
setDbOptionFuncs[DB_OPTION_SINGLESTABLE] = setDbSingleStable;
|
setDbOptionFuncs[DB_OPTION_SINGLE_STABLE] = setDbSingleStable;
|
||||||
setDbOptionFuncs[DB_OPTION_STREAMMODE] = setDbStreamMode;
|
setDbOptionFuncs[DB_OPTION_STREAM_MODE] = setDbStreamMode;
|
||||||
|
setDbOptionFuncs[DB_OPTION_RETENTIONS] = setDbRetentions;
|
||||||
|
setDbOptionFuncs[DB_OPTION_FILE_FACTOR] = setDbFileFactor;
|
||||||
}
|
}
|
||||||
|
|
||||||
static STableOptions* setTableKeep(SAstCreateContext* pCxt, STableOptions* pOptions, const SToken* pVal) {
|
static STableOptions* setTableKeep(SAstCreateContext* pCxt, STableOptions* pOptions, const SToken* pVal) {
|
||||||
|
@ -772,6 +784,29 @@ SNode* createDefaultDatabaseOptions(SAstCreateContext* pCxt) {
|
||||||
return (SNode*)pOptions;
|
return (SNode*)pOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SNode* createDefaultAlterDatabaseOptions(SAstCreateContext* pCxt) {
|
||||||
|
SDatabaseOptions* pOptions = nodesMakeNode(QUERY_NODE_DATABASE_OPTIONS);
|
||||||
|
CHECK_OUT_OF_MEM(pOptions);
|
||||||
|
pOptions->numOfBlocks = -1;
|
||||||
|
pOptions->cacheBlockSize = -1;
|
||||||
|
pOptions->cachelast = -1;
|
||||||
|
pOptions->compressionLevel = -1;
|
||||||
|
pOptions->daysPerFile = -1;
|
||||||
|
pOptions->fsyncPeriod = -1;
|
||||||
|
pOptions->maxRowsPerBlock = -1;
|
||||||
|
pOptions->minRowsPerBlock = -1;
|
||||||
|
pOptions->keep = -1;
|
||||||
|
pOptions->precision = -1;
|
||||||
|
pOptions->quorum = -1;
|
||||||
|
pOptions->replica = -1;
|
||||||
|
pOptions->ttl = -1;
|
||||||
|
pOptions->walLevel = -1;
|
||||||
|
pOptions->numOfVgroups = -1;
|
||||||
|
pOptions->singleStable = -1;
|
||||||
|
pOptions->streamMode = -1;
|
||||||
|
return (SNode*)pOptions;
|
||||||
|
}
|
||||||
|
|
||||||
SNode* setDatabaseOption(SAstCreateContext* pCxt, SNode* pOptions, EDatabaseOptionType type, const SToken* pVal) {
|
SNode* setDatabaseOption(SAstCreateContext* pCxt, SNode* pOptions, EDatabaseOptionType type, const SToken* pVal) {
|
||||||
return (SNode*)setDbOptionFuncs[type](pCxt, (SDatabaseOptions*)pOptions, pVal);
|
return (SNode*)setDbOptionFuncs[type](pCxt, (SDatabaseOptions*)pOptions, pVal);
|
||||||
}
|
}
|
||||||
|
@ -818,6 +853,14 @@ SNode* createDefaultTableOptions(SAstCreateContext* pCxt) {
|
||||||
return (SNode*)pOptions;
|
return (SNode*)pOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SNode* createDefaultAlterTableOptions(SAstCreateContext* pCxt) {
|
||||||
|
STableOptions* pOptions = nodesMakeNode(QUERY_NODE_TABLE_OPTIONS);
|
||||||
|
CHECK_OUT_OF_MEM(pOptions);
|
||||||
|
pOptions->keep = -1;
|
||||||
|
pOptions->ttl = -1;
|
||||||
|
return (SNode*)pOptions;
|
||||||
|
}
|
||||||
|
|
||||||
SNode* setTableOption(SAstCreateContext* pCxt, SNode* pOptions, ETableOptionType type, const SToken* pVal) {
|
SNode* setTableOption(SAstCreateContext* pCxt, SNode* pOptions, ETableOptionType type, const SToken* pVal) {
|
||||||
return (SNode*)setTableOptionFuncs[type](pCxt, (STableOptions*)pOptions, pVal);
|
return (SNode*)setTableOptionFuncs[type](pCxt, (STableOptions*)pOptions, pVal);
|
||||||
}
|
}
|
||||||
|
@ -827,6 +870,11 @@ SNode* setTableSmaOption(SAstCreateContext* pCxt, SNode* pOptions, SNodeList* pS
|
||||||
return pOptions;
|
return pOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SNode* setTableRollupOption(SAstCreateContext* pCxt, SNode* pOptions, SNodeList* pFuncs) {
|
||||||
|
// todo
|
||||||
|
return pOptions;
|
||||||
|
}
|
||||||
|
|
||||||
SNode* createColumnDefNode(SAstCreateContext* pCxt, const SToken* pColName, SDataType dataType, const SToken* pComment) {
|
SNode* createColumnDefNode(SAstCreateContext* pCxt, const SToken* pColName, SDataType dataType, const SToken* pComment) {
|
||||||
SColumnDefNode* pCol = (SColumnDefNode*)nodesMakeNode(QUERY_NODE_COLUMN_DEF);
|
SColumnDefNode* pCol = (SColumnDefNode*)nodesMakeNode(QUERY_NODE_COLUMN_DEF);
|
||||||
CHECK_OUT_OF_MEM(pCol);
|
CHECK_OUT_OF_MEM(pCol);
|
||||||
|
@ -912,6 +960,26 @@ SNode* createDropSuperTableStmt(SAstCreateContext* pCxt, bool ignoreNotExists, S
|
||||||
return (SNode*)pStmt;
|
return (SNode*)pStmt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SNode* createAlterTableOption(SAstCreateContext* pCxt, SNode* pRealTable, SNode* pOptions) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
SNode* createAlterTableAddModifyCol(SAstCreateContext* pCxt, SNode* pRealTable, int8_t alterType, const SToken* pColName, SDataType dataType) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
SNode* createAlterTableDropCol(SAstCreateContext* pCxt, SNode* pRealTable, int8_t alterType, const SToken* pColName) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
SNode* createAlterTableRenameCol(SAstCreateContext* pCxt, SNode* pRealTable, int8_t alterType, const SToken* pOldColName, const SToken* pNewColName) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
SNode* createAlterTableSetTag(SAstCreateContext* pCxt, SNode* pRealTable, const SToken* pTagName, SNode* pVal) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
SNode* createUseDatabaseStmt(SAstCreateContext* pCxt, const SToken* pDbName) {
|
SNode* createUseDatabaseStmt(SAstCreateContext* pCxt, const SToken* pDbName) {
|
||||||
SUseDatabaseStmt* pStmt = (SUseDatabaseStmt*)nodesMakeNode(QUERY_NODE_USE_DATABASE_STMT);
|
SUseDatabaseStmt* pStmt = (SUseDatabaseStmt*)nodesMakeNode(QUERY_NODE_USE_DATABASE_STMT);
|
||||||
CHECK_OUT_OF_MEM(pStmt);
|
CHECK_OUT_OF_MEM(pStmt);
|
||||||
|
@ -1009,6 +1077,17 @@ SNode* createDropDnodeStmt(SAstCreateContext* pCxt, const SToken* pDnode) {
|
||||||
return (SNode*)pStmt;
|
return (SNode*)pStmt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SNode* createAlterDnodeStmt(SAstCreateContext* pCxt, const SToken* pDnode, const SToken* pConfig, const SToken* pValue) {
|
||||||
|
SAlterDnodeStmt* pStmt = nodesMakeNode(QUERY_NODE_ALTER_DNODE_STMT);
|
||||||
|
CHECK_OUT_OF_MEM(pStmt);
|
||||||
|
pStmt->dnodeId = strtol(pDnode->z, NULL, 10);
|
||||||
|
trimString(pConfig->z, pConfig->n, pStmt->config, sizeof(pStmt->config));
|
||||||
|
if (NULL != pValue) {
|
||||||
|
trimString(pValue->z, pValue->n, pStmt->value, sizeof(pStmt->value));
|
||||||
|
}
|
||||||
|
return (SNode*)pStmt;
|
||||||
|
}
|
||||||
|
|
||||||
SNode* createCreateIndexStmt(SAstCreateContext* pCxt, EIndexType type, const SToken* pIndexName, const SToken* pTableName, SNodeList* pCols, SNode* pOptions) {
|
SNode* createCreateIndexStmt(SAstCreateContext* pCxt, EIndexType type, const SToken* pIndexName, const SToken* pTableName, SNodeList* pCols, SNode* pOptions) {
|
||||||
if (!checkIndexName(pCxt, pIndexName) || !checkTableName(pCxt, pTableName)) {
|
if (!checkIndexName(pCxt, pIndexName) || !checkTableName(pCxt, pTableName)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1077,3 +1156,13 @@ SNode* createDropTopicStmt(SAstCreateContext* pCxt, bool ignoreNotExists, const
|
||||||
pStmt->ignoreNotExists = ignoreNotExists;
|
pStmt->ignoreNotExists = ignoreNotExists;
|
||||||
return (SNode*)pStmt;
|
return (SNode*)pStmt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SNode* createAlterLocalStmt(SAstCreateContext* pCxt, const SToken* pConfig, const SToken* pValue) {
|
||||||
|
SAlterLocalStmt* pStmt = nodesMakeNode(QUERY_NODE_ALTER_LOCAL_STMT);
|
||||||
|
CHECK_OUT_OF_MEM(pStmt);
|
||||||
|
trimString(pConfig->z, pConfig->n, pStmt->config, sizeof(pStmt->config));
|
||||||
|
if (NULL != pValue) {
|
||||||
|
trimString(pValue->z, pValue->n, pStmt->value, sizeof(pStmt->value));
|
||||||
|
}
|
||||||
|
return (SNode*)pStmt;
|
||||||
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ typedef struct SKeyword {
|
||||||
|
|
||||||
// keywords in sql string
|
// keywords in sql string
|
||||||
static SKeyword keywordTable[] = {
|
static SKeyword keywordTable[] = {
|
||||||
|
{"ACCOUNT", TK_ACCOUNT},
|
||||||
{"ALL", TK_ALL},
|
{"ALL", TK_ALL},
|
||||||
{"ALTER", TK_ALTER},
|
{"ALTER", TK_ALTER},
|
||||||
{"AND", TK_AND},
|
{"AND", TK_AND},
|
||||||
|
@ -168,7 +169,6 @@ static SKeyword keywordTable[] = {
|
||||||
// {"SCORES", TK_SCORES},
|
// {"SCORES", TK_SCORES},
|
||||||
// {"GRANTS", TK_GRANTS},
|
// {"GRANTS", TK_GRANTS},
|
||||||
// {"DOT", TK_DOT},
|
// {"DOT", TK_DOT},
|
||||||
// {"ACCOUNT", TK_ACCOUNT},
|
|
||||||
// {"DESCRIBE", TK_DESCRIBE},
|
// {"DESCRIBE", TK_DESCRIBE},
|
||||||
// {"SYNCDB", TK_SYNCDB},
|
// {"SYNCDB", TK_SYNCDB},
|
||||||
// {"LOCAL", TK_LOCAL},
|
// {"LOCAL", TK_LOCAL},
|
||||||
|
|
|
@ -962,6 +962,25 @@ static int32_t translateDropSuperTable(STranslateContext* pCxt, SDropSuperTableS
|
||||||
return doTranslateDropSuperTable(pCxt, &tableName, pStmt->ignoreNotExists);
|
return doTranslateDropSuperTable(pCxt, &tableName, pStmt->ignoreNotExists);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int32_t translateAlterTable(STranslateContext* pCxt, SAlterTableStmt* pStmt) {
|
||||||
|
SMAltertbReq alterReq = {0};
|
||||||
|
|
||||||
|
pCxt->pCmdMsg = malloc(sizeof(SCmdMsgInfo));
|
||||||
|
if (NULL == pCxt->pCmdMsg) {
|
||||||
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
pCxt->pCmdMsg->epSet = pCxt->pParseCxt->mgmtEpSet;
|
||||||
|
pCxt->pCmdMsg->msgType = TDMT_MND_ALTER_STB;
|
||||||
|
pCxt->pCmdMsg->msgLen = tSerializeSMAlterStbReq(NULL, 0, &alterReq);
|
||||||
|
pCxt->pCmdMsg->pMsg = malloc(pCxt->pCmdMsg->msgLen);
|
||||||
|
if (NULL == pCxt->pCmdMsg->pMsg) {
|
||||||
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
tSerializeSMAlterStbReq(pCxt->pCmdMsg->pMsg, pCxt->pCmdMsg->msgLen, &alterReq);
|
||||||
|
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
static int32_t translateUseDatabase(STranslateContext* pCxt, SUseDatabaseStmt* pStmt) {
|
static int32_t translateUseDatabase(STranslateContext* pCxt, SUseDatabaseStmt* pStmt) {
|
||||||
SName name = {0};
|
SName name = {0};
|
||||||
tNameSetDbName(&name, pCxt->pParseCxt->acctId, pStmt->dbName, strlen(pStmt->dbName));
|
tNameSetDbName(&name, pCxt->pParseCxt->acctId, pStmt->dbName, strlen(pStmt->dbName));
|
||||||
|
@ -1099,6 +1118,28 @@ static int32_t translateDropDnode(STranslateContext* pCxt, SDropDnodeStmt* pStmt
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int32_t translateAlterDnode(STranslateContext* pCxt, SAlterDnodeStmt* pStmt) {
|
||||||
|
SMCfgDnodeReq cfgReq = {0};
|
||||||
|
cfgReq.dnodeId = pStmt->dnodeId;
|
||||||
|
strcpy(cfgReq.config, pStmt->config);
|
||||||
|
strcpy(cfgReq.value, pStmt->value);
|
||||||
|
|
||||||
|
pCxt->pCmdMsg = malloc(sizeof(SCmdMsgInfo));
|
||||||
|
if (NULL == pCxt->pCmdMsg) {
|
||||||
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
pCxt->pCmdMsg->epSet = pCxt->pParseCxt->mgmtEpSet;
|
||||||
|
pCxt->pCmdMsg->msgType = TDMT_MND_CONFIG_DNODE;
|
||||||
|
pCxt->pCmdMsg->msgLen = tSerializeSMCfgDnodeReq(NULL, 0, &cfgReq);
|
||||||
|
pCxt->pCmdMsg->pMsg = malloc(pCxt->pCmdMsg->msgLen);
|
||||||
|
if (NULL == pCxt->pCmdMsg->pMsg) {
|
||||||
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
tSerializeSMCfgDnodeReq(pCxt->pCmdMsg->pMsg, pCxt->pCmdMsg->msgLen, &cfgReq);
|
||||||
|
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
static int32_t nodeTypeToShowType(ENodeType nt) {
|
static int32_t nodeTypeToShowType(ENodeType nt) {
|
||||||
switch (nt) {
|
switch (nt) {
|
||||||
case QUERY_NODE_SHOW_DATABASES_STMT:
|
case QUERY_NODE_SHOW_DATABASES_STMT:
|
||||||
|
@ -1364,6 +1405,11 @@ static int32_t translateDropTopic(STranslateContext* pCxt, SDropTopicStmt* pStmt
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int32_t translateAlterLocal(STranslateContext* pCxt, SAlterLocalStmt* pStmt) {
|
||||||
|
// todo
|
||||||
|
return TSDB_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) {
|
static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) {
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
switch (nodeType(pNode)) {
|
switch (nodeType(pNode)) {
|
||||||
|
@ -1388,6 +1434,9 @@ static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) {
|
||||||
case QUERY_NODE_DROP_SUPER_TABLE_STMT:
|
case QUERY_NODE_DROP_SUPER_TABLE_STMT:
|
||||||
code = translateDropSuperTable(pCxt, (SDropSuperTableStmt*)pNode);
|
code = translateDropSuperTable(pCxt, (SDropSuperTableStmt*)pNode);
|
||||||
break;
|
break;
|
||||||
|
case QUERY_NODE_ALTER_TABLE_STMT:
|
||||||
|
code = translateAlterTable(pCxt, (SAlterTableStmt*)pNode);
|
||||||
|
break;
|
||||||
case QUERY_NODE_CREATE_USER_STMT:
|
case QUERY_NODE_CREATE_USER_STMT:
|
||||||
code = translateCreateUser(pCxt, (SCreateUserStmt*)pNode);
|
code = translateCreateUser(pCxt, (SCreateUserStmt*)pNode);
|
||||||
break;
|
break;
|
||||||
|
@ -1406,6 +1455,9 @@ static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) {
|
||||||
case QUERY_NODE_DROP_DNODE_STMT:
|
case QUERY_NODE_DROP_DNODE_STMT:
|
||||||
code = translateDropDnode(pCxt, (SDropDnodeStmt*)pNode);
|
code = translateDropDnode(pCxt, (SDropDnodeStmt*)pNode);
|
||||||
break;
|
break;
|
||||||
|
case QUERY_NODE_ALTER_DNODE_STMT:
|
||||||
|
code = translateAlterDnode(pCxt, (SAlterDnodeStmt*)pNode);
|
||||||
|
break;
|
||||||
case QUERY_NODE_SHOW_DATABASES_STMT:
|
case QUERY_NODE_SHOW_DATABASES_STMT:
|
||||||
case QUERY_NODE_SHOW_STABLES_STMT:
|
case QUERY_NODE_SHOW_STABLES_STMT:
|
||||||
case QUERY_NODE_SHOW_USERS_STMT:
|
case QUERY_NODE_SHOW_USERS_STMT:
|
||||||
|
@ -1436,6 +1488,9 @@ static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) {
|
||||||
case QUERY_NODE_DROP_TOPIC_STMT:
|
case QUERY_NODE_DROP_TOPIC_STMT:
|
||||||
code = translateDropTopic(pCxt, (SDropTopicStmt*)pNode);
|
code = translateDropTopic(pCxt, (SDropTopicStmt*)pNode);
|
||||||
break;
|
break;
|
||||||
|
case QUERY_NODE_ALTER_LOCAL_STMT:
|
||||||
|
code = translateAlterLocal(pCxt, (SAlterLocalStmt*)pNode);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,17 +46,19 @@ static char* getSyntaxErrFormat(int32_t errCode) {
|
||||||
case TSDB_CODE_PAR_NOT_SINGLE_GROUP:
|
case TSDB_CODE_PAR_NOT_SINGLE_GROUP:
|
||||||
return "Not a single-group group function";
|
return "Not a single-group group function";
|
||||||
case TSDB_CODE_PAR_TAGS_NOT_MATCHED:
|
case TSDB_CODE_PAR_TAGS_NOT_MATCHED:
|
||||||
return "tags number not matched";
|
return "Tags number not matched";
|
||||||
case TSDB_CODE_PAR_INVALID_TAG_NAME:
|
case TSDB_CODE_PAR_INVALID_TAG_NAME:
|
||||||
return "invalid tag name : %s";
|
return "Invalid tag name : %s";
|
||||||
case TSDB_CODE_PAR_NAME_OR_PASSWD_TOO_LONG:
|
case TSDB_CODE_PAR_NAME_OR_PASSWD_TOO_LONG:
|
||||||
return "name or password too long";
|
return "Name or password too long";
|
||||||
case TSDB_CODE_PAR_PASSWD_EMPTY:
|
case TSDB_CODE_PAR_PASSWD_EMPTY:
|
||||||
return "password can not be empty";
|
return "Password can not be empty";
|
||||||
case TSDB_CODE_PAR_INVALID_PORT:
|
case TSDB_CODE_PAR_INVALID_PORT:
|
||||||
return "port should be an integer that is less than 65535 and greater than 0";
|
return "Port should be an integer that is less than 65535 and greater than 0";
|
||||||
case TSDB_CODE_PAR_INVALID_ENDPOINT:
|
case TSDB_CODE_PAR_INVALID_ENDPOINT:
|
||||||
return "endpoint should be in the format of 'fqdn:port'";
|
return "Endpoint should be in the format of 'fqdn:port'";
|
||||||
|
case TSDB_CODE_PAR_EXPRIE_STATEMENT:
|
||||||
|
return "This statement is no longer supported";
|
||||||
case TSDB_CODE_OUT_OF_MEMORY:
|
case TSDB_CODE_OUT_OF_MEMORY:
|
||||||
return "Out of memory";
|
return "Out of memory";
|
||||||
default:
|
default:
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -302,6 +302,13 @@ TEST_F(ParserTest, createUser) {
|
||||||
ASSERT_TRUE(run());
|
ASSERT_TRUE(run());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(ParserTest, alterAccount) {
|
||||||
|
setDatabase("root", "test");
|
||||||
|
|
||||||
|
bind("alter account ac_wxy pass '123456'");
|
||||||
|
ASSERT_TRUE(run(TSDB_CODE_PAR_EXPRIE_STATEMENT));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(ParserTest, createDnode) {
|
TEST_F(ParserTest, createDnode) {
|
||||||
setDatabase("root", "test");
|
setDatabase("root", "test");
|
||||||
|
|
||||||
|
@ -312,6 +319,16 @@ TEST_F(ParserTest, createDnode) {
|
||||||
ASSERT_TRUE(run());
|
ASSERT_TRUE(run());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(ParserTest, alterDnode) {
|
||||||
|
setDatabase("root", "test");
|
||||||
|
|
||||||
|
bind("alter dnode 1 'resetLog'");
|
||||||
|
ASSERT_TRUE(run());
|
||||||
|
|
||||||
|
bind("alter dnode 1 'debugFlag' '134'");
|
||||||
|
ASSERT_TRUE(run());
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(ParserTest, createDatabase) {
|
TEST_F(ParserTest, createDatabase) {
|
||||||
setDatabase("root", "test");
|
setDatabase("root", "test");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue