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

taosdata / TDengine / #5016

03 Apr 2026 03:59PM UTC coverage: 72.299% (+0.01%) from 72.289%
#5016

push

travis-ci

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

4055 of 5985 new or added lines in 68 files covered. (67.75%)

13126 existing lines in 156 files now uncovered.

257424 of 356056 relevant lines covered (72.3%)

133108577.02 hits per line

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

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

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

39
static int32_t stagFieldWithOptionsToJson(const void* pObj, SJson* pJson) {
938,210✔
40
  const SFieldWithOptions* pField = (const SFieldWithOptions*)pObj;
938,210✔
41
  TAOS_CHECK_RETURN(tjsonAddStringToObject(pJson, jkFieldName, pField->name));
938,210✔
42
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkFieldType, pField->type));
938,210✔
43
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
938,210✔
44
    pJson, jkFieldFlags, pField->flags));
45
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
938,210✔
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;
938,210✔
52
}
53

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

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

77
static int32_t jsonToSessionTrigger(const SJson* pJson, void* pObj) {
18,215✔
78
  SSessionTrigger* pTrigger = (SSessionTrigger*)pObj;
18,215✔
79
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(
18,215✔
80
    pJson, jkSessionTriggerSlotId, &pTrigger->slotId));
81
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
18,215✔
82
    pJson, jkSessionTriggerSessionVal, &pTrigger->sessionVal));
83
  return TSDB_CODE_SUCCESS;
18,215✔
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) {
423,578✔
94
  const SStateWinTrigger* pTrigger = (const SStateWinTrigger*)pObj;
423,578✔
95
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
423,578✔
96
    pJson, jkStateTriggerSlotId, pTrigger->slotId));
97
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
423,578✔
98
    pJson, jkStateTriggerExtend, pTrigger->extend));
99
  if (NULL != pTrigger->zeroth) {
423,578✔
100
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
×
101
      pJson, jkStateTriggerZeroth, (const char*)pTrigger->zeroth));
102
  }
103
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkStateTriggerTrueForType, pTrigger->trueForType));
423,578✔
104
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkStateTriggerTrueForCount, pTrigger->trueForCount));
423,578✔
105
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkStateTriggerTrueForDuration, pTrigger->trueForDuration));
423,578✔
106
  if (NULL != pTrigger->expr) {
423,578✔
107
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
423,578✔
108
      pJson, jkStateTriggerExpr, (const char*)pTrigger->expr));
109
  }
110
  return TSDB_CODE_SUCCESS;
423,578✔
111
}
112

113
static int32_t jsonToStateTrigger(const SJson* pJson, void* pObj) {
148,770✔
114
  SStateWinTrigger* pTrigger = (SStateWinTrigger*)pObj;
148,770✔
115
  TAOS_CHECK_RETURN(
148,770✔
116
    tjsonGetSmallIntValue(pJson, jkStateTriggerSlotId, &pTrigger->slotId));
117
  TAOS_CHECK_RETURN(
148,770✔
118
    tjsonGetSmallIntValue(pJson, jkStateTriggerExtend, &pTrigger->extend));
119
  TAOS_CHECK_RETURN(tjsonDupStringValue(
148,770✔
120
    pJson, jkStateTriggerZeroth, (char**)&pTrigger->zeroth));
121
  TAOS_CHECK_RETURN(tjsonGetIntValue(pJson, jkStateTriggerTrueForType, &pTrigger->trueForType));
148,770✔
122
  TAOS_CHECK_RETURN(tjsonGetIntValue(pJson, jkStateTriggerTrueForCount, &pTrigger->trueForCount));
148,770✔
123
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(pJson, jkStateTriggerTrueForDuration, &pTrigger->trueForDuration));
148,770✔
124
  TAOS_CHECK_RETURN(tjsonDupStringValue(
148,770✔
125
    pJson, jkStateTriggerExpr, (char**)&pTrigger->expr));
126
  return TSDB_CODE_SUCCESS;
148,770✔
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) {
526,994✔
140
  const SSlidingTrigger* pTrigger = (const SSlidingTrigger*)pObj;
526,994✔
141
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
526,994✔
142
    pJson, jkSlidingTriggerIntervalUnit, pTrigger->intervalUnit));
143
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
526,994✔
144
    pJson, jkSlidingTriggerSlidingUnit, pTrigger->slidingUnit));
145
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
526,994✔
146
    pJson, jkSlidingTriggerOffsetUnit, pTrigger->offsetUnit));
147
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
526,994✔
148
    pJson, jkSlidingTriggerSoffsetUnit, pTrigger->soffsetUnit));
149
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
526,994✔
150
    pJson, jkSlidingTriggerPrecision, pTrigger->precision));
151
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
526,994✔
152
    pJson, jkSlidingTriggerInterval, pTrigger->interval));
153
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
526,994✔
154
    pJson, jkSlidingTriggerSliding, pTrigger->sliding));
155
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
526,994✔
156
    pJson, jkSlidingTriggerOffset, pTrigger->offset));
157
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
526,994✔
158
    pJson, jkSlidingTriggerSoffset, pTrigger->soffset));
159
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
526,994✔
160
    pJson, jkSlidingTriggerOverlap, pTrigger->overlap));
161
  return TSDB_CODE_SUCCESS;
526,994✔
162
}
163

164
static int32_t jsonToSlidingTrigger(const SJson* pJson, void* pObj) {
173,381✔
165
  SSlidingTrigger* pTrigger = (SSlidingTrigger*)pObj;
173,381✔
166
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
173,381✔
167
    pJson, jkSlidingTriggerIntervalUnit, &pTrigger->intervalUnit));
168
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
173,381✔
169
    pJson, jkSlidingTriggerSlidingUnit, &pTrigger->slidingUnit));
170
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
173,381✔
171
    pJson, jkSlidingTriggerOffsetUnit, &pTrigger->offsetUnit));
172
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
173,381✔
173
    pJson, jkSlidingTriggerSoffsetUnit, &pTrigger->soffsetUnit));
174
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
173,381✔
175
    pJson, jkSlidingTriggerPrecision, &pTrigger->precision));
176
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
173,381✔
177
    pJson, jkSlidingTriggerInterval, &pTrigger->interval));
178
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
173,381✔
179
    pJson, jkSlidingTriggerSliding, &pTrigger->sliding));
180
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
173,381✔
181
    pJson, jkSlidingTriggerOffset, &pTrigger->offset));
182
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
173,381✔
183
    pJson, jkSlidingTriggerSoffset, &pTrigger->soffset));
184
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
173,381✔
185
    pJson, jkSlidingTriggerOverlap, &pTrigger->overlap));
186
  return TSDB_CODE_SUCCESS;
173,381✔
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) {
168,916✔
195
  const SEventTrigger* pTrigger = (const SEventTrigger*)pObj;
168,916✔
196
  if (NULL != pTrigger->startCond) {
168,916✔
197
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
168,916✔
198
      pJson, jkEventTriggerStartCond, (const char*)pTrigger->startCond));
199
  }
200
  if (NULL != pTrigger->endCond) {
168,916✔
201
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
157,012✔
202
      pJson, jkEventTriggerEndCond, (const char*)pTrigger->endCond));
203
  }
204
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkEventTriggerTrueForType, pTrigger->trueForType));
168,916✔
205
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkEventTriggerTrueForCount, pTrigger->trueForCount));
168,916✔
206
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkEventTriggerTrueForDuration, pTrigger->trueForDuration));
168,916✔
207
  return TSDB_CODE_SUCCESS;
168,916✔
208
}
209

210
static int32_t jsonToEventTrigger(const SJson* pJson, void* pObj) {
47,235✔
211
  SEventTrigger* pTrigger = (SEventTrigger*)pObj;
47,235✔
212
  TAOS_CHECK_RETURN(tjsonDupStringValue(
47,235✔
213
    pJson, jkEventTriggerStartCond, (char**)&pTrigger->startCond));
214
  TAOS_CHECK_RETURN(tjsonDupStringValue(
47,235✔
215
    pJson, jkEventTriggerEndCond, (char**)&pTrigger->endCond));
216
  TAOS_CHECK_RETURN(tjsonGetIntValue(pJson, jkEventTriggerTrueForType, &pTrigger->trueForType));
47,235✔
217
  TAOS_CHECK_RETURN(tjsonGetIntValue(pJson, jkEventTriggerTrueForCount, &pTrigger->trueForCount));
47,235✔
218
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(pJson, jkEventTriggerTrueForDuration, &pTrigger->trueForDuration));
47,235✔
219
  return TSDB_CODE_SUCCESS;
47,235✔
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) {
169,968✔
226
  const SCountTrigger* pTrigger = (const SCountTrigger*)pObj;
169,968✔
227
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkCountTriggerCountVal, pTrigger->countVal));
169,968✔
228
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkCountTriggerSliding, pTrigger->sliding));
169,968✔
229
  if (NULL != pTrigger->condCols) {
169,968✔
230
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
×
231
      pJson, jkCountTriggerCondCols, (const char*)pTrigger->condCols));
232
  }
233
  return TSDB_CODE_SUCCESS;
169,968✔
234
}
235

236
static int32_t jsonToCountTrigger(const SJson* pJson, void* pObj) {
44,226✔
237
  SCountTrigger* pTrigger = (SCountTrigger*)pObj;
44,226✔
238
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
44,226✔
239
    pJson, jkCountTriggerCountVal, &pTrigger->countVal));
240
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
44,226✔
241
    pJson, jkCountTriggerSliding, &pTrigger->sliding));
242
  TAOS_CHECK_RETURN(tjsonDupStringValue(
44,226✔
243
    pJson, jkCountTriggerCondCols, (char**)&pTrigger->condCols));
244
  return TSDB_CODE_SUCCESS;
44,226✔
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) {
74,190✔
253
  const SPeriodTrigger* pTrigger = (const SPeriodTrigger*)pObj;
74,190✔
254
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
74,190✔
255
    pJson, jkPeriodTriggerPeriodUnit, pTrigger->periodUnit));
256
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
74,190✔
257
    pJson, jkPeriodTriggerOffsetUnit, pTrigger->offsetUnit));
258
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
74,190✔
259
    pJson, jkPeriodTriggerPrecision, pTrigger->precision));
260
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
74,190✔
261
    pJson, jkPeriodTriggerPeriod, pTrigger->period));
262
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
74,190✔
263
    pJson, jkPeriodTriggerOffset, pTrigger->offset));
264
  return TSDB_CODE_SUCCESS;
74,190✔
265
}
266

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

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

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

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

300
static int32_t jsonToInt16(const SJson* pJson, void* pObj) {
52,896✔
301
  int16_t* pInt = (int16_t*)pObj;
52,896✔
302
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(pJson, "value", pInt));
52,896✔
303
  return TSDB_CODE_SUCCESS;
52,896✔
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,205,370✔
310
  const SStreamCalcScan* pPlan = (const SStreamCalcScan*)pObj;
3,205,370✔
311
  TAOS_CHECK_RETURN(tjsonAddArray(
3,205,370✔
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,205,370✔
316
    pJson, jkSstreamCalcScanReadFromCache, pPlan->readFromCache));
317
  if (NULL != pPlan->scanPlan) {
3,205,370✔
318
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
3,205,370✔
319
      pJson, jkSstreamCalcScanScanPlan, (const char*)pPlan->scanPlan));
320
  }
321
  return TSDB_CODE_SUCCESS;
3,205,370✔
322
}
323

324
static int32_t jsonToCalcScanPlan(const SJson* pJson, void* pObj) {
989,043✔
325
  SStreamCalcScan* pPlan = (SStreamCalcScan*)pObj;
989,043✔
326
  TAOS_CHECK_RETURN(tjsonToTArray(
989,043✔
327
    pJson, jkSstreamCalcScanVgList, jsonToInt32,
328
    &pPlan->vgList, sizeof(int32_t)));
329
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
989,043✔
330
    pJson, jkSstreamCalcScanReadFromCache, &pPlan->readFromCache));
331
  TAOS_CHECK_RETURN(tjsonDupStringValue(
989,043✔
332
    pJson, jkSstreamCalcScanScanPlan, (char**)&pPlan->scanPlan));
333
  return TSDB_CODE_SUCCESS;
989,043✔
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) {
110,206✔
341
  const SDataType* pType = (const SDataType*)pObj;
110,206✔
342
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
110,206✔
343
    pJson, jkSDataTypeType, pType->type));
344
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
110,206✔
345
    pJson, jkSDataTypePrecision, pType->precision));
346
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
110,206✔
347
    pJson, jkSDataTypeScale, pType->scale));
348
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
110,206✔
349
    pJson, jkSDataTypeBytes, pType->bytes));
350
  return TSDB_CODE_SUCCESS;
110,206✔
351
}
352

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

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

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

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

394
static int32_t jsonToString(const SJson* pJson, void* pObj) {
560,209✔
395
  char** pStr = (char**)pObj;
560,209✔
396
  TAOS_CHECK_RETURN(tjsonDupStringValue(pJson, "value", pStr));
560,209✔
397
  return TSDB_CODE_SUCCESS;
560,209✔
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
static const char* jkCreateStreamReqMultiGroupCalc       = "multiGroupCalc";
423

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

429
static const char* jkCreateStreamReqTriggerFilterCols    = "triggerFilterCols";
430
static const char* jkCreateStreamReqTriggerCols          = "triggerCols";
431
static const char* jkCreateStreamReqPartitionCols        = "partitionCols";
432
static const char* jkCreateStreamReqOutCols              = "outCols";
433
static const char* jkCreateStreamReqOutTags              = "outTags";
434
static const char* jkCreateStreamReqMaxDelay             = "maxDelay";
435
static const char* jkCreateStreamReqFillHistoryStartTime = 
436
  "fillHistoryStartTime";
437
static const char* jkCreateStreamReqWatermark            = "watermark";
438
static const char* jkCreateStreamReqExpiredTime          = "expiredTime";
439
static const char* jkCreateStreamReqIdleTimeoutMs        = "idleTimeoutMs";
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
static const char* jkCreateStreamReqCalcPkSlotId         = "calcPkSlotId";
458
static const char* jkCreateStreamReqTriPkSlotId          = "triPkSlotId";
459

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

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

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

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

475
static const char* jkCreateStreamReqColCids = "colCids";
476
static const char* jkCreateStreamReqTagCids = "tagCids";
477
static const char* jkCreateStreamReqNodelayCreateSubtable = "nodelayCreateSubtable";
478

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

540
  // notify part
541
  TAOS_CHECK_RETURN(tjsonAddArray(
1,444,890✔
542
    pJson, jkCreateStreamReqPNotifyAddrUrls, stringToJson,
543
    pReq->pNotifyAddrUrls ? TARRAY_GET_ELEM(pReq->pNotifyAddrUrls, 0) : NULL,
544
    pReq->pNotifyAddrUrls ? pReq->pNotifyAddrUrls->elemSize : 0,
545
    pReq->pNotifyAddrUrls ? pReq->pNotifyAddrUrls->size : 0));
546
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,444,890✔
547
    pJson, jkCreateStreamReqNotifyEventTypes, pReq->notifyEventTypes));
548
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,444,890✔
549
    pJson, jkCreateStreamReqAddOptions, pReq->addOptions));
550
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,444,890✔
551
    pJson, jkCreateStreamReqNotifyHistory, pReq->notifyHistory));
552

553
  // out table part
554
  // trigger cols and partition cols
555
  if (NULL != pReq->triggerFilterCols) {
1,444,890✔
556
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
159,648✔
557
      pJson, jkCreateStreamReqTriggerFilterCols,
558
      (const char*)pReq->triggerFilterCols));
559
  }
560
  if (NULL != pReq->triggerCols) {
1,444,890✔
561
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,370,700✔
562
      pJson, jkCreateStreamReqTriggerCols, (const char*)pReq->triggerCols));
563
  }
564
  if (NULL != pReq->partitionCols) {
1,444,890✔
565
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
583,700✔
566
      pJson, jkCreateStreamReqPartitionCols, (const char*)pReq->partitionCols));
567
  }
568

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

598
    case WINDOW_TYPE_STATE:
423,578✔
599
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
423,578✔
600
        stateTriggerToJson, &pReq->trigger));
601
      break;
423,578✔
602

603
    case WINDOW_TYPE_INTERVAL:
526,994✔
604
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
526,994✔
605
        slidingTriggerToJson, &pReq->trigger));
606
      break;
526,994✔
607

608
    case WINDOW_TYPE_EVENT:
168,916✔
609
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
168,916✔
610
        eventTriggerToJson, &pReq->trigger));
611
      break;
168,916✔
612

613
    case WINDOW_TYPE_COUNT:
169,968✔
614
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
169,968✔
615
        countTriggerToJson, &pReq->trigger));
616
      break;
169,968✔
617

618
    case WINDOW_TYPE_PERIOD:
74,190✔
619
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
74,190✔
620
        periodTriggerToJson, &pReq->trigger));
621
      break;
74,190✔
622

UNCOV
623
  default:
×
UNCOV
624
    return TSDB_CODE_STREAM_INVALID_TRIGGER;
×
625
  }
626

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

667
  if (NULL != pReq->triggerScanPlan) {
1,444,890✔
668
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,420,128✔
669
      pJson, jkCreateStreamReqTriggerScanPlan, (const char*)pReq->triggerScanPlan));
670
  }
671
  TAOS_CHECK_RETURN(tjsonAddArray(
1,444,890✔
672
    pJson, jkCreateStreamReqCalcScanPlanList, calcScanPlanToJson,
673
    pReq->calcScanPlanList ? TARRAY_GET_ELEM(pReq->calcScanPlanList, 0) : NULL,
674
    pReq->calcScanPlanList ? pReq->calcScanPlanList->elemSize : 0,
675
    pReq->calcScanPlanList ? pReq->calcScanPlanList->size : 0));
676

677
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,444,890✔
678
    pJson, jkCreateStreamReqTriggerHasPF, pReq->triggerHasPF));
679
  if (NULL != pReq->triggerPrevFilter) {
1,444,890✔
680
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
60,972✔
681
      pJson, jkCreateStreamReqTriggerPrevFilter,
682
      (const char*)pReq->triggerPrevFilter));
683
  }
684

685
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,444,890✔
686
    pJson, jkCreateStreamReqNumOfCalcSubplan, pReq->numOfCalcSubplan));
687
  if (NULL != pReq->calcPlan) {
1,444,890✔
688
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,424,862✔
689
      pJson, jkCreateStreamReqCalcPlan, (const char*)pReq->calcPlan));
690
  }
691
  if (NULL != pReq->subTblNameExpr) {
1,444,890✔
692
    TAOS_CHECK_RETURN(tjsonAddStringToObject(pJson,
583,700✔
693
      jkCreateStreamReqSubTblNameExpr, (const char*)pReq->subTblNameExpr));
694
  }
695
  if (NULL != pReq->tagValueExpr) {
1,444,890✔
696
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
583,700✔
697
      pJson, jkCreateStreamReqTagValueExpr, (const char*)pReq->tagValueExpr));
698
  }
699
  TAOS_CHECK_RETURN(tjsonAddArray(
1,444,890✔
700
    pJson, jkCreateStreamReqForceOutCols, sStreamOutColToJson,
701
    pReq->forceOutCols ? TARRAY_GET_ELEM(pReq->forceOutCols, 0) : NULL,
702
    pReq->forceOutCols ? pReq->forceOutCols->elemSize : 0,
703
    pReq->forceOutCols ? pReq->forceOutCols->size : 0));
704
  TAOS_CHECK_RETURN(tjsonAddArray(
1,444,890✔
705
      pJson, jkCreateStreamReqColCids, int16ToJson,
706
      pReq->colCids ? TARRAY_GET_ELEM(pReq->colCids, 0) : NULL,
707
      pReq->colCids ? pReq->colCids->elemSize : 0,
708
      pReq->colCids ? pReq->colCids->size : 0));
709
  TAOS_CHECK_RETURN(tjsonAddArray(
1,444,890✔
710
      pJson, jkCreateStreamReqTagCids, int16ToJson,
711
      pReq->tagCids ? TARRAY_GET_ELEM(pReq->tagCids, 0) : NULL,
712
      pReq->tagCids ? pReq->tagCids->elemSize : 0,
713
      pReq->tagCids ? pReq->tagCids->size : 0));
714
  TAOS_CHECK_RETURN(
1,444,890✔
715
      tjsonAddIntegerToObject(pJson, jkCreateStreamReqNodelayCreateSubtable, pReq->nodelayCreateSubtable));
716

717
  return TSDB_CODE_SUCCESS;
1,444,890✔
718
}
719

720
int32_t scmCreateStreamReqToJson(
1,444,890✔
721
  const SCMCreateStreamReq* pReq, bool format, char** ppStr, int32_t* pStrLen) {
722
  int32_t code = TSDB_CODE_SUCCESS;
1,444,890✔
723
  int32_t lino = 0;
1,444,890✔
724
  int64_t streamId = pReq ? pReq->streamId : -1;
1,444,890✔
725
  TSDB_CHECK_NULL(pReq, code, lino, _end, TSDB_CODE_MND_STREAM_INTERNAL_ERROR);
1,444,890✔
726
  TSDB_CHECK_NULL(ppStr, code, lino, _end, TSDB_CODE_MND_STREAM_INTERNAL_ERROR);
1,444,890✔
727
  TSDB_CHECK_NULL(
1,444,890✔
728
    pStrLen, code, lino, _end, TSDB_CODE_MND_STREAM_INTERNAL_ERROR);
729

730
  SJson* pJson = tjsonCreateObject();
1,444,890✔
731
  TSDB_CHECK_NULL(pJson, code, lino, _end, terrno);
1,444,890✔
732
  TSDB_CHECK_CODE(scmCreateStreamReqToJsonImpl(pReq, pJson), lino, _end);
1,444,890✔
733

734
  if (TSDB_CODE_SUCCESS == code) {
1,444,890✔
735
    *ppStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
1,444,890✔
736
    if (*ppStr == NULL) {
1,444,890✔
UNCOV
737
      code = terrno;
×
738
    } else {
739
      *pStrLen = strlen(*ppStr);
1,444,890✔
740
    }
741
  }
742

743
_end:
×
744
  if (TSDB_CODE_SUCCESS != code) {
1,444,890✔
UNCOV
745
    uError(
×
746
      "failed to convert SCMCreateStreamReq to json, lino: %d, since %s",
747
      lino, tstrerror(code));
748
  }
749
  tjsonDelete(pJson);
1,444,890✔
750
  return code;
1,444,890✔
751
}
752

753
int32_t jsonToSCMCreateStreamReq(const void* pJson, void* pObj) {
454,185✔
754
  SCMCreateStreamReq* pReq = (SCMCreateStreamReq*)pObj;
454,185✔
755
  pReq->calcTsSlotId = -1;
454,185✔
756
  pReq->triTsSlotId = -1;
454,185✔
757
  pReq->calcPkSlotId = -1;
454,185✔
758
  pReq->triPkSlotId = -1;
454,185✔
759
  TAOS_CHECK_RETURN(tjsonDupStringValue(
454,185✔
760
    pJson, jkCreateStreamReqName, (char**)&pReq->name));
761
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
454,185✔
762
    pJson, jkCreateStreamReqStreamId, &pReq->streamId));
763
  TAOS_CHECK_RETURN(tjsonDupStringValue(
454,185✔
764
    pJson, jkCreateStreamReqSql, (char**)&pReq->sql));
765

766
  TAOS_CHECK_RETURN(tjsonDupStringValue(
454,185✔
767
    pJson, jkCreateStreamReqStreamDB, (char**)&pReq->streamDB));
768
  TAOS_CHECK_RETURN(tjsonDupStringValue(
454,185✔
769
    pJson, jkCreateStreamReqTriggerDB, (char**)&pReq->triggerDB));
770
  TAOS_CHECK_RETURN(tjsonDupStringValue(
454,185✔
771
    pJson, jkCreateStreamReqOutDB, (char**)&pReq->outDB));
772
  TAOS_CHECK_RETURN(tjsonToTArray(
454,185✔
773
    pJson, jkCreateStreamReqCalcDB, jsonToString,
774
    &pReq->calcDB, POINTER_BYTES));
775
  TAOS_CHECK_RETURN(tjsonDupStringValue(
454,185✔
776
    pJson, jkCreateStreamReqTriggerTblName, (char**)&pReq->triggerTblName));
777
  TAOS_CHECK_RETURN(tjsonDupStringValue(
454,185✔
778
    pJson, jkCreateStreamReqOutTblName, (char**)&pReq->outTblName));
779

780
  // trigger control part
781
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
782
    pJson, jkCreateStreamReqIgExists, &pReq->igExists));
783
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
784
    pJson, jkCreateStreamReqTriggerType, &pReq->triggerType));
785
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
786
    pJson, jkCreateStreamReqIgDisorder, &pReq->igDisorder));
787
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
788
    pJson, jkCreateStreamReqDeleteReCalc, &pReq->deleteReCalc));
789
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
790
    pJson, jkCreateStreamReqDeleteOutTbl, &pReq->deleteOutTbl));
791
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
792
    pJson, jkCreateStreamReqFillHistory, &pReq->fillHistory));
793
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
794
    pJson, jkCreateStreamReqFillHistoryFirst, &pReq->fillHistoryFirst));
795
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
796
    pJson, jkCreateStreamReqCalcNotifyOnly, &pReq->calcNotifyOnly));
797
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
798
    pJson, jkCreateStreamReqLowLatencyCalc, &pReq->lowLatencyCalc));
799
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
800
    pJson, jkCreateStreamReqIgNoDataTrigger, &pReq->igNoDataTrigger));
801
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
802
    pJson, jkCreateStreamReqMultiGroupCalc, &pReq->enableMultiGroupCalc));
803

804
  // notify part
805
  TAOS_CHECK_RETURN(tjsonToTArray(
454,185✔
806
    pJson, jkCreateStreamReqPNotifyAddrUrls, jsonToString,
807
    &pReq->pNotifyAddrUrls, POINTER_BYTES));
808
  TAOS_CHECK_RETURN(tjsonGetIntValue(
454,185✔
809
    pJson, jkCreateStreamReqNotifyEventTypes, &pReq->notifyEventTypes));
810
  TAOS_CHECK_RETURN(tjsonGetIntValue(
454,185✔
811
    pJson, jkCreateStreamReqAddOptions, &pReq->addOptions));
812
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
813
    pJson, jkCreateStreamReqNotifyHistory, &pReq->notifyHistory));
814

815
  TAOS_CHECK_RETURN(tjsonDupStringValue(
454,185✔
816
    pJson, jkCreateStreamReqTriggerFilterCols,
817
    (char**)&pReq->triggerFilterCols));
818
  TAOS_CHECK_RETURN(tjsonDupStringValue(
454,185✔
819
    pJson, jkCreateStreamReqTriggerCols, (char**)&pReq->triggerCols));
820
  TAOS_CHECK_RETURN(tjsonDupStringValue(
454,185✔
821
    pJson, jkCreateStreamReqPartitionCols, (char**)&pReq->partitionCols));
822
  // out cols
823
  TAOS_CHECK_RETURN(tjsonToTArray(
454,185✔
824
    pJson, jkCreateStreamReqOutCols, jsonToSFieldWithOptions,
825
    &pReq->outCols, sizeof(SFieldWithOptions)));
826
  // out tags
827
  TAOS_CHECK_RETURN(tjsonToTArray(
454,185✔
828
    pJson, jkCreateStreamReqOutTags, jsonToSTagFieldWithOptions,
829
    &pReq->outTags, sizeof(SFieldWithOptions)));
830
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
454,185✔
831
    pJson, jkCreateStreamReqMaxDelay, &pReq->maxDelay));
832
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
454,185✔
833
    pJson, jkCreateStreamReqFillHistoryStartTime, &pReq->fillHistoryStartTime));
834
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
454,185✔
835
    pJson, jkCreateStreamReqWatermark, &pReq->watermark));
836
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
454,185✔
837
    pJson, jkCreateStreamReqExpiredTime, &pReq->expiredTime));
838
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
454,185✔
839
    pJson, jkCreateStreamReqIdleTimeoutMs, &pReq->idleTimeoutMs));
840
  // trigger
841
  switch (pReq->triggerType) {
454,185✔
842
    case WINDOW_TYPE_SESSION:
18,215✔
843
      TAOS_CHECK_RETURN(tjsonToObject(
18,215✔
844
        pJson, jkCreateStreamReqTrigger, jsonToSessionTrigger, &pReq->trigger));
845
      break;
18,215✔
846
    
847
    case WINDOW_TYPE_STATE:
148,770✔
848
      TAOS_CHECK_RETURN(tjsonToObject(
148,770✔
849
        pJson, jkCreateStreamReqTrigger, jsonToStateTrigger, &pReq->trigger));
850
      break;
148,770✔
851

852
    case WINDOW_TYPE_INTERVAL:
173,381✔
853
      TAOS_CHECK_RETURN(tjsonToObject(
173,381✔
854
        pJson, jkCreateStreamReqTrigger, jsonToSlidingTrigger, &pReq->trigger));
855
      break;
173,381✔
856
    
857
    case WINDOW_TYPE_EVENT:
47,235✔
858
      TAOS_CHECK_RETURN(tjsonToObject(
47,235✔
859
        pJson, jkCreateStreamReqTrigger, jsonToEventTrigger, &pReq->trigger));
860
      break;
47,235✔
861
    
862
    case WINDOW_TYPE_COUNT:
44,226✔
863
      TAOS_CHECK_RETURN(tjsonToObject(
44,226✔
864
        pJson, jkCreateStreamReqTrigger, jsonToCountTrigger, &pReq->trigger));
865
      break;
44,226✔
866
    
867
    case WINDOW_TYPE_PERIOD:
22,358✔
868
      TAOS_CHECK_RETURN(tjsonToObject(
22,358✔
869
        pJson, jkCreateStreamReqTrigger, jsonToPeriodTrigger, &pReq->trigger));
870
      break;
22,358✔
871
    
UNCOV
872
    default:
×
UNCOV
873
      return TSDB_CODE_STREAM_INVALID_TRIGGER;
×
874
  }
875

876
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
877
    pJson, jkCreateStreamReqTriggerTblType, &pReq->triggerTblType));
878
  TAOS_CHECK_RETURN(tjsonGetUBigIntValue(
454,185✔
879
    pJson, jkCreateStreamReqTriggerTblUid, &pReq->triggerTblUid));
880
  TAOS_CHECK_RETURN(tjsonGetUBigIntValue(
454,185✔
881
    pJson, jkCreateStreamReqTriggerTblSuid, &pReq->triggerTblSuid));
882
  TAOS_CHECK_RETURN(tjsonGetUTinyIntValue(
454,185✔
883
    pJson, jkCreateStreamReqTriggerPrec, &pReq->triggerPrec));
884
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
885
    pJson, jkCreateStreamReqVtableCalc, &pReq->vtableCalc));
886
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
887
    pJson, jkCreateStreamReqOutTblType, &pReq->outTblType));
888
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
889
    pJson, jkCreateStreamReqOutStbExists, &pReq->outStbExists));
890
  TAOS_CHECK_RETURN(tjsonGetUBigIntValue(
454,185✔
891
    pJson, jkCreateStreamReqOutStbUid, &pReq->outStbUid));
892
  TAOS_CHECK_RETURN(tjsonGetIntValue(
454,185✔
893
    pJson, jkCreateStreamReqOutStbSversion, &pReq->outStbSversion));
894
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
454,185✔
895
    pJson, jkCreateStreamReqEventTypes, &pReq->eventTypes));
896
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
454,185✔
897
    pJson, jkCreateStreamReqFlags, &pReq->flags));
898
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
454,185✔
899
    pJson, jkCreateStreamReqTsmaId, &pReq->tsmaId));
900
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
454,185✔
901
    pJson, jkCreateStreamReqPlaceHolderBitmap, &pReq->placeHolderBitmap));
902
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(
454,185✔
903
    pJson, jkCreateStreamReqCalcTsSlotId, &pReq->calcTsSlotId));
904
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(
454,185✔
905
    pJson, jkCreateStreamReqTriTsSlotId, &pReq->triTsSlotId));
906
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(
454,185✔
907
    pJson, jkCreateStreamReqCalcPkSlotId, &pReq->calcPkSlotId));
908
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(
454,185✔
909
    pJson, jkCreateStreamReqTriPkSlotId, &pReq->triPkSlotId));
910

911
  TAOS_CHECK_RETURN(tjsonGetIntValue(
454,185✔
912
    pJson, jkCreateStreamReqTriggerTblVgId, &pReq->triggerTblVgId));
913
  TAOS_CHECK_RETURN(tjsonGetIntValue(
454,185✔
914
    pJson, jkCreateStreamReqOutTblVgId, &pReq->outTblVgId));
915

916
  TAOS_CHECK_RETURN(tjsonDupStringValue(
454,185✔
917
    pJson, jkCreateStreamReqTriggerScanPlan, (char**)&pReq->triggerScanPlan));
918
  TAOS_CHECK_RETURN(tjsonToTArray(
454,185✔
919
    pJson, jkCreateStreamReqCalcScanPlanList, jsonToCalcScanPlan,
920
    &pReq->calcScanPlanList, sizeof(SStreamCalcScan)));
921

922
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
454,185✔
923
    pJson, jkCreateStreamReqTriggerHasPF, &pReq->triggerHasPF));
924
  TAOS_CHECK_RETURN(tjsonDupStringValue(
454,185✔
925
    pJson, jkCreateStreamReqTriggerPrevFilter,
926
    (char**)&pReq->triggerPrevFilter));
927
  TAOS_CHECK_RETURN(tjsonGetIntValue(
454,185✔
928
    pJson, jkCreateStreamReqNumOfCalcSubplan, &pReq->numOfCalcSubplan));
929
  TAOS_CHECK_RETURN(tjsonDupStringValue(
454,185✔
930
    pJson, jkCreateStreamReqCalcPlan, (char**)&pReq->calcPlan));
931
  TAOS_CHECK_RETURN(tjsonDupStringValue(
454,185✔
932
    pJson, jkCreateStreamReqSubTblNameExpr, (char**)&pReq->subTblNameExpr));
933
  TAOS_CHECK_RETURN(tjsonDupStringValue(
454,185✔
934
    pJson, jkCreateStreamReqTagValueExpr, (char**)&pReq->tagValueExpr));
935
  TAOS_CHECK_RETURN(tjsonToTArray(
454,185✔
936
    pJson, jkCreateStreamReqForceOutCols,
937
    jsonToSStreamOutCol, &pReq->forceOutCols, sizeof(SStreamOutCol)));
938
  TAOS_CHECK_RETURN(tjsonToTArray(pJson, jkCreateStreamReqColCids, jsonToInt16, &pReq->colCids, sizeof(int16_t)));
454,185✔
939
  TAOS_CHECK_RETURN(tjsonToTArray(pJson, jkCreateStreamReqTagCids, jsonToInt16, &pReq->tagCids, sizeof(int16_t)));
454,185✔
940
  (void)tjsonGetTinyIntValue(pJson, jkCreateStreamReqNodelayCreateSubtable, &pReq->nodelayCreateSubtable);
454,185✔
941

942
  return TSDB_CODE_SUCCESS;
454,185✔
943
}
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