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

taosdata / TDengine / #4944

30 Jan 2026 06:19AM UTC coverage: 66.849% (+0.1%) from 66.718%
#4944

push

travis-ci

web-flow
merge: from main to 3.0 #34453

1124 of 2018 new or added lines in 72 files covered. (55.7%)

13677 existing lines in 155 files now uncovered.

205211 of 306978 relevant lines covered (66.85%)

125657591.7 hits per line

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

97.77
/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) {
5,053,446✔
11
  const SFieldWithOptions* pField = (const SFieldWithOptions*)pObj;
5,053,446✔
12
  if (NULL != pField->name) {
5,053,446✔
13
    TAOS_CHECK_RETURN(tjsonAddStringToObject(pJson, jkFieldName, pField->name));
5,053,446✔
14
  }
15
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkFieldType, pField->type));
5,053,446✔
16
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
5,053,446✔
17
    pJson, jkFieldFlags, pField->flags));
18
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
5,053,446✔
19
    pJson, jkFieldBytes, pField->bytes));
20
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
5,053,446✔
21
    pJson, jkFieldCompress, pField->compress));
22
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
5,053,446✔
23
    pJson, jkFieldTypeMod, pField->typeMod));
24
  return TSDB_CODE_SUCCESS;
5,053,446✔
25
}
26

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

284
static int32_t int32ToJson(const void* pObj, SJson* pJson) {
2,149,124✔
285
  const int32_t* pInt = (const int32_t*)pObj;
2,149,124✔
286
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, "value", *pInt));
2,149,124✔
287
  return TSDB_CODE_SUCCESS;
2,149,124✔
288
}
289

290
static int32_t jsonToInt32(const SJson* pJson, void* pObj) {
661,696✔
291
  int32_t* pInt = (int32_t*)pObj;
661,696✔
292
  TAOS_CHECK_RETURN(tjsonGetIntValue(pJson, "value", pInt));
661,696✔
293
  return TSDB_CODE_SUCCESS;
661,696✔
294
}
295

296
static int32_t int16ToJson(const void* pObj, SJson* pJson) {
129,102✔
297
  const int16_t* pInt = (const int16_t*)pObj;
129,102✔
298
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, "value", *pInt));
129,102✔
299
  return TSDB_CODE_SUCCESS;
129,102✔
300
}
301

302
static int32_t jsonToInt16(const SJson* pJson, void* pObj) {
46,042✔
303
  int16_t* pInt = (int16_t*)pObj;
46,042✔
304
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(pJson, "value", pInt));
46,042✔
305
  return TSDB_CODE_SUCCESS;
46,042✔
306
}
307

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

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

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

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

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

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

390
static int32_t stringToJson(const void* pObj, SJson* pJson) {
1,422,838✔
391
  const char** pStr = (const char**)pObj;
1,422,838✔
392
  TAOS_CHECK_RETURN(tjsonAddStringToObject(pJson, "value", *pStr));
1,422,838✔
393
  return TSDB_CODE_SUCCESS;
1,422,838✔
394
}
395

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

402
static const char* jkCreateStreamReqName                 = "name";
403
static const char* jkCreateStreamReqStreamId             = "streamId";
404
static const char* jkCreateStreamReqSql                  = "sql";
405

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

411
static const char* jkCreateStreamReqTriggerTblName       = "triggerTblName";
412
static const char* jkCreateStreamReqOutTblName           = "outTblName";
413

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

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

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

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

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

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

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

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

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

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

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

548
  // out table part
549
  // trigger cols and partition cols
550
  if (NULL != pReq->triggerFilterCols) {
1,126,420✔
551
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
145,860✔
552
      pJson, jkCreateStreamReqTriggerFilterCols,
553
      (const char*)pReq->triggerFilterCols));
554
  }
555
  if (NULL != pReq->triggerCols) {
1,126,420✔
556
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,081,960✔
557
      pJson, jkCreateStreamReqTriggerCols, (const char*)pReq->triggerCols));
558
  }
559
  if (NULL != pReq->partitionCols) {
1,126,420✔
560
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
482,086✔
561
      pJson, jkCreateStreamReqPartitionCols, (const char*)pReq->partitionCols));
562
  }
563

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

591
    case WINDOW_TYPE_STATE:
373,034✔
592
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
373,034✔
593
        stateTriggerToJson, &pReq->trigger));
594
      break;
373,034✔
595

596
    case WINDOW_TYPE_INTERVAL:
373,918✔
597
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
373,918✔
598
        slidingTriggerToJson, &pReq->trigger));
599
      break;
373,918✔
600

601
    case WINDOW_TYPE_EVENT:
153,602✔
602
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
153,602✔
603
        eventTriggerToJson, &pReq->trigger));
604
      break;
153,602✔
605

606
    case WINDOW_TYPE_COUNT:
110,882✔
607
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
110,882✔
608
        countTriggerToJson, &pReq->trigger));
609
      break;
110,882✔
610

611
    case WINDOW_TYPE_PERIOD:
44,460✔
612
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
44,460✔
613
        periodTriggerToJson, &pReq->trigger));
614
      break;
44,460✔
615

UNCOV
616
  default:
×
UNCOV
617
    return TSDB_CODE_STREAM_INVALID_TRIGGER;
×
618
  }
619

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

656
  if (NULL != pReq->triggerScanPlan) {
1,126,420✔
657
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,120,778✔
658
      pJson, jkCreateStreamReqTriggerScanPlan, (const char*)pReq->triggerScanPlan));
659
  }
660
  TAOS_CHECK_RETURN(tjsonAddArray(
1,126,420✔
661
    pJson, jkCreateStreamReqCalcScanPlanList, calcScanPlanToJson,
662
    pReq->calcScanPlanList ? TARRAY_GET_ELEM(pReq->calcScanPlanList, 0) : NULL,
663
    pReq->calcScanPlanList ? pReq->calcScanPlanList->elemSize : 0,
664
    pReq->calcScanPlanList ? pReq->calcScanPlanList->size : 0));
665

666
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,126,420✔
667
    pJson, jkCreateStreamReqTriggerHasPF, pReq->triggerHasPF));
668
  if (NULL != pReq->triggerPrevFilter) {
1,126,420✔
669
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
55,456✔
670
      pJson, jkCreateStreamReqTriggerPrevFilter,
671
      (const char*)pReq->triggerPrevFilter));
672
  }
673

674
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,126,420✔
675
    pJson, jkCreateStreamReqNumOfCalcSubplan, pReq->numOfCalcSubplan));
676
  if (NULL != pReq->calcPlan) {
1,126,420✔
677
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,107,944✔
678
      pJson, jkCreateStreamReqCalcPlan, (const char*)pReq->calcPlan));
679
  }
680
  if (NULL != pReq->subTblNameExpr) {
1,126,420✔
681
    TAOS_CHECK_RETURN(tjsonAddStringToObject(pJson,
482,086✔
682
      jkCreateStreamReqSubTblNameExpr, (const char*)pReq->subTblNameExpr));
683
  }
684
  if (NULL != pReq->tagValueExpr) {
1,126,420✔
685
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
482,086✔
686
      pJson, jkCreateStreamReqTagValueExpr, (const char*)pReq->tagValueExpr));
687
  }
688
  TAOS_CHECK_RETURN(tjsonAddArray(
1,126,420✔
689
    pJson, jkCreateStreamReqForceOutCols, sStreamOutColToJson,
690
    pReq->forceOutCols ? TARRAY_GET_ELEM(pReq->forceOutCols, 0) : NULL,
691
    pReq->forceOutCols ? pReq->forceOutCols->elemSize : 0,
692
    pReq->forceOutCols ? pReq->forceOutCols->size : 0));
693
  TAOS_CHECK_RETURN(tjsonAddArray(
1,126,420✔
694
      pJson, jkCreateStreamReqColCids, int16ToJson,
695
      pReq->colCids ? TARRAY_GET_ELEM(pReq->colCids, 0) : NULL,
696
      pReq->colCids ? pReq->colCids->elemSize : 0,
697
      pReq->colCids ? pReq->colCids->size : 0));
698
  TAOS_CHECK_RETURN(tjsonAddArray(
1,126,420✔
699
      pJson, jkCreateStreamReqTagCids, int16ToJson,
700
      pReq->tagCids ? TARRAY_GET_ELEM(pReq->tagCids, 0) : NULL,
701
      pReq->tagCids ? pReq->tagCids->elemSize : 0,
702
      pReq->tagCids ? pReq->tagCids->size : 0));
703

704
  return TSDB_CODE_SUCCESS;
1,126,420✔
705
}
706

707
int32_t scmCreateStreamReqToJson(
1,126,420✔
708
  const SCMCreateStreamReq* pReq, bool format, char** ppStr, int32_t* pStrLen) {
709
  int32_t code = TSDB_CODE_SUCCESS;
1,126,420✔
710
  int32_t lino = 0;
1,126,420✔
711
  int64_t streamId = pReq ? pReq->streamId : -1;
1,126,420✔
712
  TSDB_CHECK_NULL(pReq, code, lino, _end, TSDB_CODE_MND_STREAM_INTERNAL_ERROR);
1,126,420✔
713
  TSDB_CHECK_NULL(ppStr, code, lino, _end, TSDB_CODE_MND_STREAM_INTERNAL_ERROR);
1,126,420✔
714
  TSDB_CHECK_NULL(
1,126,420✔
715
    pStrLen, code, lino, _end, TSDB_CODE_MND_STREAM_INTERNAL_ERROR);
716

717
  SJson* pJson = tjsonCreateObject();
1,126,420✔
718
  TSDB_CHECK_NULL(pJson, code, lino, _end, terrno);
1,126,420✔
719
  TSDB_CHECK_CODE(scmCreateStreamReqToJsonImpl(pReq, pJson), lino, _end);
1,126,420✔
720

721
  if (TSDB_CODE_SUCCESS == code) {
1,126,420✔
722
    *ppStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
1,126,420✔
723
    if (*ppStr == NULL) {
1,126,420✔
UNCOV
724
      code = terrno;
×
725
    } else {
726
      *pStrLen = strlen(*ppStr);
1,126,420✔
727
    }
728
  }
729

UNCOV
730
_end:
×
731
  if (TSDB_CODE_SUCCESS != code) {
1,126,420✔
732
    uError(
×
733
      "failed to convert SCMCreateStreamReq to json, lino: %d, since %s",
734
      lino, tstrerror(code));
735
  }
736
  tjsonDelete(pJson);
1,126,420✔
737
  return code;
1,126,420✔
738
}
739

740
int32_t jsonToSCMCreateStreamReq(const void* pJson, void* pObj) {
348,119✔
741
  SCMCreateStreamReq* pReq = (SCMCreateStreamReq*)pObj;
348,119✔
742
  TAOS_CHECK_RETURN(tjsonDupStringValue(
348,119✔
743
    pJson, jkCreateStreamReqName, (char**)&pReq->name));
744
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
348,119✔
745
    pJson, jkCreateStreamReqStreamId, &pReq->streamId));
746
  TAOS_CHECK_RETURN(tjsonDupStringValue(
348,119✔
747
    pJson, jkCreateStreamReqSql, (char**)&pReq->sql));
748

749
  TAOS_CHECK_RETURN(tjsonDupStringValue(
348,119✔
750
    pJson, jkCreateStreamReqStreamDB, (char**)&pReq->streamDB));
751
  TAOS_CHECK_RETURN(tjsonDupStringValue(
348,119✔
752
    pJson, jkCreateStreamReqTriggerDB, (char**)&pReq->triggerDB));
753
  TAOS_CHECK_RETURN(tjsonDupStringValue(
348,119✔
754
    pJson, jkCreateStreamReqOutDB, (char**)&pReq->outDB));
755
  TAOS_CHECK_RETURN(tjsonToTArray(
348,119✔
756
    pJson, jkCreateStreamReqCalcDB, jsonToString,
757
    &pReq->calcDB, POINTER_BYTES));
758
  TAOS_CHECK_RETURN(tjsonDupStringValue(
348,119✔
759
    pJson, jkCreateStreamReqTriggerTblName, (char**)&pReq->triggerTblName));
760
  TAOS_CHECK_RETURN(tjsonDupStringValue(
348,119✔
761
    pJson, jkCreateStreamReqOutTblName, (char**)&pReq->outTblName));
762

763
  // trigger control part
764
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
765
    pJson, jkCreateStreamReqIgExists, &pReq->igExists));
766
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
767
    pJson, jkCreateStreamReqTriggerType, &pReq->triggerType));
768
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
769
    pJson, jkCreateStreamReqIgDisorder, &pReq->igDisorder));
770
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
771
    pJson, jkCreateStreamReqDeleteReCalc, &pReq->deleteReCalc));
772
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
773
    pJson, jkCreateStreamReqDeleteOutTbl, &pReq->deleteOutTbl));
774
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
775
    pJson, jkCreateStreamReqFillHistory, &pReq->fillHistory));
776
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
777
    pJson, jkCreateStreamReqFillHistoryFirst, &pReq->fillHistoryFirst));
778
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
779
    pJson, jkCreateStreamReqCalcNotifyOnly, &pReq->calcNotifyOnly));
780
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
781
    pJson, jkCreateStreamReqLowLatencyCalc, &pReq->lowLatencyCalc));
782
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
783
    pJson, jkCreateStreamReqIgNoDataTrigger, &pReq->igNoDataTrigger));
784

785
  // notify part
786
  TAOS_CHECK_RETURN(tjsonToTArray(
348,119✔
787
    pJson, jkCreateStreamReqPNotifyAddrUrls, jsonToString,
788
    &pReq->pNotifyAddrUrls, POINTER_BYTES));
789
  TAOS_CHECK_RETURN(tjsonGetIntValue(
348,119✔
790
    pJson, jkCreateStreamReqNotifyEventTypes, &pReq->notifyEventTypes));
791
  TAOS_CHECK_RETURN(tjsonGetIntValue(
348,119✔
792
    pJson, jkCreateStreamReqAddOptions, &pReq->addOptions));
793
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
794
    pJson, jkCreateStreamReqNotifyHistory, &pReq->notifyHistory));
795

796
  TAOS_CHECK_RETURN(tjsonDupStringValue(
348,119✔
797
    pJson, jkCreateStreamReqTriggerFilterCols,
798
    (char**)&pReq->triggerFilterCols));
799
  TAOS_CHECK_RETURN(tjsonDupStringValue(
348,119✔
800
    pJson, jkCreateStreamReqTriggerCols, (char**)&pReq->triggerCols));
801
  TAOS_CHECK_RETURN(tjsonDupStringValue(
348,119✔
802
    pJson, jkCreateStreamReqPartitionCols, (char**)&pReq->partitionCols));
803
  // out cols
804
  TAOS_CHECK_RETURN(tjsonToTArray(
348,119✔
805
    pJson, jkCreateStreamReqOutCols, jsonToSFieldWithOptions,
806
    &pReq->outCols, sizeof(SFieldWithOptions)));
807
  // out tags
808
  TAOS_CHECK_RETURN(tjsonToTArray(
348,119✔
809
    pJson, jkCreateStreamReqOutTags, jsonToSTagFieldWithOptions,
810
    &pReq->outTags, sizeof(SFieldWithOptions)));
811
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
348,119✔
812
    pJson, jkCreateStreamReqMaxDelay, &pReq->maxDelay));
813
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
348,119✔
814
    pJson, jkCreateStreamReqFillHistoryStartTime, &pReq->fillHistoryStartTime));
815
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
348,119✔
816
    pJson, jkCreateStreamReqWatermark, &pReq->watermark));
817
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
348,119✔
818
    pJson, jkCreateStreamReqExpiredTime, &pReq->expiredTime));
819
  // trigger
820
  switch (pReq->triggerType) {
348,119✔
821
    case WINDOW_TYPE_SESSION:
15,937✔
822
      TAOS_CHECK_RETURN(tjsonToObject(
15,937✔
823
        pJson, jkCreateStreamReqTrigger, jsonToSessionTrigger, &pReq->trigger));
824
      break;
15,937✔
825
    
826
    case WINDOW_TYPE_STATE:
131,863✔
827
      TAOS_CHECK_RETURN(tjsonToObject(
131,863✔
828
        pJson, jkCreateStreamReqTrigger, jsonToStateTrigger, &pReq->trigger));
829
      break;
131,863✔
830

831
    case WINDOW_TYPE_INTERVAL:
121,652✔
832
      TAOS_CHECK_RETURN(tjsonToObject(
121,652✔
833
        pJson, jkCreateStreamReqTrigger, jsonToSlidingTrigger, &pReq->trigger));
834
      break;
121,652✔
835
    
836
    case WINDOW_TYPE_EVENT:
43,337✔
837
      TAOS_CHECK_RETURN(tjsonToObject(
43,337✔
838
        pJson, jkCreateStreamReqTrigger, jsonToEventTrigger, &pReq->trigger));
839
      break;
43,337✔
840
    
841
    case WINDOW_TYPE_COUNT:
21,440✔
842
      TAOS_CHECK_RETURN(tjsonToObject(
21,440✔
843
        pJson, jkCreateStreamReqTrigger, jsonToCountTrigger, &pReq->trigger));
844
      break;
21,440✔
845
    
846
    case WINDOW_TYPE_PERIOD:
13,890✔
847
      TAOS_CHECK_RETURN(tjsonToObject(
13,890✔
848
        pJson, jkCreateStreamReqTrigger, jsonToPeriodTrigger, &pReq->trigger));
849
      break;
13,890✔
850
    
UNCOV
851
    default:
×
UNCOV
852
      return TSDB_CODE_STREAM_INVALID_TRIGGER;
×
853
  }
854

855
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
856
    pJson, jkCreateStreamReqTriggerTblType, &pReq->triggerTblType));
857
  TAOS_CHECK_RETURN(tjsonGetUBigIntValue(
348,119✔
858
    pJson, jkCreateStreamReqTriggerTblUid, &pReq->triggerTblUid));
859
  TAOS_CHECK_RETURN(tjsonGetUBigIntValue(
348,119✔
860
    pJson, jkCreateStreamReqTriggerTblSuid, &pReq->triggerTblSuid));
861
  TAOS_CHECK_RETURN(tjsonGetUTinyIntValue(
348,119✔
862
    pJson, jkCreateStreamReqTriggerPrec, &pReq->triggerPrec));
863
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
864
    pJson, jkCreateStreamReqVtableCalc, &pReq->vtableCalc));
865
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
866
    pJson, jkCreateStreamReqOutTblType, &pReq->outTblType));
867
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
868
    pJson, jkCreateStreamReqOutStbExists, &pReq->outStbExists));
869
  TAOS_CHECK_RETURN(tjsonGetUBigIntValue(
348,119✔
870
    pJson, jkCreateStreamReqOutStbUid, &pReq->outStbUid));
871
  TAOS_CHECK_RETURN(tjsonGetIntValue(
348,119✔
872
    pJson, jkCreateStreamReqOutStbSversion, &pReq->outStbSversion));
873
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
348,119✔
874
    pJson, jkCreateStreamReqEventTypes, &pReq->eventTypes));
875
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
348,119✔
876
    pJson, jkCreateStreamReqFlags, &pReq->flags));
877
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
348,119✔
878
    pJson, jkCreateStreamReqTsmaId, &pReq->tsmaId));
879
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
348,119✔
880
    pJson, jkCreateStreamReqPlaceHolderBitmap, &pReq->placeHolderBitmap));
881
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(
348,119✔
882
    pJson, jkCreateStreamReqCalcTsSlotId, &pReq->calcTsSlotId));
883
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(
348,119✔
884
    pJson, jkCreateStreamReqTriTsSlotId, &pReq->triTsSlotId));
885

886
  TAOS_CHECK_RETURN(tjsonGetIntValue(
348,119✔
887
    pJson, jkCreateStreamReqTriggerTblVgId, &pReq->triggerTblVgId));
888
  TAOS_CHECK_RETURN(tjsonGetIntValue(
348,119✔
889
    pJson, jkCreateStreamReqOutTblVgId, &pReq->outTblVgId));
890

891
  TAOS_CHECK_RETURN(tjsonDupStringValue(
348,119✔
892
    pJson, jkCreateStreamReqTriggerScanPlan, (char**)&pReq->triggerScanPlan));
893
  TAOS_CHECK_RETURN(tjsonToTArray(
348,119✔
894
    pJson, jkCreateStreamReqCalcScanPlanList, jsonToCalcScanPlan,
895
    &pReq->calcScanPlanList, sizeof(SStreamCalcScan)));
896

897
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
348,119✔
898
    pJson, jkCreateStreamReqTriggerHasPF, &pReq->triggerHasPF));
899
  TAOS_CHECK_RETURN(tjsonDupStringValue(
348,119✔
900
    pJson, jkCreateStreamReqTriggerPrevFilter,
901
    (char**)&pReq->triggerPrevFilter));
902
  TAOS_CHECK_RETURN(tjsonGetIntValue(
348,119✔
903
    pJson, jkCreateStreamReqNumOfCalcSubplan, &pReq->numOfCalcSubplan));
904
  TAOS_CHECK_RETURN(tjsonDupStringValue(
348,119✔
905
    pJson, jkCreateStreamReqCalcPlan, (char**)&pReq->calcPlan));
906
  TAOS_CHECK_RETURN(tjsonDupStringValue(
348,119✔
907
    pJson, jkCreateStreamReqSubTblNameExpr, (char**)&pReq->subTblNameExpr));
908
  TAOS_CHECK_RETURN(tjsonDupStringValue(
348,119✔
909
    pJson, jkCreateStreamReqTagValueExpr, (char**)&pReq->tagValueExpr));
910
  TAOS_CHECK_RETURN(tjsonToTArray(
348,119✔
911
    pJson, jkCreateStreamReqForceOutCols,
912
    jsonToSStreamOutCol, &pReq->forceOutCols, sizeof(SStreamOutCol)));
913
  TAOS_CHECK_RETURN(tjsonToTArray(pJson, jkCreateStreamReqColCids, jsonToInt16, &pReq->colCids, sizeof(int16_t)));
348,119✔
914
  TAOS_CHECK_RETURN(tjsonToTArray(pJson, jkCreateStreamReqTagCids, jsonToInt16, &pReq->tagCids, sizeof(int16_t)));
348,119✔
915

916
  return TSDB_CODE_SUCCESS;
348,119✔
917
}
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