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

taosdata / TDengine / #3911

24 Apr 2025 11:36PM UTC coverage: 53.735% (-1.6%) from 55.295%
#3911

push

travis-ci

happyguoxy
Sync branches at 2025-04-25 07:35

170049 of 316459 relevant lines covered (53.73%)

1192430.54 hits per line

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

79.41
/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

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

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

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

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

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

34
uint8_t getDefaultEncode(uint8_t type) {
185,871✔
35
  switch (type) {
185,871✔
36
    case TSDB_DATA_TYPE_NULL:
103✔
37
    case TSDB_DATA_TYPE_BOOL:
38
      return TSDB_COLVAL_ENCODE_RLE;
103✔
39
    case TSDB_DATA_TYPE_TINYINT:
183,722✔
40
    case TSDB_DATA_TYPE_SMALLINT:
41
    case TSDB_DATA_TYPE_INT:
42
    case TSDB_DATA_TYPE_BIGINT:
43
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
183,722✔
44
    case TSDB_DATA_TYPE_FLOAT:
566✔
45
    case TSDB_DATA_TYPE_DOUBLE:
46
      return TSDB_COLVAL_ENCODE_DELTAD;
566✔
47
    case TSDB_DATA_TYPE_VARCHAR:  // TSDB_DATA_TYPE_BINARY
278✔
48
      return TSDB_COLVAL_ENCODE_DISABLED;
278✔
49
    case TSDB_DATA_TYPE_TIMESTAMP:
878✔
50
      return TSDB_COLVAL_ENCODE_XOR;
878✔
51
    case TSDB_DATA_TYPE_NCHAR:
145✔
52
      return TSDB_COLVAL_ENCODE_DISABLED;
145✔
53
    case TSDB_DATA_TYPE_UTINYINT:
46✔
54
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
46✔
55
    case TSDB_DATA_TYPE_USMALLINT:
46✔
56
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
46✔
57
    case TSDB_DATA_TYPE_UINT:
46✔
58
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
46✔
59
    case TSDB_DATA_TYPE_UBIGINT:
46✔
60
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
46✔
61
    case TSDB_DATA_TYPE_JSON:
×
62
      return TSDB_COLVAL_ENCODE_DISABLED;
×
63
    case TSDB_DATA_TYPE_VARBINARY:
6✔
64
      return TSDB_COLVAL_ENCODE_DISABLED;
6✔
65
    case TSDB_DATA_TYPE_DECIMAL64:
22✔
66
    case TSDB_DATA_TYPE_DECIMAL:
67
      return TSDB_COLVAL_ENCODE_DISABLED;
22✔
68
    case TSDB_DATA_TYPE_BLOB:
×
69
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
×
70
    case TSDB_DATA_TYPE_MEDIUMBLOB:
12✔
71
    case TSDB_DATA_TYPE_GEOMETRY:
72
      return TSDB_COLVAL_ENCODE_DISABLED;
12✔
73

74
    case TSDB_DATA_TYPE_MAX:
×
75
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
×
76

77
    default:
×
78
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
×
79
  }
80
}
81
const char* getDefaultEncodeStr(uint8_t type) { return columnEncodeStr(getDefaultEncode(type)); }
1,541✔
82

83
uint16_t getDefaultCompress(uint8_t type) {
185,685✔
84
  switch (type) {
185,685✔
85
    case TSDB_DATA_TYPE_NULL:
×
86
      return TSDB_COLVAL_COMPRESS_LZ4;
×
87
    case TSDB_DATA_TYPE_BOOL:
103✔
88
      return TSDB_COLVAL_COMPRESS_ZSTD;
103✔
89
    case TSDB_DATA_TYPE_TINYINT:
201✔
90
    case TSDB_DATA_TYPE_SMALLINT:
91
      return TSDB_COLVAL_COMPRESS_ZLIB;
201✔
92
    case TSDB_DATA_TYPE_INT:
183,390✔
93
    case TSDB_DATA_TYPE_BIGINT:
94
      return TSDB_COLVAL_COMPRESS_LZ4;
183,390✔
95
    case TSDB_DATA_TYPE_FLOAT:
566✔
96
    case TSDB_DATA_TYPE_DOUBLE:
97
      return TSDB_COLVAL_COMPRESS_LZ4;
566✔
98
    case TSDB_DATA_TYPE_VARCHAR:  // TSDB_DATA_TYPE_BINARY
276✔
99
      return TSDB_COLVAL_COMPRESS_ZSTD;
276✔
100
    case TSDB_DATA_TYPE_TIMESTAMP:
878✔
101
      return TSDB_COLVAL_COMPRESS_LZ4;
878✔
102
    case TSDB_DATA_TYPE_NCHAR:
143✔
103
      return TSDB_COLVAL_COMPRESS_ZSTD;
143✔
104
    case TSDB_DATA_TYPE_UTINYINT:
92✔
105
    case TSDB_DATA_TYPE_USMALLINT:
106
      return TSDB_COLVAL_COMPRESS_ZLIB;
92✔
107
    case TSDB_DATA_TYPE_UINT:
89✔
108
    case TSDB_DATA_TYPE_UBIGINT:
109
      return TSDB_COLVAL_COMPRESS_LZ4;
89✔
110
    case TSDB_DATA_TYPE_JSON:
×
111
      return TSDB_COLVAL_COMPRESS_LZ4;
×
112
    case TSDB_DATA_TYPE_VARBINARY:
6✔
113
      return TSDB_COLVAL_COMPRESS_ZSTD;
6✔
114
    case TSDB_DATA_TYPE_DECIMAL64:
22✔
115
    case TSDB_DATA_TYPE_DECIMAL:
116
      return TSDB_COLVAL_COMPRESS_ZSTD;
22✔
117
    case TSDB_DATA_TYPE_BLOB:
×
118
      return TSDB_COLVAL_COMPRESS_LZ4;
×
119
    case TSDB_DATA_TYPE_MEDIUMBLOB:
×
120
      return TSDB_COLVAL_COMPRESS_LZ4;
×
121
    case TSDB_DATA_TYPE_GEOMETRY:
12✔
122
      return TSDB_COLVAL_COMPRESS_LZ4;
12✔
123
    case TSDB_DATA_TYPE_MAX:
×
124
      return TSDB_COLVAL_COMPRESS_LZ4;
×
125
    default:
×
126
      return TSDB_COLVAL_COMPRESS_LZ4;
×
127
  }
128
}
129
const char* getDefaultCompressStr(uint8_t type) { return columnCompressStr(getDefaultCompress(type)); }
1,533✔
130

131
uint8_t     getDefaultLevel(uint8_t type) { return TSDB_COLVAL_LEVEL_MEDIUM; }
185,790✔
132
const char* getDefaultLevelStr(uint8_t type) { return columnLevelStr(getDefaultLevel(type)); }
1,537✔
133

134
const char* columnEncodeStr(uint8_t type) {
130,047✔
135
  const char* encode = NULL;
130,047✔
136
  switch (type) {
130,047✔
137
    case TSDB_COLVAL_ENCODE_SIMPLE8B:
110,676✔
138
      encode = TSDB_COLUMN_ENCODE_SIMPLE8B;
110,676✔
139
      break;
110,676✔
140
    case TSDB_COLVAL_ENCODE_XOR:
5,087✔
141
      encode = TSDB_COLUMN_ENCODE_XOR;
5,087✔
142
      break;
5,087✔
143
    case TSDB_COLVAL_ENCODE_RLE:
1,696✔
144
      encode = TSDB_COLUMN_ENCODE_RLE;
1,696✔
145
      break;
1,696✔
146
    case TSDB_COLVAL_ENCODE_DELTAD:
7,519✔
147
      encode = TSDB_COLUMN_ENCODE_DELTAD;
7,519✔
148
      break;
7,519✔
149
    case TSDB_COLVAL_ENCODE_DISABLED:
5,071✔
150
      encode = TSDB_COLUMN_ENCODE_DISABLED;
5,071✔
151
      break;
5,071✔
152
    default:
×
153
      encode = TSDB_COLUMN_ENCODE_UNKNOWN;
×
154
      break;
×
155
  }
156
  return encode;
130,047✔
157
}
158

159
const char* columnCompressStr(uint16_t type) {
130,033✔
160
  const char* compress = NULL;
130,033✔
161
  switch (type) {
130,033✔
162
    case TSDB_COLVAL_COMPRESS_LZ4:
116,699✔
163
      compress = TSDB_COLUMN_COMPRESS_LZ4;
116,699✔
164
      break;
116,699✔
165
    case TSDB_COLVAL_COMPRESS_TSZ:
×
166
      compress = TSDB_COLUMN_COMPRESS_TSZ;
×
167
      break;
×
168
    case TSDB_COLVAL_COMPRESS_XZ:
6✔
169
      compress = TSDB_COLUMN_COMPRESS_XZ;
6✔
170
      break;
6✔
171
    case TSDB_COLVAL_COMPRESS_ZLIB:
6,667✔
172
      compress = TSDB_COLUMN_COMPRESS_ZLIB;
6,667✔
173
      break;
6,667✔
174
    case TSDB_COLVAL_COMPRESS_ZSTD:
6,663✔
175
      compress = TSDB_COLUMN_COMPRESS_ZSTD;
6,663✔
176
      break;
6,663✔
177
    case TSDB_COLVAL_COMPRESS_DISABLED:
2✔
178
      compress = TSDB_COLUMN_COMPRESS_DISABLED;
2✔
179
      break;
2✔
180
    default:
×
181
      compress = TSDB_COLUMN_COMPRESS_UNKNOWN;
×
182
      break;
×
183
  }
184
  return compress;
130,033✔
185
}
186

187
uint8_t columnLevelVal(const char* level) {
3,189✔
188
  if (level == NULL) return TSDB_COLVAL_LEVEL_NOCHANGE;
3,189✔
189
  uint8_t l = TSDB_COLVAL_LEVEL_MEDIUM;
3,189✔
190
  if (0 == strcmp(level, "h") || 0 == strcmp(level, TSDB_COLUMN_LEVEL_HIGH)) {
3,189✔
191
    l = TSDB_COLVAL_LEVEL_HIGH;
1,408✔
192
  } else if (0 == strcmp(level, "m") || 0 == strcmp(level, TSDB_COLUMN_LEVEL_MEDIUM)) {
1,781✔
193
    l = TSDB_COLVAL_LEVEL_MEDIUM;
1,773✔
194
  } else if (0 == strcmp(level, "l") || 0 == strcmp(level, TSDB_COLUMN_LEVEL_LOW)) {
8✔
195
    l = TSDB_COLVAL_LEVEL_LOW;
8✔
196
  } else {
197
    l = TSDB_COLVAL_LEVEL_NOCHANGE;
×
198
  }
199
  return l;
3,189✔
200
}
201

202
uint16_t columnCompressVal(const char* compress) {
3,193✔
203
  if (compress == NULL) return TSDB_COLVAL_COMPRESS_NOCHANGE;
3,193✔
204
  uint16_t c = TSDB_COLVAL_COMPRESS_LZ4;
3,193✔
205
  if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_LZ4)) {
3,193✔
206
    c = TSDB_COLVAL_COMPRESS_LZ4;
1,184✔
207
  } else if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_TSZ)) {
2,009✔
208
    c = TSDB_COLVAL_COMPRESS_TSZ;
×
209
  } else if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_XZ)) {
2,009✔
210
    c = TSDB_COLVAL_COMPRESS_XZ;
12✔
211
  } else if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_ZLIB)) {
1,997✔
212
    c = TSDB_COLVAL_COMPRESS_ZLIB;
204✔
213
  } else if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_ZSTD)) {
1,793✔
214
    c = TSDB_COLVAL_COMPRESS_ZSTD;
1,789✔
215
  } else if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_DISABLED)) {
4✔
216
    c = TSDB_COLVAL_COMPRESS_DISABLED;
4✔
217
  } else {
218
    c = TSDB_COLVAL_COMPRESS_NOCHANGE;
×
219
  }
220
  return c;
3,193✔
221
}
222

223
uint8_t columnEncodeVal(const char* encode) {
3,185✔
224
  if (encode == NULL) return TSDB_COLVAL_ENCODE_NOCHANGE;
3,185✔
225
  uint8_t e = TSDB_COLVAL_ENCODE_SIMPLE8B;
3,185✔
226
  if (0 == strcmp(encode, TSDB_COLUMN_ENCODE_SIMPLE8B)) {
3,185✔
227
    e = TSDB_COLVAL_ENCODE_SIMPLE8B;
2,099✔
228
  } else if (0 == strcmp(encode, TSDB_COLUMN_ENCODE_XOR)) {
1,086✔
229
    e = TSDB_COLVAL_ENCODE_XOR;
369✔
230
  } else if (0 == strcmp(encode, TSDB_COLUMN_ENCODE_RLE)) {
717✔
231
    e = TSDB_COLVAL_ENCODE_RLE;
52✔
232
  } else if (0 == strcmp(encode, TSDB_COLUMN_ENCODE_DELTAD)) {
665✔
233
    e = TSDB_COLVAL_ENCODE_DELTAD;
318✔
234
  } else if (0 == strcmp(encode, TSDB_COLUMN_ENCODE_DISABLED)) {
347✔
235
    e = TSDB_COLVAL_ENCODE_DISABLED;
347✔
236
  } else {
237
    e = TSDB_COLVAL_ENCODE_NOCHANGE;
×
238
  }
239
  return e;
3,185✔
240
}
241

242
const char* columnLevelStr(uint8_t type) {
130,034✔
243
  const char* level = NULL;
130,034✔
244
  switch (type) {
130,034✔
245
    case TSDB_COLVAL_LEVEL_HIGH:
4✔
246
      level = TSDB_COLUMN_LEVEL_HIGH;
4✔
247
      break;
4✔
248
    case TSDB_COLVAL_LEVEL_MEDIUM:
130,026✔
249
      level = TSDB_COLUMN_LEVEL_MEDIUM;
130,026✔
250
      break;
130,026✔
251
    case TSDB_COLVAL_LEVEL_LOW:
4✔
252
      level = TSDB_COLUMN_LEVEL_LOW;
4✔
253
      break;
4✔
254
    default:
×
255
      level = TSDB_COLUMN_LEVEL_UNKNOWN;
×
256
      break;
×
257
  }
258
  return level;
130,034✔
259
}
260

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

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

318
void setColEncode(uint32_t* compress, uint8_t l1) {
2,580✔
319
  *compress &= 0x00FFFFFF;
2,580✔
320
  *compress |= (l1 << 24);
2,580✔
321
  return;
2,580✔
322
}
323
void setColCompress(uint32_t* compress, uint16_t l2) {
2,579✔
324
  *compress &= 0xFF0000FF;
2,579✔
325
  *compress |= (l2 << 8);
2,579✔
326
  return;
2,579✔
327
}
328
void setColLevel(uint32_t* compress, uint8_t level) {
2,578✔
329
  *compress &= 0xFFFFFF00;
2,578✔
330
  *compress |= level;
2,578✔
331
  return;
2,578✔
332
}
333

334
int32_t setColCompressByOption(uint8_t type, uint8_t encode, uint16_t compressType, uint8_t level, bool check,
397✔
335
                               uint32_t* compress) {
336
  if (compress == NULL) return TSDB_CODE_TSC_ENCODE_PARAM_ERROR;
397✔
337
  if (check && !validColEncode(type, encode)) return TSDB_CODE_TSC_ENCODE_PARAM_ERROR;
397✔
338
  setColEncode(compress, encode);
397✔
339

340
  if (compressType == TSDB_COLVAL_COMPRESS_DISABLED) {
397✔
341
    setColCompress(compress, compressType);
×
342
    setColLevel(compress, TSDB_COLVAL_LEVEL_DISABLED);
×
343
  } else {
344
    if (check && !validColCompress(type, compressType)) return TSDB_CODE_TSC_COMPRESS_PARAM_ERROR;
397✔
345
    setColCompress(compress, compressType);
397✔
346

347
    if (check && !validColCompressLevel(type, level)) return TSDB_CODE_TSC_COMPRESS_LEVEL_ERROR;
397✔
348
    setColLevel(compress, level);
397✔
349
  }
350
  return TSDB_CODE_SUCCESS;
397✔
351
}
352

353
bool withExtSchema(uint8_t tableType) {
198,778✔
354
  return TSDB_SUPER_TABLE == tableType || TSDB_NORMAL_TABLE == tableType || TSDB_CHILD_TABLE == tableType;
198,778✔
355
}
356

357
bool hasRefCol(uint8_t tableType) {
331,732✔
358
  return TSDB_VIRTUAL_NORMAL_TABLE == tableType || TSDB_VIRTUAL_CHILD_TABLE == tableType;
331,732✔
359
}
360

361
int8_t validColCompressLevel(uint8_t type, uint8_t level) {
1,223✔
362
  if (level == TSDB_COLVAL_LEVEL_DISABLED) return 1;
1,223✔
363
  if (level < TSDB_COLVAL_LEVEL_NOCHANGE || level > TSDB_COLVAL_LEVEL_HIGH) {
1,223✔
364
    return 0;
×
365
  }
366
  return 1;
1,223✔
367
}
368
int8_t validColCompress(uint8_t type, uint8_t l2) {
1,227✔
369
  if (l2 > TSDB_COLVAL_COMPRESS_XZ && l2 < TSDB_COLVAL_COMPRESS_DISABLED) {
1,227✔
370
    return 0;
×
371
  }
372
  if (l2 == TSDB_COLVAL_COMPRESS_TSZ) {
1,227✔
373
    if (type == TSDB_DATA_TYPE_FLOAT || type == TSDB_DATA_TYPE_DOUBLE) {
×
374
      return 1;
×
375
    } else {
376
      return 0;
×
377
    }
378
  }
379
  return 1;
1,227✔
380
}
381

382
//
383
// | --------type----------|----- supported encode ----|
384
// |tinyint/smallint/int/bigint/utinyint/usmallinit/uint/ubiginint| simple8b |
385
// | timestamp/bigint/ubigint | delta-i  |
386
// | bool  |  bit-packing   |
387
// | flout/double | delta-d |
388
//
389
int8_t validColEncode(uint8_t type, uint8_t l1) {
1,219✔
390
  if (l1 == TSDB_COLVAL_ENCODE_NOCHANGE) {
1,219✔
391
    return 1;
×
392
  }
393
  if (l1 == TSDB_COLVAL_ENCODE_DISABLED) {
1,219✔
394
    return 1;
84✔
395
  }
396
  if (type == TSDB_DATA_TYPE_BOOL) {
1,135✔
397
    return TSDB_COLVAL_ENCODE_RLE == l1 ? 1 : 0;
15✔
398
  } else if (type >= TSDB_DATA_TYPE_TINYINT && type <= TSDB_DATA_TYPE_INT) {
1,120✔
399
    return TSDB_COLVAL_ENCODE_SIMPLE8B == l1 ? 1 : 0;
858✔
400
  } else if (type == TSDB_DATA_TYPE_BIGINT) {
262✔
401
    return TSDB_COLVAL_ENCODE_SIMPLE8B == l1 || TSDB_COLVAL_ENCODE_XOR == l1 ? 1 : 0;
48✔
402
  } else if (type >= TSDB_DATA_TYPE_FLOAT && type <= TSDB_DATA_TYPE_DOUBLE) {
214✔
403
    return TSDB_COLVAL_ENCODE_DELTAD == l1 ? 1 : 0;
55✔
404
  } else if ((type == TSDB_DATA_TYPE_VARCHAR || type == TSDB_DATA_TYPE_NCHAR) || type == TSDB_DATA_TYPE_JSON ||
159✔
405
             type == TSDB_DATA_TYPE_VARBINARY || type == TSDB_DATA_TYPE_BINARY || type == TSDB_DATA_TYPE_GEOMETRY) {
159✔
406
    return l1 == TSDB_COLVAL_ENCODE_DISABLED ? 1 : 0;
×
407
    // if (l1 >= TSDB_COLVAL_ENCODE_NOCHANGE || l1 <= TSDB_COLVAL_ENCODE_DELTAD) {
408
    //   return 1;
409
    // } else if (l1 == TSDB_COLVAL_ENCODE_DISABLED) {
410
    //   return 1;
411
    // } else {
412
    //   return 0;
413
    // }
414
  } else if (type == TSDB_DATA_TYPE_TIMESTAMP) {
159✔
415
    return TSDB_COLVAL_ENCODE_XOR == l1 ? 1 : 0;
107✔
416
  } else if (type >= TSDB_DATA_TYPE_UTINYINT && type <= TSDB_DATA_TYPE_UINT) {
52✔
417
    return TSDB_COLVAL_ENCODE_SIMPLE8B == l1 ? 1 : 0;
39✔
418
  } else if (type == TSDB_DATA_TYPE_UBIGINT) {
13✔
419
    return TSDB_COLVAL_ENCODE_SIMPLE8B == l1 || TSDB_COLVAL_ENCODE_XOR == l1 ? 1 : 0;
13✔
420
  } else if (type == TSDB_DATA_TYPE_GEOMETRY) {
×
421
    return 1;
×
422
  } else if (type == TSDB_DATA_TYPE_DECIMAL64 || type == TSDB_DATA_TYPE_DECIMAL) {
×
423
    return l1 == TSDB_COLVAL_ENCODE_DISABLED ? 1 : 0;
×
424
  }
425
  return 0;
×
426
}
427

428
uint32_t createDefaultColCmprByType(uint8_t type) {
184,075✔
429
  uint32_t ret = 0;
184,075✔
430
  uint8_t  encode = getDefaultEncode(type);
184,075✔
431
  uint8_t  compress = getDefaultCompress(type);
183,744✔
432
  uint8_t  lvl = getDefaultLevel(type);
183,940✔
433

434
  SET_COMPRESS(encode, compress, lvl, ret);
183,928✔
435
  return ret;
183,928✔
436
}
437
int32_t validColCmprByType(uint8_t type, uint32_t cmpr) {
×
438
  DEFINE_VAR(cmpr);
×
439
  if (!validColEncode(type, l1)) {
×
440
    return TSDB_CODE_TSC_ENCODE_PARAM_ERROR;
×
441
  }
442
  if (!validColCompress(type, l2)) {
×
443
    return TSDB_CODE_TSC_COMPRESS_PARAM_ERROR;
×
444
  }
445

446
  if (!validColCompressLevel(type, lvl)) {
×
447
    return TSDB_CODE_TSC_COMPRESS_LEVEL_ERROR;
×
448
  }
449
  return TSDB_CODE_SUCCESS;
×
450
}
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