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

taosdata / TDengine / #5005

26 Mar 2026 12:51PM UTC coverage: 72.152% (-0.2%) from 72.338%
#5005

push

travis-ci

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

512 of 851 new or added lines in 47 files covered. (60.16%)

6189 existing lines in 147 files now uncovered.

253282 of 351039 relevant lines covered (72.15%)

132156710.33 hits per line

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

97.82
/source/common/src/msg/streamJson.c
1
#include "streamMsg.h"
2
#include "tjson.h"
3

4
static const char* jkFieldName     = "name";
5
static const char* jkFieldType     = "type";
6
static const char* jkFieldFlags    = "flags";
7
static const char* jkFieldBytes    = "bytes";
8
static const char* jkFieldCompress = "compress";
9
static const char* jkFieldTypeMod  = "typeMod";
10
static int32_t sfieldWithOptionsToJson(const void* pObj, SJson* pJson) {
6,624,196✔
11
  const SFieldWithOptions* pField = (const SFieldWithOptions*)pObj;
6,624,196✔
12
  if (NULL != pField->name) {
6,624,196✔
13
    TAOS_CHECK_RETURN(tjsonAddStringToObject(pJson, jkFieldName, pField->name));
6,624,196✔
14
  }
15
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkFieldType, pField->type));
6,624,196✔
16
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
6,624,196✔
17
    pJson, jkFieldFlags, pField->flags));
18
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
6,624,196✔
19
    pJson, jkFieldBytes, pField->bytes));
20
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
6,624,196✔
21
    pJson, jkFieldCompress, pField->compress));
22
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
6,624,196✔
23
    pJson, jkFieldTypeMod, pField->typeMod));
24
  return TSDB_CODE_SUCCESS;
6,624,196✔
25
}
26

27
static int32_t jsonToSFieldWithOptions(const SJson* pJson, void* pObj) {
1,927,152✔
28
  SFieldWithOptions* pField = (SFieldWithOptions*)pObj;
1,927,152✔
29
  TAOS_CHECK_RETURN(tjsonGetStringValue1(pJson, jkFieldName, pField->name, sizeof(pField->name)));
1,927,152✔
30
  TAOS_CHECK_RETURN(tjsonGetUTinyIntValue(pJson, jkFieldType, &pField->type));
1,927,152✔
31
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(pJson, jkFieldFlags, &pField->flags));
1,927,152✔
32
  TAOS_CHECK_RETURN(tjsonGetIntValue(pJson, jkFieldBytes, &pField->bytes));
1,927,152✔
33
  TAOS_CHECK_RETURN(tjsonGetUIntValue(
1,927,152✔
34
    pJson, jkFieldCompress, &pField->compress));
35
  TAOS_CHECK_RETURN(tjsonGetIntValue(pJson, jkFieldTypeMod, &pField->typeMod));
1,927,152✔
36
  return TSDB_CODE_SUCCESS;
1,927,152✔
37
}
38

39
static int32_t stagFieldWithOptionsToJson(const void* pObj, SJson* pJson) {
1,021,932✔
40
  const SFieldWithOptions* pField = (const SFieldWithOptions*)pObj;
1,021,932✔
41
  TAOS_CHECK_RETURN(tjsonAddStringToObject(pJson, jkFieldName, pField->name));
1,021,932✔
42
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkFieldType, pField->type));
1,021,932✔
43
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,021,932✔
44
    pJson, jkFieldFlags, pField->flags));
45
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,021,932✔
46
    pJson, jkFieldBytes, pField->bytes));
47
  // TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
48
  //   pJson, jkFieldCompress, pField->compress));
49
  // TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
50
  //   pJson, jkFieldTypeMod, pField->typeMod));
51
  return TSDB_CODE_SUCCESS;
1,021,932✔
52
}
53

54
static int32_t jsonToSTagFieldWithOptions(const SJson* pJson, void* pObj) {
297,903✔
55
  SFieldWithOptions* pField = (SFieldWithOptions*)pObj;
297,903✔
56
  TAOS_CHECK_RETURN(tjsonGetStringValue1(pJson, jkFieldName, pField->name, sizeof(pField->name)));
297,903✔
57
  TAOS_CHECK_RETURN(tjsonGetUTinyIntValue(pJson, jkFieldType, &pField->type));
297,903✔
58
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(pJson, jkFieldFlags, &pField->flags));
297,903✔
59
  TAOS_CHECK_RETURN(tjsonGetIntValue(pJson, jkFieldBytes, &pField->bytes));
297,903✔
60
  // TAOS_CHECK_RETURN(tjsonGetUIntValue(
61
  //   pJson, jkFieldCompress, &pField->compress));
62
  // TAOS_CHECK_RETURN(tjsonGetIntValue(pJson, jkFieldTypeMod, &pField->typeMod));
63
  return TSDB_CODE_SUCCESS;
297,903✔
64
}
65

66
static const char* jkSessionTriggerSlotId     = "slotId";
67
static const char* jkSessionTriggerSessionVal = "sessionVal";
68
static int32_t sessionTriggerToJson(const void* pObj, SJson* pJson) {
84,846✔
69
  const SSessionTrigger* pTrigger = (const SSessionTrigger*)pObj;
84,846✔
70
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
84,846✔
71
    pJson, jkSessionTriggerSlotId, pTrigger->slotId));
72
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
84,846✔
73
    pJson, jkSessionTriggerSessionVal, pTrigger->sessionVal));
74
  return TSDB_CODE_SUCCESS;
84,846✔
75
}
76

77
static int32_t jsonToSessionTrigger(const SJson* pJson, void* pObj) {
19,189✔
78
  SSessionTrigger* pTrigger = (SSessionTrigger*)pObj;
19,189✔
79
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(
19,189✔
80
    pJson, jkSessionTriggerSlotId, &pTrigger->slotId));
81
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
19,189✔
82
    pJson, jkSessionTriggerSessionVal, &pTrigger->sessionVal));
83
  return TSDB_CODE_SUCCESS;
19,189✔
84
}
85

86
static const char* jkStateTriggerSlotId           = "slotId";
87
static const char* jkStateTriggerExtend           = "extend";
88
static const char* jkStateTriggerZeroth           = "zeroth";
89
static const char* jkStateTriggerTrueForType      = "trueForType";
90
static const char* jkStateTriggerTrueForCount     = "trueForCount";
91
static const char* jkStateTriggerTrueForDuration  = "trueForDuration";
92
static const char* jkStateTriggerExpr             = "expr";
93
static int32_t stateTriggerToJson(const void* pObj, SJson* pJson) {
471,312✔
94
  const SStateWinTrigger* pTrigger = (const SStateWinTrigger*)pObj;
471,312✔
95
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
471,312✔
96
    pJson, jkStateTriggerSlotId, pTrigger->slotId));
97
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
471,312✔
98
    pJson, jkStateTriggerExtend, pTrigger->extend));
99
  if (NULL != pTrigger->zeroth) {
471,312✔
100
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
×
101
      pJson, jkStateTriggerZeroth, (const char*)pTrigger->zeroth));
102
  }
103
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkStateTriggerTrueForType, pTrigger->trueForType));
471,312✔
104
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkStateTriggerTrueForCount, pTrigger->trueForCount));
471,312✔
105
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkStateTriggerTrueForDuration, pTrigger->trueForDuration));
471,312✔
106
  if (NULL != pTrigger->expr) {
471,312✔
107
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
471,312✔
108
      pJson, jkStateTriggerExpr, (const char*)pTrigger->expr));
109
  }
110
  return TSDB_CODE_SUCCESS;
471,312✔
111
}
112

113
static int32_t jsonToStateTrigger(const SJson* pJson, void* pObj) {
155,686✔
114
  SStateWinTrigger* pTrigger = (SStateWinTrigger*)pObj;
155,686✔
115
  TAOS_CHECK_RETURN(
155,686✔
116
    tjsonGetSmallIntValue(pJson, jkStateTriggerSlotId, &pTrigger->slotId));
117
  TAOS_CHECK_RETURN(
155,686✔
118
    tjsonGetSmallIntValue(pJson, jkStateTriggerExtend, &pTrigger->extend));
119
  TAOS_CHECK_RETURN(tjsonDupStringValue(
155,686✔
120
    pJson, jkStateTriggerZeroth, (char**)&pTrigger->zeroth));
121
  TAOS_CHECK_RETURN(tjsonGetIntValue(pJson, jkStateTriggerTrueForType, &pTrigger->trueForType));
155,686✔
122
  TAOS_CHECK_RETURN(tjsonGetIntValue(pJson, jkStateTriggerTrueForCount, &pTrigger->trueForCount));
155,686✔
123
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(pJson, jkStateTriggerTrueForDuration, &pTrigger->trueForDuration));
155,686✔
124
  TAOS_CHECK_RETURN(tjsonDupStringValue(
155,686✔
125
    pJson, jkStateTriggerExpr, (char**)&pTrigger->expr));
126
  return TSDB_CODE_SUCCESS;
155,686✔
127
}
128

129
static const char* jkSlidingTriggerIntervalUnit = "intervalUnit";
130
static const char* jkSlidingTriggerSlidingUnit  = "slidingUnit";
131
static const char* jkSlidingTriggerOffsetUnit   = "offsetUnit";
132
static const char* jkSlidingTriggerSoffsetUnit  = "soffsetUnit";
133
static const char* jkSlidingTriggerPrecision    = "precision";
134
static const char* jkSlidingTriggerInterval     = "interval";
135
static const char* jkSlidingTriggerOffset       = "offset";
136
static const char* jkSlidingTriggerSliding      = "sliding";
137
static const char* jkSlidingTriggerSoffset      = "soffset";
138
static const char* jkSlidingTriggerOverlap      = "overlap";
139
static int32_t slidingTriggerToJson(const void* pObj, SJson* pJson) {
594,014✔
140
  const SSlidingTrigger* pTrigger = (const SSlidingTrigger*)pObj;
594,014✔
141
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
594,014✔
142
    pJson, jkSlidingTriggerIntervalUnit, pTrigger->intervalUnit));
143
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
594,014✔
144
    pJson, jkSlidingTriggerSlidingUnit, pTrigger->slidingUnit));
145
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
594,014✔
146
    pJson, jkSlidingTriggerOffsetUnit, pTrigger->offsetUnit));
147
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
594,014✔
148
    pJson, jkSlidingTriggerSoffsetUnit, pTrigger->soffsetUnit));
149
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
594,014✔
150
    pJson, jkSlidingTriggerPrecision, pTrigger->precision));
151
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
594,014✔
152
    pJson, jkSlidingTriggerInterval, pTrigger->interval));
153
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
594,014✔
154
    pJson, jkSlidingTriggerSliding, pTrigger->sliding));
155
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
594,014✔
156
    pJson, jkSlidingTriggerOffset, pTrigger->offset));
157
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
594,014✔
158
    pJson, jkSlidingTriggerSoffset, pTrigger->soffset));
159
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
594,014✔
160
    pJson, jkSlidingTriggerOverlap, pTrigger->overlap));
161
  return TSDB_CODE_SUCCESS;
594,014✔
162
}
163

164
static int32_t jsonToSlidingTrigger(const SJson* pJson, void* pObj) {
191,098✔
165
  SSlidingTrigger* pTrigger = (SSlidingTrigger*)pObj;
191,098✔
166
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
191,098✔
167
    pJson, jkSlidingTriggerIntervalUnit, &pTrigger->intervalUnit));
168
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
191,098✔
169
    pJson, jkSlidingTriggerSlidingUnit, &pTrigger->slidingUnit));
170
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
191,098✔
171
    pJson, jkSlidingTriggerOffsetUnit, &pTrigger->offsetUnit));
172
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
191,098✔
173
    pJson, jkSlidingTriggerSoffsetUnit, &pTrigger->soffsetUnit));
174
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
191,098✔
175
    pJson, jkSlidingTriggerPrecision, &pTrigger->precision));
176
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
191,098✔
177
    pJson, jkSlidingTriggerInterval, &pTrigger->interval));
178
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
191,098✔
179
    pJson, jkSlidingTriggerSliding, &pTrigger->sliding));
180
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
191,098✔
181
    pJson, jkSlidingTriggerOffset, &pTrigger->offset));
182
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
191,098✔
183
    pJson, jkSlidingTriggerSoffset, &pTrigger->soffset));
184
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
191,098✔
185
    pJson, jkSlidingTriggerOverlap, &pTrigger->overlap));
186
  return TSDB_CODE_SUCCESS;
191,098✔
187
}
188

189
static const char* jkEventTriggerStartCond       = "startCond";
190
static const char* jkEventTriggerEndCond         = "endCond";
191
static const char* jkEventTriggerTrueForType     = "trueForType";
192
static const char* jkEventTriggerTrueForCount    = "trueForCount";
193
static const char* jkEventTriggerTrueForDuration = "trueForDuration";
194
static int32_t eventTriggerToJson(const void* pObj, SJson* pJson) {
178,724✔
195
  const SEventTrigger* pTrigger = (const SEventTrigger*)pObj;
178,724✔
196
  if (NULL != pTrigger->startCond) {
178,724✔
197
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
178,724✔
198
      pJson, jkEventTriggerStartCond, (const char*)pTrigger->startCond));
199
  }
200
  if (NULL != pTrigger->endCond) {
178,724✔
201
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
165,972✔
202
      pJson, jkEventTriggerEndCond, (const char*)pTrigger->endCond));
203
  }
204
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkEventTriggerTrueForType, pTrigger->trueForType));
178,724✔
205
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkEventTriggerTrueForCount, pTrigger->trueForCount));
178,724✔
206
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkEventTriggerTrueForDuration, pTrigger->trueForDuration));
178,724✔
207
  return TSDB_CODE_SUCCESS;
178,724✔
208
}
209

210
static int32_t jsonToEventTrigger(const SJson* pJson, void* pObj) {
50,122✔
211
  SEventTrigger* pTrigger = (SEventTrigger*)pObj;
50,122✔
212
  TAOS_CHECK_RETURN(tjsonDupStringValue(
50,122✔
213
    pJson, jkEventTriggerStartCond, (char**)&pTrigger->startCond));
214
  TAOS_CHECK_RETURN(tjsonDupStringValue(
50,122✔
215
    pJson, jkEventTriggerEndCond, (char**)&pTrigger->endCond));
216
  TAOS_CHECK_RETURN(tjsonGetIntValue(pJson, jkEventTriggerTrueForType, &pTrigger->trueForType));
50,122✔
217
  TAOS_CHECK_RETURN(tjsonGetIntValue(pJson, jkEventTriggerTrueForCount, &pTrigger->trueForCount));
50,122✔
218
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(pJson, jkEventTriggerTrueForDuration, &pTrigger->trueForDuration));
50,122✔
219
  return TSDB_CODE_SUCCESS;
50,122✔
220
}
221

222
static const char* jkCountTriggerCountVal = "countVal";
223
static const char* jkCountTriggerSliding  = "sliding";
224
static const char* jkCountTriggerCondCols = "condCols";
225
static int32_t countTriggerToJson(const void* pObj, SJson* pJson) {
173,368✔
226
  const SCountTrigger* pTrigger = (const SCountTrigger*)pObj;
173,368✔
227
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkCountTriggerCountVal, pTrigger->countVal));
173,368✔
228
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkCountTriggerSliding, pTrigger->sliding));
173,368✔
229
  if (NULL != pTrigger->condCols) {
173,368✔
230
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
×
231
      pJson, jkCountTriggerCondCols, (const char*)pTrigger->condCols));
232
  }
233
  return TSDB_CODE_SUCCESS;
173,368✔
234
}
235

236
static int32_t jsonToCountTrigger(const SJson* pJson, void* pObj) {
45,620✔
237
  SCountTrigger* pTrigger = (SCountTrigger*)pObj;
45,620✔
238
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
45,620✔
239
    pJson, jkCountTriggerCountVal, &pTrigger->countVal));
240
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
45,620✔
241
    pJson, jkCountTriggerSliding, &pTrigger->sliding));
242
  TAOS_CHECK_RETURN(tjsonDupStringValue(
45,620✔
243
    pJson, jkCountTriggerCondCols, (char**)&pTrigger->condCols));
244
  return TSDB_CODE_SUCCESS;
45,620✔
245
}
246

247
static const char* jkPeriodTriggerPeriodUnit = "periodUnit";
248
static const char* jkPeriodTriggerOffsetUnit = "offsetUnit";
249
static const char* jkPeriodTriggerPrecision  = "precision";
250
static const char* jkPeriodTriggerPeriod     = "period";
251
static const char* jkPeriodTriggerOffset     = "offset";
252
static int32_t periodTriggerToJson(const void* pObj, SJson* pJson) {
84,948✔
253
  const SPeriodTrigger* pTrigger = (const SPeriodTrigger*)pObj;
84,948✔
254
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
84,948✔
255
    pJson, jkPeriodTriggerPeriodUnit, pTrigger->periodUnit));
256
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
84,948✔
257
    pJson, jkPeriodTriggerOffsetUnit, pTrigger->offsetUnit));
258
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
84,948✔
259
    pJson, jkPeriodTriggerPrecision, pTrigger->precision));
260
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
84,948✔
261
    pJson, jkPeriodTriggerPeriod, pTrigger->period));
262
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
84,948✔
263
    pJson, jkPeriodTriggerOffset, pTrigger->offset));
264
  return TSDB_CODE_SUCCESS;
84,948✔
265
}
266

267
static int32_t jsonToPeriodTrigger(const SJson* pJson, void* pObj) {
24,463✔
268
  SPeriodTrigger* pTrigger = (SPeriodTrigger*)pObj;
24,463✔
269
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
24,463✔
270
    pJson, jkPeriodTriggerPeriodUnit, &pTrigger->periodUnit));
271
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
24,463✔
272
    pJson, jkPeriodTriggerOffsetUnit, &pTrigger->offsetUnit));
273
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
24,463✔
274
    pJson, jkPeriodTriggerPrecision, &pTrigger->precision));
275
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
24,463✔
276
    pJson, jkPeriodTriggerPeriod, &pTrigger->period));
277
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
24,463✔
278
    pJson, jkPeriodTriggerOffset, &pTrigger->offset));
279
  return TSDB_CODE_SUCCESS;
24,463✔
280
}
281

282
static int32_t int32ToJson(const void* pObj, SJson* pJson) {
3,451,458✔
283
  const int32_t* pInt = (const int32_t*)pObj;
3,451,458✔
284
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, "value", *pInt));
3,451,458✔
285
  return TSDB_CODE_SUCCESS;
3,451,458✔
286
}
287

288
static int32_t jsonToInt32(const SJson* pJson, void* pObj) {
1,044,106✔
289
  int32_t* pInt = (int32_t*)pObj;
1,044,106✔
290
  TAOS_CHECK_RETURN(tjsonGetIntValue(pJson, "value", pInt));
1,044,106✔
291
  return TSDB_CODE_SUCCESS;
1,044,106✔
292
}
293

294
static int32_t int16ToJson(const void* pObj, SJson* pJson) {
159,774✔
295
  const int16_t* pInt = (const int16_t*)pObj;
159,774✔
296
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, "value", *pInt));
159,774✔
297
  return TSDB_CODE_SUCCESS;
159,774✔
298
}
299

300
static int32_t jsonToInt16(const SJson* pJson, void* pObj) {
56,522✔
301
  int16_t* pInt = (int16_t*)pObj;
56,522✔
302
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(pJson, "value", pInt));
56,522✔
303
  return TSDB_CODE_SUCCESS;
56,522✔
304
}
305

306
static const char* jkSstreamCalcScanVgList        = "vgList";
307
static const char* jkSstreamCalcScanReadFromCache = "readFromCache";
308
static const char* jkSstreamCalcScanScanPlan      = "scanPlan";
309
static int32_t calcScanPlanToJson(const void* pObj, SJson* pJson) {
3,451,458✔
310
  const SStreamCalcScan* pPlan = (const SStreamCalcScan*)pObj;
3,451,458✔
311
  TAOS_CHECK_RETURN(tjsonAddArray(
3,451,458✔
312
    pJson, jkSstreamCalcScanVgList, int32ToJson,
313
    pPlan->vgList ? TARRAY_GET_ELEM(pPlan->vgList, 0) : NULL, sizeof(int32_t),
314
    pPlan->vgList ? pPlan->vgList->size : 0));
315
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
3,451,458✔
316
    pJson, jkSstreamCalcScanReadFromCache, pPlan->readFromCache));
317
  if (NULL != pPlan->scanPlan) {
3,451,458✔
318
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
3,451,458✔
319
      pJson, jkSstreamCalcScanScanPlan, (const char*)pPlan->scanPlan));
320
  }
321
  return TSDB_CODE_SUCCESS;
3,451,458✔
322
}
323

324
static int32_t jsonToCalcScanPlan(const SJson* pJson, void* pObj) {
1,044,106✔
325
  SStreamCalcScan* pPlan = (SStreamCalcScan*)pObj;
1,044,106✔
326
  TAOS_CHECK_RETURN(tjsonToTArray(
1,044,106✔
327
    pJson, jkSstreamCalcScanVgList, jsonToInt32,
328
    &pPlan->vgList, sizeof(int32_t)));
329
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
1,044,106✔
330
    pJson, jkSstreamCalcScanReadFromCache, &pPlan->readFromCache));
331
  TAOS_CHECK_RETURN(tjsonDupStringValue(
1,044,106✔
332
    pJson, jkSstreamCalcScanScanPlan, (char**)&pPlan->scanPlan));
333
  return TSDB_CODE_SUCCESS;
1,044,106✔
334
}
335

336
static const char* jkSDataTypeType      = "type";
337
static const char* jkSDataTypePrecision = "precision";
338
static const char* jkSDataTypeScale     = "scale";
339
static const char* jkSDataTypeBytes     = "bytes";
340
static int32_t sDataTypeToJson(const void* pObj, SJson* pJson) {
117,002✔
341
  const SDataType* pType = (const SDataType*)pObj;
117,002✔
342
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
117,002✔
343
    pJson, jkSDataTypeType, pType->type));
344
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
117,002✔
345
    pJson, jkSDataTypePrecision, pType->precision));
346
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
117,002✔
347
    pJson, jkSDataTypeScale, pType->scale));
348
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
117,002✔
349
    pJson, jkSDataTypeBytes, pType->bytes));
350
  return TSDB_CODE_SUCCESS;
117,002✔
351
}
352

353
static int32_t jsonToSDataType(const SJson* pJson, void* pObj) {
40,115✔
354
  SDataType* pType = (SDataType*)pObj;
40,115✔
355
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
40,115✔
356
    pJson, jkSDataTypeType, &pType->type));
357
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
40,115✔
358
    pJson, jkSDataTypePrecision, &pType->precision));
359
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
40,115✔
360
    pJson, jkSDataTypeScale, &pType->scale));
361
  TAOS_CHECK_RETURN(tjsonGetIntValue(
40,115✔
362
    pJson, jkSDataTypeBytes, &pType->bytes));
363
  return TSDB_CODE_SUCCESS;
40,115✔
364
}
365

366
static const char* jkSStreamOutColExpr = "expr";
367
static const char* jkSStreamOutColType = "type";
368
static int32_t sStreamOutColToJson(const void* pObj, SJson* pJson) {
117,002✔
369
  const SStreamOutCol* pCol = (const SStreamOutCol*)pObj;
117,002✔
370
  if (NULL != pCol->expr) {
117,002✔
371
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
117,002✔
372
      pJson, jkSStreamOutColExpr, (const char*)pCol->expr));
373
  }
374
  TAOS_CHECK_RETURN(tjsonAddObject(
117,002✔
375
    pJson, jkSStreamOutColType, sDataTypeToJson, &pCol->type));
376
  return TSDB_CODE_SUCCESS;
117,002✔
377
}
378

379
static int32_t jsonToSStreamOutCol(const SJson* pJson, void* pObj) {
40,115✔
380
  SStreamOutCol* pCol = (SStreamOutCol*)pObj;
40,115✔
381
  TAOS_CHECK_RETURN(tjsonDupStringValue(
40,115✔
382
    pJson, jkSStreamOutColExpr, (char**)&pCol->expr));
383
  TAOS_CHECK_RETURN(tjsonToObject(
40,115✔
384
    pJson, jkSStreamOutColType, jsonToSDataType, &pCol->type));
385
  return TSDB_CODE_SUCCESS;
40,115✔
386
}
387

388
static int32_t stringToJson(const void* pObj, SJson* pJson) {
1,934,104✔
389
  const char** pStr = (const char**)pObj;
1,934,104✔
390
  TAOS_CHECK_RETURN(tjsonAddStringToObject(pJson, "value", *pStr));
1,934,104✔
391
  return TSDB_CODE_SUCCESS;
1,934,104✔
392
}
393

394
static int32_t jsonToString(const SJson* pJson, void* pObj) {
597,050✔
395
  char** pStr = (char**)pObj;
597,050✔
396
  TAOS_CHECK_RETURN(tjsonDupStringValue(pJson, "value", pStr));
597,050✔
397
  return TSDB_CODE_SUCCESS;
597,050✔
398
}
399

400
static const char* jkCreateStreamReqName                 = "name";
401
static const char* jkCreateStreamReqStreamId             = "streamId";
402
static const char* jkCreateStreamReqSql                  = "sql";
403

404
static const char* jkCreateStreamReqStreamDB             = "streamDB";
405
static const char* jkCreateStreamReqTriggerDB            = "triggerDB";
406
static const char* jkCreateStreamReqOutDB                = "outDB";
407
static const char* jkCreateStreamReqCalcDB               = "calcDB";
408

409
static const char* jkCreateStreamReqTriggerTblName       = "triggerTblName";
410
static const char* jkCreateStreamReqOutTblName           = "outTblName";
411

412
static const char* jkCreateStreamReqIgExists             = "igExists";
413
static const char* jkCreateStreamReqTriggerType          = "triggerType";
414
static const char* jkCreateStreamReqIgDisorder           = "igDisorder";
415
static const char* jkCreateStreamReqDeleteReCalc         = "deleteReCalc";
416
static const char* jkCreateStreamReqDeleteOutTbl         = "deleteOutTbl";
417
static const char* jkCreateStreamReqFillHistory          = "fillHistory";
418
static const char* jkCreateStreamReqFillHistoryFirst     = "fillHistoryFirst";
419
static const char* jkCreateStreamReqCalcNotifyOnly       = "calcNotifyOnly";
420
static const char* jkCreateStreamReqLowLatencyCalc       = "lowLatencyCalc";
421
static const char* jkCreateStreamReqIgNoDataTrigger      = "igNoDataTrigger";
422

423
static const char* jkCreateStreamReqPNotifyAddrUrls      = "pNotifyAddrUrls";
424
static const char* jkCreateStreamReqNotifyEventTypes     = "notifyEventTypes";
425
static const char* jkCreateStreamReqAddOptions           = "addOptions";
426
static const char* jkCreateStreamReqNotifyHistory        = "notifyHistory";
427

428
static const char* jkCreateStreamReqTriggerFilterCols    = "triggerFilterCols";
429
static const char* jkCreateStreamReqTriggerCols          = "triggerCols";
430
static const char* jkCreateStreamReqPartitionCols        = "partitionCols";
431
static const char* jkCreateStreamReqOutCols              = "outCols";
432
static const char* jkCreateStreamReqOutTags              = "outTags";
433
static const char* jkCreateStreamReqMaxDelay             = "maxDelay";
434
static const char* jkCreateStreamReqFillHistoryStartTime = 
435
  "fillHistoryStartTime";
436
static const char* jkCreateStreamReqWatermark            = "watermark";
437
static const char* jkCreateStreamReqExpiredTime          = "expiredTime";
438
static const char* jkCreateStreamReqIdleTimeoutMs        = "idleTimeoutMs";
439
static const char* jkCreateStreamReqTrigger              = "trigger";
440

441
static const char* jkCreateStreamReqTriggerTblType       = "triggerTblType";
442
static const char* jkCreateStreamReqTriggerTblUid        = "triggerTblUid";
443
static const char* jkCreateStreamReqTriggerTblSuid       = "triggerTblSuid";
444
static const char* jkCreateStreamReqTriggerPrec          = "triggerPrec";
445
static const char* jkCreateStreamReqVtableCalc           = "vtableCalc";
446
static const char* jkCreateStreamReqOutTblType           = "outTblType";
447
static const char* jkCreateStreamReqOutStbExists         = "outStbExists";
448
static const char* jkCreateStreamReqOutStbUid            = "outStbUid";
449
static const char* jkCreateStreamReqOutStbSversion       = "outStbSversion";
450
static const char* jkCreateStreamReqEventTypes           = "eventTypes";
451
static const char* jkCreateStreamReqFlags                = "flags";
452
static const char* jkCreateStreamReqTsmaId               = "tsmaId";
453
static const char* jkCreateStreamReqPlaceHolderBitmap    = "placeHolderBitmap";
454
static const char* jkCreateStreamReqCalcTsSlotId         = "calcTsSlotId";
455
static const char* jkCreateStreamReqTriTsSlotId          = "triTsSlotId";
456
static const char* jkCreateStreamReqCalcPkSlotId         = "calcPkSlotId";
457
static const char* jkCreateStreamReqTriPkSlotId          = "triPkSlotId";
458

459
static const char* jkCreateStreamReqTriggerTblVgId       = "triggerTblVgId";
460
static const char* jkCreateStreamReqOutTblVgId           = "outTblVgId";
461

462
static const char* jkCreateStreamReqTriggerScanPlan      = "triggerScanPlan";
463
static const char* jkCreateStreamReqCalcScanPlanList     = "calcScanPlanList";
464

465
static const char* jkCreateStreamReqTriggerHasPF         = "triggerHasPF";
466
static const char* jkCreateStreamReqTriggerPrevFilter    = "triggerPrevFilter";
467

468
static const char* jkCreateStreamReqNumOfCalcSubplan     = "numOfCalcSubplan";
469
static const char* jkCreateStreamReqCalcPlan             = "calcPlan";
470
static const char* jkCreateStreamReqSubTblNameExpr       = "subTblNameExpr";
471
static const char* jkCreateStreamReqTagValueExpr         = "tagValueExpr";
472
static const char* jkCreateStreamReqForceOutCols         = "forceOutCols";
473

474
static const char* jkCreateStreamReqColCids = "colCids";
475
static const char* jkCreateStreamReqTagCids = "tagCids";
476

477
static int32_t scmCreateStreamReqToJsonImpl(const void* pObj, void* pJson) {
1,587,212✔
478
  const SCMCreateStreamReq* pReq = (const SCMCreateStreamReq*)pObj;
1,587,212✔
479
  if (NULL != pReq->name) {
1,587,212✔
480
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,587,212✔
481
      pJson, jkCreateStreamReqName, pReq->name));
482
  }
483
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
484
    pJson, jkCreateStreamReqStreamId, pReq->streamId));
485
  if (NULL != pReq->sql) {
1,587,212✔
486
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,587,212✔
487
      pJson, jkCreateStreamReqSql, pReq->sql));
488
  }
489
  if (NULL != pReq->streamDB) {
1,587,212✔
490
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,587,212✔
491
      pJson, jkCreateStreamReqStreamDB, pReq->streamDB));
492
  }
493
  if (NULL != pReq->triggerDB) {
1,587,212✔
494
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,560,824✔
495
      pJson, jkCreateStreamReqTriggerDB, pReq->triggerDB));
496
  }
497
  if (NULL != pReq->outDB) {
1,587,212✔
498
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,566,774✔
499
      pJson, jkCreateStreamReqOutDB, pReq->outDB));
500
  }
501
  TAOS_CHECK_RETURN(tjsonAddArray(
1,587,212✔
502
    pJson, jkCreateStreamReqCalcDB, stringToJson,
503
    pReq->calcDB ? TARRAY_GET_ELEM(pReq->calcDB, 0) : NULL,
504
    pReq->calcDB ? pReq->calcDB->elemSize : 0,
505
    pReq->calcDB ? pReq->calcDB->size : 0));
506
  if (NULL != pReq->triggerTblName) {
1,587,212✔
507
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,560,824✔
508
      pJson, jkCreateStreamReqTriggerTblName, pReq->triggerTblName));
509
  }
510
  if (NULL != pReq->outTblName) {
1,587,212✔
511
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,566,774✔
512
      pJson, jkCreateStreamReqOutTblName, pReq->outTblName));
513
  }
514
  // trigger contol part
515
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
516
    pJson, jkCreateStreamReqIgExists, pReq->igExists));
517
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
518
    pJson, jkCreateStreamReqTriggerType, pReq->triggerType));
519
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
520
    pJson, jkCreateStreamReqIgDisorder, pReq->igDisorder));
521
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
522
    pJson, jkCreateStreamReqDeleteReCalc, pReq->deleteReCalc));
523
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
524
    pJson, jkCreateStreamReqDeleteOutTbl, pReq->deleteOutTbl));
525
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
526
    pJson, jkCreateStreamReqFillHistory, pReq->fillHistory));
527
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
528
    pJson, jkCreateStreamReqFillHistoryFirst, pReq->fillHistoryFirst));
529
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
530
    pJson, jkCreateStreamReqCalcNotifyOnly, pReq->calcNotifyOnly));
531
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
532
    pJson, jkCreateStreamReqLowLatencyCalc, pReq->lowLatencyCalc));
533
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
534
    pJson, jkCreateStreamReqIgNoDataTrigger, pReq->igNoDataTrigger));
535

536
  // notify part
537
  TAOS_CHECK_RETURN(tjsonAddArray(
1,587,212✔
538
    pJson, jkCreateStreamReqPNotifyAddrUrls, stringToJson,
539
    pReq->pNotifyAddrUrls ? TARRAY_GET_ELEM(pReq->pNotifyAddrUrls, 0) : NULL,
540
    pReq->pNotifyAddrUrls ? pReq->pNotifyAddrUrls->elemSize : 0,
541
    pReq->pNotifyAddrUrls ? pReq->pNotifyAddrUrls->size : 0));
542
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
543
    pJson, jkCreateStreamReqNotifyEventTypes, pReq->notifyEventTypes));
544
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
545
    pJson, jkCreateStreamReqAddOptions, pReq->addOptions));
546
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
547
    pJson, jkCreateStreamReqNotifyHistory, pReq->notifyHistory));
548

549
  // out table part
550
  // trigger cols and partition cols
551
  if (NULL != pReq->triggerFilterCols) {
1,587,212✔
552
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
165,370✔
553
      pJson, jkCreateStreamReqTriggerFilterCols,
554
      (const char*)pReq->triggerFilterCols));
555
  }
556
  if (NULL != pReq->triggerCols) {
1,587,212✔
557
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,502,264✔
558
      pJson, jkCreateStreamReqTriggerCols, (const char*)pReq->triggerCols));
559
  }
560
  if (NULL != pReq->partitionCols) {
1,587,212✔
561
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
635,950✔
562
      pJson, jkCreateStreamReqPartitionCols, (const char*)pReq->partitionCols));
563
  }
564

565
  // out cols
566
  TAOS_CHECK_RETURN(tjsonAddArray(
1,587,212✔
567
    pJson, jkCreateStreamReqOutCols, sfieldWithOptionsToJson,
568
    pReq->outCols ? TARRAY_GET_ELEM(pReq->outCols, 0) : NULL,
569
    pReq->outCols ? pReq->outCols->elemSize : 0,
570
    pReq->outCols ? pReq->outCols->size : 0));
571
  // out tags
572
  TAOS_CHECK_RETURN(tjsonAddArray(
1,587,212✔
573
    pJson, jkCreateStreamReqOutTags, stagFieldWithOptionsToJson,
574
    pReq->outTags ? TARRAY_GET_ELEM(pReq->outTags, 0) : NULL,
575
    pReq->outTags ? pReq->outTags->elemSize : 0,
576
    pReq->outTags ? pReq->outTags->size : 0));
577
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
578
    pJson, jkCreateStreamReqMaxDelay, pReq->maxDelay));
579
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
580
    pJson, jkCreateStreamReqFillHistoryStartTime, pReq->fillHistoryStartTime));
581
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
582
    pJson, jkCreateStreamReqWatermark, pReq->watermark));
583
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
584
    pJson, jkCreateStreamReqExpiredTime, pReq->expiredTime));
585
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
586
    pJson, jkCreateStreamReqIdleTimeoutMs, pReq->idleTimeoutMs));
587
  // trigger
588
  switch (pReq->triggerType) {
1,587,212✔
589
    case WINDOW_TYPE_SESSION:
84,846✔
590
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
84,846✔
591
        sessionTriggerToJson, &pReq->trigger));
592
      break;
84,846✔
593

594
    case WINDOW_TYPE_STATE:
471,312✔
595
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
471,312✔
596
        stateTriggerToJson, &pReq->trigger));
597
      break;
471,312✔
598

599
    case WINDOW_TYPE_INTERVAL:
594,014✔
600
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
594,014✔
601
        slidingTriggerToJson, &pReq->trigger));
602
      break;
594,014✔
603

604
    case WINDOW_TYPE_EVENT:
178,724✔
605
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
178,724✔
606
        eventTriggerToJson, &pReq->trigger));
607
      break;
178,724✔
608

609
    case WINDOW_TYPE_COUNT:
173,368✔
610
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
173,368✔
611
        countTriggerToJson, &pReq->trigger));
612
      break;
173,368✔
613

614
    case WINDOW_TYPE_PERIOD:
84,948✔
615
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
84,948✔
616
        periodTriggerToJson, &pReq->trigger));
617
      break;
84,948✔
618

UNCOV
619
  default:
×
UNCOV
620
    return TSDB_CODE_STREAM_INVALID_TRIGGER;
×
621
  }
622

623
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
624
    pJson, jkCreateStreamReqTriggerTblType, pReq->triggerTblType));
625
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
626
    pJson, jkCreateStreamReqTriggerTblUid, pReq->triggerTblUid));
627
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
628
    pJson, jkCreateStreamReqTriggerTblSuid, pReq->triggerTblSuid));
629
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
630
    pJson, jkCreateStreamReqTriggerPrec, pReq->triggerPrec));
631
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
632
    pJson, jkCreateStreamReqVtableCalc, pReq->vtableCalc));
633
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
634
    pJson, jkCreateStreamReqOutTblType, pReq->outTblType));
635
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
636
    pJson, jkCreateStreamReqOutStbExists, pReq->outStbExists));
637
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
638
    pJson, jkCreateStreamReqOutStbUid, pReq->outStbUid));
639
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
640
    pJson, jkCreateStreamReqOutStbSversion, pReq->outStbSversion));
641
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
642
    pJson, jkCreateStreamReqEventTypes, pReq->eventTypes));
643
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
644
    pJson, jkCreateStreamReqFlags, pReq->flags));
645
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
646
    pJson, jkCreateStreamReqTsmaId, pReq->tsmaId));
647
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
648
    pJson, jkCreateStreamReqPlaceHolderBitmap, pReq->placeHolderBitmap));
649
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
650
    pJson, jkCreateStreamReqCalcTsSlotId, pReq->calcTsSlotId));
651
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
652
    pJson, jkCreateStreamReqTriTsSlotId, pReq->triTsSlotId));
653
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
654
    pJson, jkCreateStreamReqCalcPkSlotId, pReq->calcPkSlotId));
655
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
656
    pJson, jkCreateStreamReqTriPkSlotId, pReq->triPkSlotId));
657
  
658
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
659
    pJson, jkCreateStreamReqTriggerTblVgId, pReq->triggerTblVgId));
660
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
661
    pJson, jkCreateStreamReqOutTblVgId, pReq->outTblVgId));
662

663
  if (NULL != pReq->triggerScanPlan) {
1,587,212✔
664
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,560,824✔
665
      pJson, jkCreateStreamReqTriggerScanPlan, (const char*)pReq->triggerScanPlan));
666
  }
667
  TAOS_CHECK_RETURN(tjsonAddArray(
1,587,212✔
668
    pJson, jkCreateStreamReqCalcScanPlanList, calcScanPlanToJson,
669
    pReq->calcScanPlanList ? TARRAY_GET_ELEM(pReq->calcScanPlanList, 0) : NULL,
670
    pReq->calcScanPlanList ? pReq->calcScanPlanList->elemSize : 0,
671
    pReq->calcScanPlanList ? pReq->calcScanPlanList->size : 0));
672

673
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
674
    pJson, jkCreateStreamReqTriggerHasPF, pReq->triggerHasPF));
675
  if (NULL != pReq->triggerPrevFilter) {
1,587,212✔
676
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
61,700✔
677
      pJson, jkCreateStreamReqTriggerPrevFilter,
678
      (const char*)pReq->triggerPrevFilter));
679
  }
680

681
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,587,212✔
682
    pJson, jkCreateStreamReqNumOfCalcSubplan, pReq->numOfCalcSubplan));
683
  if (NULL != pReq->calcPlan) {
1,587,212✔
684
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,566,774✔
685
      pJson, jkCreateStreamReqCalcPlan, (const char*)pReq->calcPlan));
686
  }
687
  if (NULL != pReq->subTblNameExpr) {
1,587,212✔
688
    TAOS_CHECK_RETURN(tjsonAddStringToObject(pJson,
635,950✔
689
      jkCreateStreamReqSubTblNameExpr, (const char*)pReq->subTblNameExpr));
690
  }
691
  if (NULL != pReq->tagValueExpr) {
1,587,212✔
692
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
635,950✔
693
      pJson, jkCreateStreamReqTagValueExpr, (const char*)pReq->tagValueExpr));
694
  }
695
  TAOS_CHECK_RETURN(tjsonAddArray(
1,587,212✔
696
    pJson, jkCreateStreamReqForceOutCols, sStreamOutColToJson,
697
    pReq->forceOutCols ? TARRAY_GET_ELEM(pReq->forceOutCols, 0) : NULL,
698
    pReq->forceOutCols ? pReq->forceOutCols->elemSize : 0,
699
    pReq->forceOutCols ? pReq->forceOutCols->size : 0));
700
  TAOS_CHECK_RETURN(tjsonAddArray(
1,587,212✔
701
      pJson, jkCreateStreamReqColCids, int16ToJson,
702
      pReq->colCids ? TARRAY_GET_ELEM(pReq->colCids, 0) : NULL,
703
      pReq->colCids ? pReq->colCids->elemSize : 0,
704
      pReq->colCids ? pReq->colCids->size : 0));
705
  TAOS_CHECK_RETURN(tjsonAddArray(
1,587,212✔
706
      pJson, jkCreateStreamReqTagCids, int16ToJson,
707
      pReq->tagCids ? TARRAY_GET_ELEM(pReq->tagCids, 0) : NULL,
708
      pReq->tagCids ? pReq->tagCids->elemSize : 0,
709
      pReq->tagCids ? pReq->tagCids->size : 0));
710

711
  return TSDB_CODE_SUCCESS;
1,587,212✔
712
}
713

714
int32_t scmCreateStreamReqToJson(
1,587,212✔
715
  const SCMCreateStreamReq* pReq, bool format, char** ppStr, int32_t* pStrLen) {
716
  int32_t code = TSDB_CODE_SUCCESS;
1,587,212✔
717
  int32_t lino = 0;
1,587,212✔
718
  int64_t streamId = pReq ? pReq->streamId : -1;
1,587,212✔
719
  TSDB_CHECK_NULL(pReq, code, lino, _end, TSDB_CODE_MND_STREAM_INTERNAL_ERROR);
1,587,212✔
720
  TSDB_CHECK_NULL(ppStr, code, lino, _end, TSDB_CODE_MND_STREAM_INTERNAL_ERROR);
1,587,212✔
721
  TSDB_CHECK_NULL(
1,587,212✔
722
    pStrLen, code, lino, _end, TSDB_CODE_MND_STREAM_INTERNAL_ERROR);
723

724
  SJson* pJson = tjsonCreateObject();
1,587,212✔
725
  TSDB_CHECK_NULL(pJson, code, lino, _end, terrno);
1,587,212✔
726
  TSDB_CHECK_CODE(scmCreateStreamReqToJsonImpl(pReq, pJson), lino, _end);
1,587,212✔
727

728
  if (TSDB_CODE_SUCCESS == code) {
1,587,212✔
729
    *ppStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
1,587,212✔
730
    if (*ppStr == NULL) {
1,587,212✔
UNCOV
731
      code = terrno;
×
732
    } else {
733
      *pStrLen = strlen(*ppStr);
1,587,212✔
734
    }
735
  }
736

UNCOV
737
_end:
×
738
  if (TSDB_CODE_SUCCESS != code) {
1,587,212✔
UNCOV
739
    uError(
×
740
      "failed to convert SCMCreateStreamReq to json, lino: %d, since %s",
741
      lino, tstrerror(code));
742
  }
743
  tjsonDelete(pJson);
1,587,212✔
744
  return code;
1,587,212✔
745
}
746

747
int32_t jsonToSCMCreateStreamReq(const void* pJson, void* pObj) {
486,178✔
748
  SCMCreateStreamReq* pReq = (SCMCreateStreamReq*)pObj;
486,178✔
749
  pReq->calcTsSlotId = -1;
486,178✔
750
  pReq->triTsSlotId = -1;
486,178✔
751
  pReq->calcPkSlotId = -1;
486,178✔
752
  pReq->triPkSlotId = -1;
486,178✔
753
  TAOS_CHECK_RETURN(tjsonDupStringValue(
486,178✔
754
    pJson, jkCreateStreamReqName, (char**)&pReq->name));
755
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
486,178✔
756
    pJson, jkCreateStreamReqStreamId, &pReq->streamId));
757
  TAOS_CHECK_RETURN(tjsonDupStringValue(
486,178✔
758
    pJson, jkCreateStreamReqSql, (char**)&pReq->sql));
759

760
  TAOS_CHECK_RETURN(tjsonDupStringValue(
486,178✔
761
    pJson, jkCreateStreamReqStreamDB, (char**)&pReq->streamDB));
762
  TAOS_CHECK_RETURN(tjsonDupStringValue(
486,178✔
763
    pJson, jkCreateStreamReqTriggerDB, (char**)&pReq->triggerDB));
764
  TAOS_CHECK_RETURN(tjsonDupStringValue(
486,178✔
765
    pJson, jkCreateStreamReqOutDB, (char**)&pReq->outDB));
766
  TAOS_CHECK_RETURN(tjsonToTArray(
486,178✔
767
    pJson, jkCreateStreamReqCalcDB, jsonToString,
768
    &pReq->calcDB, POINTER_BYTES));
769
  TAOS_CHECK_RETURN(tjsonDupStringValue(
486,178✔
770
    pJson, jkCreateStreamReqTriggerTblName, (char**)&pReq->triggerTblName));
771
  TAOS_CHECK_RETURN(tjsonDupStringValue(
486,178✔
772
    pJson, jkCreateStreamReqOutTblName, (char**)&pReq->outTblName));
773

774
  // trigger control part
775
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
776
    pJson, jkCreateStreamReqIgExists, &pReq->igExists));
777
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
778
    pJson, jkCreateStreamReqTriggerType, &pReq->triggerType));
779
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
780
    pJson, jkCreateStreamReqIgDisorder, &pReq->igDisorder));
781
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
782
    pJson, jkCreateStreamReqDeleteReCalc, &pReq->deleteReCalc));
783
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
784
    pJson, jkCreateStreamReqDeleteOutTbl, &pReq->deleteOutTbl));
785
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
786
    pJson, jkCreateStreamReqFillHistory, &pReq->fillHistory));
787
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
788
    pJson, jkCreateStreamReqFillHistoryFirst, &pReq->fillHistoryFirst));
789
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
790
    pJson, jkCreateStreamReqCalcNotifyOnly, &pReq->calcNotifyOnly));
791
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
792
    pJson, jkCreateStreamReqLowLatencyCalc, &pReq->lowLatencyCalc));
793
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
794
    pJson, jkCreateStreamReqIgNoDataTrigger, &pReq->igNoDataTrigger));
795

796
  // notify part
797
  TAOS_CHECK_RETURN(tjsonToTArray(
486,178✔
798
    pJson, jkCreateStreamReqPNotifyAddrUrls, jsonToString,
799
    &pReq->pNotifyAddrUrls, POINTER_BYTES));
800
  TAOS_CHECK_RETURN(tjsonGetIntValue(
486,178✔
801
    pJson, jkCreateStreamReqNotifyEventTypes, &pReq->notifyEventTypes));
802
  TAOS_CHECK_RETURN(tjsonGetIntValue(
486,178✔
803
    pJson, jkCreateStreamReqAddOptions, &pReq->addOptions));
804
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
805
    pJson, jkCreateStreamReqNotifyHistory, &pReq->notifyHistory));
806

807
  TAOS_CHECK_RETURN(tjsonDupStringValue(
486,178✔
808
    pJson, jkCreateStreamReqTriggerFilterCols,
809
    (char**)&pReq->triggerFilterCols));
810
  TAOS_CHECK_RETURN(tjsonDupStringValue(
486,178✔
811
    pJson, jkCreateStreamReqTriggerCols, (char**)&pReq->triggerCols));
812
  TAOS_CHECK_RETURN(tjsonDupStringValue(
486,178✔
813
    pJson, jkCreateStreamReqPartitionCols, (char**)&pReq->partitionCols));
814
  // out cols
815
  TAOS_CHECK_RETURN(tjsonToTArray(
486,178✔
816
    pJson, jkCreateStreamReqOutCols, jsonToSFieldWithOptions,
817
    &pReq->outCols, sizeof(SFieldWithOptions)));
818
  // out tags
819
  TAOS_CHECK_RETURN(tjsonToTArray(
486,178✔
820
    pJson, jkCreateStreamReqOutTags, jsonToSTagFieldWithOptions,
821
    &pReq->outTags, sizeof(SFieldWithOptions)));
822
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
486,178✔
823
    pJson, jkCreateStreamReqMaxDelay, &pReq->maxDelay));
824
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
486,178✔
825
    pJson, jkCreateStreamReqFillHistoryStartTime, &pReq->fillHistoryStartTime));
826
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
486,178✔
827
    pJson, jkCreateStreamReqWatermark, &pReq->watermark));
828
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
486,178✔
829
    pJson, jkCreateStreamReqExpiredTime, &pReq->expiredTime));
830
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
486,178✔
831
    pJson, jkCreateStreamReqIdleTimeoutMs, &pReq->idleTimeoutMs));
832
  // trigger
833
  switch (pReq->triggerType) {
486,178✔
834
    case WINDOW_TYPE_SESSION:
19,189✔
835
      TAOS_CHECK_RETURN(tjsonToObject(
19,189✔
836
        pJson, jkCreateStreamReqTrigger, jsonToSessionTrigger, &pReq->trigger));
837
      break;
19,189✔
838
    
839
    case WINDOW_TYPE_STATE:
155,686✔
840
      TAOS_CHECK_RETURN(tjsonToObject(
155,686✔
841
        pJson, jkCreateStreamReqTrigger, jsonToStateTrigger, &pReq->trigger));
842
      break;
155,686✔
843

844
    case WINDOW_TYPE_INTERVAL:
191,098✔
845
      TAOS_CHECK_RETURN(tjsonToObject(
191,098✔
846
        pJson, jkCreateStreamReqTrigger, jsonToSlidingTrigger, &pReq->trigger));
847
      break;
191,098✔
848
    
849
    case WINDOW_TYPE_EVENT:
50,122✔
850
      TAOS_CHECK_RETURN(tjsonToObject(
50,122✔
851
        pJson, jkCreateStreamReqTrigger, jsonToEventTrigger, &pReq->trigger));
852
      break;
50,122✔
853
    
854
    case WINDOW_TYPE_COUNT:
45,620✔
855
      TAOS_CHECK_RETURN(tjsonToObject(
45,620✔
856
        pJson, jkCreateStreamReqTrigger, jsonToCountTrigger, &pReq->trigger));
857
      break;
45,620✔
858
    
859
    case WINDOW_TYPE_PERIOD:
24,463✔
860
      TAOS_CHECK_RETURN(tjsonToObject(
24,463✔
861
        pJson, jkCreateStreamReqTrigger, jsonToPeriodTrigger, &pReq->trigger));
862
      break;
24,463✔
863
    
UNCOV
864
    default:
×
UNCOV
865
      return TSDB_CODE_STREAM_INVALID_TRIGGER;
×
866
  }
867

868
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
869
    pJson, jkCreateStreamReqTriggerTblType, &pReq->triggerTblType));
870
  TAOS_CHECK_RETURN(tjsonGetUBigIntValue(
486,178✔
871
    pJson, jkCreateStreamReqTriggerTblUid, &pReq->triggerTblUid));
872
  TAOS_CHECK_RETURN(tjsonGetUBigIntValue(
486,178✔
873
    pJson, jkCreateStreamReqTriggerTblSuid, &pReq->triggerTblSuid));
874
  TAOS_CHECK_RETURN(tjsonGetUTinyIntValue(
486,178✔
875
    pJson, jkCreateStreamReqTriggerPrec, &pReq->triggerPrec));
876
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
877
    pJson, jkCreateStreamReqVtableCalc, &pReq->vtableCalc));
878
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
879
    pJson, jkCreateStreamReqOutTblType, &pReq->outTblType));
880
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
881
    pJson, jkCreateStreamReqOutStbExists, &pReq->outStbExists));
882
  TAOS_CHECK_RETURN(tjsonGetUBigIntValue(
486,178✔
883
    pJson, jkCreateStreamReqOutStbUid, &pReq->outStbUid));
884
  TAOS_CHECK_RETURN(tjsonGetIntValue(
486,178✔
885
    pJson, jkCreateStreamReqOutStbSversion, &pReq->outStbSversion));
886
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
486,178✔
887
    pJson, jkCreateStreamReqEventTypes, &pReq->eventTypes));
888
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
486,178✔
889
    pJson, jkCreateStreamReqFlags, &pReq->flags));
890
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
486,178✔
891
    pJson, jkCreateStreamReqTsmaId, &pReq->tsmaId));
892
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
486,178✔
893
    pJson, jkCreateStreamReqPlaceHolderBitmap, &pReq->placeHolderBitmap));
894
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(
486,178✔
895
    pJson, jkCreateStreamReqCalcTsSlotId, &pReq->calcTsSlotId));
896
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(
486,178✔
897
    pJson, jkCreateStreamReqTriTsSlotId, &pReq->triTsSlotId));
898
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(
486,178✔
899
    pJson, jkCreateStreamReqCalcPkSlotId, &pReq->calcPkSlotId));
900
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(
486,178✔
901
    pJson, jkCreateStreamReqTriPkSlotId, &pReq->triPkSlotId));
902

903
  TAOS_CHECK_RETURN(tjsonGetIntValue(
486,178✔
904
    pJson, jkCreateStreamReqTriggerTblVgId, &pReq->triggerTblVgId));
905
  TAOS_CHECK_RETURN(tjsonGetIntValue(
486,178✔
906
    pJson, jkCreateStreamReqOutTblVgId, &pReq->outTblVgId));
907

908
  TAOS_CHECK_RETURN(tjsonDupStringValue(
486,178✔
909
    pJson, jkCreateStreamReqTriggerScanPlan, (char**)&pReq->triggerScanPlan));
910
  TAOS_CHECK_RETURN(tjsonToTArray(
486,178✔
911
    pJson, jkCreateStreamReqCalcScanPlanList, jsonToCalcScanPlan,
912
    &pReq->calcScanPlanList, sizeof(SStreamCalcScan)));
913

914
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
486,178✔
915
    pJson, jkCreateStreamReqTriggerHasPF, &pReq->triggerHasPF));
916
  TAOS_CHECK_RETURN(tjsonDupStringValue(
486,178✔
917
    pJson, jkCreateStreamReqTriggerPrevFilter,
918
    (char**)&pReq->triggerPrevFilter));
919
  TAOS_CHECK_RETURN(tjsonGetIntValue(
486,178✔
920
    pJson, jkCreateStreamReqNumOfCalcSubplan, &pReq->numOfCalcSubplan));
921
  TAOS_CHECK_RETURN(tjsonDupStringValue(
486,178✔
922
    pJson, jkCreateStreamReqCalcPlan, (char**)&pReq->calcPlan));
923
  TAOS_CHECK_RETURN(tjsonDupStringValue(
486,178✔
924
    pJson, jkCreateStreamReqSubTblNameExpr, (char**)&pReq->subTblNameExpr));
925
  TAOS_CHECK_RETURN(tjsonDupStringValue(
486,178✔
926
    pJson, jkCreateStreamReqTagValueExpr, (char**)&pReq->tagValueExpr));
927
  TAOS_CHECK_RETURN(tjsonToTArray(
486,178✔
928
    pJson, jkCreateStreamReqForceOutCols,
929
    jsonToSStreamOutCol, &pReq->forceOutCols, sizeof(SStreamOutCol)));
930
  TAOS_CHECK_RETURN(tjsonToTArray(pJson, jkCreateStreamReqColCids, jsonToInt16, &pReq->colCids, sizeof(int16_t)));
486,178✔
931
  TAOS_CHECK_RETURN(tjsonToTArray(pJson, jkCreateStreamReqTagCids, jsonToInt16, &pReq->tagCids, sizeof(int16_t)));
486,178✔
932

933
  return TSDB_CODE_SUCCESS;
486,178✔
934
}
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