taosmsg.h 22.0 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 24 25
#include <stdint.h>
#include <stdbool.h>

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

// message type
S
dnode  
slguan 已提交
32 33
#define TSDB_MSG_TYPE_REG                    1
#define TSDB_MSG_TYPE_REG_RSP                2
S
slguan 已提交
34 35 36 37
#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
S
slguan 已提交
38 39
#define TSDB_MSG_TYPE_RETRIEVE               7
#define TSDB_MSG_TYPE_RETRIEVE_RSP           8
S
dnode  
slguan 已提交
40 41 42 43
#define TSDB_MSG_TYPE_DNODE_CREATE_TABLE     9
#define TSDB_MSG_TYPE_DNODE_CREATE_TABLE_RSP 10
#define TSDB_MSG_TYPE_DNODE_REMOVE_TABLE     11
#define TSDB_MSG_TYPE_DNODE_REMOVE_TABLE_RSP 12
S
slguan 已提交
44 45 46 47
#define TSDB_MSG_TYPE_CREATE_VNODE           13
#define TSDB_MSG_TYPE_CREATE_VNODE_RSP       14
#define TSDB_MSG_TYPE_FREE_VNODE             15
#define TSDB_MSG_TYPE_FREE_VNODE_RSP         16
S
dnode  
slguan 已提交
48 49 50 51 52 53 54 55
#define TSDB_MSG_TYPE_DNODE_CFG              17
#define TSDB_MSG_TYPE_DNODE_CFG_RSP          18
#define TSDB_MSG_TYPE_DNODE_ALTER_STREAM     19
#define TSDB_MSG_TYPE_DNODE_ALTER_STREAM_RSP 20
#define TSDB_MSG_TYPE_SDB_SYNC               21
#define TSDB_MSG_TYPE_SDB_SYNC_RSP           22
#define TSDB_MSG_TYPE_SDB_FORWARD            23
#define TSDB_MSG_TYPE_SDB_FORWARD_RSP        24
S
slguan 已提交
56 57
#define TSDB_MSG_TYPE_DROP_STABLE            25
#define TSDB_MSG_TYPE_DROP_STABLE_RSP        26
S
dnode  
slguan 已提交
58 59 60 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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
#define TSDB_MSG_TYPE_CONNECT                31
#define TSDB_MSG_TYPE_CONNECT_RSP            32
#define TSDB_MSG_TYPE_CREATE_ACCT            33
#define TSDB_MSG_TYPE_CREATE_ACCT_RSP        34
#define TSDB_MSG_TYPE_ALTER_ACCT             35
#define TSDB_MSG_TYPE_ALTER_ACCT_RSP         36
#define TSDB_MSG_TYPE_DROP_ACCT              37
#define TSDB_MSG_TYPE_DROP_ACCT_RSP          38
#define TSDB_MSG_TYPE_CREATE_USER            39
#define TSDB_MSG_TYPE_CREATE_USER_RSP        40
#define TSDB_MSG_TYPE_ALTER_USER             41
#define TSDB_MSG_TYPE_ALTER_USER_RSP         42
#define TSDB_MSG_TYPE_DROP_USER              43
#define TSDB_MSG_TYPE_DROP_USER_RSP          44
#define TSDB_MSG_TYPE_CREATE_MNODE           45
#define TSDB_MSG_TYPE_CREATE_MNODE_RSP       46
#define TSDB_MSG_TYPE_DROP_MNODE             47
#define TSDB_MSG_TYPE_DROP_MNODE_RSP         48
#define TSDB_MSG_TYPE_CREATE_DNODE           49
#define TSDB_MSG_TYPE_CREATE_DNODE_RSP       50
#define TSDB_MSG_TYPE_DROP_DNODE             51
#define TSDB_MSG_TYPE_DROP_DNODE_RSP         52
#define TSDB_MSG_TYPE_ALTER_DNODE            53
#define TSDB_MSG_TYPE_ALTER_DNODE_RSP        54
#define TSDB_MSG_TYPE_CREATE_DB              55
#define TSDB_MSG_TYPE_CREATE_DB_RSP          56
#define TSDB_MSG_TYPE_DROP_DB                57
#define TSDB_MSG_TYPE_DROP_DB_RSP            58
#define TSDB_MSG_TYPE_USE_DB                 59
#define TSDB_MSG_TYPE_USE_DB_RSP             60
#define TSDB_MSG_TYPE_ALTER_DB               61
#define TSDB_MSG_TYPE_ALTER_DB_RSP           62
#define TSDB_MSG_TYPE_CREATE_TABLE           63
#define TSDB_MSG_TYPE_CREATE_TABLE_RSP       64
#define TSDB_MSG_TYPE_DROP_TABLE             65
#define TSDB_MSG_TYPE_DROP_TABLE_RSP         66
#define TSDB_MSG_TYPE_ALTER_TABLE            67
#define TSDB_MSG_TYPE_ALTER_TABLE_RSP        68
#define TSDB_MSG_TYPE_VNODE_CFG              69
#define TSDB_MSG_TYPE_VNODE_CFG_RSP          70
#define TSDB_MSG_TYPE_TABLE_CFG              71
#define TSDB_MSG_TYPE_TABLE_CFG_RSP          72
#define TSDB_MSG_TYPE_TABLE_META             73
#define TSDB_MSG_TYPE_TABLE_META_RSP         74
#define TSDB_MSG_TYPE_STABLE_META            75
#define TSDB_MSG_TYPE_STABLE_META_RSP        76
#define TSDB_MSG_TYPE_MULTI_TABLE_META       77
#define TSDB_MSG_TYPE_MULTI_TABLE_META_RSP   78
#define TSDB_MSG_TYPE_ALTER_STREAM           79
#define TSDB_MSG_TYPE_ALTER_STREAM_RSP       80
#define TSDB_MSG_TYPE_SHOW                   81
#define TSDB_MSG_TYPE_SHOW_RSP               82
#define TSDB_MSG_TYPE_CFG_MNODE              83
#define TSDB_MSG_TYPE_CFG_MNODE_RSP          84
#define TSDB_MSG_TYPE_KILL_QUERY             85
#define TSDB_MSG_TYPE_KILL_QUERY_RSP         86
#define TSDB_MSG_TYPE_KILL_STREAM            87
#define TSDB_MSG_TYPE_KILL_STREAM_RSP        88
#define TSDB_MSG_TYPE_KILL_CONNECTION        89
#define TSDB_MSG_TYPE_KILL_CONNECTION_RSP    90
#define TSDB_MSG_TYPE_HEARTBEAT              91
#define TSDB_MSG_TYPE_HEARTBEAT_RSP          92
#define TSDB_MSG_TYPE_STATUS                 93
#define TSDB_MSG_TYPE_STATUS_RSP             94
#define TSDB_MSG_TYPE_GRANT                  95
#define TSDB_MSG_TYPE_GRANT_RSP              96
#define TSDB_MSG_TYPE_MAX                    97
H
hzcheng 已提交
125 126 127 128 129 130 131 132 133 134 135

// IE type
#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

enum _mgmt_table {
S
slguan 已提交
136
  TSDB_MGMT_TABLE_ACCT,
H
hzcheng 已提交
137 138 139
  TSDB_MGMT_TABLE_USER,
  TSDB_MGMT_TABLE_DB,
  TSDB_MGMT_TABLE_TABLE,
140
  TSDB_MGMT_TABLE_DNODE,
S
slguan 已提交
141
  TSDB_MGMT_TABLE_MNODE,
H
hzcheng 已提交
142 143
  TSDB_MGMT_TABLE_VGROUP,
  TSDB_MGMT_TABLE_METRIC,
S
slguan 已提交
144
  TSDB_MGMT_TABLE_MODULE,
H
hzcheng 已提交
145 146
  TSDB_MGMT_TABLE_QUERIES,
  TSDB_MGMT_TABLE_STREAMS,
S
slguan 已提交
147
  TSDB_MGMT_TABLE_CONFIGS,
H
hzcheng 已提交
148
  TSDB_MGMT_TABLE_CONNS,
S
slguan 已提交
149 150
  TSDB_MGMT_TABLE_SCORES,
  TSDB_MGMT_TABLE_GRANTS,
L
lihui 已提交
151
  TSDB_MGMT_TABLE_VNODES,
H
hzcheng 已提交
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
  TSDB_MGMT_TABLE_MAX,
};

#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

#define TSDB_ALTER_TABLE_ADD_COLUMN         5
#define TSDB_ALTER_TABLE_DROP_COLUMN        6

#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

#define TSDB_ALTER_USER_PASSWD         0x1
#define TSDB_ALTER_USER_PRIVILEGES     0x2

#define TSDB_KILL_MSG_LEN              30

S
#1177  
slguan 已提交
174
typedef enum {
S
slguan 已提交
175
  TSDB_TABLE_TYPE_SUPER_TABLE        = 0,  // super table
S
#1177  
slguan 已提交
176
  TSDB_TABLE_TYPE_CHILD_TABLE        = 1,  // table created from super table
S
slguan 已提交
177 178 179 180 181
  TSDB_TABLE_TYPE_NORMAL_TABLE       = 2,  // ordinary table
  TSDB_TABLE_TYPE_STREAM_TABLE       = 3,  // table created from stream computing
  TSDB_TABLE_TYPE_MAX                = 4
} ETableType;

H
hzcheng 已提交
182

S
slguan 已提交
183 184 185
#define TSDB_VN_READ_ACCCESS  ((char)0x1)
#define TSDB_VN_WRITE_ACCCESS ((char)0x2)
#define TSDB_VN_ALL_ACCCESS (TSDB_VN_READ_ACCCESS | TSDB_VN_WRITE_ACCCESS)
H
hzcheng 已提交
186

S
slguan 已提交
187 188 189
#define TSDB_COL_NORMAL                0x0U
#define TSDB_COL_TAG                   0x1U
#define TSDB_COL_JOIN                  0x2U
H
hzcheng 已提交
190 191 192

extern char *taosMsg[];

S
slguan 已提交
193
#pragma pack(push, 1)
H
hzcheng 已提交
194 195

typedef struct {
S
slguan 已提交
196
  int32_t  vnode;
H
hzcheng 已提交
197 198 199
  int32_t  sid;
  int32_t  sversion;
  uint64_t uid;
S
slguan 已提交
200
  int16_t  numOfRows;
H
hzcheng 已提交
201 202 203 204
  char     payLoad[];
} SShellSubmitBlock;

typedef struct {
S
slguan 已提交
205 206
  int16_t import;
  int16_t vnode;
H
hzcheng 已提交
207
  int32_t numOfSid; /* total number of sid */
S
slguan 已提交
208
  char    blks[];   /* numOfSid blocks, each blocks for one table */
H
hzcheng 已提交
209 210
} SShellSubmitMsg;

S
slguan 已提交
211
typedef struct {
S
slguan 已提交
212
  int32_t index; // index of failed block in submit blocks
S
slguan 已提交
213 214 215 216 217 218
  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
} SShellSubmitRspBlock;

typedef struct {
S
slguan 已提交
219
  int32_t code;         // 0-success, > 0 error code
S
slguan 已提交
220 221 222 223
  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 已提交
224
  SShellSubmitRspBlock failedBlocks[];
S
slguan 已提交
225 226
} SShellSubmitRspMsg;

S
slguan 已提交
227
typedef struct SSchema {
S
slguan 已提交
228
  uint8_t type;
S
slguan 已提交
229
  char    name[TSDB_COL_NAME_LEN + 1];
S
slguan 已提交
230 231
  int16_t colId;
  int16_t bytes;
S
slguan 已提交
232
} SSchema;
H
hzcheng 已提交
233

S
slguan 已提交
234
typedef struct {
S
slguan 已提交
235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
  int32_t  vnode;  //the index of vnode
  uint32_t ip;
} SVPeerDesc;

typedef struct {
  int8_t     tableType;
  int16_t    numOfColumns;
  int16_t    numOfTags;
  int32_t    sid;
  int32_t    sversion;
  int32_t    tagDataLen;
  int32_t    sqlDataLen;
  int32_t    contLen;
  int32_t    numOfVPeers;
  uint64_t   uid;
  uint64_t   superTableUid;
  uint64_t   createdTime;
  SVPeerDesc vpeerDesc[TSDB_MAX_MPEERS];
  char       tableId[TSDB_TABLE_ID_LEN + 1];
  char       superTableId[TSDB_TABLE_ID_LEN + 1];
  char       data[];
S
slguan 已提交
256
} SDCreateTableMsg;
S
slguan 已提交
257

H
hzcheng 已提交
258
typedef struct {
S
slguan 已提交
259 260
  char      tableId[TSDB_TABLE_ID_LEN + 1];
  char      db[TSDB_DB_NAME_LEN + 1];
261 262 263 264 265
  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
  int16_t   reserved[16];
S
slguan 已提交
266
  char      schema[];
S
slguan 已提交
267
} SCreateTableMsg;
H
hzcheng 已提交
268 269

typedef struct {
S
slguan 已提交
270
  char   tableId[TSDB_TABLE_ID_LEN + 1];
271
  int8_t igNotExists;
H
hzcheng 已提交
272 273 274
} SDropTableMsg;

typedef struct {
S
slguan 已提交
275 276
  char    tableId[TSDB_TABLE_ID_LEN + 1];
  char    db[TSDB_DB_NAME_LEN + 1];
277
  int16_t type; /* operation type   */
H
hzcheng 已提交
278
  char    tagVal[TSDB_MAX_BYTES_PER_ROW];
279
  int8_t  numOfCols; /* number of schema */
S
slguan 已提交
280
  SSchema schema[];
H
hzcheng 已提交
281 282
} SAlterTableMsg;

S
slguan 已提交
283
typedef struct {
S
slguan 已提交
284 285
  char clientVersion[TSDB_VERSION_LEN];
  char msgVersion[TSDB_VERSION_LEN];
S
slguan 已提交
286
  char db[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
287
} SConnectMsg;
S
slguan 已提交
288 289

typedef struct {
S
slguan 已提交
290
  char      acctId[TSDB_ACCT_LEN + 1];
S
slguan 已提交
291 292 293 294
  char      serverVersion[TSDB_VERSION_LEN];
  int8_t    writeAuth;
  int8_t    superAuth;
  SRpcIpSet ipList;
S
slguan 已提交
295
} SConnectRsp;
S
slguan 已提交
296

H
hzcheng 已提交
297 298 299 300 301 302 303 304 305 306 307
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;
S
slguan 已提交
308
  int8_t  accessState;   // Configured only by command
S
slguan 已提交
309
} SAcctCfg;
H
hzcheng 已提交
310 311

typedef struct {
S
slguan 已提交
312 313
  char       user[TSDB_USER_LEN + 1];
  char       pass[TSDB_KEY_LEN + 1];
S
slguan 已提交
314 315
  SAcctCfg cfg;
} SCreateAcctMsg, SAlterAcctMsg;
H
hzcheng 已提交
316 317

typedef struct {
S
slguan 已提交
318
  char user[TSDB_USER_LEN + 1];
S
slguan 已提交
319
} SDropUserMsg, SDropAcctMsg;
S
slguan 已提交
320 321

typedef struct {
S
slguan 已提交
322 323
  char   user[TSDB_USER_LEN + 1];
  char   pass[TSDB_KEY_LEN + 1];
S
slguan 已提交
324 325
  int8_t privilege;
  int8_t flag;
S
slguan 已提交
326
} SCreateUserMsg, SAlterUserMsg;
H
hzcheng 已提交
327

S
slguan 已提交
328
typedef struct {
S
slguan 已提交
329
  char db[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
330
} SMgmtHead;
H
hzcheng 已提交
331 332

typedef struct {
S
slguan 已提交
333 334 335 336 337
  int32_t    sid;
  int32_t    numOfVPeers;
  uint64_t   uid;
  SVPeerDesc vpeerDesc[TSDB_MAX_MPEERS];
  char       tableId[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
338
} SDRemoveTableMsg;
H
hzcheng 已提交
339

S
slguan 已提交
340
typedef struct {
S
slguan 已提交
341 342
  char    tableId[TSDB_TABLE_ID_LEN + 1];
  int64_t uid;
S
slguan 已提交
343 344
} SDRemoveSuperTableMsg;

S
slguan 已提交
345
typedef struct {
S
slguan 已提交
346
  int32_t vnode;
S
slguan 已提交
347
} SFreeVnodeMsg;
H
hzcheng 已提交
348 349 350 351 352 353

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 已提交
354
   * whether current table schema is up-to-date.
H
hzcheng 已提交
355 356
   *
   * colIdxInBuf is used to denote the index of column in pQuery->colList,
S
slguan 已提交
357
   * this value is invalid in client side, as well as in cache block of vnode either.
H
hzcheng 已提交
358
   */
S
slguan 已提交
359 360 361
  int16_t  colIdx;
  int16_t  colIdxInBuf;
  uint16_t flag;         // denote if it is a tag or not
H
hjxilinx 已提交
362
  char     name[TSDB_COL_NAME_LEN];
H
hzcheng 已提交
363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393
} 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;
  SSqlBinaryExprInfo pBinExprInfo;
  int16_t            resBytes;
  int16_t            resType;
S
slguan 已提交
394
  int16_t            interResBytes;
H
hzcheng 已提交
395 396
} SSqlFunctionExpr;

S
slguan 已提交
397
typedef struct SColumnFilterInfo {
H
hzcheng 已提交
398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415
  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 已提交
416 417 418 419 420 421 422 423 424 425 426 427 428
} 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 已提交
429 430 431 432

/*
 * enable vnode to understand how to group several tables with different tag;
 */
S
slguan 已提交
433
typedef struct STableSidExtInfo {
H
hzcheng 已提交
434
  int32_t sid;
435
  int64_t uid;
436
  TSKEY   key;   // key for subscription
H
hzcheng 已提交
437
  char    tags[];
S
slguan 已提交
438
} STableSidExtInfo;
H
hzcheng 已提交
439 440 441

/*
 * the outputCols is equalled to or larger than numOfCols
S
slguan 已提交
442
 * e.g., select min(colName), max(colName), avg(colName) from table
H
hzcheng 已提交
443 444 445 446 447
 * the outputCols will be 3 while the numOfCols is 1.
 */
typedef struct {
  int16_t  vnode;
  int32_t  numOfSids;
S
slguan 已提交
448
  uint64_t pSidExtInfo;  // table id & tag info ptr, in windows pointer may
H
hzcheng 已提交
449 450 451 452 453 454 455 456 457 458 459

  uint64_t uid;
  TSKEY    skey;
  TSKEY    ekey;

  int16_t order;
  int16_t orderColId;

  int16_t numOfCols;         // the number of columns will be load from vnode
  char    intervalTimeUnit;  // time interval type, for revisement of interval(1d)

460
  int64_t intervalTime;  // time interval for aggregation, in million second
461
  int64_t slidingTime;       // value for sliding window
S
slguan 已提交
462

S
slguan 已提交
463 464
  // tag schema, used to parse tag information in pSidExtInfo
  uint64_t pTagSchema;
H
hzcheng 已提交
465 466 467 468

  int16_t numOfTagsCols;  // required number of tags
  int16_t tagLength;      // tag length in current query

S
slguan 已提交
469
  int16_t  numOfGroupCols;  // num of group by columns
H
hzcheng 已提交
470 471 472 473 474 475 476
  int16_t  orderByIdx;
  int16_t  orderType;  // used in group by xx order by xxx
  uint64_t groupbyTagIds;

  int64_t limit;
  int64_t offset;

S
slguan 已提交
477
  int16_t queryType;        // denote another query process
H
hzcheng 已提交
478 479 480 481 482 483 484 485
  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 已提交
486 487 488 489 490 491 492
  int64_t pSqlFuncExprs;

  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 已提交
493
} SQueryTableMsg;
H
hzcheng 已提交
494 495 496 497

typedef struct {
  char     code;
  uint64_t qhandle;
S
slguan 已提交
498
} SQueryTableRsp;
H
hzcheng 已提交
499 500 501

typedef struct {
  uint64_t qhandle;
H
hjxilinx 已提交
502
  uint16_t free;
S
slguan 已提交
503
} SRetrieveTableMsg;
H
hzcheng 已提交
504 505 506 507 508 509 510

typedef struct {
  int32_t numOfRows;
  int16_t precision;
  int64_t offset;  // updated offset value for multi-vnode projection query
  int64_t useconds;
  char    data[];
S
slguan 已提交
511
} SRetrieveTableRsp;
H
hzcheng 已提交
512 513 514 515 516 517 518 519 520 521

typedef struct {
  uint32_t vnode;
  uint32_t vgId;
  uint8_t  status;
  uint8_t  dropStatus;
  uint8_t  accessState;
  int64_t  totalStorage;
  int64_t  compStorage;
  int64_t  pointsWritten;
S
slguan 已提交
522
  uint8_t  syncStatus;
S
slguan 已提交
523
  uint8_t  reserved[15];
H
hzcheng 已提交
524 525 526 527 528 529 530
} SVnodeLoad;

typedef struct {
  uint32_t vnode;
  char     accessState;
} SVnodeAccess;

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

560
typedef struct {
S
slguan 已提交
561
  char    db[TSDB_TABLE_ID_LEN + 1];
562
  uint8_t ignoreNotExists;
S
slguan 已提交
563
} SDropDbMsg, SUseDbMsg;
H
hzcheng 已提交
564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581

// 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;

typedef struct {
  uint32_t   version;
  uint32_t   publicIp;
  uint32_t   lastReboot;  // time stamp for last reboot
  uint16_t   numOfCores;
  uint8_t    alternativeRole;
  uint8_t    reserve;
S
slguan 已提交
582 583 584
  uint16_t   numOfTotalVnodes;  // from config file
  uint16_t   unused;
  float      diskAvailable;  // GB
H
hzcheng 已提交
585 586 587 588 589
  uint32_t   openVnodes;
  char       reserved[16];
  SVnodeLoad load[];
} SStatusMsg;

S
slguan 已提交
590 591 592 593 594
typedef struct {
  int32_t   code;
  SRpcIpSet ipList;
} SStatusRsp;

H
hzcheng 已提交
595 596 597 598 599 600 601 602 603 604
typedef struct {
  uint32_t moduleStatus;
  uint32_t createdTime;
  uint32_t numOfVnodes;
  uint32_t reserved;
} SDnodeState;

// internal message
typedef struct {
  uint32_t destId;
S
slguan 已提交
605
  uint32_t destIp;
S
slguan 已提交
606
  char     tableId[TSDB_UNI_LEN + 1];
S
slguan 已提交
607
  char     empty[3];
S
slguan 已提交
608
  uint8_t  msgType;
H
hzcheng 已提交
609 610 611 612 613 614 615 616 617 618 619
  int32_t  msgLen;
  uint8_t  content[0];
} SIntMsg;

typedef struct {
  char spi;
  char encrypt;
  char secret[TSDB_KEY_LEN];  // key is changed if updated
  char cipheringKey[TSDB_KEY_LEN];
} SSecIe;

S
slguan 已提交
620 621 622 623 624
typedef struct {
  int32_t numOfVPeers;
  SVPeerDesc vpeerDesc[];
} SVpeerDescArray;

H
hzcheng 已提交
625 626 627
typedef struct {
  int32_t    vnode;
  SVnodeCfg  cfg;
S
slguan 已提交
628
  SVPeerDesc vpeerDesc[TSDB_MAX_MPEERS];
S
slguan 已提交
629
} SCreateVnodeMsg;
H
hzcheng 已提交
630 631

typedef struct {
S
slguan 已提交
632
  char    tableId[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
633 634 635
  int16_t createFlag;
  char    tags[];
} STableInfoMsg;
H
hzcheng 已提交
636 637

typedef struct {
S
slguan 已提交
638 639 640
  int32_t numOfTables;
  char    tableIds[];
} SMultiTableInfoMsg;
H
hzcheng 已提交
641

S
slguan 已提交
642
typedef struct {
S
slguan 已提交
643
  char    tableId[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
644 645 646 647 648 649 650
} SSuperTableInfoMsg;

typedef struct {
  int32_t  numOfDnodes;
  uint32_t dnodeIps[];
} SSuperTableInfoRsp;

S
slguan 已提交
651 652 653
typedef struct {
  int16_t elemLen;

S
slguan 已提交
654
  char    tableId[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
655 656 657 658 659 660 661 662 663 664
  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 已提交
665 666 667 668

  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 已提交
669 670
  int16_t numOfGroupCols;  // num of group by columns
  int32_t groupbyTagColumnList;
S
slguan 已提交
671
} SSuperTableMetaElemMsg;
S
slguan 已提交
672 673

typedef struct {
S
slguan 已提交
674
  int32_t numOfTables;
S
slguan 已提交
675 676 677
  int32_t join;
  int32_t joinCondLen;  // for join condition
  int32_t metaElem[TSDB_MAX_JOIN_TABLE_NUM];
S
slguan 已提交
678
} SSuperTableMetaMsg;
H
hzcheng 已提交
679 680 681 682 683

typedef struct {
  SVPeerDesc vpeerDesc[TSDB_VNODES_SUPPORT];
  int16_t    index;  // used locally
  int32_t    numOfSids;
S
slguan 已提交
684
  int32_t    pSidExtInfoList[];  // offset value of STableSidExtInfo
H
hzcheng 已提交
685 686 687
} SVnodeSidList;

typedef struct {
S
slguan 已提交
688
  int32_t  numOfTables;
H
hzcheng 已提交
689 690
  int32_t  numOfVnodes;
  uint16_t tagLen; /* tag value length */
S
slguan 已提交
691 692
  int32_t  list[]; /* offset of SVnodeSidList, compared to the SSuperTableMeta struct */
} SSuperTableMeta;
H
hzcheng 已提交
693

S
slguan 已提交
694
typedef struct STableMeta {
S
slguan 已提交
695
  char    tableId[TSDB_TABLE_ID_LEN + 1];  // note: This field must be at the front
S
slguan 已提交
696
  int32_t contLen;
S
slguan 已提交
697 698
  uint8_t numOfTags : 6;
  uint8_t precision : 2;
S
slguan 已提交
699
  uint8_t tableType : 4;
S
slguan 已提交
700
  uint8_t index : 4;  // used locally
H
hzcheng 已提交
701
  int16_t numOfColumns;
S
slguan 已提交
702 703
  int16_t rowSize;  // used locally, calculated in client
  int16_t sversion;
S
slguan 已提交
704
  int8_t  numOfVpeers;
S
slguan 已提交
705 706 707
  SVPeerDesc vpeerDesc[TSDB_VNODES_SUPPORT];
  int32_t  sid;
  int32_t  vgid;
H
hzcheng 已提交
708
  uint64_t uid;
S
slguan 已提交
709
  SSchema  schema[];
S
slguan 已提交
710
} STableMeta;
H
hzcheng 已提交
711

S
slguan 已提交
712
typedef struct SMultiTableMeta {
S
slguan 已提交
713 714
  int32_t    numOfTables;
  int32_t    contLen;
S
slguan 已提交
715 716
  STableMeta metas[];
} SMultiTableMeta;
S
slguan 已提交
717

H
hzcheng 已提交
718
typedef struct {
S
slguan 已提交
719
  char name[TSDB_TABLE_ID_LEN + 1];
H
hzcheng 已提交
720 721 722 723 724 725 726 727 728
  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 已提交
729
  int8_t   type;
S
slguan 已提交
730
  char     db[TSDB_DB_NAME_LEN + 1];
H
hzcheng 已提交
731 732 733 734 735 736
  uint16_t payloadLen;
  char     payload[];
} SShowMsg;

typedef struct {
  uint64_t   qhandle;
S
slguan 已提交
737
  STableMeta tableMeta;
S
slguan 已提交
738 739 740
} SShowRsp;

typedef struct {
S
slguan 已提交
741
  char ip[32];
S
slguan 已提交
742
} SCreateMnodeMsg, SDropMnodeMsg, SCreateDnodeMsg, SDropDnodeMsg;
H
hzcheng 已提交
743 744

typedef struct {
S
slguan 已提交
745 746 747
  uint32_t dnode;
  int32_t  vnode;
  int32_t  sid;
S
slguan 已提交
748
} STableCfgMsg;
H
hzcheng 已提交
749

S
slguan 已提交
750
typedef struct {
S
slguan 已提交
751
  uint32_t dnode;
S
slguan 已提交
752 753
  int32_t vnode;
} SVpeerCfgMsg;
H
hzcheng 已提交
754 755

typedef struct {
756 757
  char ip[32];
  char config[64];
S
slguan 已提交
758
} SCfgDnodeMsg;
H
hzcheng 已提交
759 760

typedef struct {
S
slguan 已提交
761
  char     sql[TSDB_SHOW_SQL_LEN + 1];
H
hzcheng 已提交
762 763 764
  uint32_t queryId;
  int64_t  useconds;
  int64_t  stime;
S
slguan 已提交
765
} SQueryDesc;
H
hzcheng 已提交
766 767

typedef struct {
S
slguan 已提交
768
  char     sql[TSDB_SHOW_SQL_LEN + 1];
H
hzcheng 已提交
769 770 771 772 773 774 775
  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 已提交
776
} SStreamDesc;
H
hzcheng 已提交
777 778 779

typedef struct {
  int32_t numOfQueries;
S
slguan 已提交
780 781
  SQueryDesc  qdesc[];
} SQqueryList;
H
hzcheng 已提交
782 783 784

typedef struct {
  int32_t numOfStreams;
S
slguan 已提交
785 786
  SStreamDesc  sdesc[];
} SStreamList;
S
slguan 已提交
787 788

typedef struct {
S
slguan 已提交
789 790 791
  SQqueryList qlist;
  SStreamList slist;
} SHeartBeatMsg;
S
slguan 已提交
792 793 794 795 796 797

typedef struct {
  uint32_t  queryId;
  uint32_t  streamId;
  int8_t    killConnection;
  SRpcIpSet ipList;
S
slguan 已提交
798
} SHeartBeatRsp;
H
hzcheng 已提交
799 800

typedef struct {
S
slguan 已提交
801
  char queryId[TSDB_KILL_MSG_LEN + 1];
S
slguan 已提交
802
} SKillQueryMsg, SKillStreamMsg, SKillConnectionMsg;
H
hzcheng 已提交
803 804

typedef struct {
S
slguan 已提交
805
  int32_t  vnode;
H
hzcheng 已提交
806 807 808
  int32_t  sid;
  uint64_t uid;
  uint64_t stime;  // stream starting time
S
slguan 已提交
809
  int32_t  status;
S
slguan 已提交
810 811
  char     tableId[TSDB_TABLE_ID_LEN + 1];
} SDAlterStreamMsg;
H
hzcheng 已提交
812

S
slguan 已提交
813
#pragma pack(pop)
H
hzcheng 已提交
814 815 816 817 818 819

#ifdef __cplusplus
}
#endif

#endif