提交 aae1faad 编写于 作者: wmmhello's avatar wmmhello

feature<TD-6129> add sql.y

上级 70a6f00c
...@@ -60,158 +60,159 @@ ...@@ -60,158 +60,159 @@
#define TK_UMINUS 42 #define TK_UMINUS 42
#define TK_UPLUS 43 #define TK_UPLUS 43
#define TK_BITNOT 44 #define TK_BITNOT 44
#define TK_SHOW 45 #define TK_QUESTION 45
#define TK_DATABASES 46 #define TK_ARROW 46
#define TK_TOPICS 47 #define TK_SHOW 47
#define TK_FUNCTIONS 48 #define TK_DATABASES 48
#define TK_MNODES 49 #define TK_TOPICS 49
#define TK_DNODES 50 #define TK_FUNCTIONS 50
#define TK_ACCOUNTS 51 #define TK_MNODES 51
#define TK_USERS 52 #define TK_DNODES 52
#define TK_MODULES 53 #define TK_ACCOUNTS 53
#define TK_QUERIES 54 #define TK_USERS 54
#define TK_CONNECTIONS 55 #define TK_MODULES 55
#define TK_STREAMS 56 #define TK_QUERIES 56
#define TK_VARIABLES 57 #define TK_CONNECTIONS 57
#define TK_SCORES 58 #define TK_STREAMS 58
#define TK_GRANTS 59 #define TK_VARIABLES 59
#define TK_VNODES 60 #define TK_SCORES 60
#define TK_DOT 61 #define TK_GRANTS 61
#define TK_CREATE 62 #define TK_VNODES 62
#define TK_TABLE 63 #define TK_DOT 63
#define TK_STABLE 64 #define TK_CREATE 64
#define TK_DATABASE 65 #define TK_TABLE 65
#define TK_TABLES 66 #define TK_STABLE 66
#define TK_STABLES 67 #define TK_DATABASE 67
#define TK_VGROUPS 68 #define TK_TABLES 68
#define TK_DROP 69 #define TK_STABLES 69
#define TK_TOPIC 70 #define TK_VGROUPS 70
#define TK_FUNCTION 71 #define TK_DROP 71
#define TK_DNODE 72 #define TK_TOPIC 72
#define TK_USER 73 #define TK_FUNCTION 73
#define TK_ACCOUNT 74 #define TK_DNODE 74
#define TK_USE 75 #define TK_USER 75
#define TK_DESCRIBE 76 #define TK_ACCOUNT 76
#define TK_DESC 77 #define TK_USE 77
#define TK_ALTER 78 #define TK_DESCRIBE 78
#define TK_PASS 79 #define TK_DESC 79
#define TK_PRIVILEGE 80 #define TK_ALTER 80
#define TK_LOCAL 81 #define TK_PASS 81
#define TK_COMPACT 82 #define TK_PRIVILEGE 82
#define TK_LP 83 #define TK_LOCAL 83
#define TK_RP 84 #define TK_COMPACT 84
#define TK_IF 85 #define TK_LP 85
#define TK_EXISTS 86 #define TK_RP 86
#define TK_AS 87 #define TK_IF 87
#define TK_OUTPUTTYPE 88 #define TK_EXISTS 88
#define TK_AGGREGATE 89 #define TK_AS 89
#define TK_BUFSIZE 90 #define TK_OUTPUTTYPE 90
#define TK_PPS 91 #define TK_AGGREGATE 91
#define TK_TSERIES 92 #define TK_BUFSIZE 92
#define TK_DBS 93 #define TK_PPS 93
#define TK_STORAGE 94 #define TK_TSERIES 94
#define TK_QTIME 95 #define TK_DBS 95
#define TK_CONNS 96 #define TK_STORAGE 96
#define TK_STATE 97 #define TK_QTIME 97
#define TK_COMMA 98 #define TK_CONNS 98
#define TK_KEEP 99 #define TK_STATE 99
#define TK_CACHE 100 #define TK_COMMA 100
#define TK_REPLICA 101 #define TK_KEEP 101
#define TK_QUORUM 102 #define TK_CACHE 102
#define TK_DAYS 103 #define TK_REPLICA 103
#define TK_MINROWS 104 #define TK_QUORUM 104
#define TK_MAXROWS 105 #define TK_DAYS 105
#define TK_BLOCKS 106 #define TK_MINROWS 106
#define TK_CTIME 107 #define TK_MAXROWS 107
#define TK_WAL 108 #define TK_BLOCKS 108
#define TK_FSYNC 109 #define TK_CTIME 109
#define TK_COMP 110 #define TK_WAL 110
#define TK_PRECISION 111 #define TK_FSYNC 111
#define TK_UPDATE 112 #define TK_COMP 112
#define TK_CACHELAST 113 #define TK_PRECISION 113
#define TK_PARTITIONS 114 #define TK_UPDATE 114
#define TK_UNSIGNED 115 #define TK_CACHELAST 115
#define TK_TAGS 116 #define TK_PARTITIONS 116
#define TK_USING 117 #define TK_UNSIGNED 117
#define TK_NULL 118 #define TK_TAGS 118
#define TK_NOW 119 #define TK_USING 119
#define TK_SELECT 120 #define TK_NULL 120
#define TK_UNION 121 #define TK_NOW 121
#define TK_ALL 122 #define TK_SELECT 122
#define TK_DISTINCT 123 #define TK_UNION 123
#define TK_FROM 124 #define TK_ALL 124
#define TK_VARIABLE 125 #define TK_DISTINCT 125
#define TK_INTERVAL 126 #define TK_FROM 126
#define TK_EVERY 127 #define TK_VARIABLE 127
#define TK_SESSION 128 #define TK_INTERVAL 128
#define TK_STATE_WINDOW 129 #define TK_EVERY 129
#define TK_FILL 130 #define TK_SESSION 130
#define TK_SLIDING 131 #define TK_STATE_WINDOW 131
#define TK_ORDER 132 #define TK_FILL 132
#define TK_BY 133 #define TK_SLIDING 133
#define TK_ASC 134 #define TK_ORDER 134
#define TK_GROUP 135 #define TK_BY 135
#define TK_HAVING 136 #define TK_ASC 136
#define TK_LIMIT 137 #define TK_GROUP 137
#define TK_OFFSET 138 #define TK_HAVING 138
#define TK_SLIMIT 139 #define TK_LIMIT 139
#define TK_SOFFSET 140 #define TK_OFFSET 140
#define TK_WHERE 141 #define TK_SLIMIT 141
#define TK_RESET 142 #define TK_SOFFSET 142
#define TK_QUERY 143 #define TK_WHERE 143
#define TK_SYNCDB 144 #define TK_RESET 144
#define TK_ADD 145 #define TK_QUERY 145
#define TK_COLUMN 146 #define TK_SYNCDB 146
#define TK_MODIFY 147 #define TK_ADD 147
#define TK_TAG 148 #define TK_COLUMN 148
#define TK_CHANGE 149 #define TK_MODIFY 149
#define TK_SET 150 #define TK_TAG 150
#define TK_KILL 151 #define TK_CHANGE 151
#define TK_CONNECTION 152 #define TK_SET 152
#define TK_STREAM 153 #define TK_KILL 153
#define TK_COLON 154 #define TK_CONNECTION 154
#define TK_ABORT 155 #define TK_STREAM 155
#define TK_AFTER 156 #define TK_COLON 156
#define TK_ATTACH 157 #define TK_ABORT 157
#define TK_BEFORE 158 #define TK_AFTER 158
#define TK_BEGIN 159 #define TK_ATTACH 159
#define TK_CASCADE 160 #define TK_BEFORE 160
#define TK_CLUSTER 161 #define TK_BEGIN 161
#define TK_CONFLICT 162 #define TK_CASCADE 162
#define TK_COPY 163 #define TK_CLUSTER 163
#define TK_DEFERRED 164 #define TK_CONFLICT 164
#define TK_DELIMITERS 165 #define TK_COPY 165
#define TK_DETACH 166 #define TK_DEFERRED 166
#define TK_EACH 167 #define TK_DELIMITERS 167
#define TK_END 168 #define TK_DETACH 168
#define TK_EXPLAIN 169 #define TK_EACH 169
#define TK_FAIL 170 #define TK_END 170
#define TK_FOR 171 #define TK_EXPLAIN 171
#define TK_IGNORE 172 #define TK_FAIL 172
#define TK_IMMEDIATE 173 #define TK_FOR 173
#define TK_INITIALLY 174 #define TK_IGNORE 174
#define TK_INSTEAD 175 #define TK_IMMEDIATE 175
#define TK_KEY 176 #define TK_INITIALLY 176
#define TK_OF 177 #define TK_INSTEAD 177
#define TK_RAISE 178 #define TK_KEY 178
#define TK_REPLACE 179 #define TK_OF 179
#define TK_RESTRICT 180 #define TK_RAISE 180
#define TK_ROW 181 #define TK_REPLACE 181
#define TK_STATEMENT 182 #define TK_RESTRICT 182
#define TK_TRIGGER 183 #define TK_ROW 183
#define TK_VIEW 184 #define TK_STATEMENT 184
#define TK_IPTOKEN 185 #define TK_TRIGGER 185
#define TK_SEMI 186 #define TK_VIEW 186
#define TK_NONE 187 #define TK_IPTOKEN 187
#define TK_PREV 188 #define TK_SEMI 188
#define TK_LINEAR 189 #define TK_NONE 189
#define TK_IMPORT 190 #define TK_PREV 190
#define TK_TBNAME 191 #define TK_LINEAR 191
#define TK_JOIN 192 #define TK_IMPORT 192
#define TK_INSERT 193 #define TK_TBNAME 193
#define TK_INTO 194 #define TK_JOIN 194
#define TK_VALUES 195 #define TK_INSERT 195
#define TK_INTO 196
#define TK_VALUES 197
#define TK_SPACE 300 #define TK_SPACE 300
#define TK_COMMENT 301 #define TK_COMMENT 301
...@@ -220,7 +221,6 @@ ...@@ -220,7 +221,6 @@
#define TK_OCT 304 // oct number #define TK_OCT 304 // oct number
#define TK_BIN 305 // bin format data 0b111 #define TK_BIN 305 // bin format data 0b111
#define TK_FILE 306 #define TK_FILE 306
#define TK_QUESTION 307 // denoting the placeholder of "?",when invoking statement bind query
#endif #endif
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
%left STAR SLASH REM. %left STAR SLASH REM.
%left CONCAT. %left CONCAT.
%right UMINUS UPLUS BITNOT. %right UMINUS UPLUS BITNOT.
%right QUESTION ARROW.
%include { %include {
#include <stdio.h> #include <stdio.h>
...@@ -754,6 +755,12 @@ expr(A) ::= expr(X) LIKE expr(Y). {A = tSqlExprCreate(X, Y, TK_LIKE); } ...@@ -754,6 +755,12 @@ expr(A) ::= expr(X) LIKE expr(Y). {A = tSqlExprCreate(X, Y, TK_LIKE); }
// match expression // match expression
expr(A) ::= expr(X) MATCH expr(Y). {A = tSqlExprCreate(X, Y, TK_MATCH); } expr(A) ::= expr(X) MATCH expr(Y). {A = tSqlExprCreate(X, Y, TK_MATCH); }
// question expression
expr(A) ::= expr(X) QUESTION expr(Y). {A = tSqlExprCreate(X, Y, TK_QUESTION); }
// arrow expression
expr(A) ::= expr(X) ARROW expr(Y). {A = tSqlExprCreate(X, Y, TK_ARROW); }
//in expression //in expression
expr(A) ::= expr(X) IN LP exprlist(Y) RP. {A = tSqlExprCreate(X, (tSqlExpr*)Y, TK_IN); } expr(A) ::= expr(X) IN LP exprlist(Y) RP. {A = tSqlExprCreate(X, (tSqlExpr*)Y, TK_IN); }
......
...@@ -53,7 +53,6 @@ SSqlInfo qSqlParse(const char *pStr) { ...@@ -53,7 +53,6 @@ SSqlInfo qSqlParse(const char *pStr) {
goto abort_parse; goto abort_parse;
} }
case TK_QUESTION:
case TK_ILLEGAL: { case TK_ILLEGAL: {
snprintf(sqlInfo.msg, tListLen(sqlInfo.msg), "unrecognized token: \"%s\"", t0.z); snprintf(sqlInfo.msg, tListLen(sqlInfo.msg), "unrecognized token: \"%s\"", t0.z);
sqlInfo.valid = false; sqlInfo.valid = false;
......
此差异已折叠。
...@@ -309,6 +309,12 @@ uint32_t tGetToken(char* z, uint32_t* tokenId) { ...@@ -309,6 +309,12 @@ uint32_t tGetToken(char* z, uint32_t* tokenId) {
*tokenId = TK_COMMENT; *tokenId = TK_COMMENT;
return i; return i;
} }
if (z[1] == '>') {
for (i = 2; z[i] && z[i] != '\n'; i++) {
}
*tokenId = TK_ARROW;
return i;
}
*tokenId = TK_MINUS; *tokenId = TK_MINUS;
return 1; return 1;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册