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

taosdata / TDengine / #5034

24 Apr 2026 11:25AM UTC coverage: 73.058%. Remained the same
#5034

push

travis-ci

web-flow
merge: from main to 3.0 branch #35224

merge: from main to 3.0 branch[manual-only]

1336 of 1975 new or added lines in 48 files covered. (67.65%)

14149 existing lines in 164 files now uncovered.

275896 of 377640 relevant lines covered (73.06%)

132944440.29 hits per line

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

83.84
/source/dnode/mnode/sdb/src/sdbRaw.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
#define _DEFAULT_SOURCE
17
#include "sdb.h"
18

19
int32_t sdbGetIdFromRaw(SSdb *pSdb, SSdbRaw *pRaw) {
45,496,365✔
20
  EKeyType keytype = pSdb->keyTypes[pRaw->type];
45,496,365✔
21
  if (keytype == SDB_KEY_INT32) {
45,496,365✔
22
    int32_t id = *((int32_t *)(pRaw->pData));
45,496,169✔
23
    return id;
45,496,169✔
24
  } else {
25
    return -2;
196✔
26
  }
27
}
28

29
SSdbRaw *sdbAllocRaw(ESdbType type, int8_t sver, int32_t dataLen) {
284,709,017✔
30
  SSdbRaw *pRaw = taosMemoryCalloc(1, dataLen + sizeof(SSdbRaw));
284,709,017✔
31
  if (pRaw == NULL) {
284,709,017✔
32
    terrno = TSDB_CODE_OUT_OF_MEMORY;
196✔
33
    return NULL;
196✔
34
  }
35

36
  pRaw->type = type;
284,708,821✔
37
  pRaw->sver = sver;
284,708,821✔
38
  pRaw->dataLen = dataLen;
284,708,821✔
39

40
#if 1
41
  mTrace("raw:%p, is created, len:%d table:%s", pRaw, dataLen, sdbTableName(type));
284,708,821✔
42
#endif
43
  return pRaw;
284,708,821✔
44
}
45

46
void sdbFreeRaw(SSdbRaw *pRaw) {
196,989,921✔
47
  if (pRaw != NULL) {
196,989,921✔
48
#if 1
49
    mTrace("raw:%p, is freed, len:%d, table:%s", pRaw, pRaw->dataLen, sdbTableName(pRaw->type));
196,469,131✔
50
#endif
51
    taosMemoryFree(pRaw);
196,469,131✔
52
  }
53
}
196,989,921✔
54

55
int32_t sdbSetRawInt8(SSdbRaw *pRaw, int32_t dataPos, int8_t val) {
2,147,483,647✔
56
  int32_t code = 0;
2,147,483,647✔
57
  if (pRaw == NULL) {
2,147,483,647✔
58
    code = TSDB_CODE_INVALID_PTR;
196✔
59
    TAOS_RETURN(code);
196✔
60
  }
61

62
  if (dataPos + sizeof(int8_t) > pRaw->dataLen) {
2,147,483,647✔
63
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
196✔
64
    TAOS_RETURN(code);
196✔
65
  }
66

67
  *(int8_t *)(pRaw->pData + dataPos) = val;
2,147,483,647✔
68
  return 0;
2,147,483,647✔
69
}
70

71
int32_t sdbSetRawUInt8(SSdbRaw *pRaw, int32_t dataPos, uint8_t val) {
13,903,615✔
72
  int32_t code = 0;
13,903,615✔
73
  if (pRaw == NULL) {
13,903,615✔
74
    code = TSDB_CODE_INVALID_PTR;
×
75
    TAOS_RETURN(code);
×
76
  }
77

78
  if (dataPos + sizeof(uint8_t) > pRaw->dataLen) {
13,903,615✔
79
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
×
80
    TAOS_RETURN(code);
×
81
  }
82

83
  *(uint8_t *)(pRaw->pData + dataPos) = val;
13,903,615✔
84
  return 0;
13,903,615✔
85
}
86

87
int32_t sdbSetRawBool(SSdbRaw *pRaw, int32_t dataPos, bool val) {
15,000✔
88
  if (val) {
15,000✔
89
    return sdbSetRawUInt8(pRaw, dataPos, 1);
8,550✔
90
  } else {
91
    return sdbSetRawUInt8(pRaw, dataPos, 0);
6,450✔
92
  }
93
}
94

95
int32_t sdbSetRawInt32(SSdbRaw *pRaw, int32_t dataPos, int32_t val) {
2,147,483,647✔
96
  int32_t code = 0;
2,147,483,647✔
97
  if (pRaw == NULL) {
2,147,483,647✔
98
    code = TSDB_CODE_INVALID_PTR;
196✔
99
    TAOS_RETURN(code);
196✔
100
  }
101

102
  if (dataPos + sizeof(int32_t) > pRaw->dataLen) {
2,147,483,647✔
103
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
196✔
104
    TAOS_RETURN(code);
196✔
105
  }
106

107
  *(int32_t *)(pRaw->pData + dataPos) = val;
2,147,483,647✔
108
  return 0;
2,147,483,647✔
109
}
110

111
int32_t sdbSetRawUInt32(SSdbRaw *pRaw, int32_t dataPos, uint32_t val) {
16,401,941✔
112
  int32_t code = 0;
16,401,941✔
113
  if (pRaw == NULL) {
16,401,941✔
NEW
114
    code = TSDB_CODE_INVALID_PTR;
×
NEW
115
    TAOS_RETURN(code);
×
116
  }
117

118
  if (dataPos + sizeof(uint32_t) > pRaw->dataLen) {
16,401,941✔
NEW
119
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
×
NEW
120
    TAOS_RETURN(code);
×
121
  }
122

123
  *(uint32_t *)(pRaw->pData + dataPos) = val;
16,401,941✔
124
  return 0;
16,401,941✔
125
}
126

127
int32_t sdbSetRawInt16(SSdbRaw *pRaw, int32_t dataPos, int16_t val) {
2,147,483,647✔
128
  int32_t code = 0;
2,147,483,647✔
129
  if (pRaw == NULL) {
2,147,483,647✔
130
    code = TSDB_CODE_INVALID_PTR;
196✔
131
    TAOS_RETURN(code);
196✔
132
  }
133

134
  if (dataPos + sizeof(int16_t) > pRaw->dataLen) {
2,147,483,647✔
135
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
196✔
136
    TAOS_RETURN(code);
196✔
137
  }
138

139
  *(int16_t *)(pRaw->pData + dataPos) = val;
2,147,483,647✔
140
  return 0;
2,147,483,647✔
141
}
142

143
int32_t sdbSetRawInt64(SSdbRaw *pRaw, int32_t dataPos, int64_t val) {
412,726,812✔
144
  int32_t code = 0;
412,726,812✔
145
  if (pRaw == NULL) {
412,726,812✔
146
    code = TSDB_CODE_INVALID_PTR;
196✔
147
    TAOS_RETURN(code);
196✔
148
  }
149

150
  if (dataPos + sizeof(int64_t) > pRaw->dataLen) {
412,726,616✔
151
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
196✔
152
    TAOS_RETURN(code);
196✔
153
  }
154

155
  taosSetInt64Aligned((int64_t *)(pRaw->pData + dataPos), val);
412,726,420✔
156
  return 0;
412,726,420✔
157
}
158

UNCOV
159
int32_t sdbSetRawFloat(SSdbRaw *pRaw, int32_t dataPos, float val) {
×
UNCOV
160
  int32_t code = 0;
×
UNCOV
161
  if (pRaw == NULL) {
×
UNCOV
162
    code = TSDB_CODE_INVALID_PTR;
×
UNCOV
163
    TAOS_RETURN(code);
×
164
  }
165

UNCOV
166
  if (dataPos + sizeof(float) > pRaw->dataLen) {
×
UNCOV
167
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
×
UNCOV
168
    TAOS_RETURN(code);
×
169
  }
170

UNCOV
171
  *(int64_t *)(pRaw->pData + dataPos) = val;
×
UNCOV
172
  return 0;
×
173
}
174

175
int32_t sdbSetRawBinary(SSdbRaw *pRaw, int32_t dataPos, const char *pVal, int32_t valLen) {
2,147,483,647✔
176
  int32_t code = 0;
2,147,483,647✔
177
  if (pRaw == NULL) {
2,147,483,647✔
178
    code = TSDB_CODE_INVALID_PTR;
196✔
179
    TAOS_RETURN(code);
196✔
180
  }
181

182
  if (dataPos + valLen > pRaw->dataLen) {
2,147,483,647✔
183
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
196✔
184
    TAOS_RETURN(code);
196✔
185
  }
186

187
  if (pVal != NULL) {
2,147,483,647✔
188
    memcpy(pRaw->pData + dataPos, pVal, valLen);
2,147,483,647✔
189
  }
190
  return 0;
2,147,483,647✔
191
}
192

193
int32_t sdbSetRawDataLen(SSdbRaw *pRaw, int32_t dataLen) {
282,511,774✔
194
  int32_t code = 0;
282,511,774✔
195
  if (pRaw == NULL) {
282,511,774✔
196
    code = TSDB_CODE_INVALID_PTR;
196✔
197
    TAOS_RETURN(code);
196✔
198
  }
199

200
  if (dataLen > pRaw->dataLen) {
282,511,578✔
201
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
196✔
202
    TAOS_RETURN(code);
196✔
203
  }
204

205
  pRaw->dataLen = dataLen;
282,511,382✔
206
  return 0;
282,511,382✔
207
}
208

209
int32_t sdbSetRawStatus(SSdbRaw *pRaw, ESdbStatus status) {
155,902,484✔
210
  int32_t code = 0;
155,902,484✔
211
  if (pRaw == NULL) {
155,902,484✔
212
    code = TSDB_CODE_INVALID_PTR;
196✔
213
    TAOS_RETURN(code);
196✔
214
  }
215

216
  if (status == SDB_STATUS_INIT) {
155,902,288✔
217
    code = TSDB_CODE_INVALID_PARA;
392✔
218
    TAOS_RETURN(code);
392✔
219
  }
220

221
  pRaw->status = status;
155,901,896✔
222
  return 0;
155,901,896✔
223
}
224

225
int32_t sdbGetRawInt8(SSdbRaw *pRaw, int32_t dataPos, int8_t *val) {
2,147,483,647✔
226
  int32_t code = 0;
2,147,483,647✔
227
  if (pRaw == NULL) {
2,147,483,647✔
228
    code = TSDB_CODE_INVALID_PTR;
196✔
229
    TAOS_RETURN(code);
196✔
230
  }
231

232
  if (dataPos + sizeof(int8_t) > pRaw->dataLen) {
2,147,483,647✔
233
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
196✔
234
    TAOS_RETURN(code);
196✔
235
  }
236

237
  *val = *(int8_t *)(pRaw->pData + dataPos);
2,147,483,647✔
238
  return 0;
2,147,483,647✔
239
}
240

241
int32_t sdbGetRawUInt8(SSdbRaw *pRaw, int32_t dataPos, uint8_t *val) {
10,758,117✔
242
  int32_t code = 0;
10,758,117✔
243
  if (pRaw == NULL) {
10,758,117✔
UNCOV
244
    code = TSDB_CODE_INVALID_PTR;
×
UNCOV
245
    TAOS_RETURN(code);
×
246
  }
247

248
  if (dataPos + sizeof(uint8_t) > pRaw->dataLen) {
10,758,117✔
UNCOV
249
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
×
UNCOV
250
    TAOS_RETURN(code);
×
251
  }
252

253
  *val = *(uint8_t *)(pRaw->pData + dataPos);
10,758,117✔
254
  return 0;
10,758,117✔
255
}
256

257
int32_t sdbGetRawBool(SSdbRaw *pRaw, int32_t dataPos, bool *val) {
6,600✔
258
  int32_t code = 0;
6,600✔
259
  uint8_t v = 0;
6,600✔
260
  code = sdbGetRawUInt8(pRaw, dataPos, &v);
6,600✔
261
  if (code != TSDB_CODE_SUCCESS) {
6,600✔
UNCOV
262
    return code;
×
263
  }
264
  if (v) {
6,600✔
265
    *val = true;
4,050✔
266
  } else {
267
    *val = false;
2,550✔
268
  }
269
  return TSDB_CODE_SUCCESS;
6,600✔
270
}
271

272
int32_t sdbGetRawInt32(SSdbRaw *pRaw, int32_t dataPos, int32_t *val) {
2,147,483,647✔
273
  int32_t code = 0;
2,147,483,647✔
274
  if (pRaw == NULL) {
2,147,483,647✔
275
    code = TSDB_CODE_INVALID_PTR;
196✔
276
    TAOS_RETURN(code);
196✔
277
  }
278

279
  if (dataPos + sizeof(int32_t) > pRaw->dataLen) {
2,147,483,647✔
280
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
196✔
281
    TAOS_RETURN(code);
196✔
282
  }
283

284
  *val = *(int32_t *)(pRaw->pData + dataPos);
2,147,483,647✔
285
  return 0;
2,147,483,647✔
286
}
287

288
int32_t sdbGetRawUInt32(SSdbRaw *pRaw, int32_t dataPos, uint32_t *val) {
15,435,897✔
289
  int32_t code = 0;
15,435,897✔
290
  if (pRaw == NULL) {
15,435,897✔
NEW
291
    code = TSDB_CODE_INVALID_PTR;
×
NEW
292
    TAOS_RETURN(code);
×
293
  }
294

295
  if (dataPos + sizeof(uint32_t) > pRaw->dataLen) {
15,435,897✔
NEW
296
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
×
NEW
297
    TAOS_RETURN(code);
×
298
  }
299

300
  *val = *(uint32_t *)(pRaw->pData + dataPos);
15,435,897✔
301
  return 0;
15,435,897✔
302
}
303

304
int32_t sdbGetRawInt16(SSdbRaw *pRaw, int32_t dataPos, int16_t *val) {
2,147,483,647✔
305
  int32_t code = 0;
2,147,483,647✔
306
  if (pRaw == NULL) {
2,147,483,647✔
307
    code = TSDB_CODE_INVALID_PTR;
196✔
308
    TAOS_RETURN(code);
196✔
309
  }
310

311
  if (dataPos + sizeof(int16_t) > pRaw->dataLen) {
2,147,483,647✔
312
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
196✔
313
    TAOS_RETURN(code);
196✔
314
  }
315

316
  *val = *(int16_t *)(pRaw->pData + dataPos);
2,147,483,647✔
317
  return 0;
2,147,483,647✔
318
}
319

320
int32_t sdbGetRawInt64(SSdbRaw *pRaw, int32_t dataPos, int64_t *val) {
411,902,247✔
321
  int32_t code = 0;
411,902,247✔
322
  if (pRaw == NULL) {
411,902,247✔
323
    code = TSDB_CODE_INVALID_PTR;
196✔
324
    TAOS_RETURN(code);
196✔
325
  }
326

327
  if (dataPos + sizeof(int64_t) > pRaw->dataLen) {
411,902,051✔
328
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
196✔
329
    TAOS_RETURN(code);
196✔
330
  }
331

332
  taosSetPInt64Aligned(val, (int64_t *)(pRaw->pData + dataPos));
411,901,855✔
333
  return 0;
411,901,855✔
334
}
335

UNCOV
336
int32_t sdbGetRawFloat(SSdbRaw *pRaw, int32_t dataPos, float *val) {
×
UNCOV
337
  int32_t code = 0;
×
UNCOV
338
  if (pRaw == NULL) {
×
UNCOV
339
    code = TSDB_CODE_INVALID_PTR;
×
UNCOV
340
    TAOS_RETURN(code);
×
341
  }
342

UNCOV
343
  if (dataPos + sizeof(float) > pRaw->dataLen) {
×
UNCOV
344
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
×
UNCOV
345
    TAOS_RETURN(code);
×
346
  }
347

UNCOV
348
  *val = *(int64_t *)(pRaw->pData + dataPos);
×
UNCOV
349
  return 0;
×
350
}
351

352
int32_t sdbGetRawBinary(SSdbRaw *pRaw, int32_t dataPos, char *pVal, int32_t valLen) {
2,147,483,647✔
353
  int32_t code = 0;
2,147,483,647✔
354
  if (pRaw == NULL) {
2,147,483,647✔
355
    code = TSDB_CODE_INVALID_PTR;
196✔
356
    TAOS_RETURN(code);
196✔
357
  }
358

359
  if (dataPos + valLen > pRaw->dataLen) {
2,147,483,647✔
360
    code = TSDB_CODE_SDB_INVALID_DATA_LEN;
196✔
361
    TAOS_RETURN(code);
196✔
362
  }
363
  if (pVal != NULL) {
2,147,483,647✔
364
    memcpy(pVal, pRaw->pData + dataPos, valLen);
2,147,483,647✔
365
  }
366
  return 0;
2,147,483,647✔
367
}
368

369
int32_t sdbGetRawSoftVer(SSdbRaw *pRaw, int8_t *sver) {
222,889,633✔
370
  int32_t code = 0;
222,889,633✔
371
  if (pRaw == NULL) {
222,889,633✔
372
    code = TSDB_CODE_INVALID_PTR;
196✔
373
    TAOS_RETURN(code);
196✔
374
  }
375

376
  *sver = pRaw->sver;
222,889,437✔
377
  return 0;
222,889,437✔
378
}
379

380
int32_t sdbGetRawTotalSize(SSdbRaw *pRaw) {
617,237,376✔
381
  if (pRaw == NULL) {
617,237,376✔
382
    terrno = TSDB_CODE_INVALID_PTR;
196✔
383
    return -1;
196✔
384
  }
385

386
  return sizeof(SSdbRaw) + pRaw->dataLen;
617,237,180✔
387
}
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