taosmsg.h 21.9 KB
Newer Older
H
hzcheng 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
/*
 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
 *
 * This program is free software: you can use, redistribute, and/or modify
 * it under the terms of the GNU Affero General Public License, version 3
 * or later ("AGPL"), as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef TDENGINE_TAOSMSG_H
#define TDENGINE_TAOSMSG_H

#ifdef __cplusplus
extern "C" {
#endif

S
#1177  
slguan 已提交
23
#include <stdbool.h>
24
#include <stdint.h>
S
#1177  
slguan 已提交
25

S
slguan 已提交
26
#include "taosdef.h"
H
hjxilinx 已提交
27
#include "taoserror.h"
S
slguan 已提交
28
#include "trpc.h"
H
hzcheng 已提交
29 30

// message type
H
hjxilinx 已提交
31 32 33 34 35 36 37 38
#define TSDB_MSG_TYPE_REG               1
#define TSDB_MSG_TYPE_REG_RSP           2
#define TSDB_MSG_TYPE_SUBMIT            3
#define TSDB_MSG_TYPE_SUBMIT_RSP        4
#define TSDB_MSG_TYPE_QUERY             5
#define TSDB_MSG_TYPE_QUERY_RSP         6
#define TSDB_MSG_TYPE_RETRIEVE          7
#define TSDB_MSG_TYPE_RETRIEVE_RSP      8
S
slguan 已提交
39

S
slguan 已提交
40
// message from mnode to dnode
H
hjxilinx 已提交
41
#define TSDB_MSG_TYPE_MD_CREATE_TABLE     9
42
#define TSDB_MSG_TYPE_MD_CREATE_TABLE_RSP 10
H
hjxilinx 已提交
43 44 45 46 47
#define TSDB_MSG_TYPE_MD_DROP_TABLE       11
#define TSDB_MSG_TYPE_MD_DROP_TABLE_RSP   12
#define TSDB_MSG_TYPE_MD_ALTER_TABLE      13
#define TSDB_MSG_TYPE_MD_ALTER_TABLE_RSP  14
#define TSDB_MSG_TYPE_MD_CREATE_VNODE     15
48
#define TSDB_MSG_TYPE_MD_CREATE_VNODE_RSP 16
H
hjxilinx 已提交
49 50
#define TSDB_MSG_TYPE_MD_DROP_VNODE       17
#define TSDB_MSG_TYPE_MD_DROP_VNODE_RSP   18
S
slguan 已提交
51 52 53 54 55 56
#define TSDB_MSG_TYPE_MD_DROP_STABLE      19
#define TSDB_MSG_TYPE_MD_DROP_STABLE_RSP  20
#define TSDB_MSG_TYPE_MD_ALTER_STREAM     21
#define TSDB_MSG_TYPE_MD_ALTER_STREAM_RSP 22
#define TSDB_MSG_TYPE_MD_CONFIG_DNODE     23
#define TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP 24
S
slguan 已提交
57

S
slguan 已提交
58
// message from client to mnode
H
hjxilinx 已提交
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
#define TSDB_MSG_TYPE_CM_CONNECT          31
#define TSDB_MSG_TYPE_CM_CONNECT_RSP      32
#define TSDB_MSG_TYPE_CM_CREATE_ACCT      33
#define TSDB_MSG_TYPE_CM_CREATE_ACCT_RSP  34
#define TSDB_MSG_TYPE_CM_ALTER_ACCT       35
#define TSDB_MSG_TYPE_CM_ALTER_ACCT_RSP   36
#define TSDB_MSG_TYPE_CM_DROP_ACCT        37
#define TSDB_MSG_TYPE_CM_DROP_ACCT_RSP    38
#define TSDB_MSG_TYPE_CM_CREATE_USER      39
#define TSDB_MSG_TYPE_CM_CREATE_USER_RSP  40
#define TSDB_MSG_TYPE_CM_ALTER_USER       41
#define TSDB_MSG_TYPE_CM_ALTER_USER_RSP   42
#define TSDB_MSG_TYPE_CM_DROP_USER        43
#define TSDB_MSG_TYPE_CM_DROP_USER_RSP    44
#define TSDB_MSG_TYPE_CM_CREATE_DNODE     45
74
#define TSDB_MSG_TYPE_CM_CREATE_DNODE_RSP 46
H
hjxilinx 已提交
75 76 77
#define TSDB_MSG_TYPE_CM_DROP_DNODE       47
#define TSDB_MSG_TYPE_CM_DROP_DNODE_RSP   48
#define TSDB_MSG_TYPE_CM_CONFIG_DNODE     TSDB_MSG_TYPE_MD_CONFIG_DNODE
78
#define TSDB_MSG_TYPE_CM_CONFIG_DNODE_RSP TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP
H
hjxilinx 已提交
79 80 81 82 83 84 85 86 87
#define TSDB_MSG_TYPE_CM_CREATE_DB        49
#define TSDB_MSG_TYPE_CM_CREATE_DB_RSP    50
#define TSDB_MSG_TYPE_CM_DROP_DB          51
#define TSDB_MSG_TYPE_CM_DROP_DB_RSP      52
#define TSDB_MSG_TYPE_CM_USE_DB           53
#define TSDB_MSG_TYPE_CM_USE_DB_RSP       54
#define TSDB_MSG_TYPE_CM_ALTER_DB         55
#define TSDB_MSG_TYPE_CM_ALTER_DB_RSP     56
#define TSDB_MSG_TYPE_CM_CREATE_TABLE     57
88
#define TSDB_MSG_TYPE_CM_CREATE_TABLE_RSP 58
H
hjxilinx 已提交
89 90 91 92 93 94 95
#define TSDB_MSG_TYPE_CM_DROP_TABLE       59
#define TSDB_MSG_TYPE_CM_DROP_TABLE_RSP   60
#define TSDB_MSG_TYPE_CM_ALTER_TABLE      61
#define TSDB_MSG_TYPE_CM_ALTER_TABLE_RSP  62
#define TSDB_MSG_TYPE_CM_TABLE_META       63
#define TSDB_MSG_TYPE_CM_TABLE_META_RSP   64
#define TSDB_MSG_TYPE_CM_STABLE_VGROUP    65
96
#define TSDB_MSG_TYPE_CM_STABLE_VGROUP_RSP 66
H
hjxilinx 已提交
97 98 99
#define TSDB_MSG_TYPE_CM_TABLES_META      67
#define TSDB_MSG_TYPE_CM_TABLES_META_RSP  68
#define TSDB_MSG_TYPE_CM_ALTER_STREAM     69
100
#define TSDB_MSG_TYPE_CM_ALTER_STREAM_RSP 70
H
hjxilinx 已提交
101 102 103 104 105
#define TSDB_MSG_TYPE_CM_SHOW             71
#define TSDB_MSG_TYPE_CM_SHOW_RSP         72
#define TSDB_MSG_TYPE_CM_KILL_QUERY       73
#define TSDB_MSG_TYPE_CM_KILL_QUERY_RSP   74
#define TSDB_MSG_TYPE_CM_KILL_STREAM      75
106 107 108 109 110
#define TSDB_MSG_TYPE_CM_KILL_STREAM_RSP 76
#define TSDB_MSG_TYPE_CM_KILL_CONN 77
#define TSDB_MSG_TYPE_CM_KILL_CONN_RSP 78
#define TSDB_MSG_TYPE_CM_HEARTBEAT 79
#define TSDB_MSG_TYPE_CM_HEARTBEAT_RSP 80
S
slguan 已提交
111

S
slguan 已提交
112
// message from dnode to mnode
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
#define TSDB_MSG_TYPE_DM_CONFIG_TABLE 91
#define TSDB_MSG_TYPE_DM_CONFIG_TABLE_RSP 92
#define TSDB_MSG_TYPE_DM_CONFIG_VNODE 93
#define TSDB_MSG_TYPE_DM_CONFIG_VNODE_RSP 94
#define TSDB_MSG_TYPE_DM_STATUS 95
#define TSDB_MSG_TYPE_DM_STATUS_RSP 96
#define TSDB_MSG_TYPE_DM_GRANT 97
#define TSDB_MSG_TYPE_DM_GRANT_RSP 98

#define TSDB_MSG_TYPE_SDB_SYNC 101
#define TSDB_MSG_TYPE_SDB_SYNC_RSP 102
#define TSDB_MSG_TYPE_SDB_FORWARD 103
#define TSDB_MSG_TYPE_SDB_FORWARD_RSP 104

#define TSDB_MSG_TYPE_MAX 105
H
hzcheng 已提交
128 129

// IE type
130 131 132 133 134 135 136
#define TSDB_IE_TYPE_SEC 1
#define TSDB_IE_TYPE_META 2
#define TSDB_IE_TYPE_MGMT_IP 3
#define TSDB_IE_TYPE_DNODE_CFG 4
#define TSDB_IE_TYPE_NEW_VERSION 5
#define TSDB_IE_TYPE_DNODE_EXT 6
#define TSDB_IE_TYPE_DNODE_STATE 7
H
hzcheng 已提交
137 138

enum _mgmt_table {
S
slguan 已提交
139
  TSDB_MGMT_TABLE_ACCT,
H
hzcheng 已提交
140 141 142
  TSDB_MGMT_TABLE_USER,
  TSDB_MGMT_TABLE_DB,
  TSDB_MGMT_TABLE_TABLE,
143
  TSDB_MGMT_TABLE_DNODE,
S
slguan 已提交
144
  TSDB_MGMT_TABLE_MNODE,
H
hzcheng 已提交
145 146
  TSDB_MGMT_TABLE_VGROUP,
  TSDB_MGMT_TABLE_METRIC,
S
slguan 已提交
147
  TSDB_MGMT_TABLE_MODULE,
H
hzcheng 已提交
148 149
  TSDB_MGMT_TABLE_QUERIES,
  TSDB_MGMT_TABLE_STREAMS,
S
slguan 已提交
150
  TSDB_MGMT_TABLE_CONFIGS,
H
hzcheng 已提交
151
  TSDB_MGMT_TABLE_CONNS,
S
slguan 已提交
152 153
  TSDB_MGMT_TABLE_SCORES,
  TSDB_MGMT_TABLE_GRANTS,
L
lihui 已提交
154
  TSDB_MGMT_TABLE_VNODES,
H
hzcheng 已提交
155 156 157
  TSDB_MGMT_TABLE_MAX,
};

158 159 160 161
#define TSDB_ALTER_TABLE_ADD_TAG_COLUMN 1
#define TSDB_ALTER_TABLE_DROP_TAG_COLUMN 2
#define TSDB_ALTER_TABLE_CHANGE_TAG_COLUMN 3
#define TSDB_ALTER_TABLE_UPDATE_TAG_VAL 4
H
hzcheng 已提交
162

163 164
#define TSDB_ALTER_TABLE_ADD_COLUMN 5
#define TSDB_ALTER_TABLE_DROP_COLUMN 6
H
hzcheng 已提交
165

166 167 168 169 170
#define TSDB_INTERPO_NONE 0
#define TSDB_INTERPO_NULL 1
#define TSDB_INTERPO_SET_VALUE 2
#define TSDB_INTERPO_LINEAR 3
#define TSDB_INTERPO_PREV 4
H
hzcheng 已提交
171

172 173
#define TSDB_ALTER_USER_PASSWD 0x1
#define TSDB_ALTER_USER_PRIVILEGES 0x2
H
hzcheng 已提交
174

175
#define TSDB_KILL_MSG_LEN 30
H
hzcheng 已提交
176

177
#define TSDB_VN_READ_ACCCESS ((char)0x1)
S
slguan 已提交
178 179
#define TSDB_VN_WRITE_ACCCESS ((char)0x2)
#define TSDB_VN_ALL_ACCCESS (TSDB_VN_READ_ACCCESS | TSDB_VN_WRITE_ACCCESS)
H
hzcheng 已提交
180

181 182 183
#define TSDB_COL_NORMAL 0x0u
#define TSDB_COL_TAG 0x1u
#define TSDB_COL_JOIN 0x2u
H
hzcheng 已提交
184 185 186

extern char *taosMsg[];

S
slguan 已提交
187
#pragma pack(push, 1)
H
hzcheng 已提交
188

189 190 191 192 193
typedef struct {
  uint32_t ip;
  uint16_t port;
} SIpAddr;

H
hzcheng 已提交
194
typedef struct {
H
hjxilinx 已提交
195 196 197 198 199 200 201 202
  int32_t numOfVnodes;
} SMsgDesc;

typedef struct SMsgHead {
  int32_t contLen;
  int32_t vgId;
} SMsgHead;

203 204
// Submit message for one table
typedef struct SSubmitBlk {
205 206 207 208 209 210 211
  int64_t uid;        // table unique id
  int32_t tid;        // table id
  int32_t padding;    // TODO just for padding here
  int32_t sversion;   // data schema version
  int32_t len;        // data part length, not including the SSubmitBlk head
  int16_t numOfRows;  // total number of rows in current submit block
  char    data[];
212 213 214 215 216 217
} SSubmitBlk;

// Submit message for this TSDB
typedef struct SSubmitMsg {
  SMsgHead   header;
  int32_t    length;
218 219
  int32_t    compressed : 2;
  int32_t    numOfBlocks : 30;
220 221
  SSubmitBlk blocks[];
} SSubmitMsg;
H
hzcheng 已提交
222

S
slguan 已提交
223
typedef struct {
224 225 226 227
  int32_t index;  // index of failed block in submit blocks
  int32_t vnode;  // vnode index of failed block
  int32_t sid;    // table index of failed block
  int32_t code;   // errorcode while write data to vnode, such as not created, dropped, no space, invalid table
S
slguan 已提交
228 229 230
} SShellSubmitRspBlock;

typedef struct {
231 232 233 234 235
  int32_t              code;          // 0-success, > 0 error code
  int32_t              numOfRows;     // number of records the client is trying to write
  int32_t              affectedRows;  // number of records actually written
  int32_t              failedRows;    // number of failed records (exclude duplicate records)
  int32_t              numOfFailedBlocks;
S
slguan 已提交
236
  SShellSubmitRspBlock failedBlocks[];
S
slguan 已提交
237 238
} SShellSubmitRspMsg;

S
slguan 已提交
239
typedef struct SSchema {
S
slguan 已提交
240
  uint8_t type;
H
hjxilinx 已提交
241
  char    name[TSDB_COL_NAME_LEN];
S
slguan 已提交
242 243
  int16_t colId;
  int16_t bytes;
S
slguan 已提交
244
} SSchema;
H
hzcheng 已提交
245

S
slguan 已提交
246
typedef struct {
247 248 249 250 251 252 253 254 255 256 257 258 259 260 261
  int32_t  contLen;
  int32_t  vgId;
  int8_t   tableType;
  int16_t  numOfColumns;
  int16_t  numOfTags;
  int32_t  sid;
  int32_t  sversion;
  int32_t  tagDataLen;
  int32_t  sqlDataLen;
  uint64_t uid;
  uint64_t superTableUid;
  uint64_t createdTime;
  char     tableId[TSDB_TABLE_ID_LEN];
  char     superTableId[TSDB_TABLE_ID_LEN];
  char     data[];
S
slguan 已提交
262
} SMDCreateTableMsg;
S
slguan 已提交
263

H
hzcheng 已提交
264
typedef struct {
265 266 267 268 269 270 271 272 273
  char    tableId[TSDB_TABLE_ID_LEN];
  char    db[TSDB_DB_NAME_LEN];
  int8_t  igExists;
  int16_t numOfTags;
  int16_t numOfColumns;
  int16_t sqlLen;  // the length of SQL, it starts after schema , sql is a null-terminated string
  int32_t contLen;
  int8_t  reserved[16];
  char    schema[];
274
} SCMCreateTableMsg;
H
hzcheng 已提交
275 276

typedef struct {
277
  char   tableId[TSDB_TABLE_ID_LEN];
278
  int8_t igNotExists;
279
} SCMDropTableMsg;
H
hzcheng 已提交
280 281

typedef struct {
282 283
  char    tableId[TSDB_TABLE_ID_LEN];
  char    db[TSDB_DB_NAME_LEN];
284
  int16_t type; /* operation type   */
H
hzcheng 已提交
285
  char    tagVal[TSDB_MAX_BYTES_PER_ROW];
286
  int8_t  numOfCols; /* number of schema */
S
slguan 已提交
287
  SSchema schema[];
288
} SCMAlterTableMsg;
H
hzcheng 已提交
289

S
slguan 已提交
290
typedef struct {
S
slguan 已提交
291 292
  char clientVersion[TSDB_VERSION_LEN];
  char msgVersion[TSDB_VERSION_LEN];
S
slguan 已提交
293
  char db[TSDB_TABLE_ID_LEN + 1];
294
} SCMConnectMsg;
S
slguan 已提交
295 296

typedef struct {
S
slguan 已提交
297
  char      acctId[TSDB_ACCT_LEN + 1];
S
slguan 已提交
298 299 300 301
  char      serverVersion[TSDB_VERSION_LEN];
  int8_t    writeAuth;
  int8_t    superAuth;
  SRpcIpSet ipList;
302
} SCMConnectRsp;
S
slguan 已提交
303

H
hzcheng 已提交
304 305 306 307 308 309 310 311 312 313 314
typedef struct {
  int32_t maxUsers;
  int32_t maxDbs;
  int32_t maxTimeSeries;
  int32_t maxConnections;
  int32_t maxStreams;
  int32_t maxPointsPerSecond;
  int64_t maxStorage;    // In unit of GB
  int64_t maxQueryTime;  // In unit of hour
  int64_t maxInbound;
  int64_t maxOutbound;
315
  int8_t  accessState;  // Configured only by command
S
slguan 已提交
316
} SAcctCfg;
H
hzcheng 已提交
317 318

typedef struct {
S
slguan 已提交
319 320
  char     user[TSDB_USER_LEN + 1];
  char     pass[TSDB_KEY_LEN + 1];
S
slguan 已提交
321
  SAcctCfg cfg;
322
} SCMCreateAcctMsg, SCMAlterAcctMsg;
H
hzcheng 已提交
323 324

typedef struct {
S
slguan 已提交
325
  char user[TSDB_USER_LEN + 1];
326
} SCMDropUserMsg, SCMDropAcctMsg;
S
slguan 已提交
327 328

typedef struct {
S
slguan 已提交
329 330
  char   user[TSDB_USER_LEN + 1];
  char   pass[TSDB_KEY_LEN + 1];
S
slguan 已提交
331 332
  int8_t privilege;
  int8_t flag;
333
} SCMCreateUserMsg, SCMAlterUserMsg;
H
hzcheng 已提交
334

S
slguan 已提交
335
typedef struct {
S
slguan 已提交
336
  char db[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
337
} SMgmtHead;
H
hzcheng 已提交
338 339

typedef struct {
340 341 342 343 344
  int32_t  contLen;
  int32_t  vgId;
  int32_t  sid;
  uint64_t uid;
  char     tableId[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
345
} SMDDropTableMsg;
H
hzcheng 已提交
346

S
slguan 已提交
347
typedef struct {
S
slguan 已提交
348
  int32_t vgId;
S
slguan 已提交
349
  int64_t uid;
S
slguan 已提交
350
  char    tableId[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
351
} SMDDropSTableMsg;
S
slguan 已提交
352

S
slguan 已提交
353
typedef struct {
354
  int32_t vgId;
S
slguan 已提交
355
} SMDDropVnodeMsg;
H
hzcheng 已提交
356

357
typedef struct SColIndex {
H
hzcheng 已提交
358 359 360 361
  int16_t colId;
  /*
   * colIdx is the index of column in latest schema of table
   * it is available in the client side. Also used to determine
S
slguan 已提交
362
   * whether current table schema is up-to-date.
H
hzcheng 已提交
363 364
   *
   * colIdxInBuf is used to denote the index of column in pQuery->colList,
S
slguan 已提交
365
   * this value is invalid in client side, as well as in cache block of vnode either.
H
hzcheng 已提交
366
   */
367
  int16_t  colIndex;
368
  uint16_t flag;  // denote if it is a tag or not
H
hjxilinx 已提交
369
  char     name[TSDB_COL_NAME_LEN];
370
} SColIndex;
H
hzcheng 已提交
371 372 373

/* sql function msg, to describe the message to vnode about sql function
 * operations in select clause */
H
hjxilinx 已提交
374
typedef struct SSqlFuncMsg {
H
hzcheng 已提交
375 376 377
  int16_t functionId;
  int16_t numOfParams;

378
  SColIndex colInfo;
H
hzcheng 已提交
379 380 381 382 383 384 385 386 387
  struct ArgElem {
    int16_t argType;
    int16_t argBytes;
    union {
      double  d;
      int64_t i64;
      char *  pz;
    } argValue;
  } arg[3];
H
hjxilinx 已提交
388
} SSqlFuncMsg;
H
hzcheng 已提交
389

H
hjxilinx 已提交
390
typedef struct SExprInfo {
391 392
  struct tExprNode *pBinExpr;    /*  for binary expression */
  int32_t           numOfCols;   /*  binary expression involves the readed number of columns*/
393
  SColIndex *     pReqColumns;   /*  source column list */
H
hjxilinx 已提交
394
} SExprInfo;
H
hzcheng 已提交
395

H
hjxilinx 已提交
396 397 398 399 400 401 402
typedef struct SArithExprInfo {
  SSqlFuncMsg pBase;
  SExprInfo   binExprInfo;
  int16_t     bytes;
  int16_t     type;
  int16_t     interResBytes;
} SArithExprInfo;
H
hzcheng 已提交
403

S
slguan 已提交
404
typedef struct SColumnFilterInfo {
H
hzcheng 已提交
405 406
  int16_t lowerRelOptr;
  int16_t upperRelOptr;
407
  int16_t filterstr;   // denote if current column is char(binary/nchar)
H
hzcheng 已提交
408 409 410 411 412 413 414 415 416 417 418 419 420 421 422

  union {
    struct {
      int64_t lowerBndi;
      int64_t upperBndi;
    };
    struct {
      double lowerBndd;
      double upperBndd;
    };
    struct {
      int64_t pz;
      int64_t len;
    };
  };
S
slguan 已提交
423 424 425 426 427 428 429 430 431 432 433 434 435
} SColumnFilterInfo;

/*
 * for client side struct, we only need the column id, type, bytes are not necessary
 * But for data in vnode side, we need all the following information.
 */
typedef struct SColumnInfo {
  int16_t            colId;
  int16_t            type;
  int16_t            bytes;
  int16_t            numOfFilters;
  SColumnFilterInfo *filters;
} SColumnInfo;
H
hzcheng 已提交
436

437
typedef struct STableIdInfo {
H
hzcheng 已提交
438
  int32_t sid;
439
  int64_t uid;
440
  TSKEY   key;  // last accessed ts, for subscription
441
} STableIdInfo;
H
hzcheng 已提交
442

H
hjxilinx 已提交
443 444 445 446 447
typedef struct STimeWindow {
  TSKEY skey;
  TSKEY ekey;
} STimeWindow;

H
hzcheng 已提交
448 449
/*
 * the outputCols is equalled to or larger than numOfCols
S
slguan 已提交
450
 * e.g., select min(colName), max(colName), avg(colName) from table
H
hzcheng 已提交
451 452 453
 * the outputCols will be 3 while the numOfCols is 1.
 */
typedef struct {
454
  SMsgHead    head;
H
hjxilinx 已提交
455
  STimeWindow window;
456 457 458 459 460 461 462 463
  int32_t     numOfTables;
  int16_t     order;
  int16_t     orderColId;
  int16_t     numOfCols;        // the number of columns will be load from vnode
  int64_t     intervalTime;     // time interval for aggregation, in million second
  int64_t     intervalOffset;   // start offset for interval query
  int64_t     slidingTime;      // value for sliding window
  char        slidingTimeUnit;  // time interval type, for revisement of interval(1d)
464
  uint16_t    tagCondLen;       // tag length in current query
465 466
  int16_t     numOfGroupCols;   // num of group by columns
  int16_t     orderByIdx;
H
hjxilinx 已提交
467
  int16_t     orderType;        // used in group by xx order by xxx
468 469
  int64_t     limit;
  int64_t     offset;
470
  uint16_t    queryType;        // denote another query process
H
hjxilinx 已提交
471
  int16_t     numOfOutput;  // final output columns numbers
weixin_48148422's avatar
weixin_48148422 已提交
472
  int16_t     tagNameRelType;   // relation of tag criteria and tbname criteria
473 474 475 476 477
  int16_t     interpoType;      // interpolate type
  uint64_t    defaultVal;       // default value array list

  int32_t     colNameLen;
  int64_t     colNameList;
S
slguan 已提交
478 479 480 481
  int32_t     tsOffset;       // offset value in current msg body, NOTE: ts list is compressed
  int32_t     tsLen;          // total length of ts comp block
  int32_t     tsNumOfBlocks;  // ts comp block numbers
  int32_t     tsOrder;        // ts comp block order
482
  int32_t     numOfTags;      // number of tags columns involved
S
slguan 已提交
483
  SColumnInfo colList[];
S
slguan 已提交
484
} SQueryTableMsg;
H
hzcheng 已提交
485 486

typedef struct {
H
hjxilinx 已提交
487
  int32_t  code;
H
hzcheng 已提交
488
  uint64_t qhandle;
S
slguan 已提交
489
} SQueryTableRsp;
H
hzcheng 已提交
490 491

typedef struct {
492
  SMsgHead header;
H
hzcheng 已提交
493
  uint64_t qhandle;
H
hjxilinx 已提交
494
  uint16_t free;
S
slguan 已提交
495
} SRetrieveTableMsg;
H
hzcheng 已提交
496

497
typedef struct SRetrieveTableRsp {
H
hzcheng 已提交
498
  int32_t numOfRows;
499
  int8_t  completed;  // all results are returned to client
H
hzcheng 已提交
500
  int16_t precision;
501
  int64_t offset;  // updated offset value for multi-vnode projection query
H
hzcheng 已提交
502 503
  int64_t useconds;
  char    data[];
S
slguan 已提交
504
} SRetrieveTableRsp;
H
hzcheng 已提交
505 506

typedef struct {
S
slguan 已提交
507 508 509 510 511
  int32_t vgId;
  int64_t totalStorage;
  int64_t compStorage;
  int64_t pointsWritten;
  uint8_t status;
S
slguan 已提交
512
  uint8_t role;
S
slguan 已提交
513
  uint8_t replica;
514
  uint8_t reserved[5];
H
hzcheng 已提交
515 516 517
} SVnodeLoad;

typedef struct {
518 519
  char     acct[TSDB_USER_LEN];
  char     db[TSDB_DB_NAME_LEN];
H
hzcheng 已提交
520 521 522 523 524 525 526 527 528 529 530 531 532
  uint32_t vgId;
  int32_t  maxSessions;
  int32_t  cacheBlockSize;
  union {
    int32_t totalBlocks;
    float   fraction;
  } cacheNumOfBlocks;
  int32_t daysPerFile;
  int32_t daysToKeep1;
  int32_t daysToKeep2;
  int32_t daysToKeep;
  int32_t commitTime;
  int32_t rowsInFileBlock;
S
slguan 已提交
533
  int16_t blocksPerTable;
534 535 536 537 538
  int8_t  compression;
  int8_t  commitLog;
  int8_t  replications;
  int8_t  repStrategy;
  int8_t  loadLatest;  // load into mem or not
H
hjxilinx 已提交
539
  uint8_t precision;   // time resolution
540 541
  int8_t  ignoreExist;
} SCMCreateDbMsg, SCMAlterDbMsg;
H
hzcheng 已提交
542

543
typedef struct {
S
slguan 已提交
544
  char    db[TSDB_TABLE_ID_LEN + 1];
545
  uint8_t ignoreNotExists;
546
} SCMDropDbMsg, SCMUseDbMsg;
H
hzcheng 已提交
547 548 549 550 551 552 553 554 555 556 557

// IMPORTANT: sizeof(SVnodeStatisticInfo) should not exceed
// TSDB_FILE_HEADER_LEN/4 - TSDB_FILE_HEADER_VERSION_SIZE
typedef struct {
  int64_t pointsWritten;  // In unit of points
  int64_t totalStorage;   // In unit of bytes
  int64_t compStorage;    // In unit of bytes
  int64_t queryTime;      // In unit of second ??
  char    reserved[64];
} SVnodeStatisticInfo;

S
slguan 已提交
558 559 560 561 562
typedef struct {
  int32_t  vgId;
  int8_t   accessState;
} SDMVgroupAccess;

S
slguan 已提交
563
typedef struct {
S
slguan 已提交
564
  int32_t  dnodeId;
S
slguan 已提交
565 566
  uint32_t moduleStatus;
  uint32_t numOfVnodes;
S
slguan 已提交
567 568 569 570 571 572 573 574 575 576 577 578 579 580 581
} SDMDnodeCfg;

typedef struct {
  int32_t   nodeId;
  uint32_t  nodeIp;
  uint16_t  nodePort;
  uint16_t  syncPort;
  char      nodeName[TSDB_NODE_NAME_LEN + 1];
} SDMMnodeInfo;

typedef struct {
  int8_t       inUse;
  int8_t       nodeNum;
  SDMMnodeInfo nodeInfos[TSDB_MAX_MPEERS];
} SDMMnodeInfos;
S
slguan 已提交
582

H
hzcheng 已提交
583 584
typedef struct {
  uint32_t   version;
S
slguan 已提交
585
  int32_t    dnodeId;
S
slguan 已提交
586
  char       dnodeName[TSDB_NODE_NAME_LEN + 1];
S
slguan 已提交
587
  uint32_t   privateIp;
H
hzcheng 已提交
588
  uint32_t   publicIp;
S
slguan 已提交
589
  uint32_t   moduleStatus;
590 591
  uint32_t   lastReboot;        // time stamp for last reboot
  uint16_t   numOfTotalVnodes;  // from config file
S
slguan 已提交
592
  uint16_t   openVnodes;
H
hzcheng 已提交
593
  uint16_t   numOfCores;
594
  float      diskAvailable;  // GB
H
hzcheng 已提交
595
  uint8_t    alternativeRole;
S
slguan 已提交
596
  uint8_t    reserve[15];
H
hzcheng 已提交
597
  SVnodeLoad load[];
598
} SDMStatusMsg;
H
hzcheng 已提交
599

S
slguan 已提交
600
typedef struct {
S
slguan 已提交
601 602 603
  SDMMnodeInfos    mnodes;
  SDMDnodeCfg      dnodeCfg;
  SDMVgroupAccess  vgAccess[];
604
} SDMStatusRsp;
S
slguan 已提交
605

H
hzcheng 已提交
606
typedef struct {
S
slguan 已提交
607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635
  uint32_t vgId;
  int32_t  maxTables;
  int64_t  maxCacheSize;
  int32_t  minRowsPerFileBlock;
  int32_t  maxRowsPerFileBlock;
  int32_t  daysPerFile;
  int32_t  daysToKeep;
  int32_t  daysToKeep1;
  int32_t  daysToKeep2;
  int32_t  commitTime;
  uint8_t  precision;  // time resolution
  int8_t   compression;
  int8_t   wals;
  int8_t   commitLog;
  int8_t   replications;
  int8_t   quorum;
  uint32_t arbitratorIp;
  int8_t   reserved[16];
} SMDVnodeCfg;

typedef struct {
  int32_t  nodeId;
  uint32_t nodeIp;
  char     nodeName[TSDB_NODE_NAME_LEN + 1];
} SMDVnodeDesc;

typedef struct {
  SMDVnodeCfg  cfg;
  SMDVnodeDesc nodes[TSDB_MAX_MPEERS];
S
slguan 已提交
636
} SMDCreateVnodeMsg;
H
hzcheng 已提交
637 638

typedef struct {
S
slguan 已提交
639
  char    tableId[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
640 641
  int16_t createFlag;
  char    tags[];
642
} SCMTableInfoMsg;
H
hzcheng 已提交
643 644

typedef struct {
S
slguan 已提交
645 646
  int32_t numOfTables;
  char    tableIds[];
647
} SCMMultiTableInfoMsg;
H
hzcheng 已提交
648

H
hjxilinx 已提交
649 650 651
typedef struct SCMSTableVgroupMsg {
  char tableId[TSDB_TABLE_ID_LEN];
} SCMSTableVgroupMsg;
S
slguan 已提交
652

653
typedef struct {
S
slguan 已提交
654
  int32_t   vgId;
S
slguan 已提交
655
  int8_t    numOfIps;
S
slguan 已提交
656 657
  SIpAddr   ipAddr[TSDB_REPLICA_MAX_NUM];
} SCMVgroupInfo;
658

S
slguan 已提交
659
typedef struct {
S
slguan 已提交
660 661
  int32_t  numOfVgroups;
  SCMVgroupInfo vgroups[];
H
hjxilinx 已提交
662
} SCMSTableVgroupRspMsg;
S
slguan 已提交
663

S
slguan 已提交
664 665 666
typedef struct {
  int16_t elemLen;

S
slguan 已提交
667
  char    tableId[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
668 669 670 671 672 673 674 675 676 677
  int16_t orderIndex;
  int16_t orderType;  // used in group by xx order by xxx

  int16_t rel;  // denotes the relation between condition and table list

  int32_t tableCond;  // offset value of table name condition
  int32_t tableCondLen;

  int32_t cond;  // offset of column query condition
  int32_t condLen;
H
hzcheng 已提交
678 679 680 681

  int16_t tagCols[TSDB_MAX_TAGS + 1];  // required tag columns, plus one is for table name
  int16_t numOfTags;                   // required number of tags

S
slguan 已提交
682 683
  int16_t numOfGroupCols;  // num of group by columns
  int32_t groupbyTagColumnList;
S
slguan 已提交
684
} SSuperTableMetaElemMsg;
S
slguan 已提交
685 686

typedef struct {
S
slguan 已提交
687
  int32_t numOfTables;
S
slguan 已提交
688 689 690
  int32_t join;
  int32_t joinCondLen;  // for join condition
  int32_t metaElem[TSDB_MAX_JOIN_TABLE_NUM];
S
slguan 已提交
691
} SSuperTableMetaMsg;
H
hzcheng 已提交
692

S
slguan 已提交
693 694 695 696 697 698
typedef struct {
  int32_t  nodeId;
  uint32_t nodeIp;
  uint16_t nodePort;
} SVnodeDesc;

H
hzcheng 已提交
699
typedef struct {
H
hjxilinx 已提交
700
  SVnodeDesc vpeerDesc[TSDB_REPLICA_MAX_NUM];
H
hzcheng 已提交
701
  int16_t    index;  // used locally
S
slguan 已提交
702
  int32_t    vgId;
H
hzcheng 已提交
703
  int32_t    numOfSids;
704
  int32_t    pSidExtInfoList[];  // offset value of STableIdInfo
H
hzcheng 已提交
705 706 707
} SVnodeSidList;

typedef struct {
S
slguan 已提交
708
  int32_t  numOfTables;
H
hzcheng 已提交
709 710
  int32_t  numOfVnodes;
  uint16_t tagLen; /* tag value length */
S
slguan 已提交
711 712
  int32_t  list[]; /* offset of SVnodeSidList, compared to the SSuperTableMeta struct */
} SSuperTableMeta;
H
hzcheng 已提交
713

H
hjxilinx 已提交
714
typedef struct STableMetaMsg {
S
slguan 已提交
715 716 717 718 719 720 721 722 723 724 725 726
  int32_t       contLen;
  char          tableId[TSDB_TABLE_ID_LEN];   // table id
  char          stableId[TSDB_TABLE_ID_LEN];  // stable name if it is created according to super table
  uint8_t       numOfTags;
  uint8_t       precision;
  uint8_t       tableType;
  int16_t       numOfColumns;
  int16_t       sversion;
  int32_t       sid;
  uint64_t      uid;
  SCMVgroupInfo vgroup;
  SSchema       schema[];
H
hjxilinx 已提交
727
} STableMetaMsg;
H
hzcheng 已提交
728

S
slguan 已提交
729
typedef struct SMultiTableMeta {
730 731
  int32_t       numOfTables;
  int32_t       contLen;
H
hjxilinx 已提交
732
  STableMetaMsg metas[];
S
slguan 已提交
733
} SMultiTableMeta;
S
slguan 已提交
734

H
hzcheng 已提交
735
typedef struct {
S
slguan 已提交
736
  char name[TSDB_TABLE_ID_LEN + 1];
H
hzcheng 已提交
737 738 739 740 741 742 743 744 745
  char data[TSDB_MAX_TAGS_LEN];
} STagData;

/*
 * sql: show tables like '%a_%'
 * payload is the query condition, e.g., '%a_%'
 * payloadLen is the length of payload
 */
typedef struct {
S
slguan 已提交
746
  int8_t   type;
S
slguan 已提交
747
  char     db[TSDB_DB_NAME_LEN + 1];
H
hzcheng 已提交
748 749
  uint16_t payloadLen;
  char     payload[];
750
} SCMShowMsg;
H
hzcheng 已提交
751

H
hjxilinx 已提交
752 753 754
typedef struct SCMShowRsp {
  uint64_t      qhandle;
  STableMetaMsg tableMeta;
755
} SCMShowRsp;
S
slguan 已提交
756 757

typedef struct {
S
slguan 已提交
758
  char ip[32];
759
} SCMCreateDnodeMsg, SCMDropDnodeMsg;
H
hzcheng 已提交
760 761

typedef struct {
S
slguan 已提交
762 763 764
  uint32_t dnode;
  int32_t  vnode;
  int32_t  sid;
765
} SDMConfigTableMsg;
H
hzcheng 已提交
766

S
slguan 已提交
767
typedef struct {
S
slguan 已提交
768 769
  uint32_t dnodeId;
  int32_t  vgId;
770
} SDMConfigVnodeMsg;
H
hzcheng 已提交
771 772

typedef struct {
773 774
  char ip[32];
  char config[64];
S
slguan 已提交
775
} SMDCfgDnodeMsg, SCMCfgDnodeMsg;
H
hzcheng 已提交
776 777

typedef struct {
S
slguan 已提交
778
  char     sql[TSDB_SHOW_SQL_LEN + 1];
H
hzcheng 已提交
779 780 781
  uint32_t queryId;
  int64_t  useconds;
  int64_t  stime;
S
slguan 已提交
782
} SQueryDesc;
H
hzcheng 已提交
783 784

typedef struct {
S
slguan 已提交
785
  char     sql[TSDB_SHOW_SQL_LEN + 1];
H
hzcheng 已提交
786 787 788 789 790 791 792
  uint32_t streamId;
  int64_t  num;  // number of computing/cycles
  int64_t  useconds;
  int64_t  ctime;
  int64_t  stime;
  int64_t  slidingTime;
  int64_t  interval;
S
slguan 已提交
793
} SStreamDesc;
H
hzcheng 已提交
794 795

typedef struct {
796
  int32_t    numOfQueries;
797
  SQueryDesc *qdesc;
S
slguan 已提交
798
} SQqueryList;
H
hzcheng 已提交
799 800

typedef struct {
801
  int32_t     numOfStreams;
802
  SStreamDesc *sdesc;
S
slguan 已提交
803
} SStreamList;
S
slguan 已提交
804 805

typedef struct {
S
slguan 已提交
806 807
  SQqueryList qlist;
  SStreamList slist;
808
} SCMHeartBeatMsg;
S
slguan 已提交
809 810 811 812 813 814

typedef struct {
  uint32_t  queryId;
  uint32_t  streamId;
  int8_t    killConnection;
  SRpcIpSet ipList;
815
} SCMHeartBeatRsp;
H
hzcheng 已提交
816 817

typedef struct {
S
slguan 已提交
818
  char queryId[TSDB_KILL_MSG_LEN + 1];
819
} SCMKillQueryMsg, SCMKillStreamMsg, SCMKillConnMsg;
H
hzcheng 已提交
820 821

typedef struct {
S
slguan 已提交
822
  int32_t  vnode;
H
hzcheng 已提交
823 824 825
  int32_t  sid;
  uint64_t uid;
  uint64_t stime;  // stream starting time
S
slguan 已提交
826
  int32_t  status;
S
slguan 已提交
827
  char     tableId[TSDB_TABLE_ID_LEN + 1];
828
} SMDAlterStreamMsg;
H
hzcheng 已提交
829

S
slguan 已提交
830
#pragma pack(pop)
H
hzcheng 已提交
831 832 833 834 835 836

#ifdef __cplusplus
}
#endif

#endif