• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

taosdata / TDengine / #3562

20 Dec 2024 09:57AM UTC coverage: 26.655% (-32.2%) from 58.812%
#3562

push

travis-ci

web-flow
Merge pull request #29229 from taosdata/enh/TS-5749-3.0

enh: seperate tsdb async tasks to different thread pools

21498 of 109421 branches covered (19.65%)

Branch coverage included in aggregate %.

66 of 96 new or added lines in 7 files covered. (68.75%)

39441 existing lines in 157 files now uncovered.

35007 of 102566 relevant lines covered (34.13%)

53922.97 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

51.14
/source/common/src/tcol.c
1
/*
2
 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
3
 *
4
 * This program is free software: you can use, redistribute, and/or modify
5
 * it under the terms of the GNU Affero General Public License, version 3
6
 * or later ("AGPL"), as published by the Free Software Foundation.
7
 *
8
 * This program is distributed in the hope that it will be useful, but WITHOUT
9
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
 * FITNESS FOR A PARTICULAR PURPOSE.
11
 *
12
 * You should have received a copy of the GNU Affero General Public License
13
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14
 */
15

16
#include "tcol.h"
17
#include "tcompression.h"
18
#include "tutil.h"
19

20
const char* supportedEncode[5] = {TSDB_COLUMN_ENCODE_SIMPLE8B, TSDB_COLUMN_ENCODE_XOR, TSDB_COLUMN_ENCODE_RLE,
21
                                  TSDB_COLUMN_ENCODE_DELTAD, TSDB_COLUMN_ENCODE_DISABLED};
22

23
const char* supportedCompress[6] = {TSDB_COLUMN_COMPRESS_LZ4,  TSDB_COLUMN_COMPRESS_TSZ,
24
                                    TSDB_COLUMN_COMPRESS_XZ,   TSDB_COLUMN_COMPRESS_ZLIB,
25
                                    TSDB_COLUMN_COMPRESS_ZSTD, TSDB_COLUMN_COMPRESS_DISABLED};
26

27
const char* supportedLevel[3] = {TSDB_COLUMN_LEVEL_HIGH, TSDB_COLUMN_LEVEL_MEDIUM, TSDB_COLUMN_LEVEL_LOW};
28

29
const int supportedEncodeNum = sizeof(supportedEncode) / sizeof(char*);
30
const int supportedCompressNum = sizeof(supportedCompress) / sizeof(char*);
31
const int supportedLevelNum = sizeof(supportedLevel) / sizeof(char*);
32

33
uint8_t getDefaultEncode(uint8_t type) {
604✔
34
  switch (type) {
604!
35
    case TSDB_DATA_TYPE_NULL:
38✔
36
    case TSDB_DATA_TYPE_BOOL:
37
      return TSDB_COLVAL_ENCODE_RLE;
38✔
38
    case TSDB_DATA_TYPE_TINYINT:
157✔
39
    case TSDB_DATA_TYPE_SMALLINT:
40
    case TSDB_DATA_TYPE_INT:
41
    case TSDB_DATA_TYPE_BIGINT:
42
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
157✔
43
    case TSDB_DATA_TYPE_FLOAT:
102✔
44
    case TSDB_DATA_TYPE_DOUBLE:
45
      return TSDB_COLVAL_ENCODE_DELTAD;
102✔
46
    case TSDB_DATA_TYPE_VARCHAR:  // TSDB_DATA_TYPE_BINARY
44✔
47
      return TSDB_COLVAL_ENCODE_DISABLED;
44✔
48
    case TSDB_DATA_TYPE_TIMESTAMP:
92✔
49
      return TSDB_COLVAL_ENCODE_XOR;
92✔
50
    case TSDB_DATA_TYPE_NCHAR:
34✔
51
      return TSDB_COLVAL_ENCODE_DISABLED;
34✔
52
    case TSDB_DATA_TYPE_UTINYINT:
33✔
53
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
33✔
54
    case TSDB_DATA_TYPE_USMALLINT:
33✔
55
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
33✔
56
    case TSDB_DATA_TYPE_UINT:
38✔
57
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
38✔
58
    case TSDB_DATA_TYPE_UBIGINT:
33✔
59
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
33✔
60
    case TSDB_DATA_TYPE_JSON:
×
61
      return TSDB_COLVAL_ENCODE_DISABLED;
×
UNCOV
62
    case TSDB_DATA_TYPE_VARBINARY:
×
UNCOV
63
      return TSDB_COLVAL_ENCODE_DISABLED;
×
64
    case TSDB_DATA_TYPE_DECIMAL:
×
65
      return TSDB_COLVAL_ENCODE_DELTAD;
×
66
    case TSDB_DATA_TYPE_BLOB:
×
67
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
×
UNCOV
68
    case TSDB_DATA_TYPE_MEDIUMBLOB:
×
69
    case TSDB_DATA_TYPE_GEOMETRY:
UNCOV
70
      return TSDB_COLVAL_ENCODE_DISABLED;
×
71

72
    case TSDB_DATA_TYPE_MAX:
×
73
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
×
74

75
    default:
×
76
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
×
77
  }
78
}
79
const char* getDefaultEncodeStr(uint8_t type) { return columnEncodeStr(getDefaultEncode(type)); }
236✔
80

81
uint16_t getDefaultCompress(uint8_t type) {
604✔
82
  switch (type) {
604!
83
    case TSDB_DATA_TYPE_NULL:
×
84
      return TSDB_COLVAL_COMPRESS_LZ4;
×
85
    case TSDB_DATA_TYPE_BOOL:
38✔
86
      return TSDB_COLVAL_COMPRESS_ZSTD;
38✔
87
    case TSDB_DATA_TYPE_TINYINT:
68✔
88
    case TSDB_DATA_TYPE_SMALLINT:
89
      return TSDB_COLVAL_COMPRESS_ZLIB;
68✔
90
    case TSDB_DATA_TYPE_INT:
89✔
91
    case TSDB_DATA_TYPE_BIGINT:
92
      return TSDB_COLVAL_COMPRESS_LZ4;
89✔
93
    case TSDB_DATA_TYPE_FLOAT:
102✔
94
    case TSDB_DATA_TYPE_DOUBLE:
95
      return TSDB_COLVAL_COMPRESS_LZ4;
102✔
96
    case TSDB_DATA_TYPE_VARCHAR:  // TSDB_DATA_TYPE_BINARY
44✔
97
      return TSDB_COLVAL_COMPRESS_ZSTD;
44✔
98
    case TSDB_DATA_TYPE_TIMESTAMP:
92✔
99
      return TSDB_COLVAL_COMPRESS_LZ4;
92✔
100
    case TSDB_DATA_TYPE_NCHAR:
34✔
101
      return TSDB_COLVAL_COMPRESS_ZSTD;
34✔
102
    case TSDB_DATA_TYPE_UTINYINT:
66✔
103
    case TSDB_DATA_TYPE_USMALLINT:
104
      return TSDB_COLVAL_COMPRESS_ZLIB;
66✔
105
    case TSDB_DATA_TYPE_UINT:
71✔
106
    case TSDB_DATA_TYPE_UBIGINT:
107
      return TSDB_COLVAL_COMPRESS_LZ4;
71✔
108
    case TSDB_DATA_TYPE_JSON:
×
109
      return TSDB_COLVAL_COMPRESS_LZ4;
×
UNCOV
110
    case TSDB_DATA_TYPE_VARBINARY:
×
UNCOV
111
      return TSDB_COLVAL_COMPRESS_ZSTD;
×
112
    case TSDB_DATA_TYPE_DECIMAL:
×
113
      return TSDB_COLVAL_COMPRESS_LZ4;
×
114
    case TSDB_DATA_TYPE_BLOB:
×
115
      return TSDB_COLVAL_COMPRESS_LZ4;
×
116
    case TSDB_DATA_TYPE_MEDIUMBLOB:
×
117
      return TSDB_COLVAL_COMPRESS_LZ4;
×
UNCOV
118
    case TSDB_DATA_TYPE_GEOMETRY:
×
UNCOV
119
      return TSDB_COLVAL_COMPRESS_LZ4;
×
120
    case TSDB_DATA_TYPE_MAX:
×
121
      return TSDB_COLVAL_COMPRESS_LZ4;
×
122
    default:
×
123
      return TSDB_COLVAL_COMPRESS_LZ4;
×
124
  }
125
}
126
const char* getDefaultCompressStr(uint8_t type) { return columnCompressStr(getDefaultCompress(type)); }
236✔
127

128
uint8_t     getDefaultLevel(uint8_t type) { return TSDB_COLVAL_LEVEL_MEDIUM; }
604✔
129
const char* getDefaultLevelStr(uint8_t type) { return columnLevelStr(getDefaultLevel(type)); }
236✔
130

131
const char* columnEncodeStr(uint8_t type) {
2,216✔
132
  const char* encode = NULL;
2,216✔
133
  switch (type) {
2,216!
134
    case TSDB_COLVAL_ENCODE_SIMPLE8B:
1,074✔
135
      encode = TSDB_COLUMN_ENCODE_SIMPLE8B;
1,074✔
136
      break;
1,074✔
137
    case TSDB_COLVAL_ENCODE_XOR:
282✔
138
      encode = TSDB_COLUMN_ENCODE_XOR;
282✔
139
      break;
282✔
140
    case TSDB_COLVAL_ENCODE_RLE:
166✔
141
      encode = TSDB_COLUMN_ENCODE_RLE;
166✔
142
      break;
166✔
143
    case TSDB_COLVAL_ENCODE_DELTAD:
362✔
144
      encode = TSDB_COLUMN_ENCODE_DELTAD;
362✔
145
      break;
362✔
146
    case TSDB_COLVAL_ENCODE_DISABLED:
332✔
147
      encode = TSDB_COLUMN_ENCODE_DISABLED;
332✔
148
      break;
332✔
149
    default:
×
150
      encode = TSDB_COLUMN_ENCODE_UNKNOWN;
×
151
      break;
×
152
  }
153
  return encode;
2,216✔
154
}
155

156
const char* columnCompressStr(uint16_t type) {
2,216✔
157
  const char* compress = NULL;
2,216✔
158
  switch (type) {
2,216!
159
    case TSDB_COLVAL_COMPRESS_LZ4:
1,202✔
160
      compress = TSDB_COLUMN_COMPRESS_LZ4;
1,202✔
161
      break;
1,202✔
UNCOV
162
    case TSDB_COLVAL_COMPRESS_TSZ:
×
UNCOV
163
      compress = TSDB_COLUMN_COMPRESS_TSZ;
×
UNCOV
164
      break;
×
165
    case TSDB_COLVAL_COMPRESS_XZ:
×
166
      compress = TSDB_COLUMN_COMPRESS_XZ;
×
167
      break;
×
168
    case TSDB_COLVAL_COMPRESS_ZLIB:
516✔
169
      compress = TSDB_COLUMN_COMPRESS_ZLIB;
516✔
170
      break;
516✔
171
    case TSDB_COLVAL_COMPRESS_ZSTD:
498✔
172
      compress = TSDB_COLUMN_COMPRESS_ZSTD;
498✔
173
      break;
498✔
UNCOV
174
    case TSDB_COLVAL_COMPRESS_DISABLED:
×
UNCOV
175
      compress = TSDB_COLUMN_COMPRESS_DISABLED;
×
UNCOV
176
      break;
×
177
    default:
×
178
      compress = TSDB_COLUMN_COMPRESS_UNKNOWN;
×
179
      break;
×
180
  }
181
  return compress;
2,216✔
182
}
183

184
uint8_t columnLevelVal(const char* level) {
236✔
185
  if (level == NULL) return TSDB_COLVAL_LEVEL_NOCHANGE;
236!
186
  uint8_t l = TSDB_COLVAL_LEVEL_MEDIUM;
236✔
187
  if (0 == strcmp(level, "h") || 0 == strcmp(level, TSDB_COLUMN_LEVEL_HIGH)) {
236!
UNCOV
188
    l = TSDB_COLVAL_LEVEL_HIGH;
×
189
  } else if (0 == strcmp(level, "m") || 0 == strcmp(level, TSDB_COLUMN_LEVEL_MEDIUM)) {
236!
190
    l = TSDB_COLVAL_LEVEL_MEDIUM;
236✔
UNCOV
191
  } else if (0 == strcmp(level, "l") || 0 == strcmp(level, TSDB_COLUMN_LEVEL_LOW)) {
×
UNCOV
192
    l = TSDB_COLVAL_LEVEL_LOW;
×
193
  } else {
UNCOV
194
    l = TSDB_COLVAL_LEVEL_NOCHANGE;
×
195
  }
196
  return l;
236✔
197
}
198

199
uint16_t columnCompressVal(const char* compress) {
236✔
200
  if (compress == NULL) return TSDB_COLVAL_COMPRESS_NOCHANGE;
236!
201
  uint16_t c = TSDB_COLVAL_COMPRESS_LZ4;
236✔
202
  if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_LZ4)) {
236✔
203
    c = TSDB_COLVAL_COMPRESS_LZ4;
147✔
204
  } else if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_TSZ)) {
89!
UNCOV
205
    c = TSDB_COLVAL_COMPRESS_TSZ;
×
206
  } else if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_XZ)) {
89!
UNCOV
207
    c = TSDB_COLVAL_COMPRESS_XZ;
×
208
  } else if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_ZLIB)) {
89✔
209
    c = TSDB_COLVAL_COMPRESS_ZLIB;
50✔
210
  } else if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_ZSTD)) {
39!
211
    c = TSDB_COLVAL_COMPRESS_ZSTD;
39✔
UNCOV
212
  } else if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_DISABLED)) {
×
UNCOV
213
    c = TSDB_COLVAL_COMPRESS_DISABLED;
×
214
  } else {
UNCOV
215
    c = TSDB_COLVAL_COMPRESS_NOCHANGE;
×
216
  }
217
  return c;
236✔
218
}
219

220
uint8_t columnEncodeVal(const char* encode) {
236✔
221
  if (encode == NULL) return TSDB_COLVAL_ENCODE_NOCHANGE;
236!
222
  uint8_t e = TSDB_COLVAL_ENCODE_SIMPLE8B;
236✔
223
  if (0 == strcmp(encode, TSDB_COLUMN_ENCODE_SIMPLE8B)) {
236✔
224
    e = TSDB_COLVAL_ENCODE_SIMPLE8B;
126✔
225
  } else if (0 == strcmp(encode, TSDB_COLUMN_ENCODE_XOR)) {
110✔
226
    e = TSDB_COLVAL_ENCODE_XOR;
35✔
227
  } else if (0 == strcmp(encode, TSDB_COLUMN_ENCODE_RLE)) {
75✔
228
    e = TSDB_COLVAL_ENCODE_RLE;
13✔
229
  } else if (0 == strcmp(encode, TSDB_COLUMN_ENCODE_DELTAD)) {
62✔
230
    e = TSDB_COLVAL_ENCODE_DELTAD;
36✔
231
  } else if (0 == strcmp(encode, TSDB_COLUMN_ENCODE_DISABLED)) {
26!
232
    e = TSDB_COLVAL_ENCODE_DISABLED;
26✔
233
  } else {
UNCOV
234
    e = TSDB_COLVAL_ENCODE_NOCHANGE;
×
235
  }
236
  return e;
236✔
237
}
238

239
const char* columnLevelStr(uint8_t type) {
2,216✔
240
  const char* level = NULL;
2,216✔
241
  switch (type) {
2,216!
UNCOV
242
    case TSDB_COLVAL_LEVEL_HIGH:
×
UNCOV
243
      level = TSDB_COLUMN_LEVEL_HIGH;
×
UNCOV
244
      break;
×
245
    case TSDB_COLVAL_LEVEL_MEDIUM:
2,216✔
246
      level = TSDB_COLUMN_LEVEL_MEDIUM;
2,216✔
247
      break;
2,216✔
UNCOV
248
    case TSDB_COLVAL_LEVEL_LOW:
×
UNCOV
249
      level = TSDB_COLUMN_LEVEL_LOW;
×
UNCOV
250
      break;
×
251
    default:
×
252
      level = TSDB_COLUMN_LEVEL_UNKNOWN;
×
253
      break;
×
254
  }
255
  return level;
2,216✔
256
}
257

UNCOV
258
bool checkColumnEncode(char encode[TSDB_CL_COMPRESS_OPTION_LEN]) {
×
UNCOV
259
  if (0 == strlen(encode)) return true;
×
UNCOV
260
  TAOS_UNUSED(strtolower(encode, encode));
×
UNCOV
261
  for (int i = 0; i < supportedEncodeNum; ++i) {
×
UNCOV
262
    if (0 == strcmp((const char*)encode, supportedEncode[i])) {
×
UNCOV
263
      return true;
×
264
    }
265
  }
UNCOV
266
  return false;
×
267
}
268
bool checkColumnEncodeOrSetDefault(uint8_t type, char encode[TSDB_CL_COMPRESS_OPTION_LEN]) {
236✔
269
  if (0 == strlen(encode)) {
236!
270
    tstrncpy(encode, getDefaultEncodeStr(type), TSDB_CL_COMPRESS_OPTION_LEN);
236✔
271
    return true;
236✔
272
  }
UNCOV
273
  return checkColumnEncode(encode) && validColEncode(type, columnEncodeVal(encode));
×
274
}
UNCOV
275
bool checkColumnCompress(char compress[TSDB_CL_COMPRESS_OPTION_LEN]) {
×
UNCOV
276
  if (0 == strlen(compress)) return true;
×
UNCOV
277
  TAOS_UNUSED(strtolower(compress, compress));
×
UNCOV
278
  for (int i = 0; i < supportedCompressNum; ++i) {
×
UNCOV
279
    if (0 == strcmp((const char*)compress, supportedCompress[i])) {
×
UNCOV
280
      return true;
×
281
    }
282
  }
UNCOV
283
  return false;
×
284
}
285
bool checkColumnCompressOrSetDefault(uint8_t type, char compress[TSDB_CL_COMPRESS_OPTION_LEN]) {
236✔
286
  if (0 == strlen(compress)) {
236!
287
    tstrncpy(compress, getDefaultCompressStr(type), TSDB_CL_COMPRESS_OPTION_LEN);
236✔
288
    return true;
236✔
289
  }
290

UNCOV
291
  return checkColumnCompress(compress) && validColCompress(type, columnCompressVal(compress));
×
292
}
UNCOV
293
bool checkColumnLevel(char level[TSDB_CL_COMPRESS_OPTION_LEN]) {
×
UNCOV
294
  if (0 == strlen(level)) return true;
×
UNCOV
295
  TAOS_UNUSED(strtolower(level, level));
×
UNCOV
296
  if (1 == strlen(level)) {
×
UNCOV
297
    if ('h' == level[0] || 'm' == level[0] || 'l' == level[0]) return true;
×
298
  } else {
UNCOV
299
    for (int i = 0; i < supportedLevelNum; ++i) {
×
UNCOV
300
      if (0 == strcmp((const char*)level, supportedLevel[i])) {
×
UNCOV
301
        return true;
×
302
      }
303
    }
304
  }
UNCOV
305
  return false;
×
306
}
307
bool checkColumnLevelOrSetDefault(uint8_t type, char level[TSDB_CL_COMPRESS_OPTION_LEN]) {
236✔
308
  if (0 == strlen(level)) {
236!
309
    tstrncpy(level, getDefaultLevelStr(type), TSDB_CL_COMPRESS_OPTION_LEN);
236✔
310
    return true;
236✔
311
  }
UNCOV
312
  return checkColumnLevel(level) && validColCompressLevel(type, columnLevelVal(level));
×
313
}
314

315
void setColEncode(uint32_t* compress, uint8_t l1) {
602✔
316
  *compress &= 0x00FFFFFF;
602✔
317
  *compress |= (l1 << 24);
602✔
318
  return;
602✔
319
}
320
void setColCompress(uint32_t* compress, uint16_t l2) {
602✔
321
  *compress &= 0xFF0000FF;
602✔
322
  *compress |= (l2 << 8);
602✔
323
  return;
602✔
324
}
325
void setColLevel(uint32_t* compress, uint8_t level) {
602✔
326
  *compress &= 0xFFFFFF00;
602✔
327
  *compress |= level;
602✔
328
  return;
602✔
329
}
330

331
int32_t setColCompressByOption(uint8_t type, uint8_t encode, uint16_t compressType, uint8_t level, bool check,
4✔
332
                               uint32_t* compress) {
333
  if (compress == NULL) return TSDB_CODE_TSC_ENCODE_PARAM_ERROR;
4!
334
  if (check && !validColEncode(type, encode)) return TSDB_CODE_TSC_ENCODE_PARAM_ERROR;
4!
335
  setColEncode(compress, encode);
4✔
336

337
  if (compressType == TSDB_COLVAL_COMPRESS_DISABLED) {
4!
UNCOV
338
    setColCompress(compress, compressType);
×
UNCOV
339
    setColLevel(compress, TSDB_COLVAL_LEVEL_DISABLED);
×
340
  } else {
341
    if (check && !validColCompress(type, compressType)) return TSDB_CODE_TSC_COMPRESS_PARAM_ERROR;
4!
342
    setColCompress(compress, compressType);
4✔
343

344
    if (check && !validColCompressLevel(type, level)) return TSDB_CODE_TSC_COMPRESS_LEVEL_ERROR;
4!
345
    setColLevel(compress, level);
4✔
346
  }
347
  return TSDB_CODE_SUCCESS;
4✔
348
}
349

350
bool useCompress(uint8_t tableType) {
39,645✔
351
  return TSDB_SUPER_TABLE == tableType || TSDB_NORMAL_TABLE == tableType || TSDB_CHILD_TABLE == tableType;
39,645✔
352
}
353

354
int8_t validColCompressLevel(uint8_t type, uint8_t level) {
4✔
355
  if (level == TSDB_COLVAL_LEVEL_DISABLED) return 1;
4!
356
  if (level < TSDB_COLVAL_LEVEL_NOCHANGE || level > TSDB_COLVAL_LEVEL_HIGH) {
4!
357
    return 0;
×
358
  }
359
  return 1;
4✔
360
}
361
int8_t validColCompress(uint8_t type, uint8_t l2) {
4✔
362
  if (l2 > TSDB_COLVAL_COMPRESS_XZ && l2 < TSDB_COLVAL_COMPRESS_DISABLED) {
4!
363
    return 0;
×
364
  }
365
  if (l2 == TSDB_COLVAL_COMPRESS_TSZ) {
4!
UNCOV
366
    if (type == TSDB_DATA_TYPE_FLOAT || type == TSDB_DATA_TYPE_DOUBLE) {
×
UNCOV
367
      return 1;
×
368
    } else {
UNCOV
369
      return 0;
×
370
    }
371
  }
372
  return 1;
4✔
373
}
374

375
//
376
// | --------type----------|----- supported encode ----|
377
// |tinyint/smallint/int/bigint/utinyint/usmallinit/uint/ubiginint| simple8b |
378
// | timestamp/bigint/ubigint | delta-i  |
379
// | bool  |  bit-packing   |
380
// | flout/double | delta-d |
381
//
382
int8_t validColEncode(uint8_t type, uint8_t l1) {
4✔
383
  if (l1 == TSDB_COLVAL_ENCODE_NOCHANGE) {
4!
UNCOV
384
    return 1;
×
385
  }
386
  if (l1 == TSDB_COLVAL_ENCODE_DISABLED) {
4!
UNCOV
387
    return 1;
×
388
  }
389
  if (type == TSDB_DATA_TYPE_BOOL) {
4!
UNCOV
390
    return TSDB_COLVAL_ENCODE_RLE == l1 ? 1 : 0;
×
391
  } else if (type >= TSDB_DATA_TYPE_TINYINT && type <= TSDB_DATA_TYPE_INT) {
4!
392
    return TSDB_COLVAL_ENCODE_SIMPLE8B == l1 ? 1 : 0;
2✔
393
  } else if (type == TSDB_DATA_TYPE_BIGINT) {
2!
UNCOV
394
    return TSDB_COLVAL_ENCODE_SIMPLE8B == l1 || TSDB_COLVAL_ENCODE_XOR == l1 ? 1 : 0;
×
395
  } else if (type >= TSDB_DATA_TYPE_FLOAT && type <= TSDB_DATA_TYPE_DOUBLE) {
2!
UNCOV
396
    return TSDB_COLVAL_ENCODE_DELTAD == l1 ? 1 : 0;
×
397
  } else if ((type == TSDB_DATA_TYPE_VARCHAR || type == TSDB_DATA_TYPE_NCHAR) || type == TSDB_DATA_TYPE_JSON ||
2!
398
             type == TSDB_DATA_TYPE_VARBINARY || type == TSDB_DATA_TYPE_BINARY || type == TSDB_DATA_TYPE_GEOMETRY) {
2!
UNCOV
399
    return l1 == TSDB_COLVAL_ENCODE_DISABLED ? 1 : 0;
×
400
    // if (l1 >= TSDB_COLVAL_ENCODE_NOCHANGE || l1 <= TSDB_COLVAL_ENCODE_DELTAD) {
401
    //   return 1;
402
    // } else if (l1 == TSDB_COLVAL_ENCODE_DISABLED) {
403
    //   return 1;
404
    // } else {
405
    //   return 0;
406
    // }
407
  } else if (type == TSDB_DATA_TYPE_TIMESTAMP) {
2!
408
    return TSDB_COLVAL_ENCODE_XOR == l1 ? 1 : 0;
2✔
UNCOV
409
  } else if (type >= TSDB_DATA_TYPE_UTINYINT && type <= TSDB_DATA_TYPE_UINT) {
×
UNCOV
410
    return TSDB_COLVAL_ENCODE_SIMPLE8B == l1 ? 1 : 0;
×
UNCOV
411
  } else if (type == TSDB_DATA_TYPE_UBIGINT) {
×
UNCOV
412
    return TSDB_COLVAL_ENCODE_SIMPLE8B == l1 || TSDB_COLVAL_ENCODE_XOR == l1 ? 1 : 0;
×
413
  } else if (type == TSDB_DATA_TYPE_GEOMETRY) {
×
414
    return 1;
×
415
  }
416
  return 0;
×
417
}
418

419
uint32_t createDefaultColCmprByType(uint8_t type) {
2✔
420
  uint32_t ret = 0;
2✔
421
  uint8_t  encode = getDefaultEncode(type);
2✔
422
  uint8_t  compress = getDefaultCompress(type);
2✔
423
  uint8_t  lvl = getDefaultLevel(type);
2✔
424

425
  SET_COMPRESS(encode, compress, lvl, ret);
2✔
426
  return ret;
2✔
427
}
UNCOV
428
int32_t validColCmprByType(uint8_t type, uint32_t cmpr) {
×
UNCOV
429
  DEFINE_VAR(cmpr);
×
UNCOV
430
  if (!validColEncode(type, l1)) {
×
431
    return TSDB_CODE_TSC_ENCODE_PARAM_ERROR;
×
432
  }
UNCOV
433
  if (!validColCompress(type, l2)) {
×
UNCOV
434
    return TSDB_CODE_TSC_COMPRESS_PARAM_ERROR;
×
435
  }
436

UNCOV
437
  if (!validColCompressLevel(type, lvl)) {
×
438
    return TSDB_CODE_TSC_COMPRESS_LEVEL_ERROR;
×
439
  }
UNCOV
440
  return TSDB_CODE_SUCCESS;
×
441
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc