Merge branch 'feat/primary-key' of https://github.com/taosdata/TDengine into feat/TS-4243-3.0
This commit is contained in:
commit
cd4c188a8a
|
@ -580,6 +580,7 @@ void tFreeSSubmitRsp(SSubmitRsp* pRsp);
|
||||||
|
|
||||||
#define COL_SMA_ON ((int8_t)0x1)
|
#define COL_SMA_ON ((int8_t)0x1)
|
||||||
#define COL_IDX_ON ((int8_t)0x2)
|
#define COL_IDX_ON ((int8_t)0x2)
|
||||||
|
#define COL_IS_KEY ((int8_t)0x4)
|
||||||
#define COL_SET_NULL ((int8_t)0x10)
|
#define COL_SET_NULL ((int8_t)0x10)
|
||||||
#define COL_SET_VAL ((int8_t)0x20)
|
#define COL_SET_VAL ((int8_t)0x20)
|
||||||
#define COL_IS_SYSINFO ((int8_t)0x40)
|
#define COL_IS_SYSINFO ((int8_t)0x40)
|
||||||
|
|
|
@ -133,236 +133,238 @@
|
||||||
#define TK_NK_EQ 114
|
#define TK_NK_EQ 114
|
||||||
#define TK_USING 115
|
#define TK_USING 115
|
||||||
#define TK_TAGS 116
|
#define TK_TAGS 116
|
||||||
#define TK_BOOL 117
|
#define TK_PRIMARY 117
|
||||||
#define TK_TINYINT 118
|
#define TK_KEY 118
|
||||||
#define TK_SMALLINT 119
|
#define TK_BOOL 119
|
||||||
#define TK_INT 120
|
#define TK_TINYINT 120
|
||||||
#define TK_INTEGER 121
|
#define TK_SMALLINT 121
|
||||||
#define TK_BIGINT 122
|
#define TK_INT 122
|
||||||
#define TK_FLOAT 123
|
#define TK_INTEGER 123
|
||||||
#define TK_DOUBLE 124
|
#define TK_BIGINT 124
|
||||||
#define TK_BINARY 125
|
#define TK_FLOAT 125
|
||||||
#define TK_NCHAR 126
|
#define TK_DOUBLE 126
|
||||||
#define TK_UNSIGNED 127
|
#define TK_BINARY 127
|
||||||
#define TK_JSON 128
|
#define TK_NCHAR 128
|
||||||
#define TK_VARCHAR 129
|
#define TK_UNSIGNED 129
|
||||||
#define TK_MEDIUMBLOB 130
|
#define TK_JSON 130
|
||||||
#define TK_BLOB 131
|
#define TK_VARCHAR 131
|
||||||
#define TK_VARBINARY 132
|
#define TK_MEDIUMBLOB 132
|
||||||
#define TK_GEOMETRY 133
|
#define TK_BLOB 133
|
||||||
#define TK_DECIMAL 134
|
#define TK_VARBINARY 134
|
||||||
#define TK_COMMENT 135
|
#define TK_GEOMETRY 135
|
||||||
#define TK_MAX_DELAY 136
|
#define TK_DECIMAL 136
|
||||||
#define TK_WATERMARK 137
|
#define TK_COMMENT 137
|
||||||
#define TK_ROLLUP 138
|
#define TK_MAX_DELAY 138
|
||||||
#define TK_TTL 139
|
#define TK_WATERMARK 139
|
||||||
#define TK_SMA 140
|
#define TK_ROLLUP 140
|
||||||
#define TK_DELETE_MARK 141
|
#define TK_TTL 141
|
||||||
#define TK_FIRST 142
|
#define TK_SMA 142
|
||||||
#define TK_LAST 143
|
#define TK_DELETE_MARK 143
|
||||||
#define TK_SHOW 144
|
#define TK_FIRST 144
|
||||||
#define TK_PRIVILEGES 145
|
#define TK_LAST 145
|
||||||
#define TK_DATABASES 146
|
#define TK_SHOW 146
|
||||||
#define TK_TABLES 147
|
#define TK_PRIVILEGES 147
|
||||||
#define TK_STABLES 148
|
#define TK_DATABASES 148
|
||||||
#define TK_MNODES 149
|
#define TK_TABLES 149
|
||||||
#define TK_QNODES 150
|
#define TK_STABLES 150
|
||||||
#define TK_FUNCTIONS 151
|
#define TK_MNODES 151
|
||||||
#define TK_INDEXES 152
|
#define TK_QNODES 152
|
||||||
#define TK_ACCOUNTS 153
|
#define TK_FUNCTIONS 153
|
||||||
#define TK_APPS 154
|
#define TK_INDEXES 154
|
||||||
#define TK_CONNECTIONS 155
|
#define TK_ACCOUNTS 155
|
||||||
#define TK_LICENCES 156
|
#define TK_APPS 156
|
||||||
#define TK_GRANTS 157
|
#define TK_CONNECTIONS 157
|
||||||
#define TK_QUERIES 158
|
#define TK_LICENCES 158
|
||||||
#define TK_SCORES 159
|
#define TK_GRANTS 159
|
||||||
#define TK_TOPICS 160
|
#define TK_QUERIES 160
|
||||||
#define TK_VARIABLES 161
|
#define TK_SCORES 161
|
||||||
#define TK_CLUSTER 162
|
#define TK_TOPICS 162
|
||||||
#define TK_BNODES 163
|
#define TK_VARIABLES 163
|
||||||
#define TK_SNODES 164
|
#define TK_CLUSTER 164
|
||||||
#define TK_TRANSACTIONS 165
|
#define TK_BNODES 165
|
||||||
#define TK_DISTRIBUTED 166
|
#define TK_SNODES 166
|
||||||
#define TK_CONSUMERS 167
|
#define TK_TRANSACTIONS 167
|
||||||
#define TK_SUBSCRIPTIONS 168
|
#define TK_DISTRIBUTED 168
|
||||||
#define TK_VNODES 169
|
#define TK_CONSUMERS 169
|
||||||
#define TK_ALIVE 170
|
#define TK_SUBSCRIPTIONS 170
|
||||||
#define TK_VIEWS 171
|
#define TK_VNODES 171
|
||||||
#define TK_VIEW 172
|
#define TK_ALIVE 172
|
||||||
#define TK_COMPACTS 173
|
#define TK_VIEWS 173
|
||||||
#define TK_NORMAL 174
|
#define TK_VIEW 174
|
||||||
#define TK_CHILD 175
|
#define TK_COMPACTS 175
|
||||||
#define TK_LIKE 176
|
#define TK_NORMAL 176
|
||||||
#define TK_TBNAME 177
|
#define TK_CHILD 177
|
||||||
#define TK_QTAGS 178
|
#define TK_LIKE 178
|
||||||
#define TK_AS 179
|
#define TK_TBNAME 179
|
||||||
#define TK_SYSTEM 180
|
#define TK_QTAGS 180
|
||||||
#define TK_INDEX 181
|
#define TK_AS 181
|
||||||
#define TK_FUNCTION 182
|
#define TK_SYSTEM 182
|
||||||
#define TK_INTERVAL 183
|
#define TK_INDEX 183
|
||||||
#define TK_COUNT 184
|
#define TK_FUNCTION 184
|
||||||
#define TK_LAST_ROW 185
|
#define TK_INTERVAL 185
|
||||||
#define TK_META 186
|
#define TK_COUNT 186
|
||||||
#define TK_ONLY 187
|
#define TK_LAST_ROW 187
|
||||||
#define TK_TOPIC 188
|
#define TK_META 188
|
||||||
#define TK_CONSUMER 189
|
#define TK_ONLY 189
|
||||||
#define TK_GROUP 190
|
#define TK_TOPIC 190
|
||||||
#define TK_DESC 191
|
#define TK_CONSUMER 191
|
||||||
#define TK_DESCRIBE 192
|
#define TK_GROUP 192
|
||||||
#define TK_RESET 193
|
#define TK_DESC 193
|
||||||
#define TK_QUERY 194
|
#define TK_DESCRIBE 194
|
||||||
#define TK_CACHE 195
|
#define TK_RESET 195
|
||||||
#define TK_EXPLAIN 196
|
#define TK_QUERY 196
|
||||||
#define TK_ANALYZE 197
|
#define TK_CACHE 197
|
||||||
#define TK_VERBOSE 198
|
#define TK_EXPLAIN 198
|
||||||
#define TK_NK_BOOL 199
|
#define TK_ANALYZE 199
|
||||||
#define TK_RATIO 200
|
#define TK_VERBOSE 200
|
||||||
#define TK_NK_FLOAT 201
|
#define TK_NK_BOOL 201
|
||||||
#define TK_OUTPUTTYPE 202
|
#define TK_RATIO 202
|
||||||
#define TK_AGGREGATE 203
|
#define TK_NK_FLOAT 203
|
||||||
#define TK_BUFSIZE 204
|
#define TK_OUTPUTTYPE 204
|
||||||
#define TK_LANGUAGE 205
|
#define TK_AGGREGATE 205
|
||||||
#define TK_REPLACE 206
|
#define TK_BUFSIZE 206
|
||||||
#define TK_STREAM 207
|
#define TK_LANGUAGE 207
|
||||||
#define TK_INTO 208
|
#define TK_REPLACE 208
|
||||||
#define TK_PAUSE 209
|
#define TK_STREAM 209
|
||||||
#define TK_RESUME 210
|
#define TK_INTO 210
|
||||||
#define TK_TRIGGER 211
|
#define TK_PAUSE 211
|
||||||
#define TK_AT_ONCE 212
|
#define TK_RESUME 212
|
||||||
#define TK_WINDOW_CLOSE 213
|
#define TK_TRIGGER 213
|
||||||
#define TK_IGNORE 214
|
#define TK_AT_ONCE 214
|
||||||
#define TK_EXPIRED 215
|
#define TK_WINDOW_CLOSE 215
|
||||||
#define TK_FILL_HISTORY 216
|
#define TK_IGNORE 216
|
||||||
#define TK_UPDATE 217
|
#define TK_EXPIRED 217
|
||||||
#define TK_SUBTABLE 218
|
#define TK_FILL_HISTORY 218
|
||||||
#define TK_UNTREATED 219
|
#define TK_UPDATE 219
|
||||||
#define TK_KILL 220
|
#define TK_SUBTABLE 220
|
||||||
#define TK_CONNECTION 221
|
#define TK_UNTREATED 221
|
||||||
#define TK_TRANSACTION 222
|
#define TK_KILL 222
|
||||||
#define TK_BALANCE 223
|
#define TK_CONNECTION 223
|
||||||
#define TK_VGROUP 224
|
#define TK_TRANSACTION 224
|
||||||
#define TK_LEADER 225
|
#define TK_BALANCE 225
|
||||||
#define TK_MERGE 226
|
#define TK_VGROUP 226
|
||||||
#define TK_REDISTRIBUTE 227
|
#define TK_LEADER 227
|
||||||
#define TK_SPLIT 228
|
#define TK_MERGE 228
|
||||||
#define TK_DELETE 229
|
#define TK_REDISTRIBUTE 229
|
||||||
#define TK_INSERT 230
|
#define TK_SPLIT 230
|
||||||
#define TK_NULL 231
|
#define TK_DELETE 231
|
||||||
#define TK_NK_QUESTION 232
|
#define TK_INSERT 232
|
||||||
#define TK_NK_ALIAS 233
|
#define TK_NULL 233
|
||||||
#define TK_NK_ARROW 234
|
#define TK_NK_QUESTION 234
|
||||||
#define TK_ROWTS 235
|
#define TK_NK_ALIAS 235
|
||||||
#define TK_QSTART 236
|
#define TK_NK_ARROW 236
|
||||||
#define TK_QEND 237
|
#define TK_ROWTS 237
|
||||||
#define TK_QDURATION 238
|
#define TK_QSTART 238
|
||||||
#define TK_WSTART 239
|
#define TK_QEND 239
|
||||||
#define TK_WEND 240
|
#define TK_QDURATION 240
|
||||||
#define TK_WDURATION 241
|
#define TK_WSTART 241
|
||||||
#define TK_IROWTS 242
|
#define TK_WEND 242
|
||||||
#define TK_ISFILLED 243
|
#define TK_WDURATION 243
|
||||||
#define TK_CAST 244
|
#define TK_IROWTS 244
|
||||||
#define TK_NOW 245
|
#define TK_ISFILLED 245
|
||||||
#define TK_TODAY 246
|
#define TK_CAST 246
|
||||||
#define TK_TIMEZONE 247
|
#define TK_NOW 247
|
||||||
#define TK_CLIENT_VERSION 248
|
#define TK_TODAY 248
|
||||||
#define TK_SERVER_VERSION 249
|
#define TK_TIMEZONE 249
|
||||||
#define TK_SERVER_STATUS 250
|
#define TK_CLIENT_VERSION 250
|
||||||
#define TK_CURRENT_USER 251
|
#define TK_SERVER_VERSION 251
|
||||||
#define TK_CASE 252
|
#define TK_SERVER_STATUS 252
|
||||||
#define TK_WHEN 253
|
#define TK_CURRENT_USER 253
|
||||||
#define TK_THEN 254
|
#define TK_CASE 254
|
||||||
#define TK_ELSE 255
|
#define TK_WHEN 255
|
||||||
#define TK_BETWEEN 256
|
#define TK_THEN 256
|
||||||
#define TK_IS 257
|
#define TK_ELSE 257
|
||||||
#define TK_NK_LT 258
|
#define TK_BETWEEN 258
|
||||||
#define TK_NK_GT 259
|
#define TK_IS 259
|
||||||
#define TK_NK_LE 260
|
#define TK_NK_LT 260
|
||||||
#define TK_NK_GE 261
|
#define TK_NK_GT 261
|
||||||
#define TK_NK_NE 262
|
#define TK_NK_LE 262
|
||||||
#define TK_MATCH 263
|
#define TK_NK_GE 263
|
||||||
#define TK_NMATCH 264
|
#define TK_NK_NE 264
|
||||||
#define TK_CONTAINS 265
|
#define TK_MATCH 265
|
||||||
#define TK_IN 266
|
#define TK_NMATCH 266
|
||||||
#define TK_JOIN 267
|
#define TK_CONTAINS 267
|
||||||
#define TK_INNER 268
|
#define TK_IN 268
|
||||||
#define TK_SELECT 269
|
#define TK_JOIN 269
|
||||||
#define TK_NK_HINT 270
|
#define TK_INNER 270
|
||||||
#define TK_DISTINCT 271
|
#define TK_SELECT 271
|
||||||
#define TK_WHERE 272
|
#define TK_NK_HINT 272
|
||||||
#define TK_PARTITION 273
|
#define TK_DISTINCT 273
|
||||||
#define TK_BY 274
|
#define TK_WHERE 274
|
||||||
#define TK_SESSION 275
|
#define TK_PARTITION 275
|
||||||
#define TK_STATE_WINDOW 276
|
#define TK_BY 276
|
||||||
#define TK_EVENT_WINDOW 277
|
#define TK_SESSION 277
|
||||||
#define TK_SLIDING 278
|
#define TK_STATE_WINDOW 278
|
||||||
#define TK_FILL 279
|
#define TK_EVENT_WINDOW 279
|
||||||
#define TK_VALUE 280
|
#define TK_SLIDING 280
|
||||||
#define TK_VALUE_F 281
|
#define TK_FILL 281
|
||||||
#define TK_NONE 282
|
#define TK_VALUE 282
|
||||||
#define TK_PREV 283
|
#define TK_VALUE_F 283
|
||||||
#define TK_NULL_F 284
|
#define TK_NONE 284
|
||||||
#define TK_LINEAR 285
|
#define TK_PREV 285
|
||||||
#define TK_NEXT 286
|
#define TK_NULL_F 286
|
||||||
#define TK_HAVING 287
|
#define TK_LINEAR 287
|
||||||
#define TK_RANGE 288
|
#define TK_NEXT 288
|
||||||
#define TK_EVERY 289
|
#define TK_HAVING 289
|
||||||
#define TK_ORDER 290
|
#define TK_RANGE 290
|
||||||
#define TK_SLIMIT 291
|
#define TK_EVERY 291
|
||||||
#define TK_SOFFSET 292
|
#define TK_ORDER 292
|
||||||
#define TK_LIMIT 293
|
#define TK_SLIMIT 293
|
||||||
#define TK_OFFSET 294
|
#define TK_SOFFSET 294
|
||||||
#define TK_ASC 295
|
#define TK_LIMIT 295
|
||||||
#define TK_NULLS 296
|
#define TK_OFFSET 296
|
||||||
#define TK_ABORT 297
|
#define TK_ASC 297
|
||||||
#define TK_AFTER 298
|
#define TK_NULLS 298
|
||||||
#define TK_ATTACH 299
|
#define TK_ABORT 299
|
||||||
#define TK_BEFORE 300
|
#define TK_AFTER 300
|
||||||
#define TK_BEGIN 301
|
#define TK_ATTACH 301
|
||||||
#define TK_BITAND 302
|
#define TK_BEFORE 302
|
||||||
#define TK_BITNOT 303
|
#define TK_BEGIN 303
|
||||||
#define TK_BITOR 304
|
#define TK_BITAND 304
|
||||||
#define TK_BLOCKS 305
|
#define TK_BITNOT 305
|
||||||
#define TK_CHANGE 306
|
#define TK_BITOR 306
|
||||||
#define TK_COMMA 307
|
#define TK_BLOCKS 307
|
||||||
#define TK_CONCAT 308
|
#define TK_CHANGE 308
|
||||||
#define TK_CONFLICT 309
|
#define TK_COMMA 309
|
||||||
#define TK_COPY 310
|
#define TK_CONCAT 310
|
||||||
#define TK_DEFERRED 311
|
#define TK_CONFLICT 311
|
||||||
#define TK_DELIMITERS 312
|
#define TK_COPY 312
|
||||||
#define TK_DETACH 313
|
#define TK_DEFERRED 313
|
||||||
#define TK_DIVIDE 314
|
#define TK_DELIMITERS 314
|
||||||
#define TK_DOT 315
|
#define TK_DETACH 315
|
||||||
#define TK_EACH 316
|
#define TK_DIVIDE 316
|
||||||
#define TK_FAIL 317
|
#define TK_DOT 317
|
||||||
#define TK_FILE 318
|
#define TK_EACH 318
|
||||||
#define TK_FOR 319
|
#define TK_FAIL 319
|
||||||
#define TK_GLOB 320
|
#define TK_FILE 320
|
||||||
#define TK_ID 321
|
#define TK_FOR 321
|
||||||
#define TK_IMMEDIATE 322
|
#define TK_GLOB 322
|
||||||
#define TK_IMPORT 323
|
#define TK_ID 323
|
||||||
#define TK_INITIALLY 324
|
#define TK_IMMEDIATE 324
|
||||||
#define TK_INSTEAD 325
|
#define TK_IMPORT 325
|
||||||
#define TK_ISNULL 326
|
#define TK_INITIALLY 326
|
||||||
#define TK_KEY 327
|
#define TK_INSTEAD 327
|
||||||
#define TK_MODULES 328
|
#define TK_ISNULL 328
|
||||||
#define TK_NK_BITNOT 329
|
#define TK_MODULES 329
|
||||||
#define TK_NK_SEMI 330
|
#define TK_NK_BITNOT 330
|
||||||
#define TK_NOTNULL 331
|
#define TK_NK_SEMI 331
|
||||||
#define TK_OF 332
|
#define TK_NOTNULL 332
|
||||||
#define TK_PLUS 333
|
#define TK_OF 333
|
||||||
#define TK_PRIVILEGE 334
|
#define TK_PLUS 334
|
||||||
#define TK_RAISE 335
|
#define TK_PRIVILEGE 335
|
||||||
#define TK_RESTRICT 336
|
#define TK_RAISE 336
|
||||||
#define TK_ROW 337
|
#define TK_RESTRICT 337
|
||||||
#define TK_SEMI 338
|
#define TK_ROW 338
|
||||||
#define TK_STAR 339
|
#define TK_SEMI 339
|
||||||
#define TK_STATEMENT 340
|
#define TK_STAR 340
|
||||||
#define TK_STRICT 341
|
#define TK_STATEMENT 341
|
||||||
#define TK_STRING 342
|
#define TK_STRICT 342
|
||||||
#define TK_TIMES 343
|
#define TK_STRING 343
|
||||||
#define TK_VALUES 344
|
#define TK_TIMES 344
|
||||||
#define TK_VARIABLE 345
|
#define TK_VALUES 345
|
||||||
#define TK_WAL 346
|
#define TK_VARIABLE 346
|
||||||
|
#define TK_WAL 347
|
||||||
|
|
||||||
|
|
||||||
#define TK_NK_SPACE 600
|
#define TK_NK_SPACE 600
|
||||||
#define TK_NK_COMMENT 601
|
#define TK_NK_COMMENT 601
|
||||||
|
|
|
@ -168,6 +168,7 @@ typedef struct SColumnDefNode {
|
||||||
SDataType dataType;
|
SDataType dataType;
|
||||||
char comments[TSDB_TB_COMMENT_LEN];
|
char comments[TSDB_TB_COMMENT_LEN];
|
||||||
bool sma;
|
bool sma;
|
||||||
|
bool is_pk;
|
||||||
} SColumnDefNode;
|
} SColumnDefNode;
|
||||||
|
|
||||||
typedef struct SCreateTableStmt {
|
typedef struct SCreateTableStmt {
|
||||||
|
|
|
@ -747,6 +747,8 @@ int32_t* taosGetErrno();
|
||||||
#define TSDB_CODE_PAR_COL_QUERY_MISMATCH TAOS_DEF_ERROR_CODE(0, 0x266D)
|
#define TSDB_CODE_PAR_COL_QUERY_MISMATCH TAOS_DEF_ERROR_CODE(0, 0x266D)
|
||||||
#define TSDB_CODE_PAR_VIEW_CONFLICT_WITH_TABLE TAOS_DEF_ERROR_CODE(0, 0x266E)
|
#define TSDB_CODE_PAR_VIEW_CONFLICT_WITH_TABLE TAOS_DEF_ERROR_CODE(0, 0x266E)
|
||||||
#define TSDB_CODE_PAR_ORDERBY_AMBIGUOUS TAOS_DEF_ERROR_CODE(0, 0x266F)
|
#define TSDB_CODE_PAR_ORDERBY_AMBIGUOUS TAOS_DEF_ERROR_CODE(0, 0x266F)
|
||||||
|
#define TSDB_CODE_PAR_TAG_IS_PRIMARY_KEY TAOS_DEF_ERROR_CODE(0, 0x2671)
|
||||||
|
#define TSDB_CODE_PAR_SECOND_COL_PK TAOS_DEF_ERROR_CODE(0, 0x2672)
|
||||||
#define TSDB_CODE_PAR_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x26FF)
|
#define TSDB_CODE_PAR_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x26FF)
|
||||||
|
|
||||||
//planner
|
//planner
|
||||||
|
|
|
@ -4584,6 +4584,7 @@ static const char* jkColumnDefColName = "ColName";
|
||||||
static const char* jkColumnDefDataType = "DataType";
|
static const char* jkColumnDefDataType = "DataType";
|
||||||
static const char* jkColumnDefComments = "Comments";
|
static const char* jkColumnDefComments = "Comments";
|
||||||
static const char* jkColumnDefSma = "Sma";
|
static const char* jkColumnDefSma = "Sma";
|
||||||
|
static const char* jkColumnDefIsPK = "IsPK";
|
||||||
|
|
||||||
static int32_t columnDefNodeToJson(const void* pObj, SJson* pJson) {
|
static int32_t columnDefNodeToJson(const void* pObj, SJson* pJson) {
|
||||||
const SColumnDefNode* pNode = (const SColumnDefNode*)pObj;
|
const SColumnDefNode* pNode = (const SColumnDefNode*)pObj;
|
||||||
|
@ -4598,6 +4599,9 @@ static int32_t columnDefNodeToJson(const void* pObj, SJson* pJson) {
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = tjsonAddBoolToObject(pJson, jkColumnDefSma, pNode->sma);
|
code = tjsonAddBoolToObject(pJson, jkColumnDefSma, pNode->sma);
|
||||||
}
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonAddBoolToObject(pJson, jkColumnDefIsPK, pNode->is_pk);
|
||||||
|
}
|
||||||
|
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -4615,7 +4619,9 @@ static int32_t jsonToColumnDefNode(const SJson* pJson, void* pObj) {
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
code = tjsonGetBoolValue(pJson, jkColumnDefSma, &pNode->sma);
|
code = tjsonGetBoolValue(pJson, jkColumnDefSma, &pNode->sma);
|
||||||
}
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
|
code = tjsonGetBoolValue(pJson, jkColumnDefIsPK, &pNode->is_pk);
|
||||||
|
}
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -171,7 +171,7 @@ SNode* createCompactStmt(SAstCreateContext* pCxt, SToken* pDbName, SNode* pStart
|
||||||
SNode* createDefaultTableOptions(SAstCreateContext* pCxt);
|
SNode* createDefaultTableOptions(SAstCreateContext* pCxt);
|
||||||
SNode* createAlterTableOptions(SAstCreateContext* pCxt);
|
SNode* createAlterTableOptions(SAstCreateContext* pCxt);
|
||||||
SNode* setTableOption(SAstCreateContext* pCxt, SNode* pOptions, ETableOptionType type, void* pVal);
|
SNode* setTableOption(SAstCreateContext* pCxt, SNode* pOptions, ETableOptionType type, void* pVal);
|
||||||
SNode* createColumnDefNode(SAstCreateContext* pCxt, SToken* pColName, SDataType dataType, const SToken* pComment);
|
SNode* createColumnDefNode(SAstCreateContext* pCxt, SToken* pColName, SDataType dataType, const SToken* pComment, bool bPrimaryKey);
|
||||||
SNode* createCreateTableStmt(SAstCreateContext* pCxt, bool ignoreExists, SNode* pRealTable, SNodeList* pCols,
|
SNode* createCreateTableStmt(SAstCreateContext* pCxt, bool ignoreExists, SNode* pRealTable, SNodeList* pCols,
|
||||||
SNodeList* pTags, SNode* pOptions);
|
SNodeList* pTags, SNode* pOptions);
|
||||||
SNode* createCreateSubTableClause(SAstCreateContext* pCxt, bool ignoreExists, SNode* pRealTable, SNode* pUseRealTable,
|
SNode* createCreateSubTableClause(SAstCreateContext* pCxt, bool ignoreExists, SNode* pRealTable, SNode* pUseRealTable,
|
||||||
|
|
|
@ -381,7 +381,8 @@ full_table_name(A) ::= db_name(B) NK_DOT table_name(C).
|
||||||
column_def_list(A) ::= column_def(B). { A = createNodeList(pCxt, B); }
|
column_def_list(A) ::= column_def(B). { A = createNodeList(pCxt, B); }
|
||||||
column_def_list(A) ::= column_def_list(B) NK_COMMA column_def(C). { A = addNodeToList(pCxt, B, C); }
|
column_def_list(A) ::= column_def_list(B) NK_COMMA column_def(C). { A = addNodeToList(pCxt, B, C); }
|
||||||
|
|
||||||
column_def(A) ::= column_name(B) type_name(C). { A = createColumnDefNode(pCxt, &B, C, NULL); }
|
column_def(A) ::= column_name(B) type_name(C). { A = createColumnDefNode(pCxt, &B, C, NULL, false); }
|
||||||
|
column_def(A) ::= column_name(B) type_name(C) PRIMARY KEY. { A = createColumnDefNode(pCxt, &B, C, NULL, true); }
|
||||||
//column_def(A) ::= column_name(B) type_name(C) COMMENT NK_STRING(D). { A = createColumnDefNode(pCxt, &B, C, &D); }
|
//column_def(A) ::= column_name(B) type_name(C) COMMENT NK_STRING(D). { A = createColumnDefNode(pCxt, &B, C, &D); }
|
||||||
|
|
||||||
%type type_name { SDataType }
|
%type type_name { SDataType }
|
||||||
|
|
|
@ -1462,7 +1462,7 @@ SNode* setTableOption(SAstCreateContext* pCxt, SNode* pOptions, ETableOptionType
|
||||||
return pOptions;
|
return pOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
SNode* createColumnDefNode(SAstCreateContext* pCxt, SToken* pColName, SDataType dataType, const SToken* pComment) {
|
SNode* createColumnDefNode(SAstCreateContext* pCxt, SToken* pColName, SDataType dataType, const SToken* pComment, bool bPrimaryKey) {
|
||||||
CHECK_PARSER_STATUS(pCxt);
|
CHECK_PARSER_STATUS(pCxt);
|
||||||
if (!checkColumnName(pCxt, pColName) || !checkComment(pCxt, pComment, false)) {
|
if (!checkColumnName(pCxt, pColName) || !checkComment(pCxt, pComment, false)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -1479,6 +1479,7 @@ SNode* createColumnDefNode(SAstCreateContext* pCxt, SToken* pColName, SDataType
|
||||||
trimString(pComment->z, pComment->n, pCol->comments, sizeof(pCol->comments));
|
trimString(pComment->z, pComment->n, pCol->comments, sizeof(pCol->comments));
|
||||||
}
|
}
|
||||||
pCol->sma = true;
|
pCol->sma = true;
|
||||||
|
pCol->is_pk = bPrimaryKey;
|
||||||
return (SNode*)pCol;
|
return (SNode*)pCol;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -128,6 +128,7 @@ static SKeyword keywordTable[] = {
|
||||||
{"JOIN", TK_JOIN},
|
{"JOIN", TK_JOIN},
|
||||||
{"JSON", TK_JSON},
|
{"JSON", TK_JSON},
|
||||||
{"KEEP", TK_KEEP},
|
{"KEEP", TK_KEEP},
|
||||||
|
{"KEY", TK_KEY},
|
||||||
{"KILL", TK_KILL},
|
{"KILL", TK_KILL},
|
||||||
{"LANGUAGE", TK_LANGUAGE},
|
{"LANGUAGE", TK_LANGUAGE},
|
||||||
{"LAST", TK_LAST},
|
{"LAST", TK_LAST},
|
||||||
|
@ -174,6 +175,7 @@ static SKeyword keywordTable[] = {
|
||||||
{"PASS", TK_PASS},
|
{"PASS", TK_PASS},
|
||||||
{"PORT", TK_PORT},
|
{"PORT", TK_PORT},
|
||||||
{"PPS", TK_PPS},
|
{"PPS", TK_PPS},
|
||||||
|
{"PRIMARY", TK_PRIMARY},
|
||||||
{"PRECISION", TK_PRECISION},
|
{"PRECISION", TK_PRECISION},
|
||||||
{"PREV", TK_PREV},
|
{"PREV", TK_PREV},
|
||||||
{"PRIVILEGES", TK_PRIVILEGES},
|
{"PRIVILEGES", TK_PRIVILEGES},
|
||||||
|
|
|
@ -5700,6 +5700,9 @@ static int32_t columnDefNodeToField(SNodeList* pList, SArray** pArray) {
|
||||||
if (pCol->sma) {
|
if (pCol->sma) {
|
||||||
field.flags |= COL_SMA_ON;
|
field.flags |= COL_SMA_ON;
|
||||||
}
|
}
|
||||||
|
if (pCol->is_pk) {
|
||||||
|
field.flags != COL_IS_KEY;
|
||||||
|
}
|
||||||
taosArrayPush(*pArray, &field);
|
taosArrayPush(*pArray, &field);
|
||||||
}
|
}
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
@ -5799,6 +5802,9 @@ static int32_t checkTableTagsSchema(STranslateContext* pCxt, SHashObj* pHash, SN
|
||||||
if (NULL != taosHashGet(pHash, pTag->colName, len)) {
|
if (NULL != taosHashGet(pHash, pTag->colName, len)) {
|
||||||
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_DUPLICATED_COLUMN);
|
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_DUPLICATED_COLUMN);
|
||||||
}
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code && pTag->is_pk) {
|
||||||
|
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_TAG_IS_PRIMARY_KEY, pTag->colName);
|
||||||
|
}
|
||||||
if (TSDB_CODE_SUCCESS == code && pTag->dataType.type == TSDB_DATA_TYPE_JSON && ntags > 1) {
|
if (TSDB_CODE_SUCCESS == code && pTag->dataType.type == TSDB_DATA_TYPE_JSON && ntags > 1) {
|
||||||
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_ONLY_ONE_JSON_TAG);
|
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_ONLY_ONE_JSON_TAG);
|
||||||
}
|
}
|
||||||
|
@ -5855,6 +5861,9 @@ static int32_t checkTableColsSchema(STranslateContext* pCxt, SHashObj* pHash, in
|
||||||
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_FIRST_COLUMN);
|
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_FIRST_COLUMN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (TSDB_CODE_SUCCESS == code && pCol->is_pk && colIndex != 1) {
|
||||||
|
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_SECOND_COL_PK);
|
||||||
|
}
|
||||||
if (TSDB_CODE_SUCCESS == code && pCol->dataType.type == TSDB_DATA_TYPE_JSON) {
|
if (TSDB_CODE_SUCCESS == code && pCol->dataType.type == TSDB_DATA_TYPE_JSON) {
|
||||||
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_COL_JSON);
|
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_COL_JSON);
|
||||||
}
|
}
|
||||||
|
@ -6073,6 +6082,9 @@ static void toSchema(const SColumnDefNode* pCol, col_id_t colId, SSchema* pSchem
|
||||||
if (pCol->sma) {
|
if (pCol->sma) {
|
||||||
flags |= COL_SMA_ON;
|
flags |= COL_SMA_ON;
|
||||||
}
|
}
|
||||||
|
if (pCol->is_pk) {
|
||||||
|
flags != COL_IS_KEY;
|
||||||
|
}
|
||||||
pSchema->colId = colId;
|
pSchema->colId = colId;
|
||||||
pSchema->type = pCol->dataType.type;
|
pSchema->type = pCol->dataType.type;
|
||||||
pSchema->bytes = calcTypeBytes(pCol->dataType);
|
pSchema->bytes = calcTypeBytes(pCol->dataType);
|
||||||
|
|
|
@ -192,6 +192,10 @@ static char* getSyntaxErrFormat(int32_t errCode) {
|
||||||
return "Out of memory";
|
return "Out of memory";
|
||||||
case TSDB_CODE_PAR_ORDERBY_AMBIGUOUS:
|
case TSDB_CODE_PAR_ORDERBY_AMBIGUOUS:
|
||||||
return "ORDER BY \"%s\" is ambiguous";
|
return "ORDER BY \"%s\" is ambiguous";
|
||||||
|
case TSDB_CODE_PAR_TAG_IS_PRIMARY_KEY:
|
||||||
|
return "tag %s can not be primary key";
|
||||||
|
case TSDB_CODE_PAR_SECOND_COL_PK:
|
||||||
|
return "primary key column must be second column";
|
||||||
default:
|
default:
|
||||||
return "Unknown error";
|
return "Unknown error";
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -604,11 +604,13 @@ TAOS_DEFINE_ERROR(TSDB_CODE_PAR_SYSTABLE_NOT_ALLOWED_FUNC, "System table not al
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_SYSTABLE_NOT_ALLOWED, "System table not allowed")
|
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_SYSTABLE_NOT_ALLOWED, "System table not allowed")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_VARBINARY, "Invalidate varbinary value")
|
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_VARBINARY, "Invalidate varbinary value")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_IP_RANGE, "Invalid IPV4 address ranges")
|
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_IP_RANGE, "Invalid IPV4 address ranges")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INTERNAL_ERROR, "Parser internal error")
|
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_STREAM_QUERY, "Invalid stream query")
|
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_STREAM_QUERY, "Invalid stream query")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_VIEW_QUERY, "Invalid view query type")
|
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_VIEW_QUERY, "Invalid view query type")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_COL_QUERY_MISMATCH, "Columns number mismatch with query result")
|
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_COL_QUERY_MISMATCH, "Columns number mismatch with query result")
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_VIEW_CONFLICT_WITH_TABLE, "View name is conflict with table")
|
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_VIEW_CONFLICT_WITH_TABLE, "View name is conflict with table")
|
||||||
|
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_TAG_IS_PRIMARY_KEY, "tag can not be primary key")
|
||||||
|
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_SECOND_COL_PK, "primary key must be second column")
|
||||||
|
TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INTERNAL_ERROR, "Parser internal error")
|
||||||
|
|
||||||
//planner
|
//planner
|
||||||
TAOS_DEFINE_ERROR(TSDB_CODE_PLAN_INTERNAL_ERROR, "Planner internal error")
|
TAOS_DEFINE_ERROR(TSDB_CODE_PLAN_INTERNAL_ERROR, "Planner internal error")
|
||||||
|
|
Loading…
Reference in New Issue