未验证 提交 10527c21 编写于 作者: S Shengliang Guan 提交者: GitHub

Merge pull request #19008 from taosdata/enh/3.0_planner_optimize

enh: tsma support first/last/count functions
...@@ -182,65 +182,65 @@ ...@@ -182,65 +182,65 @@
#define TK_INDEX 164 #define TK_INDEX 164
#define TK_FUNCTION 165 #define TK_FUNCTION 165
#define TK_INTERVAL 166 #define TK_INTERVAL 166
#define TK_TOPIC 167 #define TK_COUNT 167
#define TK_WITH 168 #define TK_LAST_ROW 168
#define TK_META 169 #define TK_TOPIC 169
#define TK_CONSUMER 170 #define TK_WITH 170
#define TK_GROUP 171 #define TK_META 171
#define TK_DESC 172 #define TK_CONSUMER 172
#define TK_DESCRIBE 173 #define TK_GROUP 173
#define TK_RESET 174 #define TK_DESC 174
#define TK_QUERY 175 #define TK_DESCRIBE 175
#define TK_CACHE 176 #define TK_RESET 176
#define TK_EXPLAIN 177 #define TK_QUERY 177
#define TK_ANALYZE 178 #define TK_CACHE 178
#define TK_VERBOSE 179 #define TK_EXPLAIN 179
#define TK_NK_BOOL 180 #define TK_ANALYZE 180
#define TK_RATIO 181 #define TK_VERBOSE 181
#define TK_NK_FLOAT 182 #define TK_NK_BOOL 182
#define TK_OUTPUTTYPE 183 #define TK_RATIO 183
#define TK_AGGREGATE 184 #define TK_NK_FLOAT 184
#define TK_BUFSIZE 185 #define TK_OUTPUTTYPE 185
#define TK_STREAM 186 #define TK_AGGREGATE 186
#define TK_INTO 187 #define TK_BUFSIZE 187
#define TK_TRIGGER 188 #define TK_STREAM 188
#define TK_AT_ONCE 189 #define TK_INTO 189
#define TK_WINDOW_CLOSE 190 #define TK_TRIGGER 190
#define TK_IGNORE 191 #define TK_AT_ONCE 191
#define TK_EXPIRED 192 #define TK_WINDOW_CLOSE 192
#define TK_FILL_HISTORY 193 #define TK_IGNORE 193
#define TK_SUBTABLE 194 #define TK_EXPIRED 194
#define TK_KILL 195 #define TK_FILL_HISTORY 195
#define TK_CONNECTION 196 #define TK_SUBTABLE 196
#define TK_TRANSACTION 197 #define TK_KILL 197
#define TK_BALANCE 198 #define TK_CONNECTION 198
#define TK_VGROUP 199 #define TK_TRANSACTION 199
#define TK_MERGE 200 #define TK_BALANCE 200
#define TK_REDISTRIBUTE 201 #define TK_VGROUP 201
#define TK_SPLIT 202 #define TK_MERGE 202
#define TK_DELETE 203 #define TK_REDISTRIBUTE 203
#define TK_INSERT 204 #define TK_SPLIT 204
#define TK_NULL 205 #define TK_DELETE 205
#define TK_NK_QUESTION 206 #define TK_INSERT 206
#define TK_NK_ARROW 207 #define TK_NULL 207
#define TK_ROWTS 208 #define TK_NK_QUESTION 208
#define TK_QSTART 209 #define TK_NK_ARROW 209
#define TK_QEND 210 #define TK_ROWTS 210
#define TK_QDURATION 211 #define TK_QSTART 211
#define TK_WSTART 212 #define TK_QEND 212
#define TK_WEND 213 #define TK_QDURATION 213
#define TK_WDURATION 214 #define TK_WSTART 214
#define TK_IROWTS 215 #define TK_WEND 215
#define TK_CAST 216 #define TK_WDURATION 216
#define TK_NOW 217 #define TK_IROWTS 217
#define TK_TODAY 218 #define TK_CAST 218
#define TK_TIMEZONE 219 #define TK_NOW 219
#define TK_CLIENT_VERSION 220 #define TK_TODAY 220
#define TK_SERVER_VERSION 221 #define TK_TIMEZONE 221
#define TK_SERVER_STATUS 222 #define TK_CLIENT_VERSION 222
#define TK_CURRENT_USER 223 #define TK_SERVER_VERSION 223
#define TK_COUNT 224 #define TK_SERVER_STATUS 224
#define TK_LAST_ROW 225 #define TK_CURRENT_USER 225
#define TK_CASE 226 #define TK_CASE 226
#define TK_END 227 #define TK_END 227
#define TK_WHEN 228 #define TK_WHEN 228
......
...@@ -473,7 +473,15 @@ index_options(A) ::= FUNCTION NK_LP func_list(B) NK_RP INTERVAL ...@@ -473,7 +473,15 @@ index_options(A) ::= FUNCTION NK_LP func_list(B) NK_RP INTERVAL
func_list(A) ::= func(B). { A = createNodeList(pCxt, B); } func_list(A) ::= func(B). { A = createNodeList(pCxt, B); }
func_list(A) ::= func_list(B) NK_COMMA func(C). { A = addNodeToList(pCxt, B, C); } func_list(A) ::= func_list(B) NK_COMMA func(C). { A = addNodeToList(pCxt, B, C); }
func(A) ::= function_name(B) NK_LP expression_list(C) NK_RP. { A = createFunctionNode(pCxt, &B, C); } func(A) ::= sma_func_name(B) NK_LP expression_list(C) NK_RP. { A = createFunctionNode(pCxt, &B, C); }
%type sma_func_name { SToken }
%destructor sma_func_name { }
sma_func_name(A) ::= function_name(B). { A = B; }
sma_func_name(A) ::= COUNT(B). { A = B; }
sma_func_name(A) ::= FIRST(B). { A = B; }
sma_func_name(A) ::= LAST(B). { A = B; }
sma_func_name(A) ::= LAST_ROW(B). { A = B; }
sma_stream_opt(A) ::= . { A = createStreamOptions(pCxt); } sma_stream_opt(A) ::= . { A = createStreamOptions(pCxt); }
sma_stream_opt(A) ::= sma_stream_opt(B) WATERMARK duration_literal(C). { ((SStreamOptions*)B)->pWatermark = releaseRawExprNode(pCxt, C); A = B; } sma_stream_opt(A) ::= sma_stream_opt(B) WATERMARK duration_literal(C). { ((SStreamOptions*)B)->pWatermark = releaseRawExprNode(pCxt, C); A = B; }
......
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册