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

// message type
S
slguan 已提交
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 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 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
#define TSDB_MSG_TYPE_REG                           1
#define TSDB_MSG_TYPE_REG_RSP                       2
#define TSDB_MSG_TYPE_DNODE_SUBMIT                  3
#define TSDB_MSG_TYPE_DNODE_SUBMIT_RSP              4
#define TSDB_MSG_TYPE_DNODE_QUERY                   5
#define TSDB_MSG_TYPE_DNODE_QUERY_RSP               6
#define TSDB_MSG_TYPE_DNODE_RETRIEVE                7
#define TSDB_MSG_TYPE_DNODE_RETRIEVE_RSP            8
#define TSDB_MSG_TYPE_DNODE_CREATE_CHILD_TABLE      9
#define TSDB_MSG_TYPE_DNODE_CREATE_CHILD_TABLE_RSP  10
#define TSDB_MSG_TYPE_DNODE_CREATE_NORMAL_TABLE     11
#define TSDB_MSG_TYPE_DNODE_CREATE_NORMAL_TABLE_RSP 12
#define TSDB_MSG_TYPE_DNODE_CREATE_STREAM_TABLE     13
#define TSDB_MSG_TYPE_DNODE_CREATE_STREAM_TABLE_RSP 14
#define TSDB_MSG_TYPE_DNODE_CREATE_SUPER_TABLE      15
#define TSDB_MSG_TYPE_DNODE_CREATE_SUPER_TABLE_RSP  16
#define TSDB_MSG_TYPE_DNODE_REMOVE_CHILD_TABLE      17
#define TSDB_MSG_TYPE_DNODE_REMOVE_CHILD_TABLE_RSP  18
#define TSDB_MSG_TYPE_DNODE_REMOVE_NORMAL_TABLE     19
#define TSDB_MSG_TYPE_DNODE_REMOVE_NORMAL_TABLE_RSP 20
#define TSDB_MSG_TYPE_DNODE_REMOVE_STREAM_TABLE     21
#define TSDB_MSG_TYPE_DNODE_REMOVE_STREAM_TABLE_RSP 22
#define TSDB_MSG_TYPE_DNODE_REMOVE_SUPER_TABLE      23
#define TSDB_MSG_TYPE_DNODE_REMOVE_SUPER_TABLE_RSP  24
#define TSDB_MSG_TYPE_DNODE_ALTER_CHILD_TABLE       25
#define TSDB_MSG_TYPE_DNODE_ALTER_CHILD_TABLE_RSP   26
#define TSDB_MSG_TYPE_DNODE_ALTER_NORMAL_TABLE      27
#define TSDB_MSG_TYPE_DNODE_ALTER_NORMAL_TABLE_RSP  28
#define TSDB_MSG_TYPE_DNODE_ALTER_STREAM_TABLE      29
#define TSDB_MSG_TYPE_DNODE_ALTER_STREAM_TABLE_RSP  30
#define TSDB_MSG_TYPE_DNODE_ALTER_SUPER_TABLE       31
#define TSDB_MSG_TYPE_DNODE_ALTER_SUPER_TABLE_RSP   32
#define TSDB_MSG_TYPE_DNODE_VPEERS                  33
#define TSDB_MSG_TYPE_DNODE_VPEERS_RSP              34
#define TSDB_MSG_TYPE_DNODE_FREE_VNODE              35
#define TSDB_MSG_TYPE_DNODE_FREE_VNODE_RSP          36
#define TSDB_MSG_TYPE_DNODE_CFG                     37
#define TSDB_MSG_TYPE_DNODE_CFG_RSP                 38
#define TSDB_MSG_TYPE_DNODE_ALTER_STREAM            39
#define TSDB_MSG_TYPE_DNODE_ALTER_STREAM_RSP        40

#define TSDB_MSG_TYPE_SDB_SYNC             41
#define TSDB_MSG_TYPE_SDB_SYNC_RSP         42
#define TSDB_MSG_TYPE_SDB_FORWARD          43
#define TSDB_MSG_TYPE_SDB_FORWARD_RSP      44
#define TSDB_MSG_TYPE_CONNECT              51
#define TSDB_MSG_TYPE_CONNECT_RSP          52
#define TSDB_MSG_TYPE_CREATE_ACCT          53
#define TSDB_MSG_TYPE_CREATE_ACCT_RSP      54
#define TSDB_MSG_TYPE_ALTER_ACCT           55
#define TSDB_MSG_TYPE_ALTER_ACCT_RSP       56
#define TSDB_MSG_TYPE_DROP_ACCT            57
#define TSDB_MSG_TYPE_DROP_ACCT_RSP        58
#define TSDB_MSG_TYPE_CREATE_USER          59
#define TSDB_MSG_TYPE_CREATE_USER_RSP      60
#define TSDB_MSG_TYPE_ALTER_USER           61
#define TSDB_MSG_TYPE_ALTER_USER_RSP       62
#define TSDB_MSG_TYPE_DROP_USER            63
#define TSDB_MSG_TYPE_DROP_USER_RSP        64
#define TSDB_MSG_TYPE_CREATE_MNODE         65
#define TSDB_MSG_TYPE_CREATE_MNODE_RSP     66
#define TSDB_MSG_TYPE_DROP_MNODE           67
#define TSDB_MSG_TYPE_DROP_MNODE_RSP       68
#define TSDB_MSG_TYPE_CREATE_DNODE         69
#define TSDB_MSG_TYPE_CREATE_DNODE_RSP     70
#define TSDB_MSG_TYPE_DROP_DNODE           71
#define TSDB_MSG_TYPE_DROP_DNODE_RSP       72
#define TSDB_MSG_TYPE_ALTER_DNODE          73
#define TSDB_MSG_TYPE_ALTER_DNODE_RSP      74
#define TSDB_MSG_TYPE_CREATE_DB            75
#define TSDB_MSG_TYPE_CREATE_DB_RSP        76
#define TSDB_MSG_TYPE_DROP_DB              77
#define TSDB_MSG_TYPE_DROP_DB_RSP          78
#define TSDB_MSG_TYPE_USE_DB               79
#define TSDB_MSG_TYPE_USE_DB_RSP           80
#define TSDB_MSG_TYPE_ALTER_DB             81
#define TSDB_MSG_TYPE_ALTER_DB_RSP         82
#define TSDB_MSG_TYPE_CREATE_TABLE         83
#define TSDB_MSG_TYPE_CREATE_TABLE_RSP     84
#define TSDB_MSG_TYPE_DROP_TABLE           85
#define TSDB_MSG_TYPE_DROP_TABLE_RSP       86
#define TSDB_MSG_TYPE_ALTER_TABLE          87
#define TSDB_MSG_TYPE_ALTER_TABLE_RSP      88
#define TSDB_MSG_TYPE_VNODE_CFG            89
#define TSDB_MSG_TYPE_VNODE_CFG_RSP        90
#define TSDB_MSG_TYPE_TABLE_CFG            91
#define TSDB_MSG_TYPE_TABLE_CFG_RSP        92
#define TSDB_MSG_TYPE_TABLE_META           93
#define TSDB_MSG_TYPE_TABLE_META_RSP       94
#define TSDB_MSG_TYPE_STABLE_META          95
#define TSDB_MSG_TYPE_STABLE_META_RSP      96
#define TSDB_MSG_TYPE_MULTI_TABLE_META     97
#define TSDB_MSG_TYPE_MULTI_TABLE_META_RSP 98
#define TSDB_MSG_TYPE_ALTER_STREAM         99
#define TSDB_MSG_TYPE_ALTER_STREAM_RSP     100
#define TSDB_MSG_TYPE_SHOW                 101
#define TSDB_MSG_TYPE_SHOW_RSP             102
#define TSDB_MSG_TYPE_CFG_MNODE            103
#define TSDB_MSG_TYPE_CFG_MNODE_RSP        104
#define TSDB_MSG_TYPE_KILL_QUERY           105
#define TSDB_MSG_TYPE_KILL_QUERY_RSP       106
#define TSDB_MSG_TYPE_KILL_STREAM          107
#define TSDB_MSG_TYPE_KILL_STREAM_RSP      108
#define TSDB_MSG_TYPE_KILL_CONNECTION      109
#define TSDB_MSG_TYPE_KILL_CONNECTION_RSP  110
#define TSDB_MSG_TYPE_HEARTBEAT            111
#define TSDB_MSG_TYPE_HEARTBEAT_RSP        112
#define TSDB_MSG_TYPE_STATUS               113
#define TSDB_MSG_TYPE_STATUS_RSP           114
#define TSDB_MSG_TYPE_GRANT                115
#define TSDB_MSG_TYPE_GRANT_RSP            116
#define TSDB_MSG_TYPE_MAX                  117
H
hzcheng 已提交
143 144 145 146 147 148 149 150 151 152 153

// 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 已提交
154
  TSDB_MGMT_TABLE_ACCT,
H
hzcheng 已提交
155 156 157
  TSDB_MGMT_TABLE_USER,
  TSDB_MGMT_TABLE_DB,
  TSDB_MGMT_TABLE_TABLE,
158
  TSDB_MGMT_TABLE_DNODE,
S
slguan 已提交
159
  TSDB_MGMT_TABLE_MNODE,
H
hzcheng 已提交
160 161
  TSDB_MGMT_TABLE_VGROUP,
  TSDB_MGMT_TABLE_METRIC,
S
slguan 已提交
162
  TSDB_MGMT_TABLE_MODULE,
H
hzcheng 已提交
163 164
  TSDB_MGMT_TABLE_QUERIES,
  TSDB_MGMT_TABLE_STREAMS,
S
slguan 已提交
165
  TSDB_MGMT_TABLE_CONFIGS,
H
hzcheng 已提交
166
  TSDB_MGMT_TABLE_CONNS,
S
slguan 已提交
167 168
  TSDB_MGMT_TABLE_SCORES,
  TSDB_MGMT_TABLE_GRANTS,
L
lihui 已提交
169
  TSDB_MGMT_TABLE_VNODES,
H
hzcheng 已提交
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
  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 已提交
192
typedef enum {
S
slguan 已提交
193
  TSDB_TABLE_TYPE_SUPER_TABLE        = 0,  // super table
S
#1177  
slguan 已提交
194
  TSDB_TABLE_TYPE_CHILD_TABLE        = 1,  // table created from super table
S
slguan 已提交
195 196 197 198 199
  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 已提交
200

S
slguan 已提交
201 202 203
#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 已提交
204

S
slguan 已提交
205 206 207
#define TSDB_COL_NORMAL                0x0U
#define TSDB_COL_TAG                   0x1U
#define TSDB_COL_JOIN                  0x2U
H
hzcheng 已提交
208 209 210

extern char *taosMsg[];

S
slguan 已提交
211
#pragma pack(push, 1)
H
hzcheng 已提交
212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234

typedef struct {
  char     numOfIps;
  uint32_t ip[];
} SIpList;

typedef struct {
  char     numOfIps;
  uint32_t ip[TSDB_MAX_MGMT_IPS];
} SMgmtIpList;

typedef struct {
  char     version : 4;
  char     comp : 4;
  char     tcp : 2;
  char     spi : 3;
  char     encrypt : 3;
  uint16_t tranId;
  uint32_t uid;  // for unique ID inside a client
  uint32_t sourceId;

  // internal part
  uint32_t destId;
S
slguan 已提交
235
  uint32_t destIp;
H
hzcheng 已提交
236
  char     meterId[TSDB_UNI_LEN];
L
lihui 已提交
237
  uint16_t port;  // for UDP only
S
slguan 已提交
238
  char     empty[1];
H
hjxilinx 已提交
239
  uint8_t  msgType;
H
hzcheng 已提交
240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277
  int32_t  msgLen;
  uint8_t  content[0];
} STaosHeader;

typedef struct {
  uint32_t timeStamp;
  uint8_t  auth[TSDB_AUTH_LEN];
} STaosDigest;

typedef struct {
  unsigned char code;
  char          more[];
} STaosRsp, SMsgReply;

typedef struct {
  uint32_t customerId;
  uint32_t osId;
  uint32_t appId;
  char     hwId[TSDB_UNI_LEN];
  char     hwVersion[TSDB_VERSION_LEN];
  char     osVersion[TSDB_VERSION_LEN];
  char     appVersion[TSDB_VERSION_LEN];
  char     sdkVersion[TSDB_VERSION_LEN];
  char     name[TSDB_UNI_LEN];
  char     street[TSDB_STREET_LEN];
  char     city[TSDB_CITY_LEN];
  char     state[TSDB_STATE_LEN];
  char     country[TSDB_COUNTRY_LEN];
  uint32_t longitude;
  uint32_t latitude;
} SRegMsg;

typedef struct {
  short numOfRows;
  char  payLoad[];
} SSubmitMsg;

typedef struct {
S
slguan 已提交
278
  int32_t  vnode;
H
hzcheng 已提交
279 280 281 282 283 284 285 286
  int32_t  sid;
  int32_t  sversion;
  uint64_t uid;
  short    numOfRows;
  char     payLoad[];
} SShellSubmitBlock;

typedef struct {
S
slguan 已提交
287 288
  int8_t  import;
  int8_t  reserved[3];
H
hzcheng 已提交
289 290 291 292
  int32_t numOfSid; /* total number of sid */
  char    blks[];   /* numOfSid blocks, each blocks for one meter */
} SShellSubmitMsg;

S
slguan 已提交
293
typedef struct {
S
slguan 已提交
294
  int32_t index; // index of failed block in submit blocks
S
slguan 已提交
295 296 297 298 299 300
  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 已提交
301
  int32_t code;         // 0-success, > 0 error code
S
slguan 已提交
302 303 304 305 306 307 308
  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;
  SShellSubmitRspBlock *failedBlocks;
} SShellSubmitRspMsg;

H
hzcheng 已提交
309
typedef struct SSchema {
H
hjxilinx 已提交
310
  uint8_t  type;
H
hzcheng 已提交
311 312 313 314 315 316
  char  name[TSDB_COL_NAME_LEN];
  short colId;
  short bytes;
} SSchema;

typedef struct SMColumn {
S
slguan 已提交
317 318 319
  int8_t  type;
  int16_t colId;
  int16_t bytes;
H
hzcheng 已提交
320 321
} SMColumn;

S
#1177  
slguan 已提交
322 323 324 325 326
typedef struct {
  int32_t size;
  int8_t* data;
} SVariableMsg;

H
hzcheng 已提交
327 328 329 330 331 332
typedef struct {
  short    vnode;
  int32_t  sid;
  uint64_t uid;
  char     spi;
  char     encrypt;
S
slguan 已提交
333
  char     meterId[TSDB_TABLE_ID_LEN];
H
hzcheng 已提交
334 335 336 337 338 339 340 341 342 343 344
  char     secret[TSDB_KEY_LEN];
  char     cipheringKey[TSDB_KEY_LEN];
  uint64_t timeStamp;
  uint64_t lastCreate;
  short    numOfColumns;
  short    sqlLen;  // SQL string is after schema
  char     reserved[16];
  int32_t  sversion;
  SMColumn schema[];
} SCreateMsg;

S
slguan 已提交
345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382
typedef struct {
  int32_t  vnode;
  int32_t  sid;
  uint64_t uid;
  char     tableId[TSDB_TABLE_ID_LEN + 1];
  char     superTableId[TSDB_TABLE_ID_LEN + 1];
  uint64_t createdTime;
  int32_t  sversion;
  int16_t  numOfColumns;
  int16_t  numOfTags;
  int32_t  tagDataLen;
  int8_t   data[];
} SCreateChildTableMsg;

typedef struct {
  int32_t  vnode;
  int32_t  sid;
  uint64_t uid;
  char     tableId[TSDB_TABLE_ID_LEN + 1];
  uint64_t createdTime;
  int32_t  sversion;
  int16_t  numOfColumns;
  int8_t   data[];
} SCreateNormalTableMsg;

typedef struct {
  int32_t  vnode;
  int32_t  sid;
  uint64_t uid;
  char     tableId[TSDB_TABLE_ID_LEN + 1];
  uint64_t createdTime;
  int32_t  sversion;
  int16_t  numOfColumns;
  int32_t  sqlLen;
  int8_t   data[];
} SCreateStreamTableMsg;


H
hzcheng 已提交
383
typedef struct {
S
slguan 已提交
384
  char  db[TSDB_TABLE_ID_LEN];
385
  uint8_t ignoreNotExists;
H
hzcheng 已提交
386 387
} SDropDbMsg, SUseDbMsg;

S
slguan 已提交
388 389 390
typedef struct {
  char user[TSDB_USER_LEN];
} SDropUserMsg, SDropAcctMsg;
H
hzcheng 已提交
391

S
slguan 已提交
392 393 394
typedef struct {
  char db[TSDB_DB_NAME_LEN];
} SShowTableMsg;
H
hzcheng 已提交
395 396

typedef struct {
S
slguan 已提交
397
  char meterId[TSDB_TABLE_ID_LEN];
H
hzcheng 已提交
398 399 400 401 402 403 404 405 406 407 408 409 410
  char igExists;

  short numOfTags;

  short numOfColumns;
  short sqlLen;  // the length of SQL, it starts after schema , sql is a
  // null-terminated string
  char reserved[16];

  SSchema schema[];
} SCreateTableMsg;

typedef struct {
S
slguan 已提交
411
  char meterId[TSDB_TABLE_ID_LEN];
H
hzcheng 已提交
412 413 414 415
  char igNotExists;
} SDropTableMsg;

typedef struct {
S
slguan 已提交
416
  char    meterId[TSDB_TABLE_ID_LEN];
H
hzcheng 已提交
417 418 419 420 421 422
  short   type; /* operation type   */
  char    tagVal[TSDB_MAX_BYTES_PER_ROW];
  short   numOfCols; /* number of schema */
  SSchema schema[];
} SAlterTableMsg;

S
slguan 已提交
423
typedef struct {
S
slguan 已提交
424
  char clientVersion[TSDB_VERSION_LEN];
S
slguan 已提交
425
  char db[TSDB_TABLE_ID_LEN];
S
slguan 已提交
426
} SConnectMsg;
H
hzcheng 已提交
427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454

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;
  char    accessState;  // Configured only by command
} SAcctCfg;

typedef struct {
  char     user[TSDB_USER_LEN];
  char     pass[TSDB_KEY_LEN];
  SAcctCfg cfg;
} SCreateAcctMsg, SAlterAcctMsg;

typedef struct {
  char user[TSDB_USER_LEN];
  char pass[TSDB_KEY_LEN];
  char privilege;
  char flag;
} SCreateUserMsg, SAlterUserMsg;

S
slguan 已提交
455
typedef struct {
S
slguan 已提交
456
  char db[TSDB_TABLE_ID_LEN];
S
slguan 已提交
457
} SMgmtHead;
H
hzcheng 已提交
458 459 460 461 462 463 464 465 466 467 468 469

typedef struct {
  char acctId[TSDB_ACCT_LEN];
  char version[TSDB_VERSION_LEN];
  char writeAuth;
  char superAuth;
} SConnectRsp;

typedef struct {
  short    vnode;
  int32_t  sid;
  uint64_t uid;
S
slguan 已提交
470
  char     meterId[TSDB_TABLE_ID_LEN];
H
hzcheng 已提交
471 472
} SRemoveMeterMsg;

S
slguan 已提交
473 474 475
typedef struct {
  short vnode;
} SFreeVnodeMsg;
H
hzcheng 已提交
476 477 478 479 480 481 482 483 484

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
   * whether current meter schema is up-to-date.
   *
   * colIdxInBuf is used to denote the index of column in pQuery->colList,
S
slguan 已提交
485
   * this value is invalid in client side, as well as in cache block of vnode either.
H
hzcheng 已提交
486
   */
S
slguan 已提交
487 488 489
  int16_t  colIdx;
  int16_t  colIdxInBuf;
  uint16_t flag;         // denote if it is a tag or not
H
hzcheng 已提交
490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520
} 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 已提交
521
  int16_t            interResBytes;
H
hzcheng 已提交
522 523
} SSqlFunctionExpr;

S
slguan 已提交
524
typedef struct SColumnFilterInfo {
H
hzcheng 已提交
525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542
  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 已提交
543 544 545 546 547 548 549 550 551 552 553 554 555
} 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 已提交
556 557 558 559 560 561

/*
 * enable vnode to understand how to group several tables with different tag;
 */
typedef struct SMeterSidExtInfo {
  int32_t sid;
562
  int64_t uid;
563
  TSKEY   key;   // key for subscription
H
hzcheng 已提交
564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586
  char    tags[];
} SMeterSidExtInfo;

/*
 * the outputCols is equalled to or larger than numOfCols
 * e.g., select min(colName), max(colName), avg(colName) from meter_name
 * the outputCols will be 3 while the numOfCols is 1.
 */
typedef struct {
  int16_t  vnode;
  int32_t  numOfSids;
  uint64_t pSidExtInfo;  // meter id & tag info ptr, in windows pointer may

  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)

S
slguan 已提交
587
  int64_t nAggTimeInterval;  // time interval for aggregation, in million second
588 589
  int64_t slidingTime;       // value for sliding window
  
S
slguan 已提交
590 591
  // tag schema, used to parse tag information in pSidExtInfo
  uint64_t pTagSchema;
H
hzcheng 已提交
592 593 594 595

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

S
slguan 已提交
596
  int16_t  numOfGroupCols;  // num of group by columns
H
hzcheng 已提交
597 598 599 600 601 602 603
  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 已提交
604
  int16_t queryType;        // denote another query process
H
hzcheng 已提交
605 606 607 608 609 610 611 612
  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 已提交
613 614 615 616 617 618 619
  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[];
H
hzcheng 已提交
620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637
} SQueryMeterMsg;

typedef struct {
  char     code;
  uint64_t qhandle;
} SQueryMeterRsp;

typedef struct {
  TSKEY   skey;
  TSKEY   ekey;
  int32_t num;
  short   order;
  short   numOfCols;
  short   colList[];
} SQueryMsg;

typedef struct {
  uint64_t qhandle;
H
hjxilinx 已提交
638
  uint16_t free;
H
hzcheng 已提交
639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657
} SRetrieveMeterMsg;

typedef struct {
  int32_t numOfRows;
  int16_t precision;
  int64_t offset;  // updated offset value for multi-vnode projection query
  int64_t useconds;
  char    data[];
} SRetrieveMeterRsp;

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 已提交
658
  uint8_t  syncStatus;
S
slguan 已提交
659
  uint8_t  reserved[15];
H
hzcheng 已提交
660 661 662 663 664 665 666 667 668 669
} SVnodeLoad;

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

// NOTE: sizeof(SVnodeCfg) < TSDB_FILE_HEADER_LEN/4
typedef struct {
  char     acct[TSDB_USER_LEN];
S
slguan 已提交
670 671 672 673
  /*
   * the message is too large, so it may will overwrite the cfg information in meterobj.v*
   * recover to origin codes
   */
S
slguan 已提交
674
  //char     db[TSDB_TABLE_ID_LEN+2]; // 8bytes align
S
slguan 已提交
675
  char     db[TSDB_DB_NAME_LEN];
H
hzcheng 已提交
676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697
  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;
  int16_t blocksPerMeter;
  char    compression;
  char    commitLog;
  char    replications;

  char repStrategy;
  char loadLatest;  // load into mem or not
H
hjxilinx 已提交
698
  uint8_t precision;   // time resolution
H
hzcheng 已提交
699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719

  char reserved[16];
} SVnodeCfg, SCreateDbMsg, SDbCfg, SAlterDbMsg;

// 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 已提交
720 721 722
  uint16_t   numOfTotalVnodes;  // from config file
  uint16_t   unused;
  float      diskAvailable;  // GB
H
hzcheng 已提交
723 724 725 726 727 728 729 730 731 732 733 734 735 736 737
  uint32_t   openVnodes;
  char       reserved[16];
  SVnodeLoad load[];
} SStatusMsg;

typedef struct {
  uint32_t moduleStatus;
  uint32_t createdTime;
  uint32_t numOfVnodes;
  uint32_t reserved;
} SDnodeState;

// internal message
typedef struct {
  uint32_t destId;
S
slguan 已提交
738
  uint32_t destIp;
H
hzcheng 已提交
739
  char     meterId[TSDB_UNI_LEN];
S
slguan 已提交
740
  char     empty[3];
S
slguan 已提交
741
  uint8_t  msgType;
H
hzcheng 已提交
742 743 744 745 746 747 748 749 750 751 752 753
  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;

typedef struct {
S
slguan 已提交
754 755
  int32_t dnode;  //the ID of dnode
  int32_t vnode;  //the index of vnode
H
hzcheng 已提交
756 757
} SVPeerDesc;

S
slguan 已提交
758 759 760 761 762
typedef struct {
  int32_t numOfVPeers;
  SVPeerDesc vpeerDesc[];
} SVpeerDescArray;

H
hzcheng 已提交
763 764 765 766 767 768 769
typedef struct {
  int32_t    vnode;
  SVnodeCfg  cfg;
  SVPeerDesc vpeerDesc[];
} SVPeersMsg;

typedef struct {
S
slguan 已提交
770
  char  meterId[TSDB_TABLE_ID_LEN];
H
hzcheng 已提交
771 772 773 774 775
  short createFlag;
  char  tags[];
} SMeterInfoMsg;

typedef struct {
S
slguan 已提交
776 777 778
  int32_t numOfMeters;
  char    meterId[];
} SMultiMeterInfoMsg;
H
hzcheng 已提交
779

S
slguan 已提交
780 781 782
typedef struct {
  int16_t elemLen;

S
slguan 已提交
783
  char    meterId[TSDB_TABLE_ID_LEN];
S
slguan 已提交
784 785 786 787 788 789 790 791 792 793
  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 已提交
794 795 796 797

  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 已提交
798 799 800 801 802 803 804 805 806
  int16_t numOfGroupCols;  // num of group by columns
  int32_t groupbyTagColumnList;
} SMetricMetaElemMsg;

typedef struct {
  int32_t numOfMeters;
  int32_t join;
  int32_t joinCondLen;  // for join condition
  int32_t metaElem[TSDB_MAX_JOIN_TABLE_NUM];
S
slguan 已提交
807
} SSuperTableMetaMsg;
H
hzcheng 已提交
808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823

typedef struct {
  SVPeerDesc vpeerDesc[TSDB_VNODES_SUPPORT];
  int16_t    index;  // used locally
  int32_t    numOfSids;
  int32_t    pSidExtInfoList[];  // offset value of SMeterSidExtInfo
} SVnodeSidList;

typedef struct {
  int32_t  numOfMeters;
  int32_t  numOfVnodes;
  uint16_t tagLen; /* tag value length */
  int32_t  list[]; /* offset of SVnodeSidList, compared to the SMetricMeta struct */
} SMetricMeta;

typedef struct SMeterMeta {
S
slguan 已提交
824 825
  uint8_t numOfTags : 6;
  uint8_t precision : 2;
S
slguan 已提交
826
  uint8_t tableType : 4;
S
slguan 已提交
827 828
  uint8_t index : 4;  // used locally

H
hzcheng 已提交
829 830
  int16_t numOfColumns;

S
slguan 已提交
831 832
  int16_t rowSize;  // used locally, calculated in client
  int16_t sversion;
H
hzcheng 已提交
833

S
slguan 已提交
834
  SVPeerDesc vpeerDesc[TSDB_VNODES_SUPPORT];
H
hzcheng 已提交
835

S
slguan 已提交
836 837
  int32_t  sid;
  int32_t  vgid;
H
hzcheng 已提交
838 839 840
  uint64_t uid;
} SMeterMeta;

S
slguan 已提交
841
typedef struct SMultiMeterMeta {
S
slguan 已提交
842
  char       meterId[TSDB_TABLE_ID_LEN];  // note: This field must be at the front
S
slguan 已提交
843 844 845
  SMeterMeta meta;
} SMultiMeterMeta;

H
hzcheng 已提交
846
typedef struct {
S
slguan 已提交
847
  char name[TSDB_TABLE_ID_LEN];
H
hzcheng 已提交
848 849 850 851 852 853 854 855 856 857 858 859 860 861
  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 {
  char     type;
  uint16_t payloadLen;
  char     payload[];
} SShowMsg;

S
slguan 已提交
862 863 864
typedef struct {
  char ip[20];
} SCreateMnodeMsg, SDropMnodeMsg, SCreateDnodeMsg, SDropDnodeMsg;
H
hzcheng 已提交
865 866 867 868 869 870 871 872 873 874 875

typedef struct {
  uint64_t   qhandle;
  SMeterMeta meterMeta;
} SShowRspMsg;

typedef struct {
  int32_t vnode;
  int32_t sid;
} SMeterCfgMsg;

S
slguan 已提交
876 877 878
typedef struct {
  int32_t vnode;
} SVpeerCfgMsg;
H
hzcheng 已提交
879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932

typedef struct {
  char ip[20];
  char config[60];
} SCfgMsg;

typedef struct {
  uint32_t queryId;
  uint32_t streamId;
  char     killConnection;
  SIpList  ipList;
} SHeartBeatRsp;

typedef struct {
  char     sql[TSDB_SHOW_SQL_LEN];
  uint32_t queryId;
  int64_t  useconds;
  int64_t  stime;
} SQDesc;

typedef struct {
  char     sql[TSDB_SHOW_SQL_LEN];
  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;
} SSDesc;

typedef struct {
  int32_t numOfQueries;
  SQDesc  qdesc[];
} SQList;

typedef struct {
  int32_t numOfStreams;
  SSDesc  sdesc[];
} SSList;

typedef struct {
  uint64_t handle;
  char     queryId[TSDB_KILL_MSG_LEN];
} SKillQuery, SKillStream, SKillConnection;

typedef struct {
  short    vnode;
  int32_t  sid;
  uint64_t uid;
  uint64_t stime;  // stream starting time
  char     status;
} SAlterStreamMsg;

S
slguan 已提交
933
#pragma pack(pop)
H
hzcheng 已提交
934 935 936 937 938 939

#ifdef __cplusplus
}
#endif

#endif