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

taosdata / TDengine / #4870

26 Nov 2025 05:46AM UTC coverage: 64.545% (+0.006%) from 64.539%
#4870

push

travis-ci

guanshengliang
Merge branch '3.0' into cover/3.0

768 of 945 new or added lines in 33 files covered. (81.27%)

2982 existing lines in 119 files now uncovered.

158219 of 245129 relevant lines covered (64.55%)

112474797.36 hits per line

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

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

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

39
static int32_t stagFieldWithOptionsToJson(const void* pObj, SJson* pJson) {
1,570,400✔
40
  const SFieldWithOptions* pField = (const SFieldWithOptions*)pObj;
1,570,400✔
41
  if (NULL != pField->name) {
1,570,400✔
42
    TAOS_CHECK_RETURN(tjsonAddStringToObject(pJson, jkFieldName, pField->name));
1,570,400✔
43
  }
44
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkFieldType, pField->type));
1,570,400✔
45
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,570,400✔
46
    pJson, jkFieldFlags, pField->flags));
47
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,570,400✔
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;
1,570,400✔
54
}
55

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

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

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

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

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

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

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

187
static const char* jkEventTriggerStartCond       = "startCond";
188
static const char* jkEventTriggerEndCond         = "endCond";
189
static const char* jkEventTriggerTrueForDuration = "trueForDuration";
190
static int32_t eventTriggerToJson(const void* pObj, SJson* pJson) {
263,780✔
191
  const SEventTrigger* pTrigger = (const SEventTrigger*)pObj;
263,780✔
192
  if (NULL != pTrigger->startCond) {
263,780✔
193
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
263,780✔
194
      pJson, jkEventTriggerStartCond, (const char*)pTrigger->startCond));
195
  }
196
  if (NULL != pTrigger->endCond) {
263,780✔
197
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
263,780✔
198
      pJson, jkEventTriggerEndCond, (const char*)pTrigger->endCond));
199
  }
200
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
263,780✔
201
    pJson, jkEventTriggerTrueForDuration, pTrigger->trueForDuration));
202
  return TSDB_CODE_SUCCESS;
263,780✔
203
}
204

205
static int32_t jsonToEventTrigger(const SJson* pJson, void* pObj) {
43,196✔
206
  SEventTrigger* pTrigger = (SEventTrigger*)pObj;
43,196✔
207
  TAOS_CHECK_RETURN(tjsonDupStringValue(
43,196✔
208
    pJson, jkEventTriggerStartCond, (char**)&pTrigger->startCond));
209
  TAOS_CHECK_RETURN(tjsonDupStringValue(
43,196✔
210
    pJson, jkEventTriggerEndCond, (char**)&pTrigger->endCond));
211
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
43,196✔
212
    pJson, jkEventTriggerTrueForDuration, &pTrigger->trueForDuration));
213
  return TSDB_CODE_SUCCESS;
43,196✔
214
}
215

216
static const char* jkCountTriggerCountVal = "countVal";
217
static const char* jkCountTriggerSliding  = "sliding";
218
static const char* jkCountTriggerCondCols = "condCols";
219
static int32_t countTriggerToJson(const void* pObj, SJson* pJson) {
229,054✔
220
  const SCountTrigger* pTrigger = (const SCountTrigger*)pObj;
229,054✔
221
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkCountTriggerCountVal, pTrigger->countVal));
229,054✔
222
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, jkCountTriggerSliding, pTrigger->sliding));
229,054✔
223
  if (NULL != pTrigger->condCols) {
229,054✔
NEW
224
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
×
225
      pJson, jkCountTriggerCondCols, (const char*)pTrigger->condCols));
226
  }
227
  return TSDB_CODE_SUCCESS;
229,054✔
228
}
229

230
static int32_t jsonToCountTrigger(const SJson* pJson, void* pObj) {
20,145✔
231
  SCountTrigger* pTrigger = (SCountTrigger*)pObj;
20,145✔
232
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
20,145✔
233
    pJson, jkCountTriggerCountVal, &pTrigger->countVal));
234
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
20,145✔
235
    pJson, jkCountTriggerSliding, &pTrigger->sliding));
236
  TAOS_CHECK_RETURN(tjsonDupStringValue(
20,145✔
237
    pJson, jkCountTriggerCondCols, (char**)&pTrigger->condCols));
238
  return TSDB_CODE_SUCCESS;
20,145✔
239
}
240

241
static const char* jkPeriodTriggerPeriodUnit = "periodUnit";
242
static const char* jkPeriodTriggerOffsetUnit = "offsetUnit";
243
static const char* jkPeriodTriggerPrecision  = "precision";
244
static const char* jkPeriodTriggerPeriod     = "period";
245
static const char* jkPeriodTriggerOffset     = "offset";
246
static int32_t periodTriggerToJson(const void* pObj, SJson* pJson) {
80,378✔
247
  const SPeriodTrigger* pTrigger = (const SPeriodTrigger*)pObj;
80,378✔
248
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
80,378✔
249
    pJson, jkPeriodTriggerPeriodUnit, pTrigger->periodUnit));
250
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
80,378✔
251
    pJson, jkPeriodTriggerOffsetUnit, pTrigger->offsetUnit));
252
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
80,378✔
253
    pJson, jkPeriodTriggerPrecision, pTrigger->precision));
254
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
80,378✔
255
    pJson, jkPeriodTriggerPeriod, pTrigger->period));
256
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
80,378✔
257
    pJson, jkPeriodTriggerOffset, pTrigger->offset));
258
  return TSDB_CODE_SUCCESS;
80,378✔
259
}
260

261
static int32_t jsonToPeriodTrigger(const SJson* pJson, void* pObj) {
17,992✔
262
  SPeriodTrigger* pTrigger = (SPeriodTrigger*)pObj;
17,992✔
263
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
17,992✔
264
    pJson, jkPeriodTriggerPeriodUnit, &pTrigger->periodUnit));
265
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
17,992✔
266
    pJson, jkPeriodTriggerOffsetUnit, &pTrigger->offsetUnit));
267
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
17,992✔
268
    pJson, jkPeriodTriggerPrecision, &pTrigger->precision));
269
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
17,992✔
270
    pJson, jkPeriodTriggerPeriod, &pTrigger->period));
271
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
17,992✔
272
    pJson, jkPeriodTriggerOffset, &pTrigger->offset));
273
  return TSDB_CODE_SUCCESS;
17,992✔
274
}
275

276
static int32_t int32ToJson(const void* pObj, SJson* pJson) {
3,421,260✔
277
  const int32_t* pInt = (const int32_t*)pObj;
3,421,260✔
278
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(pJson, "value", *pInt));
3,421,260✔
279
  return TSDB_CODE_SUCCESS;
3,421,260✔
280
}
281

282
static int32_t jsonToInt32(const SJson* pJson, void* pObj) {
788,263✔
283
  int32_t* pInt = (int32_t*)pObj;
788,263✔
284
  TAOS_CHECK_RETURN(tjsonGetIntValue(pJson, "value", pInt));
788,263✔
285
  return TSDB_CODE_SUCCESS;
788,263✔
286
}
287

288
static const char* jkSstreamCalcScanVgList        = "vgList";
289
static const char* jkSstreamCalcScanReadFromCache = "readFromCache";
290
static const char* jkSstreamCalcScanScanPlan      = "scanPlan";
291
static int32_t calcScanPlanToJson(const void* pObj, SJson* pJson) {
3,421,260✔
292
  const SStreamCalcScan* pPlan = (const SStreamCalcScan*)pObj;
3,421,260✔
293
  TAOS_CHECK_RETURN(tjsonAddArray(
3,421,260✔
294
    pJson, jkSstreamCalcScanVgList, int32ToJson,
295
    pPlan->vgList ? TARRAY_GET_ELEM(pPlan->vgList, 0) : NULL, sizeof(int32_t),
296
    pPlan->vgList ? pPlan->vgList->size : 0));
297
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
3,421,260✔
298
    pJson, jkSstreamCalcScanReadFromCache, pPlan->readFromCache));
299
  if (NULL != pPlan->scanPlan) {
3,421,260✔
300
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
3,421,260✔
301
      pJson, jkSstreamCalcScanScanPlan, (const char*)pPlan->scanPlan));
302
  }
303
  return TSDB_CODE_SUCCESS;
3,421,260✔
304
}
305

306
static int32_t jsonToCalcScanPlan(const SJson* pJson, void* pObj) {
788,263✔
307
  SStreamCalcScan* pPlan = (SStreamCalcScan*)pObj;
788,263✔
308
  TAOS_CHECK_RETURN(tjsonToTArray(
788,263✔
309
    pJson, jkSstreamCalcScanVgList, jsonToInt32,
310
    &pPlan->vgList, sizeof(int32_t)));
311
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
788,263✔
312
    pJson, jkSstreamCalcScanReadFromCache, &pPlan->readFromCache));
313
  TAOS_CHECK_RETURN(tjsonDupStringValue(
788,263✔
314
    pJson, jkSstreamCalcScanScanPlan, (char**)&pPlan->scanPlan));
315
  return TSDB_CODE_SUCCESS;
788,263✔
316
}
317

318
static const char* jkSDataTypeType      = "type";
319
static const char* jkSDataTypePrecision = "precision";
320
static const char* jkSDataTypeScale     = "scale";
321
static const char* jkSDataTypeBytes     = "bytes";
322
static int32_t sDataTypeToJson(const void* pObj, SJson* pJson) {
186,098✔
323
  const SDataType* pType = (const SDataType*)pObj;
186,098✔
324
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
186,098✔
325
    pJson, jkSDataTypeType, pType->type));
326
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
186,098✔
327
    pJson, jkSDataTypePrecision, pType->precision));
328
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
186,098✔
329
    pJson, jkSDataTypeScale, pType->scale));
330
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
186,098✔
331
    pJson, jkSDataTypeBytes, pType->bytes));
332
  return TSDB_CODE_SUCCESS;
186,098✔
333
}
334

335
static int32_t jsonToSDataType(const SJson* pJson, void* pObj) {
61,474✔
336
  SDataType* pType = (SDataType*)pObj;
61,474✔
337
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
61,474✔
338
    pJson, jkSDataTypeType, &pType->type));
339
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
61,474✔
340
    pJson, jkSDataTypePrecision, &pType->precision));
341
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
61,474✔
342
    pJson, jkSDataTypeScale, &pType->scale));
343
  TAOS_CHECK_RETURN(tjsonGetIntValue(
61,474✔
344
    pJson, jkSDataTypeBytes, &pType->bytes));
345
  return TSDB_CODE_SUCCESS;
61,474✔
346
}
347

348
static const char* jkSStreamOutColExpr = "expr";
349
static const char* jkSStreamOutColType = "type";
350
static int32_t sStreamOutColToJson(const void* pObj, SJson* pJson) {
186,098✔
351
  const SStreamOutCol* pCol = (const SStreamOutCol*)pObj;
186,098✔
352
  if (NULL != pCol->expr) {
186,098✔
353
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
186,098✔
354
      pJson, jkSStreamOutColExpr, (const char*)pCol->expr));
355
  }
356
  TAOS_CHECK_RETURN(tjsonAddObject(
186,098✔
357
    pJson, jkSStreamOutColType, sDataTypeToJson, &pCol->type));
358
  return TSDB_CODE_SUCCESS;
186,098✔
359
}
360

361
static int32_t jsonToSStreamOutCol(const SJson* pJson, void* pObj) {
61,474✔
362
  SStreamOutCol* pCol = (SStreamOutCol*)pObj;
61,474✔
363
  TAOS_CHECK_RETURN(tjsonDupStringValue(
61,474✔
364
    pJson, jkSStreamOutColExpr, (char**)&pCol->expr));
365
  TAOS_CHECK_RETURN(tjsonToObject(
61,474✔
366
    pJson, jkSStreamOutColType, jsonToSDataType, &pCol->type));
367
  return TSDB_CODE_SUCCESS;
61,474✔
368
}
369

370
static int32_t stringToJson(const void* pObj, SJson* pJson) {
2,262,902✔
371
  const char** pStr = (const char**)pObj;
2,262,902✔
372
  TAOS_CHECK_RETURN(tjsonAddStringToObject(pJson, "value", *pStr));
2,262,902✔
373
  return TSDB_CODE_SUCCESS;
2,262,902✔
374
}
375

376
static int32_t jsonToString(const SJson* pJson, void* pObj) {
539,456✔
377
  char** pStr = (char**)pObj;
539,456✔
378
  TAOS_CHECK_RETURN(tjsonDupStringValue(pJson, "value", pStr));
539,456✔
379
  return TSDB_CODE_SUCCESS;
539,456✔
380
}
381

382
static const char* jkCreateStreamReqName                 = "name";
383
static const char* jkCreateStreamReqStreamId             = "streamId";
384
static const char* jkCreateStreamReqSql                  = "sql";
385

386
static const char* jkCreateStreamReqStreamDB             = "streamDB";
387
static const char* jkCreateStreamReqTriggerDB            = "triggerDB";
388
static const char* jkCreateStreamReqOutDB                = "outDB";
389
static const char* jkCreateStreamReqCalcDB               = "calcDB";
390

391
static const char* jkCreateStreamReqTriggerTblName       = "triggerTblName";
392
static const char* jkCreateStreamReqOutTblName           = "outTblName";
393

394
static const char* jkCreateStreamReqIgExists             = "igExists";
395
static const char* jkCreateStreamReqTriggerType          = "triggerType";
396
static const char* jkCreateStreamReqIgDisorder           = "igDisorder";
397
static const char* jkCreateStreamReqDeleteReCalc         = "deleteReCalc";
398
static const char* jkCreateStreamReqDeleteOutTbl         = "deleteOutTbl";
399
static const char* jkCreateStreamReqFillHistory          = "fillHistory";
400
static const char* jkCreateStreamReqFillHistoryFirst     = "fillHistoryFirst";
401
static const char* jkCreateStreamReqCalcNotifyOnly       = "calcNotifyOnly";
402
static const char* jkCreateStreamReqLowLatencyCalc       = "lowLatencyCalc";
403
static const char* jkCreateStreamReqIgNoDataTrigger      = "igNoDataTrigger";
404

405
static const char* jkCreateStreamReqPNotifyAddrUrls      = "pNotifyAddrUrls";
406
static const char* jkCreateStreamReqNotifyEventTypes     = "notifyEventTypes";
407
static const char* jkCreateStreamReqAddOptions           = "addOptions";
408
static const char* jkCreateStreamReqNotifyHistory        = "notifyHistory";
409

410
static const char* jkCreateStreamReqTriggerFilterCols    = "triggerFilterCols";
411
static const char* jkCreateStreamReqTriggerCols          = "triggerCols";
412
static const char* jkCreateStreamReqPartitionCols        = "partitionCols";
413
static const char* jkCreateStreamReqOutCols              = "outCols";
414
static const char* jkCreateStreamReqOutTags              = "outTags";
415
static const char* jkCreateStreamReqMaxDelay             = "maxDelay";
416
static const char* jkCreateStreamReqFillHistoryStartTime = 
417
  "fillHistoryStartTime";
418
static const char* jkCreateStreamReqWatermark            = "watermark";
419
static const char* jkCreateStreamReqExpiredTime          = "expiredTime";
420
static const char* jkCreateStreamReqTrigger              = "trigger";
421

422
static const char* jkCreateStreamReqTriggerTblType       = "triggerTblType";
423
static const char* jkCreateStreamReqTriggerTblUid        = "triggerTblUid";
424
static const char* jkCreateStreamReqTriggerTblSuid       = "triggerTblSuid";
425
static const char* jkCreateStreamReqTriggerPrec          = "triggerPrec";
426
static const char* jkCreateStreamReqVtableCalc           = "vtableCalc";
427
static const char* jkCreateStreamReqOutTblType           = "outTblType";
428
static const char* jkCreateStreamReqOutStbExists         = "outStbExists";
429
static const char* jkCreateStreamReqOutStbUid            = "outStbUid";
430
static const char* jkCreateStreamReqOutStbSversion       = "outStbSversion";
431
static const char* jkCreateStreamReqEventTypes           = "eventTypes";
432
static const char* jkCreateStreamReqFlags                = "flags";
433
static const char* jkCreateStreamReqTsmaId               = "tsmaId";
434
static const char* jkCreateStreamReqPlaceHolderBitmap    = "placeHolderBitmap";
435
static const char* jkCreateStreamReqCalcTsSlotId         = "calcTsSlotId";
436
static const char* jkCreateStreamReqTriTsSlotId          = "triTsSlotId";
437

438
static const char* jkCreateStreamReqTriggerTblVgId       = "triggerTblVgId";
439
static const char* jkCreateStreamReqOutTblVgId           = "outTblVgId";
440

441
static const char* jkCreateStreamReqTriggerScanPlan      = "triggerScanPlan";
442
static const char* jkCreateStreamReqCalcScanPlanList     = "calcScanPlanList";
443

444
static const char* jkCreateStreamReqTriggerHasPF         = "triggerHasPF";
445
static const char* jkCreateStreamReqTriggerPrevFilter    = "triggerPrevFilter";
446

447
static const char* jkCreateStreamReqNumOfCalcSubplan     = "numOfCalcSubplan";
448
static const char* jkCreateStreamReqCalcPlan             = "calcPlan";
449
static const char* jkCreateStreamReqSubTblNameExpr       = "subTblNameExpr";
450
static const char* jkCreateStreamReqTagValueExpr         = "tagValueExpr";
451
static const char* jkCreateStreamReqForceOutCols         = "forceOutCols";
452

453
static int32_t scmCreateStreamReqToJsonImpl(const void* pObj, void* pJson) {
1,911,060✔
454
  const SCMCreateStreamReq* pReq = (const SCMCreateStreamReq*)pObj;
1,911,060✔
455
  if (NULL != pReq->name) {
1,911,060✔
456
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,911,060✔
457
      pJson, jkCreateStreamReqName, pReq->name));
458
  }
459
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
460
    pJson, jkCreateStreamReqStreamId, pReq->streamId));
461
  if (NULL != pReq->sql) {
1,911,060✔
462
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,911,060✔
463
      pJson, jkCreateStreamReqSql, pReq->sql));
464
  }
465
  if (NULL != pReq->streamDB) {
1,911,060✔
466
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,911,060✔
467
      pJson, jkCreateStreamReqStreamDB, pReq->streamDB));
468
  }
469
  if (NULL != pReq->triggerDB) {
1,911,060✔
470
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,903,532✔
471
      pJson, jkCreateStreamReqTriggerDB, pReq->triggerDB));
472
  }
473
  if (NULL != pReq->outDB) {
1,911,060✔
474
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,890,576✔
475
      pJson, jkCreateStreamReqOutDB, pReq->outDB));
476
  }
477
  TAOS_CHECK_RETURN(tjsonAddArray(
1,911,060✔
478
    pJson, jkCreateStreamReqCalcDB, stringToJson,
479
    pReq->calcDB ? TARRAY_GET_ELEM(pReq->calcDB, 0) : NULL,
480
    pReq->calcDB ? pReq->calcDB->elemSize : 0,
481
    pReq->calcDB ? pReq->calcDB->size : 0));
482
  if (NULL != pReq->triggerTblName) {
1,911,060✔
483
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,903,532✔
484
      pJson, jkCreateStreamReqTriggerTblName, pReq->triggerTblName));
485
  }
486
  if (NULL != pReq->outTblName) {
1,911,060✔
487
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,890,576✔
488
      pJson, jkCreateStreamReqOutTblName, pReq->outTblName));
489
  }
490
  // trigger contol part
491
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
492
    pJson, jkCreateStreamReqIgExists, pReq->igExists));
493
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
494
    pJson, jkCreateStreamReqTriggerType, pReq->triggerType));
495
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
496
    pJson, jkCreateStreamReqIgDisorder, pReq->igDisorder));
497
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
498
    pJson, jkCreateStreamReqDeleteReCalc, pReq->deleteReCalc));
499
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
500
    pJson, jkCreateStreamReqDeleteOutTbl, pReq->deleteOutTbl));
501
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
502
    pJson, jkCreateStreamReqFillHistory, pReq->fillHistory));
503
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
504
    pJson, jkCreateStreamReqFillHistoryFirst, pReq->fillHistoryFirst));
505
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
506
    pJson, jkCreateStreamReqCalcNotifyOnly, pReq->calcNotifyOnly));
507
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
508
    pJson, jkCreateStreamReqLowLatencyCalc, pReq->lowLatencyCalc));
509
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
510
    pJson, jkCreateStreamReqIgNoDataTrigger, pReq->igNoDataTrigger));
511

512
  // notify part
513
  TAOS_CHECK_RETURN(tjsonAddArray(
1,911,060✔
514
    pJson, jkCreateStreamReqPNotifyAddrUrls, stringToJson,
515
    pReq->pNotifyAddrUrls ? TARRAY_GET_ELEM(pReq->pNotifyAddrUrls, 0) : NULL,
516
    pReq->pNotifyAddrUrls ? pReq->pNotifyAddrUrls->elemSize : 0,
517
    pReq->pNotifyAddrUrls ? pReq->pNotifyAddrUrls->size : 0));
518
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
519
    pJson, jkCreateStreamReqNotifyEventTypes, pReq->notifyEventTypes));
520
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
521
    pJson, jkCreateStreamReqAddOptions, pReq->addOptions));
522
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
523
    pJson, jkCreateStreamReqNotifyHistory, pReq->notifyHistory));
524

525
  // out table part
526
  // trigger cols and partition cols
527
  if (NULL != pReq->triggerFilterCols) {
1,911,060✔
528
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
278,696✔
529
      pJson, jkCreateStreamReqTriggerFilterCols,
530
      (const char*)pReq->triggerFilterCols));
531
  }
532
  if (NULL != pReq->triggerCols) {
1,911,060✔
533
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,830,682✔
534
      pJson, jkCreateStreamReqTriggerCols, (const char*)pReq->triggerCols));
535
  }
536
  if (NULL != pReq->partitionCols) {
1,911,060✔
537
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,056,232✔
538
      pJson, jkCreateStreamReqPartitionCols, (const char*)pReq->partitionCols));
539
  }
540

541
  // out cols
542
  TAOS_CHECK_RETURN(tjsonAddArray(
1,911,060✔
543
    pJson, jkCreateStreamReqOutCols, sfieldWithOptionsToJson,
544
    pReq->outCols ? TARRAY_GET_ELEM(pReq->outCols, 0) : NULL,
545
    pReq->outCols ? pReq->outCols->elemSize : 0,
546
    pReq->outCols ? pReq->outCols->size : 0));
547
  // out tags
548
  TAOS_CHECK_RETURN(tjsonAddArray(
1,911,060✔
549
    pJson, jkCreateStreamReqOutTags, stagFieldWithOptionsToJson,
550
    pReq->outTags ? TARRAY_GET_ELEM(pReq->outTags, 0) : NULL,
551
    pReq->outTags ? pReq->outTags->elemSize : 0,
552
    pReq->outTags ? pReq->outTags->size : 0));
553
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
554
    pJson, jkCreateStreamReqMaxDelay, pReq->maxDelay));
555
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
556
    pJson, jkCreateStreamReqFillHistoryStartTime, pReq->fillHistoryStartTime));
557
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
558
    pJson, jkCreateStreamReqWatermark, pReq->watermark));
559
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
560
    pJson, jkCreateStreamReqExpiredTime, pReq->expiredTime));
561
  // trigger
562
  switch (pReq->triggerType) {
1,911,060✔
563
    case WINDOW_TYPE_SESSION:
147,658✔
564
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
147,658✔
565
        sessionTriggerToJson, &pReq->trigger));
566
      break;
147,658✔
567

568
    case WINDOW_TYPE_STATE:
466,350✔
569
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
466,350✔
570
        stateTriggerToJson, &pReq->trigger));
571
      break;
466,350✔
572

573
    case WINDOW_TYPE_INTERVAL:
723,840✔
574
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
723,840✔
575
        slidingTriggerToJson, &pReq->trigger));
576
      break;
723,840✔
577

578
    case WINDOW_TYPE_EVENT:
263,780✔
579
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
263,780✔
580
        eventTriggerToJson, &pReq->trigger));
581
      break;
263,780✔
582

583
    case WINDOW_TYPE_COUNT:
229,054✔
584
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
229,054✔
585
        countTriggerToJson, &pReq->trigger));
586
      break;
229,054✔
587

588
    case WINDOW_TYPE_PERIOD:
80,378✔
589
      TAOS_CHECK_RETURN(tjsonAddObject(pJson, jkCreateStreamReqTrigger,
80,378✔
590
        periodTriggerToJson, &pReq->trigger));
591
      break;
80,378✔
592

NEW
593
  default:
×
NEW
594
    return TSDB_CODE_STREAM_INVALID_TRIGGER;
×
595
  }
596

597
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
598
    pJson, jkCreateStreamReqTriggerTblType, pReq->triggerTblType));
599
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
600
    pJson, jkCreateStreamReqTriggerTblUid, pReq->triggerTblUid));
601
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
602
    pJson, jkCreateStreamReqTriggerTblSuid, pReq->triggerTblSuid));
603
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
604
    pJson, jkCreateStreamReqTriggerPrec, pReq->triggerPrec));
605
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
606
    pJson, jkCreateStreamReqVtableCalc, pReq->vtableCalc));
607
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
608
    pJson, jkCreateStreamReqOutTblType, pReq->outTblType));
609
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
610
    pJson, jkCreateStreamReqOutStbExists, pReq->outStbExists));
611
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
612
    pJson, jkCreateStreamReqOutStbUid, pReq->outStbUid));
613
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
614
    pJson, jkCreateStreamReqOutStbSversion, pReq->outStbSversion));
615
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
616
    pJson, jkCreateStreamReqEventTypes, pReq->eventTypes));
617
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
618
    pJson, jkCreateStreamReqFlags, pReq->flags));
619
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
620
    pJson, jkCreateStreamReqTsmaId, pReq->tsmaId));
621
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
622
    pJson, jkCreateStreamReqPlaceHolderBitmap, pReq->placeHolderBitmap));
623
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
624
    pJson, jkCreateStreamReqCalcTsSlotId, pReq->calcTsSlotId));
625
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
626
    pJson, jkCreateStreamReqTriTsSlotId, pReq->triTsSlotId));
627
  
628
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
629
    pJson, jkCreateStreamReqTriggerTblVgId, pReq->triggerTblVgId));
630
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
631
    pJson, jkCreateStreamReqOutTblVgId, pReq->outTblVgId));
632

633
  if (NULL != pReq->triggerScanPlan) {
1,911,060✔
634
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,903,532✔
635
      pJson, jkCreateStreamReqTriggerScanPlan, (const char*)pReq->triggerScanPlan));
636
  }
637
  TAOS_CHECK_RETURN(tjsonAddArray(
1,911,060✔
638
    pJson, jkCreateStreamReqCalcScanPlanList, calcScanPlanToJson,
639
    pReq->calcScanPlanList ? TARRAY_GET_ELEM(pReq->calcScanPlanList, 0) : NULL,
640
    pReq->calcScanPlanList ? pReq->calcScanPlanList->elemSize : 0,
641
    pReq->calcScanPlanList ? pReq->calcScanPlanList->size : 0));
642

643
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
644
    pJson, jkCreateStreamReqTriggerHasPF, pReq->triggerHasPF));
645
  if (NULL != pReq->triggerPrevFilter) {
1,911,060✔
646
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
89,384✔
647
      pJson, jkCreateStreamReqTriggerPrevFilter,
648
      (const char*)pReq->triggerPrevFilter));
649
  }
650

651
  TAOS_CHECK_RETURN(tjsonAddIntegerToObject(
1,911,060✔
652
    pJson, jkCreateStreamReqNumOfCalcSubplan, pReq->numOfCalcSubplan));
653
  if (NULL != pReq->calcPlan) {
1,911,060✔
654
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,890,576✔
655
      pJson, jkCreateStreamReqCalcPlan, (const char*)pReq->calcPlan));
656
  }
657
  if (NULL != pReq->subTblNameExpr) {
1,911,060✔
658
    TAOS_CHECK_RETURN(tjsonAddStringToObject(pJson,
1,056,232✔
659
      jkCreateStreamReqSubTblNameExpr, (const char*)pReq->subTblNameExpr));
660
  }
661
  if (NULL != pReq->tagValueExpr) {
1,911,060✔
662
    TAOS_CHECK_RETURN(tjsonAddStringToObject(
1,056,232✔
663
      pJson, jkCreateStreamReqTagValueExpr, (const char*)pReq->tagValueExpr));
664
  }
665
  TAOS_CHECK_RETURN(tjsonAddArray(
1,911,060✔
666
    pJson, jkCreateStreamReqForceOutCols, sStreamOutColToJson,
667
    pReq->forceOutCols ? TARRAY_GET_ELEM(pReq->forceOutCols, 0) : NULL,
668
    pReq->forceOutCols ? pReq->forceOutCols->elemSize : 0,
669
    pReq->forceOutCols ? pReq->forceOutCols->size : 0));
670

671
  return TSDB_CODE_SUCCESS;
1,911,060✔
672
}
673

674
int32_t scmCreateStreamReqToJson(
1,911,060✔
675
  const SCMCreateStreamReq* pReq, bool format, char** ppStr, int32_t* pStrLen) {
676
  int32_t code = TSDB_CODE_SUCCESS;
1,911,060✔
677
  int32_t lino = 0;
1,911,060✔
678
  int64_t streamId = pReq ? pReq->streamId : -1;
1,911,060✔
679
  TSDB_CHECK_NULL(pReq, code, lino, _end, TSDB_CODE_MND_STREAM_INTERNAL_ERROR);
1,911,060✔
680
  TSDB_CHECK_NULL(ppStr, code, lino, _end, TSDB_CODE_MND_STREAM_INTERNAL_ERROR);
1,911,060✔
681
  TSDB_CHECK_NULL(
1,911,060✔
682
    pStrLen, code, lino, _end, TSDB_CODE_MND_STREAM_INTERNAL_ERROR);
683

684
  SJson* pJson = tjsonCreateObject();
1,911,060✔
685
  TSDB_CHECK_NULL(pJson, code, lino, _end, terrno);
1,911,060✔
686
  TSDB_CHECK_CODE(scmCreateStreamReqToJsonImpl(pReq, pJson), lino, _end);
1,911,060✔
687

688
  if (TSDB_CODE_SUCCESS == code) {
1,911,060✔
689
    *ppStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
1,911,060✔
690
    if (*ppStr == NULL) {
1,911,060✔
NEW
691
      code = terrno;
×
692
    } else {
693
      *pStrLen = strlen(*ppStr);
1,911,060✔
694
    }
695
  }
696

NEW
697
_end:
×
698
  if (TSDB_CODE_SUCCESS != code) {
1,911,060✔
NEW
699
    uError(
×
700
      "failed to convert SCMCreateStreamReq to json, lino: %d, since %s",
701
      lino, tstrerror(code));
702
  }
703
  tjsonDelete(pJson);
1,911,060✔
704
  return code;
1,911,060✔
705
}
706

707
int32_t jsonToSCMCreateStreamReq(const void* pJson, void* pObj) {
433,890✔
708
  SCMCreateStreamReq* pReq = (SCMCreateStreamReq*)pObj;
433,890✔
709
  TAOS_CHECK_RETURN(tjsonDupStringValue(
433,890✔
710
    pJson, jkCreateStreamReqName, (char**)&pReq->name));
711
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
433,890✔
712
    pJson, jkCreateStreamReqStreamId, &pReq->streamId));
713
  TAOS_CHECK_RETURN(tjsonDupStringValue(
433,890✔
714
    pJson, jkCreateStreamReqSql, (char**)&pReq->sql));
715

716
  TAOS_CHECK_RETURN(tjsonDupStringValue(
433,890✔
717
    pJson, jkCreateStreamReqStreamDB, (char**)&pReq->streamDB));
718
  TAOS_CHECK_RETURN(tjsonDupStringValue(
433,890✔
719
    pJson, jkCreateStreamReqTriggerDB, (char**)&pReq->triggerDB));
720
  TAOS_CHECK_RETURN(tjsonDupStringValue(
433,890✔
721
    pJson, jkCreateStreamReqOutDB, (char**)&pReq->outDB));
722
  TAOS_CHECK_RETURN(tjsonToTArray(
433,890✔
723
    pJson, jkCreateStreamReqCalcDB, jsonToString,
724
    &pReq->calcDB, POINTER_BYTES));
725
  TAOS_CHECK_RETURN(tjsonDupStringValue(
433,890✔
726
    pJson, jkCreateStreamReqTriggerTblName, (char**)&pReq->triggerTblName));
727
  TAOS_CHECK_RETURN(tjsonDupStringValue(
433,890✔
728
    pJson, jkCreateStreamReqOutTblName, (char**)&pReq->outTblName));
729

730
  // trigger control part
731
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
732
    pJson, jkCreateStreamReqIgExists, &pReq->igExists));
733
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
734
    pJson, jkCreateStreamReqTriggerType, &pReq->triggerType));
735
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
736
    pJson, jkCreateStreamReqIgDisorder, &pReq->igDisorder));
737
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
738
    pJson, jkCreateStreamReqDeleteReCalc, &pReq->deleteReCalc));
739
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
740
    pJson, jkCreateStreamReqDeleteOutTbl, &pReq->deleteOutTbl));
741
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
742
    pJson, jkCreateStreamReqFillHistory, &pReq->fillHistory));
743
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
744
    pJson, jkCreateStreamReqFillHistoryFirst, &pReq->fillHistoryFirst));
745
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
746
    pJson, jkCreateStreamReqCalcNotifyOnly, &pReq->calcNotifyOnly));
747
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
748
    pJson, jkCreateStreamReqLowLatencyCalc, &pReq->lowLatencyCalc));
749
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
750
    pJson, jkCreateStreamReqIgNoDataTrigger, &pReq->igNoDataTrigger));
751

752
  // notify part
753
  TAOS_CHECK_RETURN(tjsonToTArray(
433,890✔
754
    pJson, jkCreateStreamReqPNotifyAddrUrls, jsonToString,
755
    &pReq->pNotifyAddrUrls, POINTER_BYTES));
756
  TAOS_CHECK_RETURN(tjsonGetIntValue(
433,890✔
757
    pJson, jkCreateStreamReqNotifyEventTypes, &pReq->notifyEventTypes));
758
  TAOS_CHECK_RETURN(tjsonGetIntValue(
433,890✔
759
    pJson, jkCreateStreamReqAddOptions, &pReq->addOptions));
760
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
761
    pJson, jkCreateStreamReqNotifyHistory, &pReq->notifyHistory));
762

763
  TAOS_CHECK_RETURN(tjsonDupStringValue(
433,890✔
764
    pJson, jkCreateStreamReqTriggerFilterCols,
765
    (char**)&pReq->triggerFilterCols));
766
  TAOS_CHECK_RETURN(tjsonDupStringValue(
433,890✔
767
    pJson, jkCreateStreamReqTriggerCols, (char**)&pReq->triggerCols));
768
  TAOS_CHECK_RETURN(tjsonDupStringValue(
433,890✔
769
    pJson, jkCreateStreamReqPartitionCols, (char**)&pReq->partitionCols));
770
  // out cols
771
  TAOS_CHECK_RETURN(tjsonToTArray(
433,890✔
772
    pJson, jkCreateStreamReqOutCols, jsonToSFieldWithOptions,
773
    &pReq->outCols, sizeof(SFieldWithOptions)));
774
  // out tags
775
  TAOS_CHECK_RETURN(tjsonToTArray(
433,890✔
776
    pJson, jkCreateStreamReqOutTags, jsonToSTagFieldWithOptions,
777
    &pReq->outTags, sizeof(SFieldWithOptions)));
778
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
433,890✔
779
    pJson, jkCreateStreamReqMaxDelay, &pReq->maxDelay));
780
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
433,890✔
781
    pJson, jkCreateStreamReqFillHistoryStartTime, &pReq->fillHistoryStartTime));
782
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
433,890✔
783
    pJson, jkCreateStreamReqWatermark, &pReq->watermark));
784
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
433,890✔
785
    pJson, jkCreateStreamReqExpiredTime, &pReq->expiredTime));
786
  // trigger
787
  switch (pReq->triggerType) {
433,890✔
788
    case WINDOW_TYPE_SESSION:
19,206✔
789
      TAOS_CHECK_RETURN(tjsonToObject(
19,206✔
790
        pJson, jkCreateStreamReqTrigger, jsonToSessionTrigger, &pReq->trigger));
791
      break;
19,206✔
792
    
793
    case WINDOW_TYPE_STATE:
125,344✔
794
      TAOS_CHECK_RETURN(tjsonToObject(
125,344✔
795
        pJson, jkCreateStreamReqTrigger, jsonToStateTrigger, &pReq->trigger));
796
      break;
125,344✔
797

798
    case WINDOW_TYPE_INTERVAL:
208,007✔
799
      TAOS_CHECK_RETURN(tjsonToObject(
208,007✔
800
        pJson, jkCreateStreamReqTrigger, jsonToSlidingTrigger, &pReq->trigger));
801
      break;
208,007✔
802
    
803
    case WINDOW_TYPE_EVENT:
43,196✔
804
      TAOS_CHECK_RETURN(tjsonToObject(
43,196✔
805
        pJson, jkCreateStreamReqTrigger, jsonToEventTrigger, &pReq->trigger));
806
      break;
43,196✔
807
    
808
    case WINDOW_TYPE_COUNT:
20,145✔
809
      TAOS_CHECK_RETURN(tjsonToObject(
20,145✔
810
        pJson, jkCreateStreamReqTrigger, jsonToCountTrigger, &pReq->trigger));
811
      break;
20,145✔
812
    
813
    case WINDOW_TYPE_PERIOD:
17,992✔
814
      TAOS_CHECK_RETURN(tjsonToObject(
17,992✔
815
        pJson, jkCreateStreamReqTrigger, jsonToPeriodTrigger, &pReq->trigger));
816
      break;
17,992✔
817
    
NEW
818
    default:
×
NEW
819
      return TSDB_CODE_STREAM_INVALID_TRIGGER;
×
820
  }
821

822
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
823
    pJson, jkCreateStreamReqTriggerTblType, &pReq->triggerTblType));
824
  TAOS_CHECK_RETURN(tjsonGetUBigIntValue(
433,890✔
825
    pJson, jkCreateStreamReqTriggerTblUid, &pReq->triggerTblUid));
826
  TAOS_CHECK_RETURN(tjsonGetUBigIntValue(
433,890✔
827
    pJson, jkCreateStreamReqTriggerTblSuid, &pReq->triggerTblSuid));
828
  TAOS_CHECK_RETURN(tjsonGetUTinyIntValue(
433,890✔
829
    pJson, jkCreateStreamReqTriggerPrec, &pReq->triggerPrec));
830
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
831
    pJson, jkCreateStreamReqVtableCalc, &pReq->vtableCalc));
832
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
833
    pJson, jkCreateStreamReqOutTblType, &pReq->outTblType));
834
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
835
    pJson, jkCreateStreamReqOutStbExists, &pReq->outStbExists));
836
  TAOS_CHECK_RETURN(tjsonGetUBigIntValue(
433,890✔
837
    pJson, jkCreateStreamReqOutStbUid, &pReq->outStbUid));
838
  TAOS_CHECK_RETURN(tjsonGetIntValue(
433,890✔
839
    pJson, jkCreateStreamReqOutStbSversion, &pReq->outStbSversion));
840
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
433,890✔
841
    pJson, jkCreateStreamReqEventTypes, &pReq->eventTypes));
842
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
433,890✔
843
    pJson, jkCreateStreamReqFlags, &pReq->flags));
844
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
433,890✔
845
    pJson, jkCreateStreamReqTsmaId, &pReq->tsmaId));
846
  TAOS_CHECK_RETURN(tjsonGetBigIntValue(
433,890✔
847
    pJson, jkCreateStreamReqPlaceHolderBitmap, &pReq->placeHolderBitmap));
848
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(
433,890✔
849
    pJson, jkCreateStreamReqCalcTsSlotId, &pReq->calcTsSlotId));
850
  TAOS_CHECK_RETURN(tjsonGetSmallIntValue(
433,890✔
851
    pJson, jkCreateStreamReqTriTsSlotId, &pReq->triTsSlotId));
852

853
  TAOS_CHECK_RETURN(tjsonGetIntValue(
433,890✔
854
    pJson, jkCreateStreamReqTriggerTblVgId, &pReq->triggerTblVgId));
855
  TAOS_CHECK_RETURN(tjsonGetIntValue(
433,890✔
856
    pJson, jkCreateStreamReqOutTblVgId, &pReq->outTblVgId));
857

858
  TAOS_CHECK_RETURN(tjsonDupStringValue(
433,890✔
859
    pJson, jkCreateStreamReqTriggerScanPlan, (char**)&pReq->triggerScanPlan));
860
  TAOS_CHECK_RETURN(tjsonToTArray(
433,890✔
861
    pJson, jkCreateStreamReqCalcScanPlanList, jsonToCalcScanPlan,
862
    &pReq->calcScanPlanList, sizeof(SStreamCalcScan)));
863

864
  TAOS_CHECK_RETURN(tjsonGetTinyIntValue(
433,890✔
865
    pJson, jkCreateStreamReqTriggerHasPF, &pReq->triggerHasPF));
866
  TAOS_CHECK_RETURN(tjsonDupStringValue(
433,890✔
867
    pJson, jkCreateStreamReqTriggerPrevFilter,
868
    (char**)&pReq->triggerPrevFilter));
869
  TAOS_CHECK_RETURN(tjsonGetIntValue(
433,890✔
870
    pJson, jkCreateStreamReqNumOfCalcSubplan, &pReq->numOfCalcSubplan));
871
  TAOS_CHECK_RETURN(tjsonDupStringValue(
433,890✔
872
    pJson, jkCreateStreamReqCalcPlan, (char**)&pReq->calcPlan));
873
  TAOS_CHECK_RETURN(tjsonDupStringValue(
433,890✔
874
    pJson, jkCreateStreamReqSubTblNameExpr, (char**)&pReq->subTblNameExpr));
875
  TAOS_CHECK_RETURN(tjsonDupStringValue(
433,890✔
876
    pJson, jkCreateStreamReqTagValueExpr, (char**)&pReq->tagValueExpr));
877
  TAOS_CHECK_RETURN(tjsonToTArray(
433,890✔
878
    pJson, jkCreateStreamReqForceOutCols,
879
    jsonToSStreamOutCol, &pReq->forceOutCols, sizeof(SStreamOutCol)));
880

881
  return TSDB_CODE_SUCCESS;
433,890✔
882
}
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