taosmsg.h 21.4 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 "trpc.h"
H
hzcheng 已提交
29 30

// message type
S
dnode  
slguan 已提交
31 32
#define TSDB_MSG_TYPE_REG                    1
#define TSDB_MSG_TYPE_REG_RSP                2
S
slguan 已提交
33 34 35 36
#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 已提交
37 38
#define TSDB_MSG_TYPE_RETRIEVE               7
#define TSDB_MSG_TYPE_RETRIEVE_RSP           8
S
slguan 已提交
39

S
slguan 已提交
40
// message from mnode to dnode
S
slguan 已提交
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
#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 已提交
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
// message from client to mnode
#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
S
slguan 已提交
79 80
#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
S
slguan 已提交
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
#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
#define TSDB_MSG_TYPE_CM_STABLE_META         65
#define TSDB_MSG_TYPE_CM_STABLE_META_RSP     66
#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 115 116 117 118 119 120 121 122
// message from dnode to mnode
#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
S
slguan 已提交
123

S
slguan 已提交
124 125 126 127
#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
S
slguan 已提交
128

S
slguan 已提交
129
#define TSDB_MSG_TYPE_MAX                    105
H
hzcheng 已提交
130 131 132 133 134 135 136 137 138 139 140

// 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 已提交
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 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
  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
slguan 已提交
179 180 181
#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 已提交
182

H
hjxilinx 已提交
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 {
S
slguan 已提交
192
  int32_t  vnode;
H
hzcheng 已提交
193 194 195
  int32_t  sid;
  int32_t  sversion;
  uint64_t uid;
S
slguan 已提交
196
  int16_t  numOfRows;
H
hzcheng 已提交
197 198 199 200
  char     payLoad[];
} SShellSubmitBlock;

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

S
slguan 已提交
207
typedef struct {
S
slguan 已提交
208
  int32_t index; // index of failed block in submit blocks
S
slguan 已提交
209 210 211 212 213 214
  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 已提交
215
  int32_t code;         // 0-success, > 0 error code
S
slguan 已提交
216 217 218 219
  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 已提交
220
  SShellSubmitRspBlock failedBlocks[];
S
slguan 已提交
221 222
} SShellSubmitRspMsg;

S
slguan 已提交
223
typedef struct SSchema {
S
slguan 已提交
224
  uint8_t type;
H
hjxilinx 已提交
225
  char    name[TSDB_COL_NAME_LEN];
S
slguan 已提交
226 227
  int16_t colId;
  int16_t bytes;
S
slguan 已提交
228
} SSchema;
H
hzcheng 已提交
229

S
slguan 已提交
230
typedef struct {
S
slguan 已提交
231 232
  int32_t  vnode;  //the index of vnode
  uint32_t ip;
233
} SVnodeDesc;
S
slguan 已提交
234

S
slguan 已提交
235 236
typedef struct {
  int32_t numOfVnodes;
S
slguan 已提交
237
} SMsgDesc;
S
slguan 已提交
238

S
slguan 已提交
239
typedef struct {
S
slguan 已提交
240 241
  int32_t contLen;
  int32_t vgId;
S
slguan 已提交
242
} SMsgHead;
S
slguan 已提交
243 244 245 246

typedef struct {
  int32_t    contLen;
  int32_t    vgId;
S
slguan 已提交
247 248 249 250 251 252 253 254 255 256
  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;
257 258
  char       tableId[TSDB_TABLE_ID_LEN];
  char       superTableId[TSDB_TABLE_ID_LEN];
S
slguan 已提交
259
  char       data[];
S
slguan 已提交
260
} SMDCreateTableMsg;
S
slguan 已提交
261

H
hzcheng 已提交
262
typedef struct {
263 264
  char      tableId[TSDB_TABLE_ID_LEN];
  char      db[TSDB_DB_NAME_LEN];
265 266 267 268
  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
S
slguan 已提交
269 270
  int32_t   contLen;
  int8_t    reserved[16];
S
slguan 已提交
271
  char      schema[];
272
} SCMCreateTableMsg;
H
hzcheng 已提交
273 274

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

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

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

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

H
hzcheng 已提交
302 303 304 305 306 307 308 309 310 311 312
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 已提交
313
  int8_t  accessState;   // Configured only by command
S
slguan 已提交
314
} SAcctCfg;
H
hzcheng 已提交
315 316

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

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

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

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

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

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

S
slguan 已提交
352
typedef struct {
353
  int32_t  vgId;
S
slguan 已提交
354
} SMDDropVnodeMsg;
H
hzcheng 已提交
355 356 357 358 359 360

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

S
slguan 已提交
404
typedef struct SColumnFilterInfo {
H
hzcheng 已提交
405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422
  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 已提交
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 438 439

/*
 * enable vnode to understand how to group several tables with different tag;
 */
S
slguan 已提交
440
typedef struct STableSidExtInfo {
H
hzcheng 已提交
441
  int32_t sid;
442
  int64_t uid;
443
  TSKEY   key;   // key for subscription
H
hzcheng 已提交
444
  char    tags[];
S
slguan 已提交
445
} STableSidExtInfo;
H
hzcheng 已提交
446

H
hjxilinx 已提交
447 448 449 450 451
typedef struct STimeWindow {
  TSKEY skey;
  TSKEY ekey;
} STimeWindow;

H
hzcheng 已提交
452 453
/*
 * the outputCols is equalled to or larger than numOfCols
S
slguan 已提交
454
 * e.g., select min(colName), max(colName), avg(colName) from table
H
hzcheng 已提交
455 456 457 458
 * the outputCols will be 3 while the numOfCols is 1.
 */
typedef struct {
  int16_t  vnode;
H
hjxilinx 已提交
459
  int32_t  numOfTables;
S
slguan 已提交
460
  uint64_t pSidExtInfo;  // table id & tag info ptr, in windows pointer may
H
hzcheng 已提交
461 462

  uint64_t uid;
H
hjxilinx 已提交
463
  STimeWindow window;
H
hzcheng 已提交
464 465 466 467 468

  int16_t order;
  int16_t orderColId;

  int16_t numOfCols;         // the number of columns will be load from vnode
H
hjxilinx 已提交
469
  char    slidingTimeUnit;   // time interval type, for revisement of interval(1d)
H
hzcheng 已提交
470

H
hjxilinx 已提交
471
  int64_t intervalTime;      // time interval for aggregation, in million second
472
  int64_t slidingTime;       // value for sliding window
S
slguan 已提交
473

S
slguan 已提交
474 475
  // tag schema, used to parse tag information in pSidExtInfo
  uint64_t pTagSchema;
H
hzcheng 已提交
476

H
hjxilinx 已提交
477 478
  int16_t  numOfTagsCols;  // required number of tags
  int16_t  tagLength;      // tag length in current query
H
hzcheng 已提交
479

S
slguan 已提交
480
  int16_t  numOfGroupCols;  // num of group by columns
H
hzcheng 已提交
481 482 483 484
  int16_t  orderByIdx;
  int16_t  orderType;  // used in group by xx order by xxx
  uint64_t groupbyTagIds;

H
hjxilinx 已提交
485 486
  int64_t  limit;
  int64_t  offset;
H
hzcheng 已提交
487

H
hjxilinx 已提交
488 489
  int16_t  queryType;        // denote another query process
  int16_t  numOfOutputCols;  // final output columns numbers
H
hzcheng 已提交
490 491 492 493

  int16_t  interpoType;  // interpolate type
  uint64_t defaultVal;   // default value array list

H
hjxilinx 已提交
494 495
  int32_t  colNameLen;
  int64_t  colNameList;
H
hzcheng 已提交
496

H
hjxilinx 已提交
497
  int64_t  pSqlFuncExprs;
S
slguan 已提交
498 499 500 501 502 503

  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 已提交
504
} SQueryTableMsg;
H
hzcheng 已提交
505 506 507 508

typedef struct {
  char     code;
  uint64_t qhandle;
S
slguan 已提交
509
} SQueryTableRsp;
H
hzcheng 已提交
510 511 512

typedef struct {
  uint64_t qhandle;
H
hjxilinx 已提交
513
  uint16_t free;
S
slguan 已提交
514
} SRetrieveTableMsg;
H
hzcheng 已提交
515 516 517 518 519 520 521

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 已提交
522
} SRetrieveTableRsp;
H
hzcheng 已提交
523 524

typedef struct {
S
slguan 已提交
525
  int32_t vgId;
526
  int32_t vnode;
S
slguan 已提交
527 528 529 530 531 532
  int64_t totalStorage;
  int64_t compStorage;
  int64_t pointsWritten;
  uint8_t status;
  uint8_t syncStatus;
  uint8_t accessState;
533
  uint8_t reserved[5];
H
hzcheng 已提交
534 535 536 537
} SVnodeLoad;

typedef struct {
  uint32_t vnode;
538 539
  uint8_t  accessState;
  uint8_t  reserved[3];
H
hzcheng 已提交
540 541
} SVnodeAccess;

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

571
typedef struct {
S
slguan 已提交
572
  char    db[TSDB_TABLE_ID_LEN + 1];
573
  uint8_t ignoreNotExists;
574
} SCMDropDbMsg, SCMUseDbMsg;
H
hzcheng 已提交
575 576 577 578 579 580 581 582 583 584 585

// 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 已提交
586
typedef struct {
S
slguan 已提交
587
  int32_t  dnodeId;
S
slguan 已提交
588 589 590 591 592
  uint32_t moduleStatus;
  uint32_t createdTime;
  uint32_t numOfVnodes;
} SDnodeState;

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

S
slguan 已提交
609
typedef struct {
S
slguan 已提交
610
  SRpcIpSet    ipList;
S
slguan 已提交
611
  SDnodeState  dnodeState;
S
slguan 已提交
612
  SVnodeAccess vnodeAccess[];
613
} SDMStatusRsp;
S
slguan 已提交
614

H
hzcheng 已提交
615 616
typedef struct {
  SVnodeCfg  cfg;
617
  SVnodeDesc vpeerDesc[TSDB_MAX_MPEERS];
S
slguan 已提交
618
} SMDCreateVnodeMsg;
H
hzcheng 已提交
619 620

typedef struct {
S
slguan 已提交
621
  char    tableId[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
622 623
  int16_t createFlag;
  char    tags[];
624
} SCMTableInfoMsg;
H
hzcheng 已提交
625 626

typedef struct {
S
slguan 已提交
627 628
  int32_t numOfTables;
  char    tableIds[];
629
} SCMMultiTableInfoMsg;
H
hzcheng 已提交
630

S
slguan 已提交
631
typedef struct {
S
slguan 已提交
632
  char    tableId[TSDB_TABLE_ID_LEN + 1];
633
} SCMSuperTableInfoMsg;
S
slguan 已提交
634 635 636 637

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

S
slguan 已提交
640 641 642
typedef struct {
  int16_t elemLen;

S
slguan 已提交
643
  char    tableId[TSDB_TABLE_ID_LEN + 1];
S
slguan 已提交
644 645 646 647 648 649 650 651 652 653
  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 已提交
654 655 656 657

  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 已提交
658 659
  int16_t numOfGroupCols;  // num of group by columns
  int32_t groupbyTagColumnList;
S
slguan 已提交
660
} SSuperTableMetaElemMsg;
S
slguan 已提交
661 662

typedef struct {
S
slguan 已提交
663
  int32_t numOfTables;
S
slguan 已提交
664 665 666
  int32_t join;
  int32_t joinCondLen;  // for join condition
  int32_t metaElem[TSDB_MAX_JOIN_TABLE_NUM];
S
slguan 已提交
667
} SSuperTableMetaMsg;
H
hzcheng 已提交
668 669

typedef struct {
670
  SVnodeDesc vpeerDesc[TSDB_VNODES_SUPPORT];
H
hzcheng 已提交
671 672
  int16_t    index;  // used locally
  int32_t    numOfSids;
S
slguan 已提交
673
  int32_t    pSidExtInfoList[];  // offset value of STableSidExtInfo
H
hzcheng 已提交
674 675 676
} SVnodeSidList;

typedef struct {
S
slguan 已提交
677
  int32_t  numOfTables;
H
hzcheng 已提交
678 679
  int32_t  numOfVnodes;
  uint16_t tagLen; /* tag value length */
S
slguan 已提交
680 681
  int32_t  list[]; /* offset of SVnodeSidList, compared to the SSuperTableMeta struct */
} SSuperTableMeta;
H
hzcheng 已提交
682

H
hjxilinx 已提交
683 684
typedef struct STableMetaMsg {
  char    tableId[TSDB_TABLE_ID_LEN];  // note: This field must be at the front
S
slguan 已提交
685
  int32_t contLen;
H
hjxilinx 已提交
686 687 688
  uint8_t numOfTags;
  uint8_t precision;
  uint8_t tableType;
H
hzcheng 已提交
689
  int16_t numOfColumns;
S
slguan 已提交
690
  int16_t sversion;
H
hjxilinx 已提交
691
  
S
slguan 已提交
692
  int8_t  numOfVpeers;
693
  SVnodeDesc vpeerDesc[TSDB_VNODES_SUPPORT];
S
slguan 已提交
694 695
  int32_t  sid;
  int32_t  vgid;
H
hzcheng 已提交
696
  uint64_t uid;
S
slguan 已提交
697
  SSchema  schema[];
H
hjxilinx 已提交
698
} STableMetaMsg;
H
hzcheng 已提交
699

S
slguan 已提交
700
typedef struct SMultiTableMeta {
S
slguan 已提交
701 702
  int32_t    numOfTables;
  int32_t    contLen;
H
hjxilinx 已提交
703
  STableMetaMsg metas[];
S
slguan 已提交
704
} SMultiTableMeta;
S
slguan 已提交
705

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

H
hjxilinx 已提交
723 724 725
typedef struct SCMShowRsp {
  uint64_t      qhandle;
  STableMetaMsg tableMeta;
726
} SCMShowRsp;
S
slguan 已提交
727 728

typedef struct {
S
slguan 已提交
729
  char ip[32];
730
} SCMCreateDnodeMsg, SCMDropDnodeMsg;
H
hzcheng 已提交
731 732

typedef struct {
S
slguan 已提交
733 734 735
  uint32_t dnode;
  int32_t  vnode;
  int32_t  sid;
736
} SDMConfigTableMsg;
H
hzcheng 已提交
737

S
slguan 已提交
738
typedef struct {
S
slguan 已提交
739
  uint32_t dnode;
S
slguan 已提交
740
  int32_t vnode;
741
} SDMConfigVnodeMsg;
H
hzcheng 已提交
742 743

typedef struct {
744 745
  char ip[32];
  char config[64];
S
slguan 已提交
746
} SMDCfgDnodeMsg, SCMCfgDnodeMsg;
H
hzcheng 已提交
747 748

typedef struct {
S
slguan 已提交
749
  char     sql[TSDB_SHOW_SQL_LEN + 1];
H
hzcheng 已提交
750 751 752
  uint32_t queryId;
  int64_t  useconds;
  int64_t  stime;
S
slguan 已提交
753
} SQueryDesc;
H
hzcheng 已提交
754 755

typedef struct {
S
slguan 已提交
756
  char     sql[TSDB_SHOW_SQL_LEN + 1];
H
hzcheng 已提交
757 758 759 760 761 762 763
  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 已提交
764
} SStreamDesc;
H
hzcheng 已提交
765 766 767

typedef struct {
  int32_t numOfQueries;
S
slguan 已提交
768 769
  SQueryDesc  qdesc[];
} SQqueryList;
H
hzcheng 已提交
770 771 772

typedef struct {
  int32_t numOfStreams;
S
slguan 已提交
773 774
  SStreamDesc  sdesc[];
} SStreamList;
S
slguan 已提交
775 776

typedef struct {
S
slguan 已提交
777 778
  SQqueryList qlist;
  SStreamList slist;
779
} SCMHeartBeatMsg;
S
slguan 已提交
780 781 782 783 784 785

typedef struct {
  uint32_t  queryId;
  uint32_t  streamId;
  int8_t    killConnection;
  SRpcIpSet ipList;
786
} SCMHeartBeatRsp;
H
hzcheng 已提交
787 788

typedef struct {
S
slguan 已提交
789
  char queryId[TSDB_KILL_MSG_LEN + 1];
790
} SCMKillQueryMsg, SCMKillStreamMsg, SCMKillConnMsg;
H
hzcheng 已提交
791 792

typedef struct {
S
slguan 已提交
793
  int32_t  vnode;
H
hzcheng 已提交
794 795 796
  int32_t  sid;
  uint64_t uid;
  uint64_t stime;  // stream starting time
S
slguan 已提交
797
  int32_t  status;
S
slguan 已提交
798
  char     tableId[TSDB_TABLE_ID_LEN + 1];
799
} SMDAlterStreamMsg;
H
hzcheng 已提交
800

S
slguan 已提交
801
#pragma pack(pop)
H
hzcheng 已提交
802 803 804 805 806 807

#ifdef __cplusplus
}
#endif

#endif