taosdef.h 17.8 KB
Newer Older
H
hzcheng 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/*
 * 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/>.
 */

S
#1177  
slguan 已提交
16 17
#ifndef TDENGINE_TAOS_DEF_H
#define TDENGINE_TAOS_DEF_H
H
hzcheng 已提交
18 19 20 21 22 23

#ifdef __cplusplus
extern "C" {
#endif

#include <stdint.h>
H
hzcheng 已提交
24
#include <stdbool.h>
S
Shengliang Guan 已提交
25
#include "osDef.h"
H
hzcheng 已提交
26
#include "taos.h"
H
hzcheng 已提交
27 28 29 30 31 32 33 34 35

#define TSDB__packed

#ifdef TSKEY32
#define TSKEY int32_t;
#else
#define TSKEY int64_t
#endif

36
#define TSWINDOW_INITIALIZER ((STimeWindow) {INT64_MIN, INT64_MAX})
37 38
#define TSKEY_INITIAL_VAL    INT64_MIN

H
TD-166  
hzcheng 已提交
39 40 41
// ----------------- For variable data types such as TSDB_DATA_TYPE_BINARY and TSDB_DATA_TYPE_NCHAR
typedef int32_t VarDataOffsetT;
typedef int16_t VarDataLenT;
42

H
hjxilinx 已提交
43 44 45 46 47
typedef struct tstr {
  VarDataLenT len;
  char        data[];
} tstr;

48 49
#define VARSTR_HEADER_SIZE  sizeof(VarDataLenT)

50 51
#define varDataLen(v)       ((VarDataLenT *)(v))[0]
#define varDataTLen(v)      (sizeof(VarDataLenT) + varDataLen(v))
52
#define varDataVal(v)       ((void *)((char *)v + VARSTR_HEADER_SIZE))
53
#define varDataCopy(dst, v) memcpy((dst), (void*) (v), varDataTLen(v))
54
#define varDataLenByData(v) (*(VarDataLenT *)(((char*)(v)) - VARSTR_HEADER_SIZE))
55
#define varDataSetLen(v, _len) (((VarDataLenT *)(v))[0] = (VarDataLenT) (_len))
H
Hongze Cheng 已提交
56
#define IS_VAR_DATA_TYPE(t) (((t) == TSDB_DATA_TYPE_BINARY) || ((t) == TSDB_DATA_TYPE_NCHAR))
H
TD-166  
hzcheng 已提交
57

58 59
// this data type is internally used only in 'in' query to hold the values
#define TSDB_DATA_TYPE_ARRAY      (TSDB_DATA_TYPE_NCHAR + 1)
60

weixin_48148422's avatar
weixin_48148422 已提交
61

H
hzcheng 已提交
62
// Bytes for each type.
63
extern const int32_t TYPE_BYTES[15];
H
Haojun Liao 已提交
64

H
hzcheng 已提交
65
// TODO: replace and remove code below
H
Haojun Liao 已提交
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
#define CHAR_BYTES    sizeof(char)
#define SHORT_BYTES   sizeof(int16_t)
#define INT_BYTES     sizeof(int32_t)
#define LONG_BYTES    sizeof(int64_t)
#define FLOAT_BYTES   sizeof(float)
#define DOUBLE_BYTES  sizeof(double)
#define POINTER_BYTES sizeof(void *)  // 8 by default  assert(sizeof(ptrdiff_t) == sizseof(void*)

#define TSDB_KEYSIZE            sizeof(TSKEY)

#if LINUX
#define TSDB_NCHAR_SIZE         sizeof(wchar_t)
#else
#define TSDB_NCHAR_SIZE         sizeof(int32_t)
#endif
H
hzcheng 已提交
81 82 83 84 85

// NULL definition
#define TSDB_DATA_BOOL_NULL             0x02
#define TSDB_DATA_TINYINT_NULL          0x80
#define TSDB_DATA_SMALLINT_NULL         0x8000
S
Shengliang Guan 已提交
86
#define TSDB_DATA_INT_NULL              0x80000000L
H
hzcheng 已提交
87
#define TSDB_DATA_BIGINT_NULL           0x8000000000000000L
H
TD-1548  
Hongze Cheng 已提交
88
#define TSDB_DATA_TIMESTAMP_NULL        TSDB_DATA_BIGINT_NULL
H
hzcheng 已提交
89 90 91 92 93 94

#define TSDB_DATA_FLOAT_NULL            0x7FF00000              // it is an NAN
#define TSDB_DATA_DOUBLE_NULL           0x7FFFFF0000000000L     // an NAN
#define TSDB_DATA_NCHAR_NULL            0xFFFFFFFF
#define TSDB_DATA_BINARY_NULL           0xFF

95 96 97 98 99
#define TSDB_DATA_UTINYINT_NULL         0xFF
#define TSDB_DATA_USMALLINT_NULL        0xFFFF
#define TSDB_DATA_UINT_NULL             0xFFFFFFFF
#define TSDB_DATA_UBIGINT_NULL          0xFFFFFFFFFFFFFFFFL

H
hzcheng 已提交
100 101 102
#define TSDB_DATA_NULL_STR              "NULL"
#define TSDB_DATA_NULL_STR_L            "null"

103
#define TSDB_DEFAULT_USER               "root"
H
Hui Li 已提交
104
#ifdef _TD_POWER_
H
Hui Li 已提交
105 106
#define TSDB_DEFAULT_PASS               "powerdb"
#else
107
#define TSDB_DEFAULT_PASS               "taosdata"
H
Hui Li 已提交
108
#endif
109

H
hjxilinx 已提交
110 111 112 113
#define TSDB_TRUE   1
#define TSDB_FALSE  0
#define TSDB_OK     0
#define TSDB_ERR   -1
H
hzcheng 已提交
114 115 116 117 118

#define TS_PATH_DELIMITER "."

#define TSDB_TIME_PRECISION_MILLI 0
#define TSDB_TIME_PRECISION_MICRO 1
119
#define TSDB_TIME_PRECISION_NANO  2
H
hzcheng 已提交
120 121 122

#define TSDB_TIME_PRECISION_MILLI_STR "ms"
#define TSDB_TIME_PRECISION_MICRO_STR "us"
H
Haojun Liao 已提交
123 124 125
#define TSDB_TIME_PRECISION_NANO_STR  "ns"

#define TSDB_TICK_PER_SECOND(precision) ((precision)==TSDB_TIME_PRECISION_MILLI ? 1e3L : ((precision)==TSDB_TIME_PRECISION_MICRO ? 1e6L : 1e9L))
H
hzcheng 已提交
126

H
TD-27  
hzcheng 已提交
127 128 129 130 131 132 133 134 135 136 137
#define T_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
#define T_APPEND_MEMBER(dst, ptr, type, member) \
do {\
  memcpy((void *)(dst), (void *)(&((ptr)->member)), T_MEMBER_SIZE(type, member));\
  dst = (void *)((char *)(dst) + T_MEMBER_SIZE(type, member));\
} while(0)
#define T_READ_MEMBER(src, type, target) \
do { \
  (target) = *(type *)(src); \
  (src) = (void *)((char *)src + sizeof(type));\
} while(0)
H
hzcheng 已提交
138

139 140 141 142 143 144 145 146
#define GET_INT8_VAL(x)    (*(int8_t *)(x))
#define GET_INT16_VAL(x)   (*(int16_t *)(x))
#define GET_INT32_VAL(x)   (*(int32_t *)(x))
#define GET_INT64_VAL(x)   (*(int64_t *)(x))
#define GET_UINT8_VAL(x)   (*(uint8_t*) (x))
#define GET_UINT16_VAL(x)  (*(uint16_t *)(x))
#define GET_UINT32_VAL(x)  (*(uint32_t *)(x))
#define GET_UINT64_VAL(x)  (*(uint64_t *)(x))
S
TD-1530  
Shengliang Guan 已提交
147

148
#ifdef _TD_ARM_32
S
TD-1530  
Shengliang Guan 已提交
149 150 151 152 153
  float  taos_align_get_float(const char* pBuf);
  double taos_align_get_double(const char* pBuf);

  #define GET_FLOAT_VAL(x)       taos_align_get_float(x)
  #define GET_DOUBLE_VAL(x)      taos_align_get_double(x)
S
TD-1530  
Shengliang Guan 已提交
154 155
  #define SET_FLOAT_VAL(x, y)  { float z = (float)(y);   (*(int32_t*) x = *(int32_t*)(&z)); }
  #define SET_DOUBLE_VAL(x, y) { double z = (double)(y); (*(int64_t*) x = *(int64_t*)(&z)); }
S
TD-1530  
Shengliang Guan 已提交
156 157
  #define SET_FLOAT_PTR(x, y)  { (*(int32_t*) x = *(int32_t*)y); }
  #define SET_DOUBLE_PTR(x, y) { (*(int64_t*) x = *(int64_t*)y); }
H
hzcheng 已提交
158
#else
S
TD-1530  
Shengliang Guan 已提交
159 160 161 162 163 164
  #define GET_FLOAT_VAL(x)       (*(float *)(x))
  #define GET_DOUBLE_VAL(x)      (*(double *)(x))
  #define SET_FLOAT_VAL(x, y)  { (*(float *)(x))  = (float)(y);       }
  #define SET_DOUBLE_VAL(x, y) { (*(double *)(x)) = (double)(y);      }
  #define SET_FLOAT_PTR(x, y)  { (*(float *)(x))  = (*(float *)(y));  }
  #define SET_DOUBLE_PTR(x, y) { (*(double *)(x)) = (*(double *)(y)); }
H
hzcheng 已提交
165 166 167 168 169 170 171
#endif

typedef struct tDataTypeDescriptor {
  int16_t nType;
  int16_t nameLen;
  int32_t nSize;
  char *  aName;
H
TD-166  
hzcheng 已提交
172 173 174 175
  int (*compFunc)(const char *const input, int inputSize, const int nelements, char *const output, int outputSize,
                  char algorithm, char *const buffer, int bufferSize);
  int (*decompFunc)(const char *const input, int compressedSize, const int nelements, char *const output,
                    int outputSize, char algorithm, char *const buffer, int bufferSize);
176 177
  void (*getStatisFunc)(const void *pData, int32_t numofrow, int64_t *min, int64_t *max, int64_t *sum,
                        int16_t *minindex, int16_t *maxindex, int16_t *numofnull);
H
hzcheng 已提交
178 179
} tDataTypeDescriptor;

180
extern tDataTypeDescriptor tDataTypeDesc[15];
H
hzcheng 已提交
181

182
bool isValidDataType(int32_t type);
183

S
Shengliang Guan 已提交
184
static FORCE_INLINE bool isNull(const char *val, int32_t type) {
H
Haojun Liao 已提交
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201
  switch (type) {
    case TSDB_DATA_TYPE_BOOL:
      return *(uint8_t *)val == TSDB_DATA_BOOL_NULL;
    case TSDB_DATA_TYPE_TINYINT:
      return *(uint8_t *)val == TSDB_DATA_TINYINT_NULL;
    case TSDB_DATA_TYPE_SMALLINT:
      return *(uint16_t *)val == TSDB_DATA_SMALLINT_NULL;
    case TSDB_DATA_TYPE_INT:
      return *(uint32_t *)val == TSDB_DATA_INT_NULL;
    case TSDB_DATA_TYPE_BIGINT:
    case TSDB_DATA_TYPE_TIMESTAMP:
      return *(uint64_t *)val == TSDB_DATA_BIGINT_NULL;
    case TSDB_DATA_TYPE_FLOAT:
      return *(uint32_t *)val == TSDB_DATA_FLOAT_NULL;
    case TSDB_DATA_TYPE_DOUBLE:
      return *(uint64_t *)val == TSDB_DATA_DOUBLE_NULL;
    case TSDB_DATA_TYPE_NCHAR:
202
      return varDataLen(val) == sizeof(int32_t) && *(uint32_t*) varDataVal(val) == TSDB_DATA_NCHAR_NULL;
H
Haojun Liao 已提交
203
    case TSDB_DATA_TYPE_BINARY:
204
      return varDataLen(val) == sizeof(int8_t) && *(uint8_t *) varDataVal(val) == TSDB_DATA_BINARY_NULL;
205 206 207 208 209 210 211 212 213
    case TSDB_DATA_TYPE_UTINYINT:
      return *(uint8_t*) val == TSDB_DATA_UTINYINT_NULL;
    case TSDB_DATA_TYPE_USMALLINT:
      return *(uint16_t*) val == TSDB_DATA_USMALLINT_NULL;
    case TSDB_DATA_TYPE_UINT:
      return *(uint32_t*) val == TSDB_DATA_UINT_NULL;
    case TSDB_DATA_TYPE_UBIGINT:
      return *(uint64_t*) val == TSDB_DATA_UBIGINT_NULL;

H
Haojun Liao 已提交
214 215 216 217
    default:
      return false;
  };
}
H
hzcheng 已提交
218

219
void setVardataNull(char* val, int32_t type);
H
hzcheng 已提交
220 221
void setNull(char *val, int32_t type, int32_t bytes);
void setNullN(char *val, int32_t type, int32_t bytes, int32_t numOfElems);
222
void* getNullValue(int32_t type);
H
hzcheng 已提交
223 224

void assignVal(char *val, const char *src, int32_t len, int32_t type);
H
Haojun Liao 已提交
225
void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size, void* buf);
H
hzcheng 已提交
226

227 228 229 230
int32_t tStrToInteger(const char* z, int16_t type, int32_t n, int64_t* value, bool issigned);

#define SET_DOUBLE_NULL(v) (*(uint64_t *)(v) = TSDB_DATA_DOUBLE_NULL)

H
hzcheng 已提交
231
// TODO: check if below is necessary
232
#define TSDB_RELATION_INVALID     0
H
hzcheng 已提交
233
#define TSDB_RELATION_LESS        1
234
#define TSDB_RELATION_GREATER     2
H
hzcheng 已提交
235 236
#define TSDB_RELATION_EQUAL       3
#define TSDB_RELATION_LESS_EQUAL  4
237
#define TSDB_RELATION_GREATER_EQUAL 5
H
hzcheng 已提交
238 239
#define TSDB_RELATION_NOT_EQUAL   6
#define TSDB_RELATION_LIKE        7
H
Haojun Liao 已提交
240 241 242 243 244 245 246 247 248 249 250 251 252
#define TSDB_RELATION_ISNULL      8
#define TSDB_RELATION_NOTNULL     9
#define TSDB_RELATION_IN          10

#define TSDB_RELATION_AND         11
#define TSDB_RELATION_OR          12
#define TSDB_RELATION_NOT         13

#define TSDB_BINARY_OP_ADD        30
#define TSDB_BINARY_OP_SUBTRACT   31
#define TSDB_BINARY_OP_MULTIPLY   32
#define TSDB_BINARY_OP_DIVIDE     33
#define TSDB_BINARY_OP_REMAINDER  34
H
hzcheng 已提交
253 254 255 256
#define TS_PATH_DELIMITER_LEN     1

#define TSDB_UNI_LEN              24
#define TSDB_USER_LEN             TSDB_UNI_LEN
H
Haojun Liao 已提交
257

B
Bomin Zhang 已提交
258 259 260 261
// ACCOUNT is a 32 bit positive integer
// this is the length of its string representation
// including the terminator zero
#define TSDB_ACCT_LEN             11
H
hzcheng 已提交
262 263
#define TSDB_PASSWORD_LEN         TSDB_UNI_LEN

B
Bomin Zhang 已提交
264
#define TSDB_MAX_COLUMNS          1024
S
slguan 已提交
265
#define TSDB_MIN_COLUMNS          2       //PRIMARY COLUMN(timestamp) + other columns
H
hzcheng 已提交
266

S
slguan 已提交
267
#define TSDB_NODE_NAME_LEN        64
H
Haojun Liao 已提交
268
#define TSDB_TABLE_NAME_LEN       193     // it is a null-terminated string
B
Bomin Zhang 已提交
269
#define TSDB_DB_NAME_LEN          33
H
Haojun Liao 已提交
270
#define TSDB_TABLE_FNAME_LEN      (TSDB_ACCT_LEN + TSDB_DB_NAME_LEN + TSDB_TABLE_NAME_LEN)
B
Bomin Zhang 已提交
271
#define TSDB_COL_NAME_LEN         65
B
Bomin Zhang 已提交
272
#define TSDB_MAX_SAVED_SQL_LEN    TSDB_MAX_COLUMNS * 64
S
slguan 已提交
273
#define TSDB_MAX_SQL_LEN          TSDB_PAYLOAD_SIZE
H
Haojun Liao 已提交
274
#define TSDB_MAX_SQL_SHOW_LEN     512
275
#define TSDB_MAX_ALLOWED_SQL_LEN  (1*1024*1024U)          // sql length should be less than 1mb
H
Haojun Liao 已提交
276 277

#define TSDB_APPNAME_LEN          TSDB_UNI_LEN
H
hzcheng 已提交
278

279 280
#define TSDB_MAX_BYTES_PER_ROW    16384
#define TSDB_MAX_TAGS_LEN         16384
B
Bomin Zhang 已提交
281
#define TSDB_MAX_TAGS             128
dengyihao's avatar
dengyihao 已提交
282
#define TSDB_MAX_TAG_CONDITIONS   1024
H
hzcheng 已提交
283 284 285 286 287

#define TSDB_AUTH_LEN             16
#define TSDB_KEY_LEN              16
#define TSDB_VERSION_LEN          12
#define TSDB_LOCALE_LEN           64
S
Shengliang Guan 已提交
288
#define TSDB_TIMEZONE_LEN         96
289
#define TSDB_LABEL_LEN            8 
H
hzcheng 已提交
290

291
#define TSDB_CLUSTER_ID_LEN       40
陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
292 293
#define TSDB_FQDN_LEN             128
#define TSDB_EP_LEN               (TSDB_FQDN_LEN+6)
S
slguan 已提交
294
#define TSDB_IPv4ADDR_LEN      	  16
H
hzcheng 已提交
295 296 297 298 299 300
#define TSDB_FILENAME_LEN         128
#define TSDB_METER_VNODE_BITS     20
#define TSDB_METER_SID_MASK       0xFFFFF
#define TSDB_SHELL_VNODE_BITS     24
#define TSDB_SHELL_SID_MASK       0xFF
#define TSDB_HTTP_TOKEN_LEN       20
H
Haojun Liao 已提交
301
#define TSDB_SHOW_SQL_LEN         512
302
#define TSDB_SLOW_QUERY_SQL_LEN   512
H
hzcheng 已提交
303

304 305 306
#define TSDB_STEP_NAME_LEN        32
#define TSDB_STEP_DESC_LEN        128

S
TD-1310  
Shengliang Guan 已提交
307 308 309 310 311 312 313
#define TSDB_MQTT_HOSTNAME_LEN    64
#define TSDB_MQTT_PORT_LEN        8
#define TSDB_MQTT_USER_LEN        24
#define TSDB_MQTT_PASS_LEN        24
#define TSDB_MQTT_TOPIC_LEN       64
#define TSDB_MQTT_CLIENT_ID_LEN   32

H
hzcheng 已提交
314 315 316
#define TSDB_METER_STATE_OFFLINE  0
#define TSDB_METER_STATE_ONLLINE  1

S
slguan 已提交
317
#define TSDB_DEFAULT_PKT_SIZE     65480  //same as RPC_MAX_UDP_SIZE
H
hzcheng 已提交
318

319
#define TSDB_PAYLOAD_SIZE         TSDB_DEFAULT_PKT_SIZE
H
Haojun Liao 已提交
320
#define TSDB_DEFAULT_PAYLOAD_SIZE 5120   // default payload size, greater than PATH_MAX value
S
slguan 已提交
321
#define TSDB_EXTRA_PAYLOAD_SIZE   128    // extra bytes for auth
322
#define TSDB_CQ_SQL_SIZE          1024
S
Shengliang Guan 已提交
323
#define TSDB_MIN_VNODES           64
324
#define TSDB_MAX_VNODES           2048
S
Shengliang Guan 已提交
325
#define TSDB_MIN_VNODES_PER_DB    2
S
Shengliang Guan 已提交
326
#define TSDB_MAX_VNODES_PER_DB    64
H
hzcheng 已提交
327 328 329 330 331

#define TSDB_DNODE_ROLE_ANY       0
#define TSDB_DNODE_ROLE_MGMT      1
#define TSDB_DNODE_ROLE_VNODE     2

J
jtao1735 已提交
332
#define TSDB_MAX_REPLICA          5
S
slguan 已提交
333

H
Haojun Liao 已提交
334
#define TSDB_TBNAME_COLUMN_INDEX        (-1)
335
#define TSDB_UD_COLUMN_INDEX            (-100)
S
slguan 已提交
336
#define TSDB_MULTI_METERMETA_MAX_NUM    100000  // maximum batch size allowed to load metermeta
H
hzcheng 已提交
337

S
slguan 已提交
338
#define TSDB_MIN_CACHE_BLOCK_SIZE       1
339
#define TSDB_MAX_CACHE_BLOCK_SIZE       128     // 128MB for each vnode
S
slguan 已提交
340
#define TSDB_DEFAULT_CACHE_BLOCK_SIZE   16
H
hzcheng 已提交
341

H
Hongze Cheng 已提交
342
#define TSDB_MIN_TOTAL_BLOCKS           3
S
slguan 已提交
343
#define TSDB_MAX_TOTAL_BLOCKS           10000
344
#define TSDB_DEFAULT_TOTAL_BLOCKS       6
H
hzcheng 已提交
345

S
slguan 已提交
346
#define TSDB_MIN_TABLES                 4
347 348 349
#define TSDB_MAX_TABLES                 10000000
#define TSDB_DEFAULT_TABLES             1000000
#define TSDB_TABLES_STEP                1000
H
hzcheng 已提交
350

S
slguan 已提交
351 352
#define TSDB_MIN_DAYS_PER_FILE          1
#define TSDB_MAX_DAYS_PER_FILE          3650 
353
#define TSDB_DEFAULT_DAYS_PER_FILE      10
H
hzcheng 已提交
354

S
slguan 已提交
355 356 357
#define TSDB_MIN_KEEP                   1        // data in db to be reserved.
#define TSDB_MAX_KEEP                   365000   // data in db to be reserved.
#define TSDB_DEFAULT_KEEP               3650     // ten years
H
hzcheng 已提交
358

S
slguan 已提交
359 360 361
#define TSDB_DEFAULT_MIN_ROW_FBLOCK     100
#define TSDB_MIN_MIN_ROW_FBLOCK         10
#define TSDB_MAX_MIN_ROW_FBLOCK         1000
H
hzcheng 已提交
362

S
slguan 已提交
363 364 365
#define TSDB_DEFAULT_MAX_ROW_FBLOCK     4096
#define TSDB_MIN_MAX_ROW_FBLOCK         200
#define TSDB_MAX_MAX_ROW_FBLOCK         10000
H
hzcheng 已提交
366

S
slguan 已提交
367 368 369
#define TSDB_MIN_COMMIT_TIME            30
#define TSDB_MAX_COMMIT_TIME            40960
#define TSDB_DEFAULT_COMMIT_TIME        3600
H
hzcheng 已提交
370

371 372 373
#define TSDB_MIN_PRECISION              TSDB_TIME_PRECISION_MILLI
#define TSDB_MAX_PRECISION              TSDB_TIME_PRECISION_NANO
#define TSDB_DEFAULT_PRECISION          TSDB_TIME_PRECISION_MILLI
S
slguan 已提交
374 375 376 377 378

#define TSDB_MIN_COMP_LEVEL             0
#define TSDB_MAX_COMP_LEVEL             2
#define TSDB_DEFAULT_COMP_LEVEL         2

379 380 381
#define TSDB_MIN_WAL_LEVEL              1
#define TSDB_MAX_WAL_LEVEL              2
#define TSDB_DEFAULT_WAL_LEVEL          1
S
slguan 已提交
382

S
Shengliang Guan 已提交
383 384 385 386
#define TSDB_MIN_DB_UPDATE              0
#define TSDB_MAX_DB_UPDATE              1
#define TSDB_DEFAULT_DB_UPDATE_OPTION   0

M
Minglei Jin 已提交
387 388 389 390
#define TSDB_MIN_DB_CACHE_LAST_ROW      0
#define TSDB_MAX_DB_CACHE_LAST_ROW      1
#define TSDB_DEFAULT_CACHE_LAST_ROW     0

陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
391 392
#define TSDB_MIN_FSYNC_PERIOD           0
#define TSDB_MAX_FSYNC_PERIOD           180000   // millisecond
393
#define TSDB_DEFAULT_FSYNC_PERIOD       3000     // three second
陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
394

395 396 397
#define TSDB_MIN_DB_REPLICA_OPTION      1
#define TSDB_MAX_DB_REPLICA_OPTION      3
#define TSDB_DEFAULT_DB_REPLICA_OPTION  1
S
TD-2677  
Shengliang Guan 已提交
398 399 400

#define TSDB_MIN_DB_QUORUM_OPTION       1
#define TSDB_MAX_DB_QUORUM_OPTION       2
401
#define TSDB_DEFAULT_DB_QUORUM_OPTION   1
H
hzcheng 已提交
402

S
slguan 已提交
403
#define TSDB_MAX_JOIN_TABLE_NUM         5
404
#define TSDB_MAX_UNION_CLAUSE           5
H
hzcheng 已提交
405

S
slguan 已提交
406 407 408
#define TSDB_MAX_BINARY_LEN            (TSDB_MAX_BYTES_PER_ROW-TSDB_KEYSIZE)
#define TSDB_MAX_NCHAR_LEN             (TSDB_MAX_BYTES_PER_ROW-TSDB_KEYSIZE)
#define PRIMARYKEY_TIMESTAMP_COL_INDEX  0
H
hzcheng 已提交
409

S
slguan 已提交
410 411
#define TSDB_MAX_RPC_THREADS            5

H
hjxilinx 已提交
412 413
#define TSDB_QUERY_TYPE_NON_TYPE                       0x00u     // none type
#define TSDB_QUERY_TYPE_FREE_RESOURCE                  0x01u     // free qhandle at vnode
S
slguan 已提交
414 415 416 417 418

/*
 * 1. ordinary sub query for select * from super_table
 * 2. all sqlobj generated by createSubqueryObj with this flag
 */
H
Haojun Liao 已提交
419 420
#define TSDB_QUERY_TYPE_SUBQUERY               0x02u
#define TSDB_QUERY_TYPE_STABLE_SUBQUERY        0x04u     // two-stage subquery for super table
421

H
Haojun Liao 已提交
422 423 424 425 426
#define TSDB_QUERY_TYPE_TABLE_QUERY            0x08u    // query ordinary table; below only apply to client side
#define TSDB_QUERY_TYPE_STABLE_QUERY           0x10u    // query on super table
#define TSDB_QUERY_TYPE_JOIN_QUERY             0x20u    // join query
#define TSDB_QUERY_TYPE_PROJECTION_QUERY       0x40u    // select *,columns... query
#define TSDB_QUERY_TYPE_JOIN_SEC_STAGE         0x80u    // join sub query at the second stage
H
hzcheng 已提交
427

H
Haojun Liao 已提交
428 429 430 431
#define TSDB_QUERY_TYPE_TAG_FILTER_QUERY       0x400u
#define TSDB_QUERY_TYPE_INSERT                 0x100u    // insert type
#define TSDB_QUERY_TYPE_MULTITABLE_QUERY       0x200u
#define TSDB_QUERY_TYPE_STMT_INSERT            0x800u    // stmt insert type
432 433 434

#define TSDB_QUERY_HAS_TYPE(x, _type)         (((x) & (_type)) != 0)
#define TSDB_QUERY_SET_TYPE(x, _type)         ((x) |= (_type))
435
#define TSDB_QUERY_CLEAR_TYPE(x, _type)       ((x) &= (~_type))
436 437
#define TSDB_QUERY_RESET_TYPE(x)              ((x) = TSDB_QUERY_TYPE_NON_TYPE)

H
Haojun Liao 已提交
438 439
#define TSDB_ORDER_ASC                  1
#define TSDB_ORDER_DESC                 2
H
hjxilinx 已提交
440

S
Shengliang Guan 已提交
441
#define TSDB_DEFAULT_CLUSTER_HASH_SIZE  1
S
Shengliang Guan 已提交
442 443 444 445 446 447 448
#define TSDB_DEFAULT_MNODES_HASH_SIZE   5
#define TSDB_DEFAULT_DNODES_HASH_SIZE   10
#define TSDB_DEFAULT_ACCOUNTS_HASH_SIZE 10
#define TSDB_DEFAULT_USERS_HASH_SIZE    20
#define TSDB_DEFAULT_DBS_HASH_SIZE      100
#define TSDB_DEFAULT_VGROUPS_HASH_SIZE  100
#define TSDB_DEFAULT_STABLES_HASH_SIZE  100
S
Shengliang Guan 已提交
449
#define TSDB_DEFAULT_CTABLES_HASH_SIZE  20000
S
slguan 已提交
450

H
Haojun Liao 已提交
451 452 453 454 455
#define TSDB_PORT_DNODESHELL            0
#define TSDB_PORT_DNODEDNODE            5
#define TSDB_PORT_SYNC                  10
#define TSDB_PORT_HTTP                  11
#define TSDB_PORT_ARBITRATOR            12
J
jtao1735 已提交
456

457
#define TSDB_MAX_WAL_SIZE    (1024*1024*2)
H
Haojun Liao 已提交
458

S
TD-1915  
Shengliang Guan 已提交
459 460 461 462 463 464 465
typedef enum {
  TAOS_QTYPE_RPC   = 0,
  TAOS_QTYPE_FWD   = 1,
  TAOS_QTYPE_WAL   = 2,
  TAOS_QTYPE_CQ    = 3,
  TAOS_QTYPE_QUERY = 4
} EQType;
J
jtao1735 已提交
466

467 468 469 470
#define TSDB_MAX_TIERS           3
#define TSDB_MAX_DISKS_PER_TIER 16
#define TSDB_MAX_DISKS           (TSDB_MAX_TIERS * TSDB_MAX_DISKS_PER_TIER)

S
[TD-10]  
slguan 已提交
471
typedef enum {
S
TD-1915  
Shengliang Guan 已提交
472 473 474 475 476
  TSDB_SUPER_TABLE  = 0,   // super table
  TSDB_CHILD_TABLE  = 1,   // table created from super table
  TSDB_NORMAL_TABLE = 2,  // ordinary table
  TSDB_STREAM_TABLE = 3,  // table created from stream computing
  TSDB_TABLE_MAX    = 4
S
slguan 已提交
477 478 479
} ETableType;

typedef enum {
S
TD-1915  
Shengliang Guan 已提交
480 481 482 483 484
  TSDB_MOD_MNODE   = 0,
  TSDB_MOD_HTTP    = 1,
  TSDB_MOD_MONITOR = 2,
  TSDB_MOD_MQTT    = 3,
  TSDB_MOD_MAX     = 4
S
slguan 已提交
485
} EModuleType;
S
[TD-10]  
slguan 已提交
486

S
TD-1915  
Shengliang Guan 已提交
487 488 489 490 491
typedef enum {
  TSDB_CHECK_ITEM_NETWORK,
  TSDB_CHECK_ITEM_MEM,
  TSDB_CHECK_ITEM_CPU,
  TSDB_CHECK_ITEM_DISK,
H
Haojun Liao 已提交
492 493
  TSDB_CHECK_ITEM_OS,
  TSDB_CHECK_ITEM_ACCESS,
S
TD-1915  
Shengliang Guan 已提交
494 495 496 497
  TSDB_CHECK_ITEM_VERSION,
  TSDB_CHECK_ITEM_DATAFILE,
  TSDB_CHECK_ITEM_MAX
} ECheckItemType;
H
Hui Li 已提交
498

S
Shengliang Guan 已提交
499
extern char *qtypeStr[];
H
Hui Li 已提交
500

H
hzcheng 已提交
501 502 503 504 505
#ifdef __cplusplus
}
#endif

#endif