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

taosdata / TDengine / #3768

28 Mar 2025 10:15AM UTC coverage: 33.726% (-0.3%) from 33.993%
#3768

push

travis-ci

happyguoxy
test:alter lcov result

144891 of 592084 branches covered (24.47%)

Branch coverage included in aggregate %.

218795 of 486283 relevant lines covered (44.99%)

765715.29 hits per line

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

66.22
/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) {
162,641✔
35
  switch (type) {
162,641!
36
    case TSDB_DATA_TYPE_NULL:
109✔
37
    case TSDB_DATA_TYPE_BOOL:
38
      return TSDB_COLVAL_ENCODE_RLE;
109✔
39
    case TSDB_DATA_TYPE_TINYINT:
160,449✔
40
    case TSDB_DATA_TYPE_SMALLINT:
41
    case TSDB_DATA_TYPE_INT:
42
    case TSDB_DATA_TYPE_BIGINT:
43
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
160,449✔
44
    case TSDB_DATA_TYPE_FLOAT:
587✔
45
    case TSDB_DATA_TYPE_DOUBLE:
46
      return TSDB_COLVAL_ENCODE_DELTAD;
587✔
47
    case TSDB_DATA_TYPE_VARCHAR:  // TSDB_DATA_TYPE_BINARY
276✔
48
      return TSDB_COLVAL_ENCODE_DISABLED;
276✔
49
    case TSDB_DATA_TYPE_TIMESTAMP:
816✔
50
      return TSDB_COLVAL_ENCODE_XOR;
816✔
51
    case TSDB_DATA_TYPE_NCHAR:
151✔
52
      return TSDB_COLVAL_ENCODE_DISABLED;
151✔
53
    case TSDB_DATA_TYPE_UTINYINT:
59✔
54
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
59✔
55
    case TSDB_DATA_TYPE_USMALLINT:
59✔
56
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
59✔
57
    case TSDB_DATA_TYPE_UINT:
59✔
58
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
59✔
59
    case TSDB_DATA_TYPE_UBIGINT:
59✔
60
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
59✔
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:
×
66
    case TSDB_DATA_TYPE_DECIMAL:
67
      return TSDB_COLVAL_ENCODE_DISABLED;
×
68
    case TSDB_DATA_TYPE_BLOB:
×
69
      return TSDB_COLVAL_ENCODE_SIMPLE8B;
×
70
    case TSDB_DATA_TYPE_MEDIUMBLOB:
11✔
71
    case TSDB_DATA_TYPE_GEOMETRY:
72
      return TSDB_COLVAL_ENCODE_DISABLED;
11✔
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,654✔
82

83
uint16_t getDefaultCompress(uint8_t type) {
162,641✔
84
  switch (type) {
162,641!
85
    case TSDB_DATA_TYPE_NULL:
×
86
      return TSDB_COLVAL_COMPRESS_LZ4;
×
87
    case TSDB_DATA_TYPE_BOOL:
109✔
88
      return TSDB_COLVAL_COMPRESS_ZSTD;
109✔
89
    case TSDB_DATA_TYPE_TINYINT:
220✔
90
    case TSDB_DATA_TYPE_SMALLINT:
91
      return TSDB_COLVAL_COMPRESS_ZLIB;
220✔
92
    case TSDB_DATA_TYPE_INT:
160,230✔
93
    case TSDB_DATA_TYPE_BIGINT:
94
      return TSDB_COLVAL_COMPRESS_LZ4;
160,230✔
95
    case TSDB_DATA_TYPE_FLOAT:
587✔
96
    case TSDB_DATA_TYPE_DOUBLE:
97
      return TSDB_COLVAL_COMPRESS_LZ4;
587✔
98
    case TSDB_DATA_TYPE_VARCHAR:  // TSDB_DATA_TYPE_BINARY
276✔
99
      return TSDB_COLVAL_COMPRESS_ZSTD;
276✔
100
    case TSDB_DATA_TYPE_TIMESTAMP:
816✔
101
      return TSDB_COLVAL_COMPRESS_LZ4;
816✔
102
    case TSDB_DATA_TYPE_NCHAR:
151✔
103
      return TSDB_COLVAL_COMPRESS_ZSTD;
151✔
104
    case TSDB_DATA_TYPE_UTINYINT:
118✔
105
    case TSDB_DATA_TYPE_USMALLINT:
106
      return TSDB_COLVAL_COMPRESS_ZLIB;
118✔
107
    case TSDB_DATA_TYPE_UINT:
118✔
108
    case TSDB_DATA_TYPE_UBIGINT:
109
      return TSDB_COLVAL_COMPRESS_LZ4;
118✔
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:
×
115
    case TSDB_DATA_TYPE_DECIMAL:
116
      return TSDB_COLVAL_COMPRESS_ZSTD;
×
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:
11✔
122
      return TSDB_COLVAL_COMPRESS_LZ4;
11✔
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,654✔
130

131
uint8_t     getDefaultLevel(uint8_t type) { return TSDB_COLVAL_LEVEL_MEDIUM; }
162,641✔
132
const char* getDefaultLevelStr(uint8_t type) { return columnLevelStr(getDefaultLevel(type)); }
1,654✔
133

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

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

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

202
uint16_t columnCompressVal(const char* compress) {
1,878✔
203
  if (compress == NULL) return TSDB_COLVAL_COMPRESS_NOCHANGE;
1,878!
204
  uint16_t c = TSDB_COLVAL_COMPRESS_LZ4;
1,878✔
205
  if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_LZ4)) {
1,878✔
206
    c = TSDB_COLVAL_COMPRESS_LZ4;
1,269✔
207
  } else if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_TSZ)) {
609!
208
    c = TSDB_COLVAL_COMPRESS_TSZ;
×
209
  } else if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_XZ)) {
609!
210
    c = TSDB_COLVAL_COMPRESS_XZ;
×
211
  } else if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_ZLIB)) {
609✔
212
    c = TSDB_COLVAL_COMPRESS_ZLIB;
230✔
213
  } else if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_ZSTD)) {
379!
214
    c = TSDB_COLVAL_COMPRESS_ZSTD;
379✔
215
  } else if (0 == strcmp(compress, TSDB_COLUMN_COMPRESS_DISABLED)) {
×
216
    c = TSDB_COLVAL_COMPRESS_DISABLED;
×
217
  } else {
218
    c = TSDB_COLVAL_COMPRESS_NOCHANGE;
×
219
  }
220
  return c;
1,878✔
221
}
222

223
uint8_t columnEncodeVal(const char* encode) {
1,878✔
224
  if (encode == NULL) return TSDB_COLVAL_ENCODE_NOCHANGE;
1,878!
225
  uint8_t e = TSDB_COLVAL_ENCODE_SIMPLE8B;
1,878✔
226
  if (0 == strcmp(encode, TSDB_COLUMN_ENCODE_SIMPLE8B)) {
1,878✔
227
    e = TSDB_COLVAL_ENCODE_SIMPLE8B;
775✔
228
  } else if (0 == strcmp(encode, TSDB_COLUMN_ENCODE_XOR)) {
1,103✔
229
    e = TSDB_COLVAL_ENCODE_XOR;
378✔
230
  } else if (0 == strcmp(encode, TSDB_COLUMN_ENCODE_RLE)) {
725✔
231
    e = TSDB_COLVAL_ENCODE_RLE;
63✔
232
  } else if (0 == strcmp(encode, TSDB_COLUMN_ENCODE_DELTAD)) {
662✔
233
    e = TSDB_COLVAL_ENCODE_DELTAD;
333✔
234
  } else if (0 == strcmp(encode, TSDB_COLUMN_ENCODE_DISABLED)) {
329!
235
    e = TSDB_COLVAL_ENCODE_DISABLED;
329✔
236
  } else {
237
    e = TSDB_COLVAL_ENCODE_NOCHANGE;
×
238
  }
239
  return e;
1,878✔
240
}
241

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

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

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

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

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

340
  if (compressType == TSDB_COLVAL_COMPRESS_DISABLED) {
424!
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;
424!
345
    setColCompress(compress, compressType);
424✔
346

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

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

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

361
int8_t validColCompressLevel(uint8_t type, uint8_t level) {
536✔
362
  if (level == TSDB_COLVAL_LEVEL_DISABLED) return 1;
536!
363
  if (level < TSDB_COLVAL_LEVEL_NOCHANGE || level > TSDB_COLVAL_LEVEL_HIGH) {
536!
364
    return 0;
×
365
  }
366
  return 1;
536✔
367
}
368
int8_t validColCompress(uint8_t type, uint8_t l2) {
536✔
369
  if (l2 > TSDB_COLVAL_COMPRESS_XZ && l2 < TSDB_COLVAL_COMPRESS_DISABLED) {
536!
370
    return 0;
×
371
  }
372
  if (l2 == TSDB_COLVAL_COMPRESS_TSZ) {
536!
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;
536✔
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) {
536✔
390
  if (l1 == TSDB_COLVAL_ENCODE_NOCHANGE) {
536!
391
    return 1;
×
392
  }
393
  if (l1 == TSDB_COLVAL_ENCODE_DISABLED) {
536✔
394
    return 1;
87✔
395
  }
396
  if (type == TSDB_DATA_TYPE_BOOL) {
449✔
397
    return TSDB_COLVAL_ENCODE_RLE == l1 ? 1 : 0;
15✔
398
  } else if (type >= TSDB_DATA_TYPE_TINYINT && type <= TSDB_DATA_TYPE_INT) {
434!
399
    return TSDB_COLVAL_ENCODE_SIMPLE8B == l1 ? 1 : 0;
165✔
400
  } else if (type == TSDB_DATA_TYPE_BIGINT) {
269✔
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) {
221!
403
    return TSDB_COLVAL_ENCODE_DELTAD == l1 ? 1 : 0;
58✔
404
  } else if ((type == TSDB_DATA_TYPE_VARCHAR || type == TSDB_DATA_TYPE_NCHAR) || type == TSDB_DATA_TYPE_JSON ||
163!
405
             type == TSDB_DATA_TYPE_VARBINARY || type == TSDB_DATA_TYPE_BINARY || type == TSDB_DATA_TYPE_GEOMETRY) {
163!
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) {
163✔
415
    return TSDB_COLVAL_ENCODE_XOR == l1 ? 1 : 0;
111✔
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) {
160,671✔
429
  uint32_t ret = 0;
160,671✔
430
  uint8_t  encode = getDefaultEncode(type);
160,671✔
431
  uint8_t  compress = getDefaultCompress(type);
160,671✔
432
  uint8_t  lvl = getDefaultLevel(type);
160,671✔
433

434
  SET_COMPRESS(encode, compress, lvl, ret);
160,671✔
435
  return ret;
160,671✔
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