taosmsg.h 20.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
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
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
#define TSDB_MSG_TYPE_MD_CREATE_TABLE 9
#define TSDB_MSG_TYPE_MD_CREATE_TABLE_RSP 10
#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
#define TSDB_MSG_TYPE_MD_CREATE_VNODE_RSP 16
#define TSDB_MSG_TYPE_MD_DROP_VNODE 17
#define TSDB_MSG_TYPE_MD_DROP_VNODE_RSP 18
#define TSDB_MSG_TYPE_MD_ALTER_VNODE 19
#define TSDB_MSG_TYPE_MD_ALTER_VNODE_RSP 20
#define TSDB_MSG_TYPE_MD_DROP_STABLE 21
#define TSDB_MSG_TYPE_MD_DROP_STABLE_RSP 22
#define TSDB_MSG_TYPE_MD_ALTER_STREAM 23
#define TSDB_MSG_TYPE_MD_ALTER_STREAM_RSP 24
#define TSDB_MSG_TYPE_MD_CONFIG_DNODE 25
#define TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP 26
S
slguan 已提交
59

S
slguan 已提交
60
// message from client to mnode
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
#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
#define TSDB_MSG_TYPE_CM_CREATE_DNODE_RSP 46
#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
#define TSDB_MSG_TYPE_CM_CONFIG_DNODE_RSP TSDB_MSG_TYPE_MD_CONFIG_DNODE_RSP
#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
#define TSDB_MSG_TYPE_CM_CREATE_TABLE_RSP 58
#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
97 98
#define TSDB_MSG_TYPE_CM_STABLE_VGROUP 65
#define TSDB_MSG_TYPE_CM_STABLE_VGROUP_RSP 66
99 100 101 102 103 104 105 106 107 108 109 110 111 112
#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
#define TSDB_MSG_TYPE_CM_ALTER_STREAM_RSP 70
#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
#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 已提交
113

S
slguan 已提交
114
// message from dnode to mnode
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
#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 已提交
130 131

// IE type
132 133 134 135 136 137 138
#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 已提交
139 140

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

160 161 162 163
#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 已提交
164

165 166
#define TSDB_ALTER_TABLE_ADD_COLUMN 5
#define TSDB_ALTER_TABLE_DROP_COLUMN 6
H
hzcheng 已提交
167

168 169 170 171 172
#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 已提交
173

174 175
#define TSDB_ALTER_USER_PASSWD 0x1
#define TSDB_ALTER_USER_PRIVILEGES 0x2
H
hzcheng 已提交
176

177
#define TSDB_KILL_MSG_LEN 30
H
hzcheng 已提交
178

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

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

extern char *taosMsg[];

S
slguan 已提交
189
#pragma pack(push, 1)
H
hzcheng 已提交
190

191
// typedef struct {
192 193 194 195 196 197 198
//  int32_t  vnode;
//  int32_t  sid;
//  int32_t  sversion;
//  uint64_t uid;
//  int16_t  numOfRows;
//  char     payLoad[];
//} SShellSubmitBlock;
H
hzcheng 已提交
199 200

typedef struct {
H
hjxilinx 已提交
201 202 203 204 205 206 207 208
  int32_t numOfVnodes;
} SMsgDesc;

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

209 210
// Submit message for one table
typedef struct SSubmitBlk {
211 212 213 214 215 216 217
  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[];
218 219 220 221 222 223
} SSubmitBlk;

// Submit message for this TSDB
typedef struct SSubmitMsg {
  SMsgHead   header;
  int32_t    length;
224 225
  int32_t    compressed : 2;
  int32_t    numOfBlocks : 30;
226 227
  SSubmitBlk blocks[];
} SSubmitMsg;
H
hzcheng 已提交
228

S
slguan 已提交
229
typedef struct {
230 231 232 233
  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 已提交
234 235 236
} SShellSubmitRspBlock;

typedef struct {
237 238 239 240 241
  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 已提交
242
  SShellSubmitRspBlock failedBlocks[];
S
slguan 已提交
243 244
} SShellSubmitRspMsg;

S
slguan 已提交
245
typedef struct SSchema {
S
slguan 已提交
246
  uint8_t type;
H
hjxilinx 已提交
247
  char    name[TSDB_COL_NAME_LEN];
S
slguan 已提交
248 249
  int16_t colId;
  int16_t bytes;
S
slguan 已提交
250
} SSchema;
H
hzcheng 已提交
251

S
slguan 已提交
252
typedef struct {
253
  int32_t  vnode;  // the index of vnode
S
slguan 已提交
254
  uint32_t ip;
255
} SVnodeDesc;
S
slguan 已提交
256

S
slguan 已提交
257
typedef struct {
258 259 260 261 262 263 264 265 266 267 268 269 270 271 272
  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 已提交
273
} SMDCreateTableMsg;
S
slguan 已提交
274

H
hzcheng 已提交
275
typedef struct {
276 277 278 279 280 281 282 283 284
  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[];
285
} SCMCreateTableMsg;
H
hzcheng 已提交
286 287

typedef struct {
288
  char   tableId[TSDB_TABLE_ID_LEN];
289
  int8_t igNotExists;
290
} SCMDropTableMsg;
H
hzcheng 已提交
291 292

typedef struct {
293 294
  char    tableId[TSDB_TABLE_ID_LEN];
  char    db[TSDB_DB_NAME_LEN];
295
  int16_t type; /* operation type   */
H
hzcheng 已提交
296
  char    tagVal[TSDB_MAX_BYTES_PER_ROW];
297
  int8_t  numOfCols; /* number of schema */
S
slguan 已提交
298
  SSchema schema[];
299
} SCMAlterTableMsg;
H
hzcheng 已提交
300

S
slguan 已提交
301
typedef struct {
S
slguan 已提交
302 303
  char clientVersion[TSDB_VERSION_LEN];
  char msgVersion[TSDB_VERSION_LEN];
S
slguan 已提交
304
  char db[TSDB_TABLE_ID_LEN + 1];
305
} SCMConnectMsg;
S
slguan 已提交
306 307

typedef struct {
S
slguan 已提交
308
  char      acctId[TSDB_ACCT_LEN + 1];
S
slguan 已提交
309 310 311 312
  char      serverVersion[TSDB_VERSION_LEN];
  int8_t    writeAuth;
  int8_t    superAuth;
  SRpcIpSet ipList;
313
} SCMConnectRsp;
S
slguan 已提交
314

H
hzcheng 已提交
315 316 317 318 319 320 321 322 323 324 325
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;
326
  int8_t  accessState;  // Configured only by command
S
slguan 已提交
327
} SAcctCfg;
H
hzcheng 已提交
328 329

typedef struct {
S
slguan 已提交
330 331
  char     user[TSDB_USER_LEN + 1];
  char     pass[TSDB_KEY_LEN + 1];
S
slguan 已提交
332
  SAcctCfg cfg;
333
} SCMCreateAcctMsg, SCMAlterAcctMsg;
H
hzcheng 已提交
334 335

typedef struct {
S
slguan 已提交
336
  char user[TSDB_USER_LEN + 1];
337
} SCMDropUserMsg, SCMDropAcctMsg;
S
slguan 已提交
338 339

typedef struct {
S
slguan 已提交
340 341
  char   user[TSDB_USER_LEN + 1];
  char   pass[TSDB_KEY_LEN + 1];
S
slguan 已提交
342 343
  int8_t privilege;
  int8_t flag;
344
} SCMCreateUserMsg, SCMAlterUserMsg;
H
hzcheng 已提交
345

S
slguan 已提交
346
typedef struct {
S
slguan 已提交
347
  char db[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
348
} SMgmtHead;
H
hzcheng 已提交
349 350

typedef struct {
351 352 353 354 355
  int32_t  contLen;
  int32_t  vgId;
  int32_t  sid;
  uint64_t uid;
  char     tableId[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
356
} SMDDropTableMsg;
H
hzcheng 已提交
357

S
slguan 已提交
358
typedef struct {
S
slguan 已提交
359 360
  int32_t contLen;
  int32_t vgId;
S
slguan 已提交
361
  int64_t uid;
S
slguan 已提交
362
  char    tableId[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
363
} SMDDropSTableMsg;
S
slguan 已提交
364

S
slguan 已提交
365
typedef struct {
366
  int32_t vgId;
S
slguan 已提交
367
} SMDDropVnodeMsg;
H
hzcheng 已提交
368 369 370 371 372 373

typedef struct SColIndexEx {
  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 已提交
374
   * whether current table schema is up-to-date.
H
hzcheng 已提交
375 376
   *
   * colIdxInBuf is used to denote the index of column in pQuery->colList,
S
slguan 已提交
377
   * this value is invalid in client side, as well as in cache block of vnode either.
H
hzcheng 已提交
378
   */
S
slguan 已提交
379 380
  int16_t  colIdx;
  int16_t  colIdxInBuf;
381
  uint16_t flag;  // denote if it is a tag or not
H
hjxilinx 已提交
382
  char     name[TSDB_COL_NAME_LEN];
H
hzcheng 已提交
383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410
} SColIndexEx;

/* sql function msg, to describe the message to vnode about sql function
 * operations in select clause */
typedef struct SSqlFuncExprMsg {
  int16_t functionId;
  int16_t numOfParams;

  SColIndexEx colInfo;
  struct ArgElem {
    int16_t argType;
    int16_t argBytes;
    union {
      double  d;
      int64_t i64;
      char *  pz;
    } argValue;
  } arg[3];
} SSqlFuncExprMsg;

typedef struct SSqlBinaryExprInfo {
  struct tSQLBinaryExpr *pBinExpr;    /*  for binary expression */
  int32_t                numOfCols;   /*  binary expression involves the readed number of columns*/
  SColIndexEx *          pReqColumns; /*  source column list */
} SSqlBinaryExprInfo;

typedef struct SSqlFunctionExpr {
  SSqlFuncExprMsg    pBase;
411
  SSqlBinaryExprInfo binExprInfo;
H
hzcheng 已提交
412 413
  int16_t            resBytes;
  int16_t            resType;
S
slguan 已提交
414
  int16_t            interResBytes;
H
hzcheng 已提交
415 416
} SSqlFunctionExpr;

S
slguan 已提交
417
typedef struct SColumnFilterInfo {
H
hzcheng 已提交
418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435
  int16_t lowerRelOptr;
  int16_t upperRelOptr;
  int16_t filterOnBinary; /* denote if current column is binary   */

  union {
    struct {
      int64_t lowerBndi;
      int64_t upperBndi;
    };
    struct {
      double lowerBndd;
      double upperBndd;
    };
    struct {
      int64_t pz;
      int64_t len;
    };
  };
S
slguan 已提交
436 437 438 439 440 441 442 443 444 445 446 447 448
} 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 已提交
449

450
typedef struct STableIdInfo {
H
hzcheng 已提交
451
  int32_t sid;
452
  int64_t uid;
453
  TSKEY   key;  // last accessed ts, for subscription
454
} STableIdInfo;
H
hzcheng 已提交
455

H
hjxilinx 已提交
456 457 458 459 460
typedef struct STimeWindow {
  TSKEY skey;
  TSKEY ekey;
} STimeWindow;

H
hzcheng 已提交
461 462
/*
 * the outputCols is equalled to or larger than numOfCols
S
slguan 已提交
463
 * e.g., select min(colName), max(colName), avg(colName) from table
H
hzcheng 已提交
464 465 466
 * the outputCols will be 3 while the numOfCols is 1.
 */
typedef struct {
467
  SMsgHead    head;
H
hjxilinx 已提交
468
  STimeWindow window;
469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490
  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)
  int16_t     tagLength;        // tag length in current query
  int16_t     numOfGroupCols;   // num of group by columns
  int16_t     orderByIdx;
  int16_t     orderType;  // used in group by xx order by xxx
  uint64_t    groupbyTagIds;
  int64_t     limit;
  int64_t     offset;
  int16_t     queryType;        // denote another query process
  int16_t     numOfOutputCols;  // final output columns numbers
  int16_t     interpoType;      // interpolate type
  uint64_t    defaultVal;       // default value array list

  int32_t     colNameLen;
  int64_t     colNameList;
S
slguan 已提交
491 492 493 494 495
  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
  SColumnInfo colList[];
S
slguan 已提交
496
} SQueryTableMsg;
H
hzcheng 已提交
497 498

typedef struct {
H
hjxilinx 已提交
499
  int32_t  code;
H
hzcheng 已提交
500
  uint64_t qhandle;
S
slguan 已提交
501
} SQueryTableRsp;
H
hzcheng 已提交
502 503

typedef struct {
504
  SMsgHead header;
H
hzcheng 已提交
505
  uint64_t qhandle;
H
hjxilinx 已提交
506
  uint16_t free;
S
slguan 已提交
507
} SRetrieveTableMsg;
H
hzcheng 已提交
508

509
typedef struct SRetrieveTableRsp {
H
hzcheng 已提交
510
  int32_t numOfRows;
511
  int8_t  completed;  // all results are returned to client
H
hzcheng 已提交
512
  int16_t precision;
513
  int64_t offset;  // updated offset value for multi-vnode projection query
H
hzcheng 已提交
514 515
  int64_t useconds;
  char    data[];
S
slguan 已提交
516
} SRetrieveTableRsp;
H
hzcheng 已提交
517 518

typedef struct {
S
slguan 已提交
519
  int32_t vgId;
520
  int32_t vnode;
S
slguan 已提交
521 522 523 524 525 526
  int64_t totalStorage;
  int64_t compStorage;
  int64_t pointsWritten;
  uint8_t status;
  uint8_t syncStatus;
  uint8_t accessState;
527
  uint8_t reserved[5];
H
hzcheng 已提交
528 529 530 531
} SVnodeLoad;

typedef struct {
  uint32_t vnode;
532 533
  uint8_t  accessState;
  uint8_t  reserved[3];
H
hzcheng 已提交
534 535
} SVnodeAccess;

536 537 538
/*
 * NOTE: sizeof(SVnodeCfg) < TSDB_FILE_HEADER_LEN / 4
 */
H
hzcheng 已提交
539
typedef struct {
S
slguan 已提交
540 541
  char     acct[TSDB_USER_LEN + 1];
  char     db[TSDB_DB_NAME_LEN + 1];
H
hzcheng 已提交
542 543 544 545 546 547 548 549 550 551 552 553 554
  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 已提交
555
  int16_t blocksPerTable;
556 557 558 559 560
  int8_t  compression;
  int8_t  commitLog;
  int8_t  replications;
  int8_t  repStrategy;
  int8_t  loadLatest;  // load into mem or not
H
hjxilinx 已提交
561
  uint8_t precision;   // time resolution
562
  int8_t  reserved[16];
563
} SVnodeCfg, SDbCfg, SCMCreateDbMsg, SCMAlterDbMsg;
H
hzcheng 已提交
564

565
typedef struct {
S
slguan 已提交
566
  char    db[TSDB_TABLE_ID_LEN + 1];
567
  uint8_t ignoreNotExists;
568
} SCMDropDbMsg, SCMUseDbMsg;
H
hzcheng 已提交
569 570 571 572 573 574 575 576 577 578 579

// 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 已提交
580
typedef struct {
S
slguan 已提交
581
  int32_t  dnodeId;
S
slguan 已提交
582 583 584 585 586
  uint32_t moduleStatus;
  uint32_t createdTime;
  uint32_t numOfVnodes;
} SDnodeState;

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

S
slguan 已提交
603
typedef struct {
S
slguan 已提交
604
  SRpcIpSet    ipList;
S
slguan 已提交
605
  SDnodeState  dnodeState;
S
slguan 已提交
606
  SVnodeAccess vnodeAccess[];
607
} SDMStatusRsp;
S
slguan 已提交
608

H
hzcheng 已提交
609 610
typedef struct {
  SVnodeCfg  cfg;
611
  SVnodeDesc vpeerDesc[TSDB_MAX_MPEERS];
S
slguan 已提交
612
} SMDCreateVnodeMsg;
H
hzcheng 已提交
613 614

typedef struct {
S
slguan 已提交
615
  char    tableId[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
616 617
  int16_t createFlag;
  char    tags[];
618
} SCMTableInfoMsg;
H
hzcheng 已提交
619 620

typedef struct {
S
slguan 已提交
621 622
  int32_t numOfTables;
  char    tableIds[];
623
} SCMMultiTableInfoMsg;
H
hzcheng 已提交
624

S
slguan 已提交
625
typedef struct {
626
  char tableId[TSDB_TABLE_ID_LEN + 1];
627
} SCMSuperTableInfoMsg;
S
slguan 已提交
628 629 630 631

typedef struct {
  int32_t  numOfDnodes;
  uint32_t dnodeIps[];
632
} SCMSuperTableInfoRsp;
S
slguan 已提交
633

S
slguan 已提交
634 635 636
typedef struct {
  int16_t elemLen;

S
slguan 已提交
637
  char    tableId[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
638 639 640 641 642 643 644 645 646 647
  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 已提交
648 649 650 651

  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 已提交
652 653
  int16_t numOfGroupCols;  // num of group by columns
  int32_t groupbyTagColumnList;
S
slguan 已提交
654
} SSuperTableMetaElemMsg;
S
slguan 已提交
655 656

typedef struct {
S
slguan 已提交
657
  int32_t numOfTables;
S
slguan 已提交
658 659 660
  int32_t join;
  int32_t joinCondLen;  // for join condition
  int32_t metaElem[TSDB_MAX_JOIN_TABLE_NUM];
S
slguan 已提交
661
} SSuperTableMetaMsg;
H
hzcheng 已提交
662 663

typedef struct {
664
  SVnodeDesc vpeerDesc[TSDB_VNODES_SUPPORT];
H
hzcheng 已提交
665 666
  int16_t    index;  // used locally
  int32_t    numOfSids;
667
  int32_t    pSidExtInfoList[];  // offset value of STableIdInfo
H
hzcheng 已提交
668 669 670
} SVnodeSidList;

typedef struct {
S
slguan 已提交
671
  int32_t  numOfTables;
H
hzcheng 已提交
672 673
  int32_t  numOfVnodes;
  uint16_t tagLen; /* tag value length */
S
slguan 已提交
674 675
  int32_t  list[]; /* offset of SVnodeSidList, compared to the SSuperTableMeta struct */
} SSuperTableMeta;
H
hzcheng 已提交
676

H
hjxilinx 已提交
677
typedef struct STableMetaMsg {
678 679 680 681 682 683 684 685 686
  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;
687
  int8_t     numOfVpeers;
688
  SVnodeDesc vpeerDesc[TSDB_VNODES_SUPPORT];
689 690 691 692
  int32_t    sid;
  int32_t    vgId;
  uint64_t   uid;
  SSchema    schema[];
H
hjxilinx 已提交
693
} STableMetaMsg;
H
hzcheng 已提交
694

S
slguan 已提交
695
typedef struct SMultiTableMeta {
696 697
  int32_t       numOfTables;
  int32_t       contLen;
H
hjxilinx 已提交
698
  STableMetaMsg metas[];
S
slguan 已提交
699
} SMultiTableMeta;
S
slguan 已提交
700

H
hzcheng 已提交
701
typedef struct {
S
slguan 已提交
702
  char name[TSDB_TABLE_ID_LEN + 1];
H
hzcheng 已提交
703 704 705 706 707 708 709 710 711
  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 已提交
712
  int8_t   type;
S
slguan 已提交
713
  char     db[TSDB_DB_NAME_LEN + 1];
H
hzcheng 已提交
714 715
  uint16_t payloadLen;
  char     payload[];
716
} SCMShowMsg;
H
hzcheng 已提交
717

H
hjxilinx 已提交
718 719 720
typedef struct SCMShowRsp {
  uint64_t      qhandle;
  STableMetaMsg tableMeta;
721
} SCMShowRsp;
S
slguan 已提交
722 723

typedef struct {
S
slguan 已提交
724
  char ip[32];
725
} SCMCreateDnodeMsg, SCMDropDnodeMsg;
H
hzcheng 已提交
726 727

typedef struct {
S
slguan 已提交
728 729 730
  uint32_t dnode;
  int32_t  vnode;
  int32_t  sid;
731
} SDMConfigTableMsg;
H
hzcheng 已提交
732

S
slguan 已提交
733
typedef struct {
S
slguan 已提交
734 735
  uint32_t dnodeId;
  int32_t  vgId;
736
} SDMConfigVnodeMsg;
H
hzcheng 已提交
737 738

typedef struct {
739 740
  char ip[32];
  char config[64];
S
slguan 已提交
741
} SMDCfgDnodeMsg, SCMCfgDnodeMsg;
H
hzcheng 已提交
742 743

typedef struct {
S
slguan 已提交
744
  char     sql[TSDB_SHOW_SQL_LEN + 1];
H
hzcheng 已提交
745 746 747
  uint32_t queryId;
  int64_t  useconds;
  int64_t  stime;
S
slguan 已提交
748
} SQueryDesc;
H
hzcheng 已提交
749 750

typedef struct {
S
slguan 已提交
751
  char     sql[TSDB_SHOW_SQL_LEN + 1];
H
hzcheng 已提交
752 753 754 755 756 757 758
  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 已提交
759
} SStreamDesc;
H
hzcheng 已提交
760 761

typedef struct {
762 763
  int32_t    numOfQueries;
  SQueryDesc qdesc[];
S
slguan 已提交
764
} SQqueryList;
H
hzcheng 已提交
765 766

typedef struct {
767 768
  int32_t     numOfStreams;
  SStreamDesc sdesc[];
S
slguan 已提交
769
} SStreamList;
S
slguan 已提交
770 771

typedef struct {
S
slguan 已提交
772 773
  SQqueryList qlist;
  SStreamList slist;
774
} SCMHeartBeatMsg;
S
slguan 已提交
775 776 777 778 779 780

typedef struct {
  uint32_t  queryId;
  uint32_t  streamId;
  int8_t    killConnection;
  SRpcIpSet ipList;
781
} SCMHeartBeatRsp;
H
hzcheng 已提交
782 783

typedef struct {
S
slguan 已提交
784
  char queryId[TSDB_KILL_MSG_LEN + 1];
785
} SCMKillQueryMsg, SCMKillStreamMsg, SCMKillConnMsg;
H
hzcheng 已提交
786 787

typedef struct {
S
slguan 已提交
788
  int32_t  vnode;
H
hzcheng 已提交
789 790 791
  int32_t  sid;
  uint64_t uid;
  uint64_t stime;  // stream starting time
S
slguan 已提交
792
  int32_t  status;
S
slguan 已提交
793
  char     tableId[TSDB_TABLE_ID_LEN + 1];
794
} SMDAlterStreamMsg;
H
hzcheng 已提交
795

S
slguan 已提交
796
#pragma pack(pop)
H
hzcheng 已提交
797 798 799 800 801 802

#ifdef __cplusplus
}
#endif

#endif