taosmsg.h 26.6 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 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
/*
 * 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

#include "tsdb.h"

#define TSDB_CODE_SUCCESS                    0
#define TSDB_CODE_ACTION_IN_PROGRESS         1

#define TSDB_CODE_LAST_SESSION_NOT_FINISHED  5
#define TSDB_CODE_INVALID_SESSION_ID         6
#define TSDB_CODE_INVALID_TRAN_ID            7
#define TSDB_CODE_INVALID_MSG_TYPE           8
#define TSDB_CODE_ALREADY_PROCESSED          9
#define TSDB_CODE_AUTH_FAILURE               10
#define TSDB_CODE_WRONG_MSG_SIZE             11
#define TSDB_CODE_UNEXPECTED_RESPONSE        12
#define TSDB_CODE_INVALID_RESPONSE_TYPE      13
#define TSDB_CODE_NO_RESOURCE                14
#define TSDB_CODE_INVALID_TIME_STAMP         15
#define TSDB_CODE_MISMATCHED_METER_ID        16
#define TSDB_CODE_ACTION_TRANS_NOT_FINISHED  17
#define TSDB_CODE_ACTION_NOT_ONLINE          18
#define TSDB_CODE_ACTION_SEND_FAILD          19
#define TSDB_CODE_NOT_ACTIVE_SESSION         20
H
hjxilinx 已提交
44
#define TSDB_CODE_INVALID_VNODE_ID           21
H
hzcheng 已提交
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
#define TSDB_CODE_APP_ERROR                  22
#define TSDB_CODE_INVALID_IE                 23
#define TSDB_CODE_INVALID_VALUE              24
#define TSDB_CODE_REDIRECT                   25
#define TSDB_CODE_ALREADY_THERE              26
#define TSDB_CODE_INVALID_METER_ID           27
#define TSDB_CODE_INVALID_SQL                28
#define TSDB_CODE_NETWORK_UNAVAIL            29
#define TSDB_CODE_INVALID_MSG_LEN            30
#define TSDB_CODE_INVALID_DB                 31
#define TSDB_CODE_INVALID_TABLE              32
#define TSDB_CODE_DB_ALREADY_EXIST           33
#define TSDB_CODE_TABLE_ALREADY_EXIST        34
#define TSDB_CODE_INVALID_USER               35
#define TSDB_CODE_INVALID_ACCT               36
#define TSDB_CODE_INVALID_PASS               37
#define TSDB_CODE_DB_NOT_SELECTED            38
#define TSDB_CODE_MEMORY_CORRUPTED           39
#define TSDB_CODE_USER_ALREADY_EXIST         40
#define TSDB_CODE_NO_RIGHTS                  41
#define TSDB_CODE_DISCONNECTED               42
#define TSDB_CODE_NO_MASTER                  43
#define TSDB_CODE_NOT_CONFIGURED             44
#define TSDB_CODE_INVALID_OPTION             45
#define TSDB_CODE_NODE_OFFLINE               46
#define TSDB_CODE_SYNC_REQUIRED              47
S
slguan 已提交
71
#define TSDB_CODE_NO_ENOUGH_DNODES           48
H
hzcheng 已提交
72 73 74 75 76
#define TSDB_CODE_UNSYNCED                   49
#define TSDB_CODE_TOO_SLOW                   50
#define TSDB_CODE_OTHERS                     51
#define TSDB_CODE_NO_REMOVE_MASTER           52
#define TSDB_CODE_WRONG_SCHEMA               53
H
hjxilinx 已提交
77
#define TSDB_CODE_NOT_ACTIVE_VNODE           54
H
hzcheng 已提交
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
#define TSDB_CODE_TOO_MANY_USERS             55
#define TSDB_CODE_TOO_MANY_DATABSES          56
#define TSDB_CODE_TOO_MANY_TABLES            57
#define TSDB_CODE_TOO_MANY_DNODES            58
#define TSDB_CODE_TOO_MANY_ACCTS             59
#define TSDB_CODE_ACCT_ALREADY_EXIST         60
#define TSDB_CODE_DNODE_ALREADY_EXIST        61
#define TSDB_CODE_SDB_ERROR                  62
#define TSDB_CODE_METRICMETA_EXPIRED         63    // local cached metric-meta expired causes error in metric query
#define TSDB_CODE_NOT_READY                  64    // peer is not ready to process data
#define TSDB_CODE_MAX_SESSIONS               65    // too many sessions
#define TSDB_CODE_MAX_CONNECTIONS            66    // too many connections
#define TSDB_CODE_SESSION_ALREADY_EXIST      67
#define TSDB_CODE_NO_QSUMMARY                68
#define TSDB_CODE_SERV_OUT_OF_MEMORY         69
#define TSDB_CODE_INVALID_QHANDLE            70
#define TSDB_CODE_RELATED_TABLES_EXIST       71
#define TSDB_CODE_MONITOR_DB_FORBEIDDEN      72
#define TSDB_CODE_VG_COMMITLOG_INIT_FAILED   73
#define TSDB_CODE_VG_INIT_FAILED             74
#define TSDB_CODE_DATA_ALREADY_IMPORTED      75
#define TSDB_CODE_OPS_NOT_SUPPORT            76
#define TSDB_CODE_INVALID_QUERY_ID           77
#define TSDB_CODE_INVALID_STREAM_ID          78
#define TSDB_CODE_INVALID_CONNECTION         79
#define TSDB_CODE_ACTION_NOT_BALANCED        80
#define TSDB_CODE_CLI_OUT_OF_MEMORY          81
#define TSDB_CODE_DATA_OVERFLOW              82
#define TSDB_CODE_QUERY_CANCELLED            83
#define TSDB_CODE_GRANT_TIMESERIES_LIMITED   84
#define TSDB_CODE_GRANT_EXPIRED              85
#define TSDB_CODE_CLI_NO_DISKSPACE           86
#define TSDB_CODE_FILE_CORRUPTED             87
#define TSDB_CODE_INVALID_CLIENT_VERSION     88
#define TSDB_CODE_INVALID_ACCT_PARAMETER     89
#define TSDB_CODE_NOT_ENOUGH_TIME_SERIES     90
#define TSDB_CODE_NO_WRITE_ACCESS            91
#define TSDB_CODE_NO_READ_ACCESS             92
#define TSDB_CODE_GRANT_DB_LIMITED           93
#define TSDB_CODE_GRANT_USER_LIMITED         94
#define TSDB_CODE_GRANT_CONN_LIMITED         95
#define TSDB_CODE_GRANT_STREAM_LIMITED       96
#define TSDB_CODE_GRANT_SPEED_LIMITED        97
#define TSDB_CODE_GRANT_STORAGE_LIMITED      98
#define TSDB_CODE_GRANT_QUERYTIME_LIMITED    99
#define TSDB_CODE_GRANT_ACCT_LIMITED         100
#define TSDB_CODE_GRANT_DNODE_LIMITED        101
#define TSDB_CODE_GRANT_CPU_LIMITED          102
#define TSDB_CODE_SESSION_NOT_READY          103      // table NOT in ready state
#define TSDB_CODE_BATCH_SIZE_TOO_BIG         104
#define TSDB_CODE_TIMESTAMP_OUT_OF_RANGE     105
#define TSDB_CODE_INVALID_QUERY_MSG          106      // failed to validate the sql expression msg by vnode
130 131
#define TSDB_CODE_CACHE_BLOCK_TS_DISORDERED  107      // time stamp in cache block is disordered
#define TSDB_CODE_FILE_BLOCK_TS_DISORDERED   108      // time stamp in file block is disordered
S
slguan 已提交
132
#define TSDB_CODE_INVALID_COMMIT_LOG         109      // commit log init failed
S
slguan 已提交
133
#define TSDB_CODE_SERVER_NO_SPACE            110
S
slguan 已提交
134 135 136
#define TSDB_CODE_NOT_SUPER_TABLE            111      //
#define TSDB_CODE_DUPLICATE_TAGS             112      // tags value for join not unique
#define TSDB_CODE_INVALID_SUBMIT_MSG         113
H
hjxilinx 已提交
137 138
#define TSDB_CODE_NOT_ACTIVE_TABLE           114
#define TSDB_CODE_INVALID_TABLE_ID           115
H
hzcheng 已提交
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202

// message type
#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_NWCHANGE         5
#define TSDB_MSG_TYPE_NWCHANGE_RSP     6
#define TSDB_MSG_TYPE_DELIVER          7
#define TSDB_MSG_TYPE_DELIVER_RSP      8

#define TSDB_MSG_TYPE_CREATE           9
#define TSDB_MSG_TYPE_CREATE_RSP       10
#define TSDB_MSG_TYPE_REMOVE           11
#define TSDB_MSG_TYPE_REMOVE_RSP       12
#define TSDB_MSG_TYPE_VPEERS           13
#define TSDB_MSG_TYPE_VPEERS_RSP       14
#define TSDB_MSG_TYPE_FREE_VNODE       15
#define TSDB_MSG_TYPE_FREE_VNODE_RSP   16
#define TSDB_MSG_TYPE_VPEER_CFG        17
#define TSDB_MSG_TYPE_VPEER_CFG_RSP    18
#define TSDB_MSG_TYPE_METER_CFG        19
#define TSDB_MSG_TYPE_METER_CFG_RSP    20

#define TSDB_MSG_TYPE_VPEER_FWD        21
#define TSDB_MSG_TYPE_VPEER_FWD_RSP    22
#define TSDB_MSG_TYPE_SYNC             23
#define TSDB_MSG_TYPE_SYNC_RSP         24

#define TSDB_MSG_TYPE_INSERT           25
#define TSDB_MSG_TYPE_INSERT_RSP       26
#define TSDB_MSG_TYPE_QUERY            27
#define TSDB_MSG_TYPE_QUERY_RSP        28
#define TSDB_MSG_TYPE_RETRIEVE         29
#define TSDB_MSG_TYPE_RETRIEVE_RSP     30

#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_CREATE_USER      35
#define TSDB_MSG_TYPE_CREATE_USER_RSP  36
#define TSDB_MSG_TYPE_DROP_ACCT        37
#define TSDB_MSG_TYPE_DROP_ACCT_RSP    38
#define TSDB_MSG_TYPE_DROP_USER        39
#define TSDB_MSG_TYPE_DROP_USER_RSP    40
#define TSDB_MSG_TYPE_ALTER_USER       41
#define TSDB_MSG_TYPE_ALTER_USER_RSP   42
#define TSDB_MSG_TYPE_CREATE_MNODE     43
#define TSDB_MSG_TYPE_CREATE_MNODE_RSP 44
#define TSDB_MSG_TYPE_DROP_MNODE       45
#define TSDB_MSG_TYPE_DROP_MNODE_RSP   46
#define TSDB_MSG_TYPE_CREATE_PNODE     47
#define TSDB_MSG_TYPE_CREATE_PNODE_RSP 48
#define TSDB_MSG_TYPE_DROP_PNODE       49
#define TSDB_MSG_TYPE_DROP_PNODE_RSP   50
#define TSDB_MSG_TYPE_CREATE_DB        51
#define TSDB_MSG_TYPE_CREATE_DB_RSP    52
#define TSDB_MSG_TYPE_DROP_DB          53
#define TSDB_MSG_TYPE_DROP_DB_RSP      54
#define TSDB_MSG_TYPE_USE_DB           55
#define TSDB_MSG_TYPE_USE_DB_RSP       56
#define TSDB_MSG_TYPE_CREATE_TABLE     57
#define TSDB_MSG_TYPE_CREATE_TABLE_RSP 58
S
slguan 已提交
203

H
hzcheng 已提交
204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234
#define TSDB_MSG_TYPE_DROP_TABLE       59
#define TSDB_MSG_TYPE_DROP_TABLE_RSP   60
#define TSDB_MSG_TYPE_METERINFO        61
#define TSDB_MSG_TYPE_METERINFO_RSP    62
#define TSDB_MSG_TYPE_METRIC_META      63
#define TSDB_MSG_TYPE_METRIC_META_RSP  64
#define TSDB_MSG_TYPE_SHOW             65
#define TSDB_MSG_TYPE_SHOW_RSP         66

#define TSDB_MSG_TYPE_FORWARD          67
#define TSDB_MSG_TYPE_FORWARD_RSP      68

#define TSDB_MSG_TYPE_CFG_PNODE        69
#define TSDB_MSG_TYPE_CFG_PNODE_RSP    70
#define TSDB_MSG_TYPE_CFG_MNODE        71
#define TSDB_MSG_TYPE_CFG_MNODE_RSP    72

#define TSDB_MSG_TYPE_KILL_QUERY       73
#define TSDB_MSG_TYPE_KILL_QUERY_RSP   74
#define TSDB_MSG_TYPE_KILL_STREAM      75
#define TSDB_MSG_TYPE_KILL_STREAM_RSP  76
#define TSDB_MSG_TYPE_KILL_CONNECTION  77
#define TSDB_MSG_TYPE_KILL_CONNECTION_RSP 78

#define TSDB_MSG_TYPE_ALTER_STREAM     79
#define TSDB_MSG_TYPE_ALTER_STREAM_RSP 80
#define TSDB_MSG_TYPE_ALTER_TABLE      81
#define TSDB_MSG_TYPE_ALTER_TABLE_RSP  82
#define TSDB_MSG_TYPE_ALTER_DB         83
#define TSDB_MSG_TYPE_ALTER_DB_RSP     84

S
slguan 已提交
235 236 237
#define TSDB_MSG_TYPE_MULTI_METERINFO  85
#define TSDB_MSG_TYPE_MULTI_METERINFO_RSP 86

H
hzcheng 已提交
238 239 240 241 242 243 244 245 246
#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_ALTER_ACCT       97
#define TSDB_MSG_TYPE_ALTER_ACCT_RSP   98
S
slguan 已提交
247 248

#define TSDB_MSG_TYPE_MAX              101
H
hzcheng 已提交
249 250 251 252 253 254 255 256 257 258 259

// 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 已提交
260
  TSDB_MGMT_TABLE_ACCT,
H
hzcheng 已提交
261 262 263 264
  TSDB_MGMT_TABLE_USER,
  TSDB_MGMT_TABLE_DB,
  TSDB_MGMT_TABLE_TABLE,
  TSDB_MGMT_TABLE_PNODE,
S
slguan 已提交
265
  TSDB_MGMT_TABLE_MNODE,
H
hzcheng 已提交
266 267
  TSDB_MGMT_TABLE_VGROUP,
  TSDB_MGMT_TABLE_METRIC,
S
slguan 已提交
268
  TSDB_MGMT_TABLE_MODULE,
H
hzcheng 已提交
269 270
  TSDB_MGMT_TABLE_QUERIES,
  TSDB_MGMT_TABLE_STREAMS,
S
slguan 已提交
271
  TSDB_MGMT_TABLE_CONFIGS,
H
hzcheng 已提交
272
  TSDB_MGMT_TABLE_CONNS,
S
slguan 已提交
273 274
  TSDB_MGMT_TABLE_SCORES,
  TSDB_MGMT_TABLE_GRANTS,
H
hzcheng 已提交
275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302
  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

#define TSDB_METER_METRIC              0  // metric
#define TSDB_METER_MTABLE              1  // table created from metric
#define TSDB_METER_OTABLE              2  // ordinary table
#define TSDB_METER_STABLE              3  // table created from stream computing
#define TSDB_MAX_METER_TYPES           4

S
slguan 已提交
303 304 305
#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 已提交
306

S
slguan 已提交
307 308 309
#define TSDB_COL_NORMAL                0x0U
#define TSDB_COL_TAG                   0x1U
#define TSDB_COL_JOIN                  0x2U
H
hzcheng 已提交
310 311 312 313

extern char *taosMsg[];
extern char *tsError[];

S
slguan 已提交
314
#pragma pack(push, 1)
H
hzcheng 已提交
315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 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 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 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429

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;
  char     meterId[TSDB_UNI_LEN];
  short    port;  // for UDP only
  char     empty[1];
  char     msgType;
  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 {
  int32_t  sid;
  int32_t  sversion;
  uint64_t uid;
  short    numOfRows;
  char     payLoad[];
} SShellSubmitBlock;

typedef struct {
  short   import;
  short   vnode;
  int32_t numOfSid; /* total number of sid */
  char    blks[];   /* numOfSid blocks, each blocks for one meter */
} SShellSubmitMsg;

typedef struct SSchema {
  char  type;
  char  name[TSDB_COL_NAME_LEN];
  short colId;
  short bytes;
} SSchema;

typedef struct SMColumn {
  char  type;
  short colId;
  short bytes;
} SMColumn;

typedef struct {
  short    vnode;
  int32_t  sid;
  uint64_t uid;
  char     spi;
  char     encrypt;
  char     meterId[TSDB_METER_ID_LEN];
  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;

typedef struct {
  char  db[TSDB_DB_NAME_LEN];
  short ignoreNotExists;
} SDropDbMsg, SUseDbMsg;

S
slguan 已提交
430 431 432
typedef struct {
  char user[TSDB_USER_LEN];
} SDropUserMsg, SDropAcctMsg;
H
hzcheng 已提交
433

S
slguan 已提交
434 435 436
typedef struct {
  char db[TSDB_DB_NAME_LEN];
} SShowTableMsg;
H
hzcheng 已提交
437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464

typedef struct {
  char meterId[TSDB_METER_ID_LEN];
  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 {
  char meterId[TSDB_METER_ID_LEN];
  char igNotExists;
} SDropTableMsg;

typedef struct {
  char    meterId[TSDB_METER_ID_LEN];
  short   type; /* operation type   */
  char    tagVal[TSDB_MAX_BYTES_PER_ROW];
  short   numOfCols; /* number of schema */
  SSchema schema[];
} SAlterTableMsg;

S
slguan 已提交
465 466 467
typedef struct {
  char db[TSDB_METER_ID_LEN];
} SConnectMsg;
H
hzcheng 已提交
468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495

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 已提交
496 497 498
typedef struct {
  char db[TSDB_METER_ID_LEN];
} SMgmtHead;
H
hzcheng 已提交
499 500 501 502 503 504 505 506 507 508 509 510 511 512 513

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;
  char     meterId[TSDB_METER_ID_LEN];
} SRemoveMeterMsg;

S
slguan 已提交
514 515 516
typedef struct {
  short vnode;
} SFreeVnodeMsg;
H
hzcheng 已提交
517 518 519 520 521 522 523 524 525

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 已提交
526
   * this value is invalid in client side, as well as in cache block of vnode either.
H
hzcheng 已提交
527
   */
S
slguan 已提交
528 529 530
  int16_t  colIdx;
  int16_t  colIdxInBuf;
  uint16_t flag;         // denote if it is a tag or not
H
hzcheng 已提交
531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561
} 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 已提交
562
  int16_t            interResBytes;
H
hzcheng 已提交
563 564
} SSqlFunctionExpr;

S
slguan 已提交
565
typedef struct SColumnFilterInfo {
H
hzcheng 已提交
566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583
  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 已提交
584 585 586 587 588 589 590 591 592 593 594 595 596
} 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 已提交
597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627

/*
 * enable vnode to understand how to group several tables with different tag;
 */
typedef struct SMeterSidExtInfo {
  int32_t sid;
  void *  pObj;
  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;
  int32_t  num;

  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 已提交
628 629 630 631
  int64_t nAggTimeInterval;  // time interval for aggregation, in million second

  // tag schema, used to parse tag information in pSidExtInfo
  uint64_t pTagSchema;
H
hzcheng 已提交
632 633 634 635

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

S
slguan 已提交
636
  int16_t  numOfGroupCols;  // num of group by columns
H
hzcheng 已提交
637 638 639 640 641 642 643
  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 已提交
644
  int16_t queryType;        // denote another query process
H
hzcheng 已提交
645 646 647 648 649 650 651 652
  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 已提交
653 654 655 656 657 658 659
  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 已提交
660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677
} 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 已提交
678
  uint16_t free;
H
hzcheng 已提交
679 680 681 682 683
} SRetrieveMeterMsg;

typedef struct {
  int32_t numOfRows;
  int16_t precision;
S
slguan 已提交
684
  int16_t compress;
H
hzcheng 已提交
685 686 687 688 689 690 691 692 693 694 695 696 697 698
  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 已提交
699 700
  uint8_t  syncStatus;
  uint8_t  reserved;
H
hzcheng 已提交
701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755
} SVnodeLoad;

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

// NOTE: sizeof(SVnodeCfg) < TSDB_FILE_HEADER_LEN/4
typedef struct {
  char     acct[TSDB_USER_LEN];
  char     db[TSDB_DB_NAME_LEN];
  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
  char precision;   // time resoluation

  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 已提交
756 757 758
  uint16_t   numOfTotalVnodes;  // from config file
  uint16_t   unused;
  float      diskAvailable;  // GB
H
hzcheng 已提交
759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805
  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;
  char     meterId[TSDB_UNI_LEN];
  char     empty[3];
  char     msgType;
  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 {
  uint32_t ip;
  uint32_t vnode;
} SVPeerDesc;

typedef struct {
  int32_t    vnode;
  SVnodeCfg  cfg;
  SVPeerDesc vpeerDesc[];
} SVPeersMsg;

typedef struct {
  char  meterId[TSDB_METER_ID_LEN];
  short createFlag;
  char  tags[];
} SMeterInfoMsg;

typedef struct {
S
slguan 已提交
806 807 808
  int32_t numOfMeters;
  char    meterId[];
} SMultiMeterInfoMsg;
H
hzcheng 已提交
809

S
slguan 已提交
810 811 812 813 814 815 816 817 818 819 820 821 822 823
typedef struct {
  int16_t elemLen;

  char    meterId[TSDB_METER_ID_LEN];
  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 已提交
824 825 826 827

  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 已提交
828 829 830 831 832 833 834 835 836 837
  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];
H
hzcheng 已提交
838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855

} SMetricMetaMsg;

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 已提交
856 857 858 859 860
  uint8_t numOfTags : 6;
  uint8_t precision : 2;
  uint8_t meterType : 4;
  uint8_t index : 4;  // used locally

H
hzcheng 已提交
861 862
  int16_t numOfColumns;

S
slguan 已提交
863 864
  int16_t rowSize;  // used locally, calculated in client
  int16_t sversion;
H
hzcheng 已提交
865

S
slguan 已提交
866
  SVPeerDesc vpeerDesc[TSDB_VNODES_SUPPORT];
H
hzcheng 已提交
867

S
slguan 已提交
868 869
  int32_t  sid;
  int32_t  vgid;
H
hzcheng 已提交
870 871 872
  uint64_t uid;
} SMeterMeta;

S
slguan 已提交
873 874 875 876 877
typedef struct SMultiMeterMeta {
  char       meterId[TSDB_METER_ID_LEN];  // note: This field must be at the front
  SMeterMeta meta;
} SMultiMeterMeta;

H
hzcheng 已提交
878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893
typedef struct {
  char name[TSDB_METER_ID_LEN];
  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 已提交
894 895 896
typedef struct {
  char ip[20];
} SCreateMnodeMsg, SDropMnodeMsg, SCreateDnodeMsg, SDropDnodeMsg;
H
hzcheng 已提交
897 898 899 900 901 902 903 904 905 906 907

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

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

S
slguan 已提交
908 909 910
typedef struct {
  int32_t vnode;
} SVpeerCfgMsg;
H
hzcheng 已提交
911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964

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 已提交
965
#pragma pack(pop)
H
hzcheng 已提交
966 967 968 969 970 971

#ifdef __cplusplus
}
#endif

#endif