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

taosdata / TDengine / #3581

15 Jan 2025 01:12AM UTC coverage: 63.809% (+0.3%) from 63.556%
#3581

push

travis-ci

web-flow
Merge pull request #29561 from taosdata/fix/TD-33504

fix:[TD-33504]add test case

141492 of 284535 branches covered (49.73%)

Branch coverage included in aggregate %.

219814 of 281694 relevant lines covered (78.03%)

19173854.68 hits per line

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

71.91
/source/libs/nodes/src/nodesCodeFuncs.c
1
/*
2
 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
3
 *
4
 * This program is free software: you can use, redistribute, and/or modify
5
 * it under the terms of the GNU Affero General Public License, version 3
6
 * or later ("AGPL"), as published by the Free Software Foundation.
7
 *
8
 * This program is distributed in the hope that it will be useful, but WITHOUT
9
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
 * FITNESS FOR A PARTICULAR PURPOSE.
11
 *
12
 * You should have received a copy of the GNU Affero General Public License
13
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14
 */
15

16
#include "cmdnodes.h"
17
#include "nodesUtil.h"
18
#include "plannodes.h"
19
#include "query.h"
20
#include "querynodes.h"
21
#include "taoserror.h"
22
#include "tdatablock.h"
23
#include "tjson.h"
24

25
static int32_t nodeToJson(const void* pObj, SJson* pJson);
26
static int32_t jsonToNode(const SJson* pJson, void* pObj);
27
static int32_t jsonToNodeObject(const SJson* pJson, const char* pName, SNode** pNode);
28
static int32_t makeNodeByJson(const SJson* pJson, SNode** pNode);
29

30
const char* nodesNodeName(ENodeType type) {
9,781,888✔
31
  switch (type) {
9,781,888!
32
    case QUERY_NODE_COLUMN:
3,086,717✔
33
      return "Column";
3,086,717✔
34
    case QUERY_NODE_VALUE:
215,622✔
35
      return "Value";
215,622✔
36
    case QUERY_NODE_OPERATOR:
36,437✔
37
      return "Operator";
36,437✔
38
    case QUERY_NODE_LOGIC_CONDITION:
7,099✔
39
      return "LogicCondition";
7,099✔
40
    case QUERY_NODE_FUNCTION:
1,633,307✔
41
      return "Function";
1,633,307✔
42
    case QUERY_NODE_REAL_TABLE:
14,460✔
43
      return "RealTable";
14,460✔
44
    case QUERY_NODE_TEMP_TABLE:
497✔
45
      return "TempTable";
497✔
46
    case QUERY_NODE_JOIN_TABLE:
186✔
47
      return "JoinTable";
186✔
48
    case QUERY_NODE_GROUPING_SET:
1,727✔
49
      return "GroupingSet";
1,727✔
50
    case QUERY_NODE_ORDER_BY_EXPR:
2,472✔
51
      return "OrderByExpr";
2,472✔
52
    case QUERY_NODE_LIMIT:
942✔
53
      return "Limit";
942✔
54
    case QUERY_NODE_STATE_WINDOW:
282✔
55
      return "StateWindow";
282✔
56
    case QUERY_NODE_SESSION_WINDOW:
445✔
57
      return "SessionWinow";
445✔
58
    case QUERY_NODE_INTERVAL_WINDOW:
5,733✔
59
      return "IntervalWindow";
5,733✔
60
    case QUERY_NODE_NODE_LIST:
12,452✔
61
      return "NodeList";
12,452✔
62
    case QUERY_NODE_FILL:
978✔
63
      return "Fill";
978✔
64
    case QUERY_NODE_RAW_EXPR:
×
65
      return "RawExpr";
×
66
    case QUERY_NODE_TARGET:
2,155,446✔
67
      return "Target";
2,155,446✔
68
    case QUERY_NODE_DATABLOCK_DESC:
108,948✔
69
      return "DataBlockDesc";
108,948✔
70
    case QUERY_NODE_SLOT_DESC:
2,199,916✔
71
      return "SlotDesc";
2,199,916✔
72
    case QUERY_NODE_COLUMN_DEF:
39,000✔
73
      return "ColumnDef";
39,000✔
74
    case QUERY_NODE_DOWNSTREAM_SOURCE:
1,896✔
75
      return "DownstreamSource";
1,896✔
76
    case QUERY_NODE_DATABASE_OPTIONS:
1,260✔
77
      return "DatabaseOptions";
1,260✔
78
    case QUERY_NODE_TABLE_OPTIONS:
252✔
79
      return "TableOptions";
252✔
80
    case QUERY_NODE_COLUMN_OPTIONS:
37,989✔
81
      return "ColumnOptions";
37,989✔
82
    case QUERY_NODE_INDEX_OPTIONS:
57✔
83
      return "IndexOptions";
57✔
84
    case QUERY_NODE_EXPLAIN_OPTIONS:
90✔
85
      return "ExplainOptions";
90✔
86
    case QUERY_NODE_STREAM_OPTIONS:
315✔
87
      return "StreamOptions";
315✔
88
    case QUERY_NODE_LEFT_VALUE:
48✔
89
      return "LeftValue";
48✔
90
    case QUERY_NODE_WHEN_THEN:
462✔
91
      return "WhenThen";
462✔
92
    case QUERY_NODE_CASE_WHEN:
406✔
93
      return "CaseWhen";
406✔
94
    case QUERY_NODE_EVENT_WINDOW:
74✔
95
      return "EventWindow";
74✔
96
    case QUERY_NODE_WINDOW_OFFSET:
×
97
      return "WindowOffset";
×
98
    case QUERY_NODE_COUNT_WINDOW:
108✔
99
      return "CountWindow";
108✔
100
    case QUERY_NODE_ANOMALY_WINDOW:
×
101
      return "AnomalyWindow";
×
102
    case QUERY_NODE_SET_OPERATOR:
192✔
103
      return "SetOperator";
192✔
104
    case QUERY_NODE_SELECT_STMT:
14,822✔
105
      return "SelectStmt";
14,822✔
106
    case QUERY_NODE_VNODE_MODIFY_STMT:
360✔
107
      return "VnodeModifStmt";
360✔
108
    case QUERY_NODE_CREATE_DATABASE_STMT:
162✔
109
      return "CreateDatabaseStmt";
162✔
110
    case QUERY_NODE_DROP_DATABASE_STMT:
×
111
      return "DropDatabaseStmt";
×
112
    case QUERY_NODE_ALTER_DATABASE_STMT:
1,098✔
113
      return "AlterDatabaseStmt";
1,098✔
114
    case QUERY_NODE_FLUSH_DATABASE_STMT:
×
115
      return "FlushDatabaseStmt";
×
116
    case QUERY_NODE_TRIM_DATABASE_STMT:
54✔
117
      return "TrimDatabaseStmt";
54✔
118
    case QUERY_NODE_S3MIGRATE_DATABASE_STMT:
×
119
      return "S3MigrateDatabaseStmt";
×
120
    case QUERY_NODE_CREATE_TABLE_STMT:
135✔
121
      return "CreateTableStmt";
135✔
122
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
45✔
123
      return "CreateSubtableClause";
45✔
124
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
27✔
125
      return "CreateMultiTableStmt";
27✔
126
    case QUERY_NODE_DROP_TABLE_CLAUSE:
36✔
127
      return "DropTableClause";
36✔
128
    case QUERY_NODE_DROP_TABLE_STMT:
18✔
129
      return "DropTableStmt";
18✔
130
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
27✔
131
      return "DropSuperTableStmt";
27✔
132
    case QUERY_NODE_ALTER_TABLE_STMT:
225✔
133
      return "AlterTableStmt";
225✔
134
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
261✔
135
      return "AlterSuperTableStmt";
261✔
136
    case QUERY_NODE_CREATE_USER_STMT:
54✔
137
      return "CreateUserStmt";
54✔
138
    case QUERY_NODE_ALTER_USER_STMT:
81✔
139
      return "AlterUserStmt";
81✔
140
    case QUERY_NODE_DROP_USER_STMT:
27✔
141
      return "DropUserStmt";
27✔
142
    case QUERY_NODE_USE_DATABASE_STMT:
27✔
143
      return "UseDatabaseStmt";
27✔
144
    case QUERY_NODE_CREATE_DNODE_STMT:
162✔
145
      return "CreateDnodeStmt";
162✔
146
    case QUERY_NODE_DROP_DNODE_STMT:
243✔
147
      return "DropDnodeStmt";
243✔
148
    case QUERY_NODE_ALTER_DNODE_STMT:
108✔
149
      return "AlterDnodeStmt";
108✔
150
    case QUERY_NODE_CREATE_INDEX_STMT:
57✔
151
      return "CreateIndexStmt";
57✔
152
    case QUERY_NODE_DROP_INDEX_STMT:
54✔
153
      return "DropIndexStmt";
54✔
154
    case QUERY_NODE_CREATE_QNODE_STMT:
27✔
155
      return "CreateQnodeStmt";
27✔
156
    case QUERY_NODE_DROP_QNODE_STMT:
27✔
157
      return "DropQnodeStmt";
27✔
158
    case QUERY_NODE_CREATE_ANODE_STMT:
×
159
      return "CreateAnodeStmt";
×
160
    case QUERY_NODE_DROP_ANODE_STMT:
×
161
      return "DropAnodeStmt";
×
162
    case QUERY_NODE_UPDATE_ANODE_STMT:
×
163
      return "UpdateAnodeStmt";
×
164
    case QUERY_NODE_CREATE_SNODE_STMT:
27✔
165
      return "CreateSnodeStmt";
27✔
166
    case QUERY_NODE_DROP_SNODE_STMT:
27✔
167
      return "DropSnodeStmt";
27✔
168
    case QUERY_NODE_CREATE_MNODE_STMT:
27✔
169
      return "CreateMnodeStmt";
27✔
170
    case QUERY_NODE_DROP_MNODE_STMT:
27✔
171
      return "DropMnodeStmt";
27✔
172
    case QUERY_NODE_CREATE_TOPIC_STMT:
219✔
173
      return "CreateTopicStmt";
219✔
174
    case QUERY_NODE_DROP_TOPIC_STMT:
54✔
175
      return "DropTopicStmt";
54✔
176
    case QUERY_NODE_DROP_CGROUP_STMT:
54✔
177
      return "DropConsumerGroupStmt";
54✔
178
    case QUERY_NODE_ALTER_LOCAL_STMT:
54✔
179
      return "AlterLocalStmt";
54✔
180
    case QUERY_NODE_EXPLAIN_STMT:
90✔
181
      return "ExplainStmt";
90✔
182
    case QUERY_NODE_DESCRIBE_STMT:
54✔
183
      return "DescribeStmt";
54✔
184
    case QUERY_NODE_COMPACT_DATABASE_STMT:
108✔
185
      return "CompactDatabaseStmt";
108✔
186
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
×
187
      return "CompactVgroupsStmt";
×
188
    case QUERY_NODE_CREATE_STREAM_STMT:
258✔
189
      return "CreateStreamStmt";
258✔
190
    case QUERY_NODE_DROP_STREAM_STMT:
54✔
191
      return "DropStreamStmt";
54✔
192
    case QUERY_NODE_PAUSE_STREAM_STMT:
90✔
193
      return "PauseStreamStmt";
90✔
194
    case QUERY_NODE_RESUME_STREAM_STMT:
90✔
195
      return "ResumeStreamStmt";
90✔
196
    case QUERY_NODE_RESET_STREAM_STMT:
×
197
      return "ResetStreamStmt";
×
198
    case QUERY_NODE_BALANCE_VGROUP_STMT:
27✔
199
      return "BalanceVgroupStmt";
27✔
200
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
27✔
201
      return "BalanceVgroupLeaderStmt";
27✔
202
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
203
      return "BalanceVgroupLeaderStmt";
×
204
    case QUERY_NODE_MERGE_VGROUP_STMT:
27✔
205
      return "MergeVgroupStmt";
27✔
206
    case QUERY_NODE_SHOW_DB_ALIVE_STMT:
×
207
      return "ShowDbAliveStmt";
×
208
    case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
×
209
      return "ShowClusterAliveStmt";
×
210
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
54✔
211
      return "RedistributeVgroupStmt";
54✔
212
    case QUERY_NODE_SPLIT_VGROUP_STMT:
27✔
213
      return "SplitVgroupStmt";
27✔
214
    case QUERY_NODE_GRANT_STMT:
162✔
215
      return "GrantStmt";
162✔
216
    case QUERY_NODE_REVOKE_STMT:
162✔
217
      return "RevokeStmt";
162✔
218
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
219
      return "AlterClusterStmt";
×
220
    case QUERY_NODE_SHOW_DNODES_STMT:
9✔
221
      return "ShowDnodesStmt";
9✔
222
    case QUERY_NODE_SHOW_MNODES_STMT:
9✔
223
      return "ShowMnodesStmt";
9✔
224
    case QUERY_NODE_SHOW_MODULES_STMT:
×
225
      return "ShowModulesStmt";
×
226
    case QUERY_NODE_SHOW_QNODES_STMT:
9✔
227
      return "ShowQnodesStmt";
9✔
228
    case QUERY_NODE_SHOW_ANODES_STMT:
×
229
      return "ShowAnodesStmt";
×
230
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
231
      return "ShowAnodesFullStmt";
×
232
    case QUERY_NODE_SHOW_SNODES_STMT:
×
233
      return "ShowSnodesStmt";
×
234
    case QUERY_NODE_SHOW_BNODES_STMT:
×
235
      return "ShowBnodesStmt";
×
236
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
237
      return "ShowArbGroupsStmt";
×
238
    case QUERY_NODE_SHOW_CLUSTER_STMT:
9✔
239
      return "ShowClusterStmt";
9✔
240
    case QUERY_NODE_SHOW_DATABASES_STMT:
9✔
241
      return "ShowDatabaseStmt";
9✔
242
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
9✔
243
      return "ShowFunctionsStmt";
9✔
244
    case QUERY_NODE_SHOW_INDEXES_STMT:
18✔
245
      return "ShowIndexesStmt";
18✔
246
    case QUERY_NODE_SHOW_STABLES_STMT:
36✔
247
      return "ShowStablesStmt";
36✔
248
    case QUERY_NODE_SHOW_STREAMS_STMT:
9✔
249
      return "ShowStreamsStmt";
9✔
250
    case QUERY_NODE_SHOW_TABLES_STMT:
36✔
251
      return "ShowTablesStmt";
36✔
252
    case QUERY_NODE_SHOW_TAGS_STMT:
9✔
253
      return "ShowTagsStmt";
9✔
254
    case QUERY_NODE_SHOW_USERS_STMT:
9✔
255
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
256
      return "ShowUsersStmt";
9✔
257
    case QUERY_NODE_SHOW_LICENCES_STMT:
×
258
      return "ShowGrantsStmt";
×
259
    case QUERY_NODE_SHOW_VGROUPS_STMT:
18✔
260
      return "ShowVgroupsStmt";
18✔
261
    case QUERY_NODE_SHOW_TOPICS_STMT:
×
262
      return "ShowTopicsStmt";
×
263
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
9✔
264
      return "ShowConsumersStmt";
9✔
265
    case QUERY_NODE_SHOW_QUERIES_STMT:
×
266
      return "ShowQueriesStmt";
×
267
    case QUERY_NODE_SHOW_VARIABLES_STMT:
27✔
268
      return "ShowVariablesStmt";
27✔
269
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
18✔
270
      return "ShowDnodeVariablesStmt";
18✔
271
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
9✔
272
      return "ShowTransactionsStmt";
9✔
273
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
9✔
274
      return "ShowSubscriptionsStmt";
9✔
275
    case QUERY_NODE_SHOW_VNODES_STMT:
18✔
276
      return "ShowVnodeStmt";
18✔
277
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
9✔
278
      return "ShowUserPrivilegesStmt";
9✔
279
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
27✔
280
      return "ShowCreateDatabasesStmt";
27✔
281
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
27✔
282
      return "ShowCreateTablesStmt";
27✔
283
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
27✔
284
      return "ShowCreateStablesStmt";
27✔
285
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
286
      return "ShowCreateViewStmt";
×
287
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
9✔
288
      return "ShowTableDistributedStmt";
9✔
289
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
27✔
290
      return "ShowLocalVariablesStmt";
27✔
291
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
27✔
292
      return "ShowTableTagsStmt";
27✔
293
    case QUERY_NODE_SHOW_COMPACTS_STMT:
×
294
      return "ShowCompactsStmt";
×
295
    case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT:
×
296
      return "ShowCompactDetailsStmt";
×
297
    case QUERY_NODE_SHOW_TRANSACTION_DETAILS_STMT:
×
298
      return "ShowTransactionDetailsStmt";
×
299
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
300
      return "ShowGrantsFullStmt";
×
301
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
302
      return "ShowGrantsLogsStmt";
×
303
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
304
      return "ShowClusterMachinesStmt";
×
305
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
306
      return "ShowEncryptionsStmt";
×
307
    case QUERY_NODE_SHOW_USAGE_STMT:
×
308
      return "ShowUsageStmt";
×
309
    case QUERY_NODE_DELETE_STMT:
129✔
310
      return "DeleteStmt";
129✔
311
    case QUERY_NODE_INSERT_STMT:
36✔
312
      return "InsertStmt";
36✔
313
    case QUERY_NODE_RESTORE_DNODE_STMT:
36✔
314
      return "RestoreDnodeStmt";
36✔
315
    case QUERY_NODE_RESTORE_QNODE_STMT:
36✔
316
      return "RestoreQnodeStmt";
36✔
317
    case QUERY_NODE_RESTORE_MNODE_STMT:
36✔
318
      return "RestoreMnodeStmt";
36✔
319
    case QUERY_NODE_RESTORE_VNODE_STMT:
36✔
320
      return "RestoreVnodeStmt";
36✔
321
    case QUERY_NODE_CREATE_VIEW_STMT:
×
322
      return "CreateViewStmt";
×
323
    case QUERY_NODE_DROP_VIEW_STMT:
×
324
      return "DropViewStmt";
×
325
    case QUERY_NODE_LOGIC_PLAN_SCAN:
10,613✔
326
      return "LogicScan";
10,613✔
327
    case QUERY_NODE_LOGIC_PLAN_JOIN:
294✔
328
      return "LogicJoin";
294✔
329
    case QUERY_NODE_LOGIC_PLAN_AGG:
2,904✔
330
      return "LogicAgg";
2,904✔
331
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
6,071✔
332
      return "LogicProject";
6,071✔
333
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
138✔
334
      return "LogicVnodeModify";
138✔
335
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
1,468✔
336
      return "LogicExchange";
1,468✔
337
    case QUERY_NODE_LOGIC_PLAN_MERGE:
297✔
338
      return "LogicMerge";
297✔
339
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
1,237✔
340
      return "LogicWindow";
1,237✔
341
    case QUERY_NODE_LOGIC_PLAN_FILL:
233✔
342
      return "LogicFill";
233✔
343
    case QUERY_NODE_LOGIC_PLAN_SORT:
828✔
344
      return "LogicSort";
828✔
345
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
531✔
346
      return "LogicPartition";
531✔
347
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
342✔
348
      return "LogicIndefRowsFunc";
342✔
349
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
82✔
350
      return "LogicInterpFunc";
82✔
351
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
352
      return "LogicForecastFunc";
×
353
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
354
      return "LogicGroupCache";
×
355
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
356
      return "LogicDynamicQueryCtrl";
×
357
    case QUERY_NODE_LOGIC_SUBPLAN:
11,660✔
358
      return "LogicSubplan";
11,660✔
359
    case QUERY_NODE_LOGIC_PLAN:
852✔
360
      return "LogicPlan";
852✔
361
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
21✔
362
      return "PhysiTagScan";
21✔
363
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
2,070✔
364
      return "PhysiTableScan";
2,070✔
365
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SEQ_SCAN:
×
366
      return "PhysiTableSeqScan";
×
367
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
204✔
368
      return "PhysiTableMergeScan";
204✔
369
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
37,271✔
370
      return "PhysiSreamScan";
37,271✔
371
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
3,923✔
372
      return "PhysiSystemTableScan";
3,923✔
373
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
18✔
374
      return "PhysiBlockDistScan";
18✔
375
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
48✔
376
      return "PhysiLastRowScan";
48✔
377
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
×
378
      return "PhysiTableCountScan";
×
379
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
12✔
380
      return "PhysiMergeEventWindow";
12✔
381
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
745✔
382
      return "PhysiStreamEventWindow";
745✔
383
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
×
384
      return "PhysiMergeCountWindow";
×
385
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
1,150✔
386
      return "PhysiStreamCountWindow";
1,150✔
387
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
388
      return "PhysiMergeAnomalyWindow";
×
389
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_ANOMALY:
×
390
      return "PhysiStreamAnomalyWindow";
×
391
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
22,677✔
392
      return "PhysiProject";
22,677✔
393
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
66✔
394
      return "PhysiMergeJoin";
66✔
395
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
396
      return "PhysiHashJoin";
×
397
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
1,233✔
398
      return "PhysiAgg";
1,233✔
399
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
2,266✔
400
      return "PhysiExchange";
2,266✔
401
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
210✔
402
      return "PhysiMerge";
210✔
403
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
222✔
404
      return "PhysiSort";
222✔
405
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
12✔
406
      return "PhysiGroupSort";
12✔
407
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
252✔
408
      return "PhysiHashInterval";
252✔
409
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
36✔
410
      return "PhysiMergeAlignedInterval";
36✔
411
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
11,472✔
412
      return "PhysiStreamInterval";
11,472✔
413
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
1,273✔
414
      return "PhysiStreamFinalInterval";
1,273✔
415
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
2,647✔
416
      return "PhysiStreamSemiInterval";
2,647✔
417
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
599✔
418
      return "PhysiStreamMidInterval";
599✔
419
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
2,044✔
420
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
421
      return "PhysiFill";
2,044✔
422
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
36✔
423
      return "PhysiSessionWindow";
36✔
424
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
2,340✔
425
      return "PhysiStreamSessionWindow";
2,340✔
426
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
463✔
427
      return "PhysiStreamSemiSessionWindow";
463✔
428
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
208✔
429
      return "PhysiStreamFinalSessionWindow";
208✔
430
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
36✔
431
      return "PhysiStateWindow";
36✔
432
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
1,322✔
433
      return "PhysiStreamStateWindow";
1,322✔
434
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
102✔
435
      return "PhysiPartition";
102✔
436
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
4,578✔
437
      return "PhysiStreamPartition";
4,578✔
438
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
60✔
439
      return "PhysiIndefRowsFunc";
60✔
440
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
24✔
441
      return "PhysiInterpFunc";
24✔
442
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
1,024✔
443
      return "PhysiStreamInterpFunc";
1,024✔
444
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
445
      return "PhysiForecastFunc";
×
446
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
8,232✔
447
      return "PhysiDispatch";
8,232✔
448
    case QUERY_NODE_PHYSICAL_PLAN_INSERT:
×
449
      return "PhysiInsert";
×
450
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
18✔
451
      return "PhysiQueryInsert";
18✔
452
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
36✔
453
      return "PhysiDelete";
36✔
454
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
455
      return "PhysiGroupCache";
×
456
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
457
      return "PhysiDynamicQueryCtrl";
×
458
    case QUERY_NODE_PHYSICAL_SUBPLAN:
45,555✔
459
      return "PhysiSubplan";
45,555✔
460
    case QUERY_NODE_PHYSICAL_PLAN:
7,987✔
461
      return "PhysiPlan";
7,987✔
462
    default:
×
463
      break;
×
464
  }
465
  nodesWarn("nodesNodeName unknown node = %d", type);
×
466
  return "UnknownNode";
90✔
467
}
468

469
static int32_t nodeListToJson(SJson* pJson, const char* pName, const SNodeList* pList) {
669,544✔
470
  if (LIST_LENGTH(pList) > 0) {
669,544!
471
    SJson* jList = tjsonAddArrayToObject(pJson, pName);
535,070✔
472
    if (NULL == jList) {
535,070!
473
      return terrno;
×
474
    }
475
    SNode* pNode;
476
    FOREACH(pNode, pList) {
2,652,642!
477
      int32_t code = tjsonAddItem(jList, nodeToJson, pNode);
2,117,570✔
478
      if (TSDB_CODE_SUCCESS != code) {
2,117,572!
479
        return code;
×
480
      }
481
    }
482
  }
483
  return TSDB_CODE_SUCCESS;
669,546✔
484
}
485

486
static int32_t jsonToNodeListImpl(const SJson* pJsonArray, SNodeList** pList) {
1,032,691✔
487
  int32_t size = (NULL == pJsonArray ? 0 : tjsonGetArraySize(pJsonArray));
1,032,691✔
488
  if (size > 0) {
1,032,635✔
489
    int32_t code = nodesMakeList(pList);
889,778✔
490
    if (NULL == *pList) {
889,873!
491
      return code;
×
492
    }
493
  }
494

495
  int32_t code = TSDB_CODE_SUCCESS;
1,032,730✔
496
  for (int32_t i = 0; i < size; ++i) {
3,891,225✔
497
    SJson* pJsonItem = tjsonGetArrayItem(pJsonArray, i);
2,858,374✔
498
    SNode* pNode = NULL;
2,856,498✔
499
    code = makeNodeByJson(pJsonItem, &pNode);
2,856,498✔
500
    if (TSDB_CODE_SUCCESS == code) {
2,854,604✔
501
      code = nodesListAppend(*pList, pNode);
2,854,595✔
502
    }
503
    if (TSDB_CODE_SUCCESS != code) {
2,858,495!
504
      break;
×
505
    }
506
  }
507
  return code;
1,032,851✔
508
}
509

510
static int32_t jsonToNodeList(const SJson* pJson, const char* pName, SNodeList** pList) {
1,032,053✔
511
  return jsonToNodeListImpl(tjsonGetObjectItem(pJson, pName), pList);
1,032,053✔
512
}
513

514
static const char* jkTableComInfoNumOfTags = "NumOfTags";
515
static const char* jkTableComInfoPrecision = "Precision";
516
static const char* jkTableComInfoNumOfColumns = "NumOfColumns";
517
static const char* jkTableComInfoRowSize = "RowSize";
518

519
static int32_t tableComInfoToJson(const void* pObj, SJson* pJson) {
2,954✔
520
  const STableComInfo* pNode = (const STableComInfo*)pObj;
2,954✔
521

522
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableComInfoNumOfTags, pNode->numOfTags);
2,954✔
523
  if (TSDB_CODE_SUCCESS == code) {
2,954!
524
    code = tjsonAddIntegerToObject(pJson, jkTableComInfoPrecision, pNode->precision);
2,954✔
525
  }
526
  if (TSDB_CODE_SUCCESS == code) {
2,954!
527
    code = tjsonAddIntegerToObject(pJson, jkTableComInfoNumOfColumns, pNode->numOfColumns);
2,954✔
528
  }
529
  if (TSDB_CODE_SUCCESS == code) {
2,954!
530
    code = tjsonAddIntegerToObject(pJson, jkTableComInfoRowSize, pNode->rowSize);
2,954✔
531
  }
532

533
  return code;
2,954✔
534
}
535

536
static int32_t jsonToTableComInfo(const SJson* pJson, void* pObj) {
6,812✔
537
  STableComInfo* pNode = (STableComInfo*)pObj;
6,812✔
538

539
  int32_t code;
540
  tjsonGetNumberValue(pJson, jkTableComInfoNumOfTags, pNode->numOfTags, code);
6,812✔
541
  if (TSDB_CODE_SUCCESS == code) {
6,812!
542
    tjsonGetNumberValue(pJson, jkTableComInfoPrecision, pNode->precision, code);
6,812✔
543
  }
544
  if (TSDB_CODE_SUCCESS == code) {
6,812!
545
    tjsonGetNumberValue(pJson, jkTableComInfoNumOfColumns, pNode->numOfColumns, code);
6,812✔
546
  }
547
  if (TSDB_CODE_SUCCESS == code) {
6,812!
548
    tjsonGetNumberValue(pJson, jkTableComInfoRowSize, pNode->rowSize, code);
6,812✔
549
  }
550

551
  return code;
6,812✔
552
}
553

554
static const char* jkSchemaType = "Type";
555
static const char* jkSchemaColId = "ColId";
556
static const char* jkSchemaBytes = "bytes";
557
static const char* jkSchemaName = "Name";
558
static const char* jkSchemaFlags = "Flags";
559

560
static int32_t schemaToJson(const void* pObj, SJson* pJson) {
58,752✔
561
  const SSchema* pNode = (const SSchema*)pObj;
58,752✔
562

563
  int32_t code = tjsonAddIntegerToObject(pJson, jkSchemaType, pNode->type);
58,752✔
564
  if (TSDB_CODE_SUCCESS == code) {
58,752!
565
    code = tjsonAddIntegerToObject(pJson, jkSchemaColId, pNode->colId);
58,752✔
566
  }
567
  if (TSDB_CODE_SUCCESS == code) {
58,752!
568
    code = tjsonAddIntegerToObject(pJson, jkSchemaBytes, pNode->bytes);
58,752✔
569
  }
570
  if (TSDB_CODE_SUCCESS == code) {
58,752!
571
    code = tjsonAddStringToObject(pJson, jkSchemaName, pNode->name);
58,752✔
572
  }
573
  if (TSDB_CODE_SUCCESS == code) {
58,752!
574
    code = tjsonAddIntegerToObject(pJson, jkSchemaFlags, pNode->flags);
58,752✔
575
  }
576

577
  return code;
58,752✔
578
}
579

580
static int32_t jsonToSchema(const SJson* pJson, void* pObj) {
454,865✔
581
  SSchema* pNode = (SSchema*)pObj;
454,865✔
582

583
  int32_t code;
584
  tjsonGetNumberValue(pJson, jkSchemaType, pNode->type, code);
454,865✔
585
  if (TSDB_CODE_SUCCESS == code) {
454,864✔
586
    tjsonGetNumberValue(pJson, jkSchemaColId, pNode->colId, code);
454,855✔
587
  }
588
  if (TSDB_CODE_SUCCESS == code) {
454,866✔
589
    tjsonGetNumberValue(pJson, jkSchemaBytes, pNode->bytes, code);
454,857✔
590
  }
591
  if (TSDB_CODE_SUCCESS == code) {
454,868✔
592
    code = tjsonGetStringValue(pJson, jkSchemaName, pNode->name);
454,859✔
593
  }
594
  if (TSDB_CODE_SUCCESS == code) {
454,863!
595
    tjsonGetNumberValue(pJson, jkSchemaFlags, pNode->flags, code);
454,863✔
596
  }
597

598
  return code;
454,865✔
599
}
600

601
static const char* jkTableMetaVgId = "VgId";
602
static const char* jkTableMetaTableType = "TableType";
603
static const char* jkTableMetaUid = "Uid";
604
static const char* jkTableMetaSuid = "Suid";
605
static const char* jkTableMetaSversion = "Sversion";
606
static const char* jkTableMetaTversion = "Tversion";
607
static const char* jkTableMetaComInfo = "ComInfo";
608
static const char* jkTableMetaColSchemas = "ColSchemas";
609

610
static int32_t tableMetaToJson(const void* pObj, SJson* pJson) {
2,954✔
611
  const STableMeta* pNode = (const STableMeta*)pObj;
2,954✔
612

613
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableMetaVgId, pNode->vgId);
2,954✔
614
  if (TSDB_CODE_SUCCESS == code) {
2,954!
615
    code = tjsonAddIntegerToObject(pJson, jkTableMetaTableType, pNode->tableType);
2,954✔
616
  }
617
  if (TSDB_CODE_SUCCESS == code) {
2,954!
618
    code = tjsonAddIntegerToObject(pJson, jkTableMetaUid, pNode->uid);
2,954✔
619
  }
620
  if (TSDB_CODE_SUCCESS == code) {
2,954!
621
    code = tjsonAddIntegerToObject(pJson, jkTableMetaSuid, pNode->suid);
2,954✔
622
  }
623
  if (TSDB_CODE_SUCCESS == code) {
2,954!
624
    code = tjsonAddIntegerToObject(pJson, jkTableMetaSversion, pNode->sversion);
2,954✔
625
  }
626
  if (TSDB_CODE_SUCCESS == code) {
2,954!
627
    code = tjsonAddIntegerToObject(pJson, jkTableMetaTversion, pNode->tversion);
2,954✔
628
  }
629
  if (TSDB_CODE_SUCCESS == code) {
2,954!
630
    code = tjsonAddObject(pJson, jkTableMetaComInfo, tableComInfoToJson, &pNode->tableInfo);
2,954✔
631
  }
632
  if (TSDB_CODE_SUCCESS == code) {
2,954!
633
    code = tjsonAddArray(pJson, jkTableMetaColSchemas, schemaToJson, pNode->schema, sizeof(SSchema),
2,954✔
634
                         TABLE_TOTAL_COL_NUM(pNode));
2,954✔
635
  }
636

637
  return code;
2,954✔
638
}
639

640
static int32_t jsonToTableMeta(const SJson* pJson, void* pObj) {
6,812✔
641
  STableMeta* pNode = (STableMeta*)pObj;
6,812✔
642

643
  int32_t code;
644
  tjsonGetNumberValue(pJson, jkTableMetaVgId, pNode->vgId, code);
6,812✔
645
  if (TSDB_CODE_SUCCESS == code) {
6,812!
646
    tjsonGetNumberValue(pJson, jkTableMetaTableType, pNode->tableType, code);
6,812✔
647
  }
648
  if (TSDB_CODE_SUCCESS == code) {
6,812!
649
    tjsonGetNumberValue(pJson, jkTableMetaUid, pNode->uid, code);
6,812✔
650
  }
651
  if (TSDB_CODE_SUCCESS == code) {
6,812!
652
    tjsonGetNumberValue(pJson, jkTableMetaSuid, pNode->suid, code);
6,812✔
653
  }
654
  if (TSDB_CODE_SUCCESS == code) {
6,812!
655
    tjsonGetNumberValue(pJson, jkTableMetaSversion, pNode->sversion, code);
6,812✔
656
  }
657
  if (TSDB_CODE_SUCCESS == code) {
6,812!
658
    tjsonGetNumberValue(pJson, jkTableMetaTversion, pNode->tversion, code);
6,812✔
659
  }
660
  if (TSDB_CODE_SUCCESS == code) {
6,812!
661
    code = tjsonToObject(pJson, jkTableMetaComInfo, jsonToTableComInfo, &pNode->tableInfo);
6,812✔
662
  }
663
  if (TSDB_CODE_SUCCESS == code) {
6,812!
664
    code = tjsonToArray(pJson, jkTableMetaColSchemas, jsonToSchema, pNode->schema, sizeof(SSchema));
6,812✔
665
  }
666

667
  return code;
6,812✔
668
}
669

670
static const char* jkLogicPlanTargets = "Targets";
671
static const char* jkLogicPlanConditions = "Conditions";
672
static const char* jkLogicPlanChildren = "Children";
673
static const char* jkLogicPlanLimit = "Limit";
674
static const char* jkLogicPlanSlimit = "SLimit";
675
static const char* jkLogicPlanRequireDataOrder = "RequireDataOrder";
676
static const char* jkLogicPlanResultDataOrder = "ResultDataOrder";
677
static const char* jkLogicPlanGroupAction = "GroupAction";
678

679
static int32_t logicPlanNodeToJson(const void* pObj, SJson* pJson) {
10,729✔
680
  const SLogicNode* pNode = (const SLogicNode*)pObj;
10,729✔
681

682
  int32_t code = nodeListToJson(pJson, jkLogicPlanTargets, pNode->pTargets);
10,729✔
683
  if (TSDB_CODE_SUCCESS == code) {
10,729!
684
    code = tjsonAddObject(pJson, jkLogicPlanConditions, nodeToJson, pNode->pConditions);
10,729✔
685
  }
686
  if (TSDB_CODE_SUCCESS == code) {
10,729!
687
    code = nodeListToJson(pJson, jkLogicPlanChildren, pNode->pChildren);
10,729✔
688
  }
689
  if (TSDB_CODE_SUCCESS == code) {
10,729!
690
    code = tjsonAddObject(pJson, jkLogicPlanLimit, nodeToJson, pNode->pLimit);
10,729✔
691
  }
692
  if (TSDB_CODE_SUCCESS == code) {
10,729!
693
    code = tjsonAddObject(pJson, jkLogicPlanSlimit, nodeToJson, pNode->pSlimit);
10,729✔
694
  }
695
  if (TSDB_CODE_SUCCESS == code) {
10,729!
696
    code = tjsonAddIntegerToObject(pJson, jkLogicPlanRequireDataOrder, pNode->requireDataOrder);
10,729✔
697
  }
698
  if (TSDB_CODE_SUCCESS == code) {
10,729!
699
    code = tjsonAddIntegerToObject(pJson, jkLogicPlanResultDataOrder, pNode->resultDataOrder);
10,729✔
700
  }
701
  if (TSDB_CODE_SUCCESS == code) {
10,729!
702
    code = tjsonAddIntegerToObject(pJson, jkLogicPlanGroupAction, pNode->groupAction);
10,729✔
703
  }
704

705
  return code;
10,729✔
706
}
707

708
static int32_t jsonToLogicPlanNode(const SJson* pJson, void* pObj) {
3,580✔
709
  SLogicNode* pNode = (SLogicNode*)pObj;
3,580✔
710

711
  int32_t code = jsonToNodeList(pJson, jkLogicPlanTargets, &pNode->pTargets);
3,580✔
712
  if (TSDB_CODE_SUCCESS == code) {
3,580!
713
    code = jsonToNodeObject(pJson, jkLogicPlanConditions, &pNode->pConditions);
3,580✔
714
  }
715
  if (TSDB_CODE_SUCCESS == code) {
3,580!
716
    code = jsonToNodeList(pJson, jkLogicPlanChildren, &pNode->pChildren);
3,580✔
717
  }
718
  if (TSDB_CODE_SUCCESS == code) {
3,580!
719
    code = jsonToNodeObject(pJson, jkLogicPlanLimit, &pNode->pLimit);
3,580✔
720
  }
721
  if (TSDB_CODE_SUCCESS == code) {
3,580!
722
    code = jsonToNodeObject(pJson, jkLogicPlanSlimit, &pNode->pSlimit);
3,580✔
723
  }
724
  if (TSDB_CODE_SUCCESS == code) {
3,580!
725
    tjsonGetNumberValue(pJson, jkLogicPlanRequireDataOrder, pNode->requireDataOrder, code);
3,580✔
726
  }
727
  if (TSDB_CODE_SUCCESS == code) {
3,580!
728
    tjsonGetNumberValue(pJson, jkLogicPlanResultDataOrder, pNode->resultDataOrder, code);
3,580✔
729
  }
730
  if (TSDB_CODE_SUCCESS == code) {
3,580!
731
    tjsonGetNumberValue(pJson, jkLogicPlanGroupAction, pNode->groupAction, code);
3,580✔
732
  }
733

734
  return code;
3,580✔
735
}
736

737
static const char* jkScanLogicPlanScanCols = "ScanCols";
738
static const char* jkScanLogicPlanScanPseudoCols = "ScanPseudoCols";
739
static const char* jkScanLogicPlanTableType = "TableType";
740
static const char* jkScanLogicPlanTableId = "TableId";
741
static const char* jkScanLogicPlanStableId = "StableId";
742
static const char* jkScanLogicPlanScanType = "ScanType";
743
static const char* jkScanLogicPlanScanCount = "ScanCount";
744
static const char* jkScanLogicPlanReverseScanCount = "ReverseScanCount";
745
static const char* jkScanLogicPlanDynamicScanFuncs = "DynamicScanFuncs";
746
static const char* jkScanLogicPlanDataRequired = "DataRequired";
747
static const char* jkScanLogicPlanTagCond = "TagCond";
748
static const char* jkScanLogicPlanGroupTags = "GroupTags";
749
static const char* jkScanLogicPlanOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
750
static const char* jkScanLogicPlanFilesetDelimited = "FilesetDelimited";
751
static const char* jkScanLogicPlanParaTablesSort = "ParaTablesSort";
752
static const char* jkScanLogicPlanSmallDataTsSort = "SmallDataTsSort";
753

754
static int32_t logicScanNodeToJson(const void* pObj, SJson* pJson) {
4,620✔
755
  const SScanLogicNode* pNode = (const SScanLogicNode*)pObj;
4,620✔
756

757
  int32_t code = logicPlanNodeToJson(pObj, pJson);
4,620✔
758
  if (TSDB_CODE_SUCCESS == code) {
4,620!
759
    code = nodeListToJson(pJson, jkScanLogicPlanScanCols, pNode->pScanCols);
4,620✔
760
  }
761
  if (TSDB_CODE_SUCCESS == code) {
4,620!
762
    code = nodeListToJson(pJson, jkScanLogicPlanScanPseudoCols, pNode->pScanPseudoCols);
4,620✔
763
  }
764
  if (TSDB_CODE_SUCCESS == code) {
4,620!
765
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanTableType, pNode->tableType);
4,620✔
766
  }
767
  if (TSDB_CODE_SUCCESS == code) {
4,620!
768
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanTableId, pNode->tableId);
4,620✔
769
  }
770
  if (TSDB_CODE_SUCCESS == code) {
4,620!
771
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanStableId, pNode->stableId);
4,620✔
772
  }
773
  if (TSDB_CODE_SUCCESS == code) {
4,620!
774
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanScanType, pNode->scanType);
4,620✔
775
  }
776
  if (TSDB_CODE_SUCCESS == code) {
4,620!
777
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanScanCount, pNode->scanSeq[0]);
4,620✔
778
  }
779
  if (TSDB_CODE_SUCCESS == code) {
4,620!
780
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanReverseScanCount, pNode->scanSeq[1]);
4,620✔
781
  }
782
  if (TSDB_CODE_SUCCESS == code) {
4,620!
783
    code = tjsonAddObject(pJson, jkScanLogicPlanDynamicScanFuncs, nodeToJson, pNode->pDynamicScanFuncs);
4,620✔
784
  }
785
  if (TSDB_CODE_SUCCESS == code) {
4,620!
786
    code = tjsonAddIntegerToObject(pJson, jkScanLogicPlanDataRequired, pNode->dataRequired);
4,620✔
787
  }
788
  if (TSDB_CODE_SUCCESS == code) {
4,620!
789
    code = tjsonAddObject(pJson, jkScanLogicPlanTagCond, nodeToJson, pNode->pTagCond);
4,620✔
790
  }
791
  if (TSDB_CODE_SUCCESS == code) {
4,620!
792
    code = nodeListToJson(pJson, jkScanLogicPlanGroupTags, pNode->pGroupTags);
4,620✔
793
  }
794
  if (TSDB_CODE_SUCCESS == code) {
4,620!
795
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanOnlyMetaCtbIdx, pNode->onlyMetaCtbIdx);
4,620✔
796
  }
797
  if (TSDB_CODE_SUCCESS == code) {
4,620!
798
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanFilesetDelimited, pNode->filesetDelimited);
4,620✔
799
  }
800
  if (TSDB_CODE_SUCCESS == code) {
4,620!
801
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanParaTablesSort, pNode->paraTablesSort);
4,620✔
802
  }
803
  if (TSDB_CODE_SUCCESS == code) {
4,620!
804
    code = tjsonAddBoolToObject(pJson, jkScanLogicPlanSmallDataTsSort, pNode->paraTablesSort);
4,620✔
805
  }
806
  return code;
4,620✔
807
}
808

809
static int32_t jsonToLogicScanNode(const SJson* pJson, void* pObj) {
1,373✔
810
  SScanLogicNode* pNode = (SScanLogicNode*)pObj;
1,373✔
811

812
  int32_t objSize = 0;
1,373✔
813
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
1,373✔
814
  if (TSDB_CODE_SUCCESS == code) {
1,373!
815
    code = jsonToNodeList(pJson, jkScanLogicPlanScanCols, &pNode->pScanCols);
1,373✔
816
  }
817
  if (TSDB_CODE_SUCCESS == code) {
1,373!
818
    code = jsonToNodeList(pJson, jkScanLogicPlanScanPseudoCols, &pNode->pScanPseudoCols);
1,373✔
819
  }
820
  if (TSDB_CODE_SUCCESS == code) {
1,373!
821
    code = tjsonGetTinyIntValue(pJson, jkScanLogicPlanTableType, &pNode->tableType);
1,373✔
822
  }
823
  if (TSDB_CODE_SUCCESS == code) {
1,373!
824
    code = tjsonGetUBigIntValue(pJson, jkScanLogicPlanTableId, &pNode->tableId);
1,373✔
825
  }
826
  if (TSDB_CODE_SUCCESS == code) {
1,373!
827
    code = tjsonGetUBigIntValue(pJson, jkScanLogicPlanStableId, &pNode->stableId);
1,373✔
828
  }
829
  if (TSDB_CODE_SUCCESS == code) {
1,373!
830
    tjsonGetNumberValue(pJson, jkScanLogicPlanScanType, pNode->scanType, code);
1,373✔
831
  }
832
  if (TSDB_CODE_SUCCESS == code) {
1,373!
833
    code = tjsonGetUTinyIntValue(pJson, jkScanLogicPlanScanCount, &pNode->scanSeq[0]);
1,373✔
834
  }
835
  if (TSDB_CODE_SUCCESS == code) {
1,373!
836
    code = tjsonGetUTinyIntValue(pJson, jkScanLogicPlanReverseScanCount, &pNode->scanSeq[1]);
1,373✔
837
  }
838
  if (TSDB_CODE_SUCCESS == code) {
1,373!
839
    code = jsonToNodeList(pJson, jkScanLogicPlanDynamicScanFuncs, &pNode->pDynamicScanFuncs);
1,373✔
840
  }
841
  if (TSDB_CODE_SUCCESS == code) {
1,373!
842
    code = tjsonGetIntValue(pJson, jkScanLogicPlanDataRequired, &pNode->dataRequired);
1,373✔
843
  }
844
  if (TSDB_CODE_SUCCESS == code) {
1,373!
845
    code = jsonToNodeObject(pJson, jkScanLogicPlanTagCond, &pNode->pTagCond);
1,373✔
846
  }
847
  if (TSDB_CODE_SUCCESS == code) {
1,373!
848
    code = jsonToNodeList(pJson, jkScanLogicPlanGroupTags, &pNode->pGroupTags);
1,373✔
849
  }
850
  if (TSDB_CODE_SUCCESS == code) {
1,373!
851
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanOnlyMetaCtbIdx, &pNode->onlyMetaCtbIdx);
1,373✔
852
  }
853
  if (TSDB_CODE_SUCCESS == code) {
1,373!
854
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanFilesetDelimited, &pNode->filesetDelimited);
1,373✔
855
  }
856
  if (TSDB_CODE_SUCCESS == code) {
1,373!
857
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanParaTablesSort, &pNode->smallDataTsSort);
1,373✔
858
  }
859
  if (TSDB_CODE_SUCCESS == code) {
1,373!
860
    code = tjsonGetBoolValue(pJson, jkScanLogicPlanSmallDataTsSort, &pNode->smallDataTsSort);
1,373✔
861
  }
862
  return code;
1,373✔
863
}
864

865
static const char* jkProjectLogicPlanProjections = "Projections";
866
static const char* jkProjectLogicPlanIgnoreGroupId = "IgnoreGroupId";
867
static const char* jkProjectLogicPlanInputIgnoreGroup = "InputIgnoreGroup";
868

869
static int32_t logicProjectNodeToJson(const void* pObj, SJson* pJson) {
2,674✔
870
  const SProjectLogicNode* pNode = (const SProjectLogicNode*)pObj;
2,674✔
871

872
  int32_t code = logicPlanNodeToJson(pObj, pJson);
2,674✔
873
  if (TSDB_CODE_SUCCESS == code) {
2,674!
874
    code = nodeListToJson(pJson, jkProjectLogicPlanProjections, pNode->pProjections);
2,674✔
875
  }
876
  if (TSDB_CODE_SUCCESS == code) {
2,674!
877
    code = tjsonAddBoolToObject(pJson, jkProjectLogicPlanIgnoreGroupId, pNode->ignoreGroupId);
2,674✔
878
  }
879
  if (TSDB_CODE_SUCCESS == code) {
2,674!
880
    code = tjsonAddBoolToObject(pJson, jkProjectLogicPlanInputIgnoreGroup, pNode->inputIgnoreGroup);
2,674✔
881
  }
882

883
  return code;
2,674✔
884
}
885

886
static int32_t jsonToLogicProjectNode(const SJson* pJson, void* pObj) {
723✔
887
  SProjectLogicNode* pNode = (SProjectLogicNode*)pObj;
723✔
888

889
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
723✔
890
  if (TSDB_CODE_SUCCESS == code) {
723!
891
    code = jsonToNodeList(pJson, jkProjectLogicPlanProjections, &pNode->pProjections);
723✔
892
  }
893
  if (TSDB_CODE_SUCCESS == code) {
723!
894
    code = tjsonGetBoolValue(pJson, jkProjectLogicPlanIgnoreGroupId, &pNode->ignoreGroupId);
723✔
895
  }
896
  if (TSDB_CODE_SUCCESS == code) {
723!
897
    code = tjsonGetBoolValue(pJson, jkProjectLogicPlanInputIgnoreGroup, &pNode->inputIgnoreGroup);
723✔
898
  }
899
  return code;
723✔
900
}
901

902
static const char* jkVnodeModifyLogicPlanModifyType = "ModifyType";
903
static const char* jkVnodeModifyLogicPlanMsgType = "MsgType";
904
static const char* jkVnodeModifyLogicPlanAffectedRows = "AffectedRows";
905

906
static int32_t logicVnodeModifyNodeToJson(const void* pObj, SJson* pJson) {
55✔
907
  const SVnodeModifyLogicNode* pNode = (const SVnodeModifyLogicNode*)pObj;
55✔
908

909
  int32_t code = logicPlanNodeToJson(pObj, pJson);
55✔
910
  if (TSDB_CODE_SUCCESS == code) {
55!
911
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyLogicPlanModifyType, pNode->modifyType);
55✔
912
  }
913
  if (TSDB_CODE_SUCCESS == code) {
55!
914
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyLogicPlanMsgType, pNode->msgType);
55✔
915
  }
916
  if (TSDB_CODE_SUCCESS == code) {
55!
917
    code = tjsonAddObject(pJson, jkVnodeModifyLogicPlanAffectedRows, nodeToJson, pNode->pAffectedRows);
55✔
918
  }
919

920
  return code;
55✔
921
}
922

923
static int32_t jsonToLogicVnodeModifyNode(const SJson* pJson, void* pObj) {
28✔
924
  SVnodeModifyLogicNode* pNode = (SVnodeModifyLogicNode*)pObj;
28✔
925

926
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
28✔
927
  if (TSDB_CODE_SUCCESS == code) {
28!
928
    tjsonGetNumberValue(pJson, jkVnodeModifyLogicPlanModifyType, pNode->modifyType, code);
28✔
929
  }
930
  if (TSDB_CODE_SUCCESS == code) {
28!
931
    code = tjsonGetIntValue(pJson, jkVnodeModifyLogicPlanMsgType, &pNode->msgType);
28✔
932
  }
933
  if (TSDB_CODE_SUCCESS == code) {
28!
934
    code = jsonToNodeObject(pJson, jkVnodeModifyLogicPlanAffectedRows, &pNode->pAffectedRows);
28✔
935
  }
936

937
  return code;
28✔
938
}
939

940
static const char* jkExchangeLogicPlanSrcStartGroupId = "SrcStartGroupId";
941
static const char* jkExchangeLogicPlanSrcEndGroupId = "SrcEndGroupId";
942

943
static int32_t logicExchangeNodeToJson(const void* pObj, SJson* pJson) {
633✔
944
  const SExchangeLogicNode* pNode = (const SExchangeLogicNode*)pObj;
633✔
945

946
  int32_t code = logicPlanNodeToJson(pObj, pJson);
633✔
947
  if (TSDB_CODE_SUCCESS == code) {
633!
948
    code = tjsonAddIntegerToObject(pJson, jkExchangeLogicPlanSrcStartGroupId, pNode->srcStartGroupId);
633✔
949
  }
950
  if (TSDB_CODE_SUCCESS == code) {
633!
951
    code = tjsonAddIntegerToObject(pJson, jkExchangeLogicPlanSrcEndGroupId, pNode->srcEndGroupId);
633✔
952
  }
953

954
  return code;
633✔
955
}
956

957
static int32_t jsonToLogicExchangeNode(const SJson* pJson, void* pObj) {
202✔
958
  SExchangeLogicNode* pNode = (SExchangeLogicNode*)pObj;
202✔
959

960
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
202✔
961
  if (TSDB_CODE_SUCCESS == code) {
202!
962
    code = tjsonGetIntValue(pJson, jkExchangeLogicPlanSrcStartGroupId, &pNode->srcStartGroupId);
202✔
963
  }
964
  if (TSDB_CODE_SUCCESS == code) {
202!
965
    code = tjsonGetIntValue(pJson, jkExchangeLogicPlanSrcEndGroupId, &pNode->srcEndGroupId);
202✔
966
  }
967

968
  return code;
202✔
969
}
970

971
static const char* jkMergeLogicPlanMergeKeys = "MergeKeys";
972
static const char* jkMergeLogicPlanInputs = "Inputs";
973
static const char* jkMergeLogicPlanNumOfChannels = "NumOfChannels";
974
static const char* jkMergeLogicPlanSrcGroupId = "SrcGroupId";
975

976
static int32_t logicMergeNodeToJson(const void* pObj, SJson* pJson) {
113✔
977
  const SMergeLogicNode* pNode = (const SMergeLogicNode*)pObj;
113✔
978

979
  int32_t code = logicPlanNodeToJson(pObj, pJson);
113✔
980
  if (TSDB_CODE_SUCCESS == code) {
113!
981
    code = nodeListToJson(pJson, jkMergeLogicPlanMergeKeys, pNode->pMergeKeys);
113✔
982
  }
983
  if (TSDB_CODE_SUCCESS == code) {
113!
984
    code = nodeListToJson(pJson, jkMergeLogicPlanInputs, pNode->pInputs);
113✔
985
  }
986
  if (TSDB_CODE_SUCCESS == code) {
113!
987
    code = tjsonAddIntegerToObject(pJson, jkMergeLogicPlanNumOfChannels, pNode->numOfChannels);
113✔
988
  }
989
  if (TSDB_CODE_SUCCESS == code) {
113!
990
    code = tjsonAddIntegerToObject(pJson, jkMergeLogicPlanSrcGroupId, pNode->srcGroupId);
113✔
991
  }
992

993
  return code;
113✔
994
}
995

996
static int32_t jsonToLogicMergeNode(const SJson* pJson, void* pObj) {
71✔
997
  SMergeLogicNode* pNode = (SMergeLogicNode*)pObj;
71✔
998

999
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
71✔
1000
  if (TSDB_CODE_SUCCESS == code) {
71!
1001
    code = jsonToNodeList(pJson, jkMergeLogicPlanMergeKeys, &pNode->pMergeKeys);
71✔
1002
  }
1003
  if (TSDB_CODE_SUCCESS == code) {
71!
1004
    code = jsonToNodeList(pJson, jkMergeLogicPlanInputs, &pNode->pInputs);
71✔
1005
  }
1006
  if (TSDB_CODE_SUCCESS == code) {
71!
1007
    code = tjsonGetIntValue(pJson, jkMergeLogicPlanNumOfChannels, &pNode->numOfChannels);
71✔
1008
  }
1009
  if (TSDB_CODE_SUCCESS == code) {
71!
1010
    code = tjsonGetIntValue(pJson, jkMergeLogicPlanSrcGroupId, &pNode->srcGroupId);
71✔
1011
  }
1012

1013
  return code;
71✔
1014
}
1015

1016
static const char* jkWindowLogicPlanWinType = "WinType";
1017
static const char* jkWindowLogicPlanFuncs = "Funcs";
1018
static const char* jkWindowLogicPlanInterval = "Interval";
1019
static const char* jkWindowLogicPlanOffset = "Offset";
1020
static const char* jkWindowLogicPlanSliding = "Sliding";
1021
static const char* jkWindowLogicPlanIntervalUnit = "IntervalUnit";
1022
static const char* jkWindowLogicPlanSlidingUnit = "SlidingUnit";
1023
static const char* jkWindowLogicPlanStartTime = "StartTime";
1024
static const char* jkWindowLogicPlanEndTime = "EndTime";
1025
static const char* jkWindowLogicPlanSessionGap = "SessionGap";
1026
static const char* jkWindowLogicPlanTspk = "Tspk";
1027
static const char* jkWindowLogicPlanStateExpr = "StateExpr";
1028
static const char* jkWindowLogicPlanTriggerType = "TriggerType";
1029
static const char* jkWindowLogicPlanWatermark = "Watermark";
1030
static const char* jkWindowLogicPlanDeleteMark = "DeleteMark";
1031

1032
static int32_t logicWindowNodeToJson(const void* pObj, SJson* pJson) {
500✔
1033
  const SWindowLogicNode* pNode = (const SWindowLogicNode*)pObj;
500✔
1034

1035
  int32_t code = logicPlanNodeToJson(pObj, pJson);
500✔
1036
  if (TSDB_CODE_SUCCESS == code) {
500!
1037
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanWinType, pNode->winType);
500✔
1038
  }
1039
  if (TSDB_CODE_SUCCESS == code) {
500!
1040
    code = nodeListToJson(pJson, jkWindowLogicPlanFuncs, pNode->pFuncs);
500✔
1041
  }
1042
  if (TSDB_CODE_SUCCESS == code) {
500!
1043
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanInterval, pNode->interval);
500✔
1044
  }
1045
  if (TSDB_CODE_SUCCESS == code) {
500!
1046
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanOffset, pNode->offset);
500✔
1047
  }
1048
  if (TSDB_CODE_SUCCESS == code) {
500!
1049
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanSliding, pNode->sliding);
500✔
1050
  }
1051
  if (TSDB_CODE_SUCCESS == code) {
500!
1052
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanIntervalUnit, pNode->intervalUnit);
500✔
1053
  }
1054
  if (TSDB_CODE_SUCCESS == code) {
500!
1055
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanSlidingUnit, pNode->slidingUnit);
500✔
1056
  }
1057
  if (TSDB_CODE_SUCCESS == code) {
500!
1058
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanStartTime, pNode->timeRange.skey);
500✔
1059
  }
1060
  if (TSDB_CODE_SUCCESS == code) {
500!
1061
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanEndTime, pNode->timeRange.ekey);
500✔
1062
  }
1063
  if (TSDB_CODE_SUCCESS == code) {
500!
1064
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanSessionGap, pNode->sessionGap);
500✔
1065
  }
1066
  if (TSDB_CODE_SUCCESS == code) {
500!
1067
    code = tjsonAddObject(pJson, jkWindowLogicPlanTspk, nodeToJson, pNode->pTspk);
500✔
1068
  }
1069
  if (TSDB_CODE_SUCCESS == code) {
500!
1070
    code = tjsonAddObject(pJson, jkWindowLogicPlanStateExpr, nodeToJson, pNode->pStateExpr);
500✔
1071
  }
1072
  if (TSDB_CODE_SUCCESS == code) {
500!
1073
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanTriggerType, pNode->triggerType);
500✔
1074
  }
1075
  if (TSDB_CODE_SUCCESS == code) {
500!
1076
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanWatermark, pNode->watermark);
500✔
1077
  }
1078
  if (TSDB_CODE_SUCCESS == code) {
500!
1079
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanDeleteMark, pNode->deleteMark);
500✔
1080
  }
1081

1082
  return code;
500✔
1083
}
1084

1085
static int32_t jsonToLogicWindowNode(const SJson* pJson, void* pObj) {
237✔
1086
  SWindowLogicNode* pNode = (SWindowLogicNode*)pObj;
237✔
1087

1088
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
237✔
1089
  if (TSDB_CODE_SUCCESS == code) {
237!
1090
    tjsonGetNumberValue(pJson, jkWindowLogicPlanWinType, pNode->winType, code);
237✔
1091
  }
1092
  if (TSDB_CODE_SUCCESS == code) {
237!
1093
    code = jsonToNodeList(pJson, jkWindowLogicPlanFuncs, &pNode->pFuncs);
237✔
1094
  }
1095
  if (TSDB_CODE_SUCCESS == code) {
237!
1096
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanInterval, &pNode->interval);
237✔
1097
  }
1098
  if (TSDB_CODE_SUCCESS == code) {
237!
1099
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanOffset, &pNode->offset);
237✔
1100
  }
1101
  if (TSDB_CODE_SUCCESS == code) {
237!
1102
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanSliding, &pNode->sliding);
237✔
1103
  }
1104
  if (TSDB_CODE_SUCCESS == code) {
237!
1105
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanIntervalUnit, &pNode->intervalUnit);
237✔
1106
  }
1107
  if (TSDB_CODE_SUCCESS == code) {
237!
1108
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanSlidingUnit, &pNode->slidingUnit);
237✔
1109
  }
1110
  if (TSDB_CODE_SUCCESS == code) {
237!
1111
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanStartTime, &pNode->timeRange.skey);
237✔
1112
  }
1113
  if (TSDB_CODE_SUCCESS == code) {
237!
1114
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanEndTime, &pNode->timeRange.ekey);
237✔
1115
  }
1116
  if (TSDB_CODE_SUCCESS == code) {
237!
1117
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanSessionGap, &pNode->sessionGap);
237✔
1118
  }
1119
  if (TSDB_CODE_SUCCESS == code) {
237!
1120
    code = jsonToNodeObject(pJson, jkWindowLogicPlanTspk, &pNode->pTspk);
237✔
1121
  }
1122
  if (TSDB_CODE_SUCCESS == code) {
237!
1123
    code = jsonToNodeObject(pJson, jkWindowLogicPlanStateExpr, &pNode->pStateExpr);
237✔
1124
  }
1125
  if (TSDB_CODE_SUCCESS == code) {
237!
1126
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanTriggerType, &pNode->triggerType);
237✔
1127
  }
1128
  if (TSDB_CODE_SUCCESS == code) {
237!
1129
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanWatermark, &pNode->watermark);
237✔
1130
  }
1131
  if (TSDB_CODE_SUCCESS == code) {
237!
1132
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanDeleteMark, &pNode->deleteMark);
237✔
1133
  }
1134

1135
  return code;
237✔
1136
}
1137

1138
static const char* jkFillLogicPlanMode = "Mode";
1139
static const char* jkFillLogicPlanWStartTs = "WStartTs";
1140
static const char* jkFillLogicPlanValues = "Values";
1141
static const char* jkFillLogicPlanStartTime = "StartTime";
1142
static const char* jkFillLogicPlanEndTime = "EndTime";
1143

1144
static int32_t logicFillNodeToJson(const void* pObj, SJson* pJson) {
96✔
1145
  const SFillLogicNode* pNode = (const SFillLogicNode*)pObj;
96✔
1146

1147
  int32_t code = logicPlanNodeToJson(pObj, pJson);
96✔
1148
  if (TSDB_CODE_SUCCESS == code) {
96!
1149
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanMode, pNode->mode);
96✔
1150
  }
1151
  if (TSDB_CODE_SUCCESS == code) {
96!
1152
    code = tjsonAddObject(pJson, jkFillLogicPlanWStartTs, nodeToJson, pNode->pWStartTs);
96✔
1153
  }
1154
  if (TSDB_CODE_SUCCESS == code) {
96!
1155
    code = tjsonAddObject(pJson, jkFillLogicPlanValues, nodeToJson, pNode->pValues);
96✔
1156
  }
1157
  if (TSDB_CODE_SUCCESS == code) {
96!
1158
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanStartTime, pNode->timeRange.skey);
96✔
1159
  }
1160
  if (TSDB_CODE_SUCCESS == code) {
96!
1161
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanEndTime, pNode->timeRange.ekey);
96✔
1162
  }
1163

1164
  return code;
96✔
1165
}
1166

1167
static int32_t jsonToLogicFillNode(const SJson* pJson, void* pObj) {
41✔
1168
  SFillLogicNode* pNode = (SFillLogicNode*)pObj;
41✔
1169

1170
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
41✔
1171
  if (TSDB_CODE_SUCCESS == code) {
41!
1172
    tjsonGetNumberValue(pJson, jkFillLogicPlanMode, pNode->mode, code);
41✔
1173
  }
1174
  if (TSDB_CODE_SUCCESS == code) {
41!
1175
    code = jsonToNodeObject(pJson, jkFillLogicPlanWStartTs, &pNode->pWStartTs);
41✔
1176
  }
1177
  if (TSDB_CODE_SUCCESS == code) {
41!
1178
    code = jsonToNodeObject(pJson, jkFillLogicPlanValues, &pNode->pValues);
41✔
1179
  }
1180
  if (TSDB_CODE_SUCCESS == code) {
41!
1181
    code = tjsonGetBigIntValue(pJson, jkFillLogicPlanStartTime, &pNode->timeRange.skey);
41✔
1182
  }
1183
  if (TSDB_CODE_SUCCESS == code) {
41!
1184
    code = tjsonGetBigIntValue(pJson, jkFillLogicPlanEndTime, &pNode->timeRange.ekey);
41✔
1185
  }
1186

1187
  return code;
41✔
1188
}
1189

1190
static const char* jkSortLogicPlanSortKeys = "SortKeys";
1191

1192
static int32_t logicSortNodeToJson(const void* pObj, SJson* pJson) {
342✔
1193
  const SSortLogicNode* pNode = (const SSortLogicNode*)pObj;
342✔
1194

1195
  int32_t code = logicPlanNodeToJson(pObj, pJson);
342✔
1196
  if (TSDB_CODE_SUCCESS == code) {
342!
1197
    code = nodeListToJson(pJson, jkSortLogicPlanSortKeys, pNode->pSortKeys);
342✔
1198
  }
1199

1200
  return code;
342✔
1201
}
1202

1203
static int32_t jsonToLogicSortNode(const SJson* pJson, void* pObj) {
144✔
1204
  SSortLogicNode* pNode = (SSortLogicNode*)pObj;
144✔
1205

1206
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
144✔
1207
  if (TSDB_CODE_SUCCESS == code) {
144!
1208
    code = jsonToNodeList(pJson, jkSortLogicPlanSortKeys, &pNode->pSortKeys);
144✔
1209
  }
1210

1211
  return code;
144✔
1212
}
1213

1214
static const char* jkPartitionLogicPlanPartitionKeys = "PartitionKeys";
1215

1216
static int32_t logicPartitionNodeToJson(const void* pObj, SJson* pJson) {
221✔
1217
  const SPartitionLogicNode* pNode = (const SPartitionLogicNode*)pObj;
221✔
1218

1219
  int32_t code = logicPlanNodeToJson(pObj, pJson);
221✔
1220
  if (TSDB_CODE_SUCCESS == code) {
221!
1221
    code = nodeListToJson(pJson, jkPartitionLogicPlanPartitionKeys, pNode->pPartitionKeys);
221✔
1222
  }
1223

1224
  return code;
221✔
1225
}
1226

1227
static int32_t jsonToLogicPartitionNode(const SJson* pJson, void* pObj) {
89✔
1228
  SPartitionLogicNode* pNode = (SPartitionLogicNode*)pObj;
89✔
1229

1230
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
89✔
1231
  if (TSDB_CODE_SUCCESS == code) {
89!
1232
    code = jsonToNodeList(pJson, jkPartitionLogicPlanPartitionKeys, &pNode->pPartitionKeys);
89✔
1233
  }
1234

1235
  return code;
89✔
1236
}
1237

1238
static const char* jkIndefRowsFuncLogicPlanFuncs = "Funcs";
1239

1240
static int32_t logicIndefRowsFuncNodeToJson(const void* pObj, SJson* pJson) {
143✔
1241
  const SIndefRowsFuncLogicNode* pNode = (const SIndefRowsFuncLogicNode*)pObj;
143✔
1242

1243
  int32_t code = logicPlanNodeToJson(pObj, pJson);
143✔
1244
  if (TSDB_CODE_SUCCESS == code) {
143!
1245
    code = nodeListToJson(pJson, jkIndefRowsFuncLogicPlanFuncs, pNode->pFuncs);
143✔
1246
  }
1247

1248
  return code;
143✔
1249
}
1250

1251
static int32_t jsonToLogicIndefRowsFuncNode(const SJson* pJson, void* pObj) {
56✔
1252
  SIndefRowsFuncLogicNode* pNode = (SIndefRowsFuncLogicNode*)pObj;
56✔
1253

1254
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
56✔
1255
  if (TSDB_CODE_SUCCESS == code) {
56!
1256
    code = jsonToNodeList(pJson, jkIndefRowsFuncLogicPlanFuncs, &pNode->pFuncs);
56✔
1257
  }
1258

1259
  return code;
56✔
1260
}
1261

1262
static const char* jkStreamOption_triggerType = "StreamOptionTriggerType";
1263
static const char* jkStreamOption_watermark = "StreamOptionWatermark";
1264
static const char* jkStreamOption_deleteMark = "StreamOptionDeleteMark";
1265
static const char* jkStreamOption_igExpired = "StreamOptionIgExpired";
1266
static const char* jkStreamOption_igCheckUpdate = "StreamOption_igCheckUpdate";
1267
static const char* jkStreamOption_destHasPrimaryKey = "StreamOptionDestHasPrimaryKey";
1268

1269
static int32_t streamNodeOptionToJson(const void* pObj, SJson* pJson) {
382✔
1270
  const SStreamNodeOption* pNode = (const SStreamNodeOption*)pObj;
382✔
1271
  int32_t                  code = tjsonAddIntegerToObject(pJson, jkStreamOption_triggerType, pNode->triggerType);
382✔
1272

1273
  if (TSDB_CODE_SUCCESS == code) {
382!
1274
    code = tjsonAddIntegerToObject(pJson, jkStreamOption_watermark, pNode->watermark);
382✔
1275
  }
1276
  if (TSDB_CODE_SUCCESS == code) {
382!
1277
    code = tjsonAddIntegerToObject(pJson, jkStreamOption_deleteMark, pNode->deleteMark);
382✔
1278
  }
1279
  if (TSDB_CODE_SUCCESS == code) {
382!
1280
    code = tjsonAddIntegerToObject(pJson, jkStreamOption_igExpired, pNode->igExpired);
382✔
1281
  }
1282
  if (TSDB_CODE_SUCCESS == code) {
382!
1283
    code = tjsonAddIntegerToObject(pJson, jkStreamOption_igCheckUpdate, pNode->igCheckUpdate);
382✔
1284
  }
1285
  if (TSDB_CODE_SUCCESS == code) {
382!
1286
    code = tjsonAddIntegerToObject(pJson, jkStreamOption_destHasPrimaryKey, pNode->destHasPrimaryKey);
382✔
1287
  }
1288
  return code;
382✔
1289
}
1290

1291
static int32_t jsonToStreamNodeOption(const SJson* pJson, void* pObj) {
366✔
1292
  SStreamNodeOption* pNode = (SStreamNodeOption*)pObj;
366✔
1293
  int32_t            code = tjsonGetTinyIntValue(pJson, jkStreamOption_triggerType, &pNode->triggerType);
366✔
1294

1295
  if (TSDB_CODE_SUCCESS == code) {
366!
1296
    code = tjsonGetBigIntValue(pJson, jkStreamOption_watermark, &pNode->watermark);
366✔
1297
  }
1298
  if (TSDB_CODE_SUCCESS == code) {
366!
1299
    code = tjsonGetBigIntValue(pJson, jkStreamOption_deleteMark, &pNode->deleteMark);
366✔
1300
  }
1301
  if (TSDB_CODE_SUCCESS == code) {
366!
1302
    code = tjsonGetTinyIntValue(pJson, jkStreamOption_igExpired, &pNode->igExpired);
366✔
1303
  }
1304
  if (TSDB_CODE_SUCCESS == code) {
366!
1305
    code = tjsonGetTinyIntValue(pJson, jkStreamOption_igCheckUpdate, &pNode->igCheckUpdate);
366✔
1306
  }
1307
  if (TSDB_CODE_SUCCESS == code) {
366!
1308
    code = tjsonGetTinyIntValue(pJson, jkStreamOption_destHasPrimaryKey, &pNode->destHasPrimaryKey);
366✔
1309
  }
1310
  return code;
366✔
1311
}
1312

1313
static const char* jkInterpFuncLogicPlanFuncs = "Funcs";
1314
static const char* jkInterpFuncLogicPlanStartTime = "StartTime";
1315
static const char* jkInterpFuncLogicPlanEndTime = "EndTime";
1316
static const char* jkInterpFuncLogicPlanInterval = "Interval";
1317
static const char* jkInterpFuncLogicPlanIntervalUnit = "IntervalUnit";
1318
static const char* jkInterpFuncLogicPlanPrecision = "Precision";
1319
static const char* jkInterpFuncLogicPlanFillMode = "fillMode";
1320
static const char* jkInterpFuncLogicPlanFillValues = "FillValues";
1321
static const char* jkInterpFuncLogicPlanTimeSeries = "TimeSeries";
1322
static const char* jkInterpFuncLogicPlanStreamNodeOption = "StreamNodeOption";
1323
static const char* jkInterpFuncLogicPlanRangeInterval = "RangeInterval";
1324
static const char* jkInterpFuncLogicPlanRangeIntervalUnit = "RangeIntervalUnit";
1325

1326
static int32_t logicInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
33✔
1327
  const SInterpFuncLogicNode* pNode = (const SInterpFuncLogicNode*)pObj;
33✔
1328

1329
  int32_t code = logicPlanNodeToJson(pObj, pJson);
33✔
1330
  if (TSDB_CODE_SUCCESS == code) {
33!
1331
    code = nodeListToJson(pJson, jkInterpFuncLogicPlanFuncs, pNode->pFuncs);
33✔
1332
  }
1333
  if (TSDB_CODE_SUCCESS == code) {
33!
1334
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanStartTime, pNode->timeRange.skey);
33✔
1335
  }
1336
  if (TSDB_CODE_SUCCESS == code) {
33!
1337
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanEndTime, pNode->timeRange.ekey);
33✔
1338
  }
1339
  if (TSDB_CODE_SUCCESS == code) {
33!
1340
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanInterval, pNode->interval);
33✔
1341
  }
1342
  if (TSDB_CODE_SUCCESS == code) {
33!
1343
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanIntervalUnit, pNode->intervalUnit);
33✔
1344
  }
1345
  if (TSDB_CODE_SUCCESS == code) {
33!
1346
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanPrecision, pNode->precision);
33✔
1347
  }
1348
  if (TSDB_CODE_SUCCESS == code) {
33!
1349
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanFillMode, pNode->fillMode);
33✔
1350
  }
1351
  if (TSDB_CODE_SUCCESS == code) {
33!
1352
    code = tjsonAddObject(pJson, jkInterpFuncLogicPlanFillValues, nodeToJson, pNode->pFillValues);
33✔
1353
  }
1354
  if (TSDB_CODE_SUCCESS == code) {
33!
1355
    code = tjsonAddObject(pJson, jkInterpFuncLogicPlanTimeSeries, nodeToJson, pNode->pTimeSeries);
33✔
1356
  }
1357
  if (TSDB_CODE_SUCCESS == code) {
33!
1358
    code =
1359
        tjsonAddObject(pJson, jkInterpFuncLogicPlanStreamNodeOption, streamNodeOptionToJson, &pNode->streamNodeOption);
33✔
1360
  }
1361
  if (TSDB_CODE_SUCCESS == code) {
33!
1362
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanRangeInterval, pNode->rangeInterval);
33✔
1363
  }
1364
  if (TSDB_CODE_SUCCESS == code) {
33!
1365
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanRangeIntervalUnit, pNode->rangeIntervalUnit);
33✔
1366
  }
1367

1368
  return code;
33✔
1369
}
1370

1371
static int32_t jsonToLogicInterpFuncNode(const SJson* pJson, void* pObj) {
16✔
1372
  SInterpFuncLogicNode* pNode = (SInterpFuncLogicNode*)pObj;
16✔
1373

1374
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
16✔
1375
  if (TSDB_CODE_SUCCESS == code) {
16!
1376
    code = jsonToNodeList(pJson, jkInterpFuncLogicPlanFuncs, &pNode->pFuncs);
16✔
1377
  }
1378
  if (TSDB_CODE_SUCCESS == code) {
16!
1379
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanStartTime, &pNode->timeRange.skey);
16✔
1380
  }
1381
  if (TSDB_CODE_SUCCESS == code) {
16!
1382
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanEndTime, &pNode->timeRange.ekey);
16✔
1383
  }
1384
  if (TSDB_CODE_SUCCESS == code) {
16!
1385
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanInterval, &pNode->interval);
16✔
1386
  }
1387
  if (TSDB_CODE_SUCCESS == code) {
16!
1388
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanIntervalUnit, &pNode->intervalUnit);
16✔
1389
  }
1390
  if (TSDB_CODE_SUCCESS == code) {
16!
1391
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanPrecision, &pNode->precision);
16✔
1392
  }
1393
  if (TSDB_CODE_SUCCESS == code) {
16!
1394
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanFillMode, (int8_t*)&pNode->fillMode);
16✔
1395
  }
1396
  if (TSDB_CODE_SUCCESS == code) {
16!
1397
    code = tjsonToObject(pJson, jkInterpFuncLogicPlanFillValues, jsonToNode, pNode->pFillValues);
16✔
1398
  }
1399
  if (TSDB_CODE_SUCCESS == code) {
16!
1400
    code = jsonToNodeObject(pJson, jkInterpFuncLogicPlanTimeSeries, &pNode->pTimeSeries);
16✔
1401
  }
1402
  if (TSDB_CODE_SUCCESS == code) {
16!
1403
    code =
1404
        tjsonToObject(pJson, jkInterpFuncLogicPlanStreamNodeOption, jsonToStreamNodeOption, &pNode->streamNodeOption);
16✔
1405
  }
1406
  if (TSDB_CODE_SUCCESS == code) {
16!
1407
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanRangeInterval, &pNode->rangeInterval);
16✔
1408
  }
1409
  if (TSDB_CODE_SUCCESS == code) {
16!
1410
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanRangeIntervalUnit, &pNode->rangeIntervalUnit);
16✔
1411
  }
1412

1413
  return code;
16✔
1414
}
1415

1416
static const char* jkForecastFuncLogicPlanFuncs = "Funcs";
1417

1418
static int32_t logicForecastFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1419
  const SForecastFuncLogicNode* pNode = (const SForecastFuncLogicNode*)pObj;
×
1420

1421
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1422
  if (TSDB_CODE_SUCCESS == code) {
×
1423
    code = nodeListToJson(pJson, jkForecastFuncLogicPlanFuncs, pNode->pFuncs);
×
1424
  }
1425

1426
  return code;
×
1427
}
1428

1429
static int32_t jsonToLogicForecastFuncNode(const SJson* pJson, void* pObj) {
×
1430
  SForecastFuncLogicNode* pNode = (SForecastFuncLogicNode*)pObj;
×
1431

1432
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1433
  if (TSDB_CODE_SUCCESS == code) {
×
1434
    code = jsonToNodeList(pJson, jkForecastFuncLogicPlanFuncs, &pNode->pFuncs);
×
1435
  }
1436

1437
  return code;
×
1438
}
1439

1440
static const char* jkGroupCacheLogicPlanGrpColsMayBeNull = "GroupColsMayBeNull";
1441
static const char* jkGroupCacheLogicPlanGroupByUid = "GroupByUid";
1442
static const char* jkGroupCacheLogicPlanGlobalGroup = "GlobalGroup";
1443
static const char* jkGroupCacheLogicPlanGroupCols = "GroupCols";
1444

1445
static int32_t logicGroupCacheNodeToJson(const void* pObj, SJson* pJson) {
×
1446
  const SGroupCacheLogicNode* pNode = (const SGroupCacheLogicNode*)pObj;
×
1447

1448
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1449
  if (TSDB_CODE_SUCCESS == code) {
×
1450
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGrpColsMayBeNull, pNode->grpColsMayBeNull);
×
1451
  }
1452
  if (TSDB_CODE_SUCCESS == code) {
×
1453
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGroupByUid, pNode->grpByUid);
×
1454
  }
1455
  if (TSDB_CODE_SUCCESS == code) {
×
1456
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGlobalGroup, pNode->globalGrp);
×
1457
  }
1458
  if (TSDB_CODE_SUCCESS == code) {
×
1459
    code = nodeListToJson(pJson, jkGroupCacheLogicPlanGroupCols, pNode->pGroupCols);
×
1460
  }
1461

1462
  return code;
×
1463
}
1464

1465
static int32_t jsonToLogicGroupCacheNode(const SJson* pJson, void* pObj) {
×
1466
  SGroupCacheLogicNode* pNode = (SGroupCacheLogicNode*)pObj;
×
1467

1468
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1469
  if (TSDB_CODE_SUCCESS == code) {
×
1470
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGrpColsMayBeNull, &pNode->grpColsMayBeNull);
×
1471
  }
1472
  if (TSDB_CODE_SUCCESS == code) {
×
1473
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGroupByUid, &pNode->grpByUid);
×
1474
  }
1475
  if (TSDB_CODE_SUCCESS == code) {
×
1476
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGlobalGroup, &pNode->globalGrp);
×
1477
  }
1478
  if (TSDB_CODE_SUCCESS == code) {
×
1479
    code = jsonToNodeList(pJson, jkGroupCacheLogicPlanGroupCols, &pNode->pGroupCols);
×
1480
  }
1481

1482
  return code;
×
1483
}
1484

1485
static const char* jkDynQueryCtrlLogicPlanQueryType = "QueryType";
1486
static const char* jkDynQueryCtrlLogicPlanStbJoinBatchFetch = "BatchFetch";
1487
static const char* jkDynQueryCtrlLogicPlanStbJoinVgList = "VgroupList";
1488
static const char* jkDynQueryCtrlLogicPlanStbJoinUidList = "UidList";
1489

1490
static int32_t logicDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
×
1491
  const SDynQueryCtrlLogicNode* pNode = (const SDynQueryCtrlLogicNode*)pObj;
×
1492

1493
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1494
  if (TSDB_CODE_SUCCESS == code) {
×
1495
    code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlLogicPlanQueryType, pNode->qType);
×
1496
  }
1497
  if (TSDB_CODE_SUCCESS == code) {
×
1498
    code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlLogicPlanStbJoinBatchFetch, pNode->stbJoin.batchFetch);
×
1499
  }
1500
  if (TSDB_CODE_SUCCESS == code) {
×
1501
    code = nodeListToJson(pJson, jkDynQueryCtrlLogicPlanStbJoinVgList, pNode->stbJoin.pVgList);
×
1502
  }
1503
  if (TSDB_CODE_SUCCESS == code) {
×
1504
    code = nodeListToJson(pJson, jkDynQueryCtrlLogicPlanStbJoinUidList, pNode->stbJoin.pUidList);
×
1505
  }
1506

1507
  return code;
×
1508
}
1509

1510
static int32_t jsonToLogicDynQueryCtrlNode(const SJson* pJson, void* pObj) {
×
1511
  SDynQueryCtrlLogicNode* pNode = (SDynQueryCtrlLogicNode*)pObj;
×
1512

1513
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1514
  if (TSDB_CODE_SUCCESS == code) {
×
1515
    tjsonGetNumberValue(pJson, jkDynQueryCtrlLogicPlanQueryType, pNode->qType, code);
×
1516
  }
1517
  if (TSDB_CODE_SUCCESS == code) {
×
1518
    code = tjsonGetBoolValue(pJson, jkDynQueryCtrlLogicPlanStbJoinBatchFetch, &pNode->stbJoin.batchFetch);
×
1519
  }
1520
  if (TSDB_CODE_SUCCESS == code) {
×
1521
    code = jsonToNodeList(pJson, jkDynQueryCtrlLogicPlanStbJoinVgList, &pNode->stbJoin.pVgList);
×
1522
  }
1523
  if (TSDB_CODE_SUCCESS == code) {
×
1524
    code = jsonToNodeList(pJson, jkDynQueryCtrlLogicPlanStbJoinUidList, &pNode->stbJoin.pUidList);
×
1525
  }
1526

1527
  return code;
×
1528
}
1529

1530
static const char* jkSubplanIdQueryId = "QueryId";
1531
static const char* jkSubplanIdGroupId = "GroupId";
1532
static const char* jkSubplanIdSubplanId = "SubplanId";
1533

1534
static int32_t subplanIdToJson(const void* pObj, SJson* pJson) {
21,095✔
1535
  const SSubplanId* pNode = (const SSubplanId*)pObj;
21,095✔
1536

1537
  int32_t code = tjsonAddIntegerToObject(pJson, jkSubplanIdQueryId, pNode->queryId);
21,095✔
1538
  if (TSDB_CODE_SUCCESS == code) {
21,097!
1539
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdGroupId, pNode->groupId);
21,097✔
1540
  }
1541
  if (TSDB_CODE_SUCCESS == code) {
21,098!
1542
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdSubplanId, pNode->subplanId);
21,098✔
1543
  }
1544

1545
  return code;
21,098✔
1546
}
1547

1548
static int32_t jsonToSubplanId(const SJson* pJson, void* pObj) {
15,031✔
1549
  SSubplanId* pNode = (SSubplanId*)pObj;
15,031✔
1550

1551
  int32_t code = tjsonGetUBigIntValue(pJson, jkSubplanIdQueryId, &pNode->queryId);
15,031✔
1552
  if (TSDB_CODE_SUCCESS == code) {
15,032!
1553
    code = tjsonGetIntValue(pJson, jkSubplanIdGroupId, &pNode->groupId);
15,032✔
1554
  }
1555
  if (TSDB_CODE_SUCCESS == code) {
15,032!
1556
    code = tjsonGetIntValue(pJson, jkSubplanIdSubplanId, &pNode->subplanId);
15,032✔
1557
  }
1558

1559
  return code;
15,033✔
1560
}
1561

1562
static const char* jkEndPointFqdn = "Fqdn";
1563
static const char* jkEndPointPort = "Port";
1564

1565
static int32_t epToJson(const void* pObj, SJson* pJson) {
25,901✔
1566
  const SEp* pNode = (const SEp*)pObj;
25,901✔
1567

1568
  int32_t code = tjsonAddStringToObject(pJson, jkEndPointFqdn, pNode->fqdn);
25,901✔
1569
  if (TSDB_CODE_SUCCESS == code) {
25,900!
1570
    code = tjsonAddIntegerToObject(pJson, jkEndPointPort, pNode->port);
25,900✔
1571
  }
1572

1573
  return code;
25,889✔
1574
}
1575

1576
static int32_t jsonToEp(const SJson* pJson, void* pObj) {
25,708✔
1577
  SEp* pNode = (SEp*)pObj;
25,708✔
1578

1579
  int32_t code = tjsonGetStringValue(pJson, jkEndPointFqdn, pNode->fqdn);
25,708✔
1580
  if (TSDB_CODE_SUCCESS == code) {
25,707!
1581
    code = tjsonGetSmallIntValue(pJson, jkEndPointPort, &pNode->port);
25,707✔
1582
  }
1583

1584
  return code;
25,708✔
1585
}
1586

1587
static const char* jkEpSetInUse = "InUse";
1588
static const char* jkEpSetNumOfEps = "NumOfEps";
1589
static const char* jkEpSetEps = "Eps";
1590

1591
static int32_t epSetToJson(const void* pObj, SJson* pJson) {
7,150✔
1592
  const SEpSet* pNode = (const SEpSet*)pObj;
7,150✔
1593

1594
  int32_t code = tjsonAddIntegerToObject(pJson, jkEpSetInUse, pNode->inUse);
7,150✔
1595
  if (TSDB_CODE_SUCCESS == code) {
7,148!
1596
    code = tjsonAddIntegerToObject(pJson, jkEpSetNumOfEps, pNode->numOfEps);
7,148✔
1597
  }
1598
  if (TSDB_CODE_SUCCESS == code) {
7,149!
1599
    code = tjsonAddArray(pJson, jkEpSetEps, epToJson, pNode->eps, sizeof(SEp), pNode->numOfEps);
7,149✔
1600
  }
1601

1602
  return code;
7,149✔
1603
}
1604

1605
static int32_t jsonToEpSet(const SJson* pJson, void* pObj) {
13,435✔
1606
  SEpSet* pNode = (SEpSet*)pObj;
13,435✔
1607

1608
  int32_t code = tjsonGetTinyIntValue(pJson, jkEpSetInUse, &pNode->inUse);
13,435✔
1609
  if (TSDB_CODE_SUCCESS == code) {
13,435!
1610
    code = tjsonGetTinyIntValue(pJson, jkEpSetNumOfEps, &pNode->numOfEps);
13,435✔
1611
  }
1612
  if (TSDB_CODE_SUCCESS == code) {
13,435!
1613
    code = tjsonToArray(pJson, jkEpSetEps, jsonToEp, pNode->eps, sizeof(SEp));
13,435✔
1614
  }
1615

1616
  return code;
13,435✔
1617
}
1618

1619
static const char* jkVgroupInfoVgId = "VgId";
1620
static const char* jkVgroupInfoHashBegin = "HashBegin";
1621
static const char* jkVgroupInfoHashEnd = "HashEnd";
1622
static const char* jkVgroupInfoEpSet = "EpSet";
1623
static const char* jkVgroupInfoNumOfTable = "NumOfTable";
1624

1625
static int32_t vgroupInfoToJson(const void* pObj, SJson* pJson) {
5,202✔
1626
  const SVgroupInfo* pNode = (const SVgroupInfo*)pObj;
5,202✔
1627

1628
  int32_t code = tjsonAddIntegerToObject(pJson, jkVgroupInfoVgId, pNode->vgId);
5,202✔
1629
  if (TSDB_CODE_SUCCESS == code) {
5,202!
1630
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoHashBegin, pNode->hashBegin);
5,202✔
1631
  }
1632
  if (TSDB_CODE_SUCCESS == code) {
5,202!
1633
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoHashEnd, pNode->hashEnd);
5,202✔
1634
  }
1635
  if (TSDB_CODE_SUCCESS == code) {
5,202!
1636
    code = tjsonAddObject(pJson, jkVgroupInfoEpSet, epSetToJson, &pNode->epSet);
5,202✔
1637
  }
1638
  if (TSDB_CODE_SUCCESS == code) {
5,202!
1639
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoNumOfTable, pNode->numOfTable);
5,202✔
1640
  }
1641

1642
  return code;
5,202✔
1643
}
1644

1645
static int32_t jsonToVgroupInfo(const SJson* pJson, void* pObj) {
13,383✔
1646
  SVgroupInfo* pNode = (SVgroupInfo*)pObj;
13,383✔
1647

1648
  int32_t code = tjsonGetIntValue(pJson, jkVgroupInfoVgId, &pNode->vgId);
13,383✔
1649
  if (TSDB_CODE_SUCCESS == code) {
13,383!
1650
    code = tjsonGetUIntValue(pJson, jkVgroupInfoHashBegin, &pNode->hashBegin);
13,383✔
1651
  }
1652
  if (TSDB_CODE_SUCCESS == code) {
13,383!
1653
    code = tjsonGetUIntValue(pJson, jkVgroupInfoHashEnd, &pNode->hashEnd);
13,383✔
1654
  }
1655
  if (TSDB_CODE_SUCCESS == code) {
13,383!
1656
    code = tjsonToObject(pJson, jkVgroupInfoEpSet, jsonToEpSet, &pNode->epSet);
13,383✔
1657
  }
1658
  if (TSDB_CODE_SUCCESS == code) {
13,383!
1659
    code = tjsonGetIntValue(pJson, jkVgroupInfoNumOfTable, &pNode->numOfTable);
13,383✔
1660
  }
1661

1662
  return code;
13,383✔
1663
}
1664

1665
static const char* jkVgroupsInfoNum = "Num";
1666
static const char* jkVgroupsInfoVgroups = "Vgroups";
1667

1668
static int32_t vgroupsInfoToJson(const void* pObj, SJson* pJson) {
2,910✔
1669
  const SVgroupsInfo* pNode = (const SVgroupsInfo*)pObj;
2,910✔
1670

1671
  int32_t code = tjsonAddIntegerToObject(pJson, jkVgroupsInfoNum, pNode->numOfVgroups);
2,910✔
1672
  if (TSDB_CODE_SUCCESS == code) {
2,910!
1673
    code = tjsonAddArray(pJson, jkVgroupsInfoVgroups, vgroupInfoToJson, pNode->vgroups, sizeof(SVgroupInfo),
2,910✔
1674
                         pNode->numOfVgroups);
2,910✔
1675
  }
1676

1677
  return code;
2,910✔
1678
}
1679

1680
static int32_t jsonToVgroupsInfo(const SJson* pJson, void* pObj) {
5,312✔
1681
  SVgroupsInfo* pNode = (SVgroupsInfo*)pObj;
5,312✔
1682

1683
  int32_t code = tjsonGetIntValue(pJson, jkVgroupsInfoNum, &pNode->numOfVgroups);
5,312✔
1684
  if (TSDB_CODE_SUCCESS == code) {
5,312!
1685
    code = tjsonToArray(pJson, jkVgroupsInfoVgroups, jsonToVgroupInfo, pNode->vgroups, sizeof(SVgroupInfo));
5,312✔
1686
  }
1687

1688
  return code;
5,312✔
1689
}
1690

1691
static const char* jkLogicSubplanId = "Id";
1692
static const char* jkLogicSubplanChildren = "Children";
1693
static const char* jkLogicSubplanRootNode = "RootNode";
1694
static const char* jkLogicSubplanType = "SubplanType";
1695
static const char* jkLogicSubplanVgroupsSize = "VgroupsSize";
1696
static const char* jkLogicSubplanVgroups = "Vgroups";
1697
static const char* jkLogicSubplanLevel = "Level";
1698
static const char* jkLogicSubplanSplitFlag = "SplitFlag";
1699
static const char* jkLogicSubplanNumOfComputeNodes = "NumOfComputeNodes";
1700

1701
static int32_t logicSubplanToJson(const void* pObj, SJson* pJson) {
5,051✔
1702
  const SLogicSubplan* pNode = (const SLogicSubplan*)pObj;
5,051✔
1703

1704
  int32_t code = tjsonAddObject(pJson, jkLogicSubplanId, subplanIdToJson, &pNode->id);
5,051✔
1705
  if (TSDB_CODE_SUCCESS == code) {
5,051!
1706
    code = nodeListToJson(pJson, jkLogicSubplanChildren, pNode->pChildren);
5,051✔
1707
  }
1708
  if (TSDB_CODE_SUCCESS == code) {
5,051!
1709
    code = tjsonAddObject(pJson, jkLogicSubplanRootNode, nodeToJson, pNode->pNode);
5,051✔
1710
  }
1711
  if (TSDB_CODE_SUCCESS == code) {
5,051!
1712
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanType, pNode->subplanType);
5,051✔
1713
  }
1714
  if (TSDB_CODE_SUCCESS == code) {
5,051!
1715
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanVgroupsSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
5,051✔
1716
  }
1717
  if (TSDB_CODE_SUCCESS == code) {
5,051!
1718
    code = tjsonAddObject(pJson, jkLogicSubplanVgroups, vgroupsInfoToJson, pNode->pVgroupList);
5,051✔
1719
  }
1720
  if (TSDB_CODE_SUCCESS == code) {
5,051!
1721
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanLevel, pNode->level);
5,051✔
1722
  }
1723
  if (TSDB_CODE_SUCCESS == code) {
5,051!
1724
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanSplitFlag, pNode->splitFlag);
5,051✔
1725
  }
1726
  if (TSDB_CODE_SUCCESS == code) {
5,051!
1727
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanNumOfComputeNodes, pNode->numOfComputeNodes);
5,051✔
1728
  }
1729

1730
  return code;
5,051✔
1731
}
1732

1733
static int32_t jsonToLogicSubplan(const SJson* pJson, void* pObj) {
1,558✔
1734
  SLogicSubplan* pNode = (SLogicSubplan*)pObj;
1,558✔
1735

1736
  int32_t code = tjsonToObject(pJson, jkLogicSubplanId, jsonToSubplanId, &pNode->id);
1,558✔
1737
  if (TSDB_CODE_SUCCESS == code) {
1,558!
1738
    code = jsonToNodeList(pJson, jkLogicSubplanChildren, &pNode->pChildren);
1,558✔
1739
  }
1740
  if (TSDB_CODE_SUCCESS == code) {
1,558!
1741
    code = jsonToNodeObject(pJson, jkLogicSubplanRootNode, (SNode**)&pNode->pNode);
1,558✔
1742
  }
1743
  if (TSDB_CODE_SUCCESS == code) {
1,558!
1744
    tjsonGetNumberValue(pJson, jkLogicSubplanType, pNode->subplanType, code);
1,558✔
1745
  }
1746
  int32_t objSize = 0;
1,558✔
1747
  if (TSDB_CODE_SUCCESS == code) {
1,558!
1748
    code = tjsonGetIntValue(pJson, jkLogicSubplanVgroupsSize, &objSize);
1,558✔
1749
  }
1750
  if (TSDB_CODE_SUCCESS == code) {
1,558!
1751
    code = tjsonMakeObject(pJson, jkLogicSubplanVgroups, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
1,558✔
1752
  }
1753
  if (TSDB_CODE_SUCCESS == code) {
1,558!
1754
    code = tjsonGetIntValue(pJson, jkLogicSubplanLevel, &pNode->level);
1,558✔
1755
  }
1756
  if (TSDB_CODE_SUCCESS == code) {
1,558!
1757
    code = tjsonGetIntValue(pJson, jkLogicSubplanSplitFlag, &pNode->splitFlag);
1,558✔
1758
  }
1759
  if (TSDB_CODE_SUCCESS == code) {
1,558!
1760
    code = tjsonGetIntValue(pJson, jkLogicSubplanNumOfComputeNodes, &pNode->numOfComputeNodes);
1,558✔
1761
  }
1762

1763
  return code;
1,558✔
1764
}
1765

1766
static const char* jkLogicPlanSubplans = "Subplans";
1767

1768
static int32_t logicPlanToJson(const void* pObj, SJson* pJson) {
284✔
1769
  const SQueryLogicPlan* pNode = (const SQueryLogicPlan*)pObj;
284✔
1770
  return tjsonAddObject(pJson, jkLogicPlanSubplans, nodeToJson, nodesListGetNode(pNode->pTopSubplans, 0));
284✔
1771
}
1772

1773
static int32_t jsonToLogicPlan(const SJson* pJson, void* pObj) {
284✔
1774
  SQueryLogicPlan* pNode = (SQueryLogicPlan*)pObj;
284✔
1775
  SNode*           pChild = NULL;
284✔
1776
  int32_t          code = jsonToNodeObject(pJson, jkLogicPlanSubplans, &pChild);
284✔
1777
  if (TSDB_CODE_SUCCESS == code) {
284!
1778
    code = nodesListMakeStrictAppend(&pNode->pTopSubplans, pChild);
284✔
1779
  }
1780
  return code;
284✔
1781
}
1782

1783
static const char* jkJoinLogicPlanJoinType = "JoinType";
1784
static const char* jkJoinLogicPlanJoinAlgo = "JoinAlgo";
1785
static const char* jkJoinLogicPlanOnConditions = "OtherOnCond";
1786
static const char* jkJoinLogicPlanPrimKeyEqCondition = "PrimKeyEqCond";
1787
static const char* jkJoinLogicPlanColEqCondition = "ColumnEqCond";
1788
static const char* jkJoinLogicPlanTagEqCondition = "TagEqCond";
1789

1790
static int32_t logicJoinNodeToJson(const void* pObj, SJson* pJson) {
125✔
1791
  const SJoinLogicNode* pNode = (const SJoinLogicNode*)pObj;
125✔
1792

1793
  int32_t code = logicPlanNodeToJson(pObj, pJson);
125✔
1794
  if (TSDB_CODE_SUCCESS == code) {
125!
1795
    code = tjsonAddIntegerToObject(pJson, jkJoinLogicPlanJoinType, pNode->joinType);
125✔
1796
  }
1797
  if (TSDB_CODE_SUCCESS == code) {
125!
1798
    code = tjsonAddIntegerToObject(pJson, jkJoinLogicPlanJoinAlgo, pNode->joinAlgo);
125✔
1799
  }
1800
  if (TSDB_CODE_SUCCESS == code) {
125!
1801
    code = tjsonAddObject(pJson, jkJoinLogicPlanPrimKeyEqCondition, nodeToJson, pNode->pPrimKeyEqCond);
125✔
1802
  }
1803
  if (TSDB_CODE_SUCCESS == code) {
125!
1804
    code = tjsonAddObject(pJson, jkJoinLogicPlanColEqCondition, nodeToJson, pNode->pColEqCond);
125✔
1805
  }
1806
  if (TSDB_CODE_SUCCESS == code) {
125!
1807
    code = tjsonAddObject(pJson, jkJoinLogicPlanTagEqCondition, nodeToJson, pNode->pTagEqCond);
125✔
1808
  }
1809
  if (TSDB_CODE_SUCCESS == code) {
125!
1810
    code = tjsonAddObject(pJson, jkJoinLogicPlanOnConditions, nodeToJson, pNode->pFullOnCond);
125✔
1811
  }
1812
  return code;
125✔
1813
}
1814

1815
static int32_t jsonToLogicJoinNode(const SJson* pJson, void* pObj) {
44✔
1816
  SJoinLogicNode* pNode = (SJoinLogicNode*)pObj;
44✔
1817

1818
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
44✔
1819
  if (TSDB_CODE_SUCCESS == code) {
44!
1820
    tjsonGetNumberValue(pJson, jkJoinLogicPlanJoinType, pNode->joinType, code);
44✔
1821
  }
1822
  if (TSDB_CODE_SUCCESS == code) {
44!
1823
    tjsonGetNumberValue(pJson, jkJoinLogicPlanJoinAlgo, pNode->joinAlgo, code);
44✔
1824
  }
1825
  if (TSDB_CODE_SUCCESS == code) {
44!
1826
    code = jsonToNodeObject(pJson, jkJoinLogicPlanPrimKeyEqCondition, &pNode->pPrimKeyEqCond);
44✔
1827
  }
1828
  if (TSDB_CODE_SUCCESS == code) {
44!
1829
    code = jsonToNodeObject(pJson, jkJoinLogicPlanColEqCondition, &pNode->pColEqCond);
44✔
1830
  }
1831
  if (TSDB_CODE_SUCCESS == code) {
44!
1832
    code = jsonToNodeObject(pJson, jkJoinLogicPlanTagEqCondition, &pNode->pTagEqCond);
44✔
1833
  }
1834
  if (TSDB_CODE_SUCCESS == code) {
44!
1835
    code = jsonToNodeObject(pJson, jkJoinLogicPlanOnConditions, &pNode->pFullOnCond);
44✔
1836
  }
1837

1838
  return code;
44✔
1839
}
1840

1841
static const char* jkPhysiPlanOutputDataBlockDesc = "OutputDataBlockDesc";
1842
static const char* jkPhysiPlanConditions = "Conditions";
1843
static const char* jkPhysiPlanChildren = "Children";
1844
static const char* jkPhysiPlanLimit = "Limit";
1845
static const char* jkPhysiPlanSlimit = "SLimit";
1846

1847
static int32_t physicPlanNodeToJson(const void* pObj, SJson* pJson) {
34,420✔
1848
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
34,420✔
1849

1850
  int32_t code = tjsonAddObject(pJson, jkPhysiPlanOutputDataBlockDesc, nodeToJson, pNode->pOutputDataBlockDesc);
34,420✔
1851
  if (TSDB_CODE_SUCCESS == code) {
34,419!
1852
    code = tjsonAddObject(pJson, jkPhysiPlanConditions, nodeToJson, pNode->pConditions);
34,419✔
1853
  }
1854
  if (TSDB_CODE_SUCCESS == code) {
34,420!
1855
    code = nodeListToJson(pJson, jkPhysiPlanChildren, pNode->pChildren);
34,420✔
1856
  }
1857
  if (TSDB_CODE_SUCCESS == code) {
34,420!
1858
    code = tjsonAddObject(pJson, jkPhysiPlanLimit, nodeToJson, pNode->pLimit);
34,420✔
1859
  }
1860
  if (TSDB_CODE_SUCCESS == code) {
34,420!
1861
    code = tjsonAddObject(pJson, jkPhysiPlanSlimit, nodeToJson, pNode->pSlimit);
34,420✔
1862
  }
1863

1864
  return code;
34,420✔
1865
}
1866

1867
static int32_t jsonToPhysicPlanNode(const SJson* pJson, void* pObj) {
31,827✔
1868
  SPhysiNode* pNode = (SPhysiNode*)pObj;
31,827✔
1869

1870
  int32_t code = jsonToNodeObject(pJson, jkPhysiPlanOutputDataBlockDesc, (SNode**)&pNode->pOutputDataBlockDesc);
31,827✔
1871
  if (TSDB_CODE_SUCCESS == code) {
31,823!
1872
    code = jsonToNodeObject(pJson, jkPhysiPlanConditions, &pNode->pConditions);
31,823✔
1873
  }
1874
  if (TSDB_CODE_SUCCESS == code) {
31,821!
1875
    code = jsonToNodeList(pJson, jkPhysiPlanChildren, &pNode->pChildren);
31,821✔
1876
  }
1877
  if (TSDB_CODE_SUCCESS == code) {
31,822!
1878
    code = jsonToNodeObject(pJson, jkPhysiPlanLimit, &pNode->pLimit);
31,822✔
1879
  }
1880
  if (TSDB_CODE_SUCCESS == code) {
31,818!
1881
    code = jsonToNodeObject(pJson, jkPhysiPlanSlimit, &pNode->pSlimit);
31,818✔
1882
  }
1883

1884
  return code;
31,821✔
1885
}
1886

1887
static const char* jkNameType = "NameType";
1888
static const char* jkNameAcctId = "AcctId";
1889
static const char* jkNameDbName = "DbName";
1890
static const char* jkNameTableName = "TableName";
1891

1892
static int32_t nameToJson(const void* pObj, SJson* pJson) {
15,167✔
1893
  const SName* pNode = (const SName*)pObj;
15,167✔
1894

1895
  int32_t code = tjsonAddIntegerToObject(pJson, jkNameType, pNode->type);
15,167✔
1896
  if (TSDB_CODE_SUCCESS == code) {
15,167!
1897
    code = tjsonAddIntegerToObject(pJson, jkNameAcctId, pNode->acctId);
15,167✔
1898
  }
1899
  if (TSDB_CODE_SUCCESS == code) {
15,167!
1900
    code = tjsonAddStringToObject(pJson, jkNameDbName, pNode->dbname);
15,167✔
1901
  }
1902
  if (TSDB_CODE_SUCCESS == code) {
15,168!
1903
    code = tjsonAddStringToObject(pJson, jkNameTableName, pNode->tname);
15,168✔
1904
  }
1905

1906
  return code;
15,168✔
1907
}
1908

1909
static int32_t jsonToName(const SJson* pJson, void* pObj) {
13,226✔
1910
  SName* pNode = (SName*)pObj;
13,226✔
1911

1912
  int32_t code = tjsonGetUTinyIntValue(pJson, jkNameType, &pNode->type);
13,226✔
1913
  if (TSDB_CODE_SUCCESS == code) {
13,227!
1914
    code = tjsonGetIntValue(pJson, jkNameAcctId, &pNode->acctId);
13,227✔
1915
  }
1916
  if (TSDB_CODE_SUCCESS == code) {
13,227!
1917
    code = tjsonGetStringValue(pJson, jkNameDbName, pNode->dbname);
13,227✔
1918
  }
1919
  if (TSDB_CODE_SUCCESS == code) {
13,227!
1920
    code = tjsonGetStringValue(pJson, jkNameTableName, pNode->tname);
13,227✔
1921
  }
1922

1923
  return code;
13,226✔
1924
}
1925

1926
static const char* jkScanPhysiPlanScanCols = "ScanCols";
1927
static const char* jkScanPhysiPlanScanPseudoCols = "ScanPseudoCols";
1928
static const char* jkScanPhysiPlanTableId = "TableId";
1929
static const char* jkScanPhysiPlanSTableId = "STableId";
1930
static const char* jkScanPhysiPlanTableType = "TableType";
1931
static const char* jkScanPhysiPlanTableName = "TableName";
1932
static const char* jkScanPhysiPlanGroupOrderScan = "GroupOrderScan";
1933

1934
static int32_t physiScanNodeToJson(const void* pObj, SJson* pJson) {
15,167✔
1935
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
15,167✔
1936

1937
  int32_t code = physicPlanNodeToJson(pObj, pJson);
15,167✔
1938
  if (TSDB_CODE_SUCCESS == code) {
15,167!
1939
    code = nodeListToJson(pJson, jkScanPhysiPlanScanCols, pNode->pScanCols);
15,167✔
1940
  }
1941
  if (TSDB_CODE_SUCCESS == code) {
15,165!
1942
    code = nodeListToJson(pJson, jkScanPhysiPlanScanPseudoCols, pNode->pScanPseudoCols);
15,165✔
1943
  }
1944
  if (TSDB_CODE_SUCCESS == code) {
15,165!
1945
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableId, pNode->uid);
15,166✔
1946
  }
1947
  if (TSDB_CODE_SUCCESS == code) {
15,167!
1948
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanSTableId, pNode->suid);
15,168✔
1949
  }
1950
  if (TSDB_CODE_SUCCESS == code) {
15,167!
1951
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableType, pNode->tableType);
15,168✔
1952
  }
1953
  if (TSDB_CODE_SUCCESS == code) {
15,165!
1954
    code = tjsonAddObject(pJson, jkScanPhysiPlanTableName, nameToJson, &pNode->tableName);
15,166✔
1955
  }
1956
  if (TSDB_CODE_SUCCESS == code) {
15,167!
1957
    code = tjsonAddBoolToObject(pJson, jkScanPhysiPlanGroupOrderScan, pNode->groupOrderScan);
15,168✔
1958
  }
1959

1960
  return code;
15,167✔
1961
}
1962

1963
static int32_t jsonToPhysiScanNode(const SJson* pJson, void* pObj) {
13,226✔
1964
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
13,226✔
1965

1966
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
13,226✔
1967
  if (TSDB_CODE_SUCCESS == code) {
13,224!
1968
    code = jsonToNodeList(pJson, jkScanPhysiPlanScanCols, &pNode->pScanCols);
13,224✔
1969
  }
1970
  if (TSDB_CODE_SUCCESS == code) {
13,226!
1971
    code = jsonToNodeList(pJson, jkScanPhysiPlanScanPseudoCols, &pNode->pScanPseudoCols);
13,226✔
1972
  }
1973
  if (TSDB_CODE_SUCCESS == code) {
13,225!
1974
    code = tjsonGetUBigIntValue(pJson, jkScanPhysiPlanTableId, &pNode->uid);
13,225✔
1975
  }
1976
  if (TSDB_CODE_SUCCESS == code) {
13,225!
1977
    code = tjsonGetUBigIntValue(pJson, jkScanPhysiPlanSTableId, &pNode->suid);
13,225✔
1978
  }
1979
  if (TSDB_CODE_SUCCESS == code) {
13,227!
1980
    code = tjsonGetTinyIntValue(pJson, jkScanPhysiPlanTableType, &pNode->tableType);
13,227✔
1981
  }
1982
  if (TSDB_CODE_SUCCESS == code) {
13,227!
1983
    code = tjsonToObject(pJson, jkScanPhysiPlanTableName, jsonToName, &pNode->tableName);
13,227✔
1984
  }
1985
  if (TSDB_CODE_SUCCESS == code) {
13,226!
1986
    code = tjsonGetBoolValue(pJson, jkScanPhysiPlanGroupOrderScan, &pNode->groupOrderScan);
13,226✔
1987
  }
1988

1989
  return code;
13,226✔
1990
}
1991

1992
static const char* jkTagScanPhysiOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
1993

1994
static int32_t physiTagScanNodeToJson(const void* pObj, SJson* pJson) {
7✔
1995
  const STagScanPhysiNode* pNode = (const STagScanPhysiNode*)pObj;
7✔
1996

1997
  int32_t code = physiScanNodeToJson(pObj, pJson);
7✔
1998

1999
  if (TSDB_CODE_SUCCESS == code) {
7!
2000
    code = tjsonAddBoolToObject(pJson, jkTagScanPhysiOnlyMetaCtbIdx, pNode->onlyMetaCtbIdx);
7✔
2001
  }
2002
  return code;
7✔
2003
}
2004

2005
static int32_t jsonToPhysiTagScanNode(const SJson* pJson, void* pObj) {
7✔
2006
  STagScanPhysiNode* pNode = (STagScanPhysiNode*)pObj;
7✔
2007

2008
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
7✔
2009

2010
  if (TSDB_CODE_SUCCESS == code) {
7!
2011
    code = tjsonGetBoolValue(pJson, jkTagScanPhysiOnlyMetaCtbIdx, &pNode->onlyMetaCtbIdx);
7✔
2012
  }
2013
  return code;
7✔
2014
}
2015

2016
static const char* jkLastRowScanPhysiPlanGroupTags = "GroupTags";
2017
static const char* jkLastRowScanPhysiPlanGroupSort = "GroupSort";
2018
static const char* jkLastRowScanPhysiPlanTargets = "Targets";
2019
static const char* jkLastRowScanPhysiPlanFuncType = "FuncType";
2020
static const char* jkLastRowScanPhysiPlanFuncTypes = "FuncTypes";
2021

2022
static int32_t funcTypeToJson(const void* pObj, SJson* pJson) {
×
2023
  const int32_t* pNode = (const int32_t*)pObj;
×
2024

2025
  int32_t code = tjsonAddIntegerToObject(pJson, jkLastRowScanPhysiPlanFuncType, *pNode);
×
2026
  return code;
×
2027
}
2028

2029
static int32_t jsonToFuncType(const SJson* pJson, void* pObj) {
×
2030
  int32_t* pNode = (int32_t*)pObj;
×
2031

2032
  int32_t code = tjsonGetIntValue(pJson, jkLastRowScanPhysiPlanFuncType, pNode);
×
2033
  return code;
×
2034
}
2035

2036
static int32_t physiLastRowScanNodeToJson(const void* pObj, SJson* pJson) {
16✔
2037
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
16✔
2038

2039
  int32_t code = physiScanNodeToJson(pObj, pJson);
16✔
2040
  if (TSDB_CODE_SUCCESS == code) {
16!
2041
    code = nodeListToJson(pJson, jkLastRowScanPhysiPlanGroupTags, pNode->pGroupTags);
16✔
2042
  }
2043
  if (TSDB_CODE_SUCCESS == code) {
16!
2044
    code = tjsonAddBoolToObject(pJson, jkLastRowScanPhysiPlanGroupSort, pNode->groupSort);
16✔
2045
  }
2046
  if (TSDB_CODE_SUCCESS == code) {
16!
2047
    code = nodeListToJson(pJson, jkLastRowScanPhysiPlanTargets, pNode->pTargets);
16✔
2048
  }
2049
  if (TSDB_CODE_SUCCESS == code) {
16!
2050
    code = tjsonAddTArray(pJson, jkLastRowScanPhysiPlanFuncTypes, funcTypeToJson, pNode->pFuncTypes);
16✔
2051
  }
2052

2053
  return code;
16✔
2054
}
2055

2056
static int32_t jsonToPhysiLastRowScanNode(const SJson* pJson, void* pObj) {
16✔
2057
  SLastRowScanPhysiNode* pNode = (SLastRowScanPhysiNode*)pObj;
16✔
2058

2059
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
16✔
2060
  if (TSDB_CODE_SUCCESS == code) {
16!
2061
    code = jsonToNodeList(pJson, jkLastRowScanPhysiPlanGroupTags, &pNode->pGroupTags);
16✔
2062
  }
2063
  if (TSDB_CODE_SUCCESS == code) {
16!
2064
    code = tjsonGetBoolValue(pJson, jkLastRowScanPhysiPlanGroupSort, &pNode->groupSort);
16✔
2065
  }
2066
  if (TSDB_CODE_SUCCESS == code) {
16!
2067
    code = jsonToNodeList(pJson, jkLastRowScanPhysiPlanTargets, &pNode->pTargets);
16✔
2068
  }
2069
  if (TSDB_CODE_SUCCESS == code) {
16!
2070
    code = tjsonToTArray(pJson, jkLastRowScanPhysiPlanFuncTypes, jsonToFuncType, &pNode->pFuncTypes, sizeof(int32_t));
16✔
2071
  }
2072

2073
  return code;
16✔
2074
}
2075

2076
static const char* jkTableScanPhysiPlanScanCount = "ScanCount";
2077
static const char* jkTableScanPhysiPlanReverseScanCount = "ReverseScanCount";
2078
static const char* jkTableScanPhysiPlanStartKey = "StartKey";
2079
static const char* jkTableScanPhysiPlanEndKey = "EndKey";
2080
static const char* jkTableScanPhysiPlanRatio = "Ratio";
2081
static const char* jkTableScanPhysiPlanDataRequired = "DataRequired";
2082
static const char* jkTableScanPhysiPlanDynamicScanFuncs = "DynamicScanFuncs";
2083
static const char* jkTableScanPhysiPlanInterval = "Interval";
2084
static const char* jkTableScanPhysiPlanOffset = "Offset";
2085
static const char* jkTableScanPhysiPlanSliding = "Sliding";
2086
static const char* jkTableScanPhysiPlanIntervalUnit = "IntervalUnit";
2087
static const char* jkTableScanPhysiPlanSlidingUnit = "SlidingUnit";
2088
static const char* jkTableScanPhysiPlanTriggerType = "TriggerType";
2089
static const char* jkTableScanPhysiPlanWatermark = "Watermark";
2090
static const char* jkTableScanPhysiPlanIgnoreExpired = "IgnoreExpired";
2091
static const char* jkTableScanPhysiPlanGroupTags = "GroupTags";
2092
static const char* jkTableScanPhysiPlanGroupSort = "GroupSort";
2093
static const char* jkTableScanPhysiPlanTags = "Tags";
2094
static const char* jkTableScanPhysiPlanSubtable = "Subtable";
2095
static const char* jkTableScanPhysiPlanAssignBlockUid = "AssignBlockUid";
2096
static const char* jkTableScanPhysiPlanIgnoreUpdate = "IgnoreUpdate";
2097
static const char* jkTableScanPhysiPlanFilesetDelimited = "FilesetDelimited";
2098
static const char* jkTableScanPhysiPlanNeedCountEmptyTable = "NeedCountEmptyTable";
2099
static const char* jkTableScanPhysiPlanParaTablesSort = "ParaTablesSort";
2100
static const char* jkTableScanPhysiPlanSmallDataTsSort = "SmallDataTsSort";
2101

2102
static int32_t physiTableScanNodeToJson(const void* pObj, SJson* pJson) {
13,197✔
2103
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
13,197✔
2104

2105
  int32_t code = physiScanNodeToJson(pObj, pJson);
13,197✔
2106
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2107
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanScanCount, pNode->scanSeq[0]);
13,197✔
2108
  }
2109
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2110
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanReverseScanCount, pNode->scanSeq[1]);
13,197✔
2111
  }
2112
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2113
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanStartKey, pNode->scanRange.skey);
13,197✔
2114
  }
2115
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2116
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanEndKey, pNode->scanRange.ekey);
13,197✔
2117
  }
2118
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2119
    code = tjsonAddDoubleToObject(pJson, jkTableScanPhysiPlanRatio, pNode->ratio);
13,197✔
2120
  }
2121
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2122
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanDataRequired, pNode->dataRequired);
13,197✔
2123
  }
2124
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2125
    code = nodeListToJson(pJson, jkTableScanPhysiPlanDynamicScanFuncs, pNode->pDynamicScanFuncs);
13,197✔
2126
  }
2127
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2128
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanInterval, pNode->interval);
13,197✔
2129
  }
2130
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2131
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanOffset, pNode->offset);
13,197✔
2132
  }
2133
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2134
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanSliding, pNode->sliding);
13,197✔
2135
  }
2136
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2137
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanIntervalUnit, pNode->intervalUnit);
13,197✔
2138
  }
2139
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2140
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanSlidingUnit, pNode->slidingUnit);
13,197✔
2141
  }
2142
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2143
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanTriggerType, pNode->triggerType);
13,197✔
2144
  }
2145
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2146
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanWatermark, pNode->watermark);
13,197✔
2147
  }
2148
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2149
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanIgnoreExpired, pNode->igExpired);
13,197✔
2150
  }
2151
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2152
    code = nodeListToJson(pJson, jkTableScanPhysiPlanGroupTags, pNode->pGroupTags);
13,197✔
2153
  }
2154
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2155
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanGroupSort, pNode->groupSort);
13,197✔
2156
  }
2157
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2158
    code = nodeListToJson(pJson, jkTableScanPhysiPlanTags, pNode->pTags);
13,197✔
2159
  }
2160
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2161
    code = tjsonAddObject(pJson, jkTableScanPhysiPlanSubtable, nodeToJson, pNode->pSubtable);
13,197✔
2162
  }
2163
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2164
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanAssignBlockUid, pNode->assignBlockUid);
13,197✔
2165
  }
2166
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2167
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanIgnoreUpdate, pNode->igCheckUpdate);
13,197✔
2168
  }
2169
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2170
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanFilesetDelimited, pNode->filesetDelimited);
13,197✔
2171
  }
2172
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2173
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanNeedCountEmptyTable, pNode->needCountEmptyTable);
13,197✔
2174
  }
2175
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2176
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanParaTablesSort, pNode->paraTablesSort);
13,197✔
2177
  }
2178
  if (TSDB_CODE_SUCCESS == code) {
13,197!
2179
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanSmallDataTsSort, pNode->smallDataTsSort);
13,197✔
2180
  }
2181
  return code;
13,197✔
2182
}
2183

2184
static int32_t jsonToPhysiTableScanNode(const SJson* pJson, void* pObj) {
13,151✔
2185
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
13,151✔
2186

2187
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
13,151✔
2188
  if (TSDB_CODE_SUCCESS == code) {
13,151!
2189
    code = tjsonGetUTinyIntValue(pJson, jkTableScanPhysiPlanScanCount, &pNode->scanSeq[0]);
13,151✔
2190
  }
2191
  if (TSDB_CODE_SUCCESS == code) {
13,151!
2192
    code = tjsonGetUTinyIntValue(pJson, jkTableScanPhysiPlanReverseScanCount, &pNode->scanSeq[1]);
13,151✔
2193
  }
2194
  if (TSDB_CODE_SUCCESS == code) {
13,149!
2195
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanStartKey, &pNode->scanRange.skey);
13,149✔
2196
  }
2197
  if (TSDB_CODE_SUCCESS == code) {
13,150✔
2198
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanEndKey, &pNode->scanRange.ekey);
13,149✔
2199
  }
2200
  if (TSDB_CODE_SUCCESS == code) {
13,152✔
2201
    code = tjsonGetDoubleValue(pJson, jkTableScanPhysiPlanRatio, &pNode->ratio);
13,151✔
2202
  }
2203
  if (TSDB_CODE_SUCCESS == code) {
13,153✔
2204
    code = tjsonGetIntValue(pJson, jkTableScanPhysiPlanDataRequired, &pNode->dataRequired);
13,152✔
2205
  }
2206
  if (TSDB_CODE_SUCCESS == code) {
13,152✔
2207
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanDynamicScanFuncs, &pNode->pDynamicScanFuncs);
13,151✔
2208
  }
2209
  if (TSDB_CODE_SUCCESS == code) {
13,152✔
2210
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanInterval, &pNode->interval);
13,151✔
2211
  }
2212
  if (TSDB_CODE_SUCCESS == code) {
13,150✔
2213
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanOffset, &pNode->offset);
13,149✔
2214
  }
2215
  if (TSDB_CODE_SUCCESS == code) {
13,153✔
2216
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanSliding, &pNode->sliding);
13,152✔
2217
  }
2218
  if (TSDB_CODE_SUCCESS == code) {
13,152✔
2219
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIntervalUnit, &pNode->intervalUnit);
13,151✔
2220
  }
2221
  if (TSDB_CODE_SUCCESS == code) {
13,152✔
2222
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanSlidingUnit, &pNode->slidingUnit);
13,151✔
2223
  }
2224
  if (TSDB_CODE_SUCCESS == code) {
13,152✔
2225
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanTriggerType, &pNode->triggerType);
13,151✔
2226
  }
2227
  if (TSDB_CODE_SUCCESS == code) {
13,151✔
2228
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanWatermark, &pNode->watermark);
13,150✔
2229
  }
2230
  if (TSDB_CODE_SUCCESS == code) {
13,153✔
2231
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIgnoreExpired, &pNode->igExpired);
13,152✔
2232
  }
2233
  if (TSDB_CODE_SUCCESS == code) {
13,153✔
2234
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanGroupTags, &pNode->pGroupTags);
13,152✔
2235
  }
2236
  if (TSDB_CODE_SUCCESS == code) {
13,151✔
2237
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanGroupSort, &pNode->groupSort);
13,150✔
2238
  }
2239
  if (TSDB_CODE_SUCCESS == code) {
13,152✔
2240
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanTags, &pNode->pTags);
13,151✔
2241
  }
2242
  if (TSDB_CODE_SUCCESS == code) {
13,151✔
2243
    code = jsonToNodeObject(pJson, jkTableScanPhysiPlanSubtable, &pNode->pSubtable);
13,150✔
2244
  }
2245
  if (TSDB_CODE_SUCCESS == code) {
13,151✔
2246
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanAssignBlockUid, &pNode->assignBlockUid);
13,150✔
2247
  }
2248
  if (TSDB_CODE_SUCCESS == code) {
13,152✔
2249
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIgnoreUpdate, &pNode->igCheckUpdate);
13,151✔
2250
  }
2251
  if (TSDB_CODE_SUCCESS == code) {
13,152✔
2252
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanFilesetDelimited, &pNode->filesetDelimited);
13,151✔
2253
  }
2254
  if (TSDB_CODE_SUCCESS == code) {
13,153✔
2255
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanNeedCountEmptyTable, &pNode->needCountEmptyTable);
13,152✔
2256
  }
2257
  if (TSDB_CODE_SUCCESS == code) {
13,152✔
2258
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanParaTablesSort, &pNode->paraTablesSort);
13,151✔
2259
  }
2260
  if (TSDB_CODE_SUCCESS == code) {
13,151✔
2261
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanSmallDataTsSort, &pNode->smallDataTsSort);
13,150✔
2262
  }
2263
  return code;
13,151✔
2264
}
2265

2266
static const char* jkSysTableScanPhysiPlanMnodeEpSet = "MnodeEpSet";
2267
static const char* jkSysTableScanPhysiPlanShowRewrite = "ShowRewrite";
2268
static const char* jkSysTableScanPhysiPlanAccountId = "AccountId";
2269
static const char* jkSysTableScanPhysiPlanSysInfo = "SysInfo";
2270

2271
static int32_t physiSysTableScanNodeToJson(const void* pObj, SJson* pJson) {
1,941✔
2272
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
1,941✔
2273

2274
  int32_t code = physiScanNodeToJson(pObj, pJson);
1,941✔
2275
  if (TSDB_CODE_SUCCESS == code) {
1,941!
2276
    code = tjsonAddObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, epSetToJson, &pNode->mgmtEpSet);
1,941✔
2277
  }
2278
  if (TSDB_CODE_SUCCESS == code) {
1,941!
2279
    code = tjsonAddBoolToObject(pJson, jkSysTableScanPhysiPlanShowRewrite, pNode->showRewrite);
1,941✔
2280
  }
2281
  if (TSDB_CODE_SUCCESS == code) {
1,941!
2282
    code = tjsonAddIntegerToObject(pJson, jkSysTableScanPhysiPlanAccountId, pNode->accountId);
1,941✔
2283
  }
2284
  if (TSDB_CODE_SUCCESS == code) {
1,941!
2285
    code = tjsonAddBoolToObject(pJson, jkSysTableScanPhysiPlanSysInfo, pNode->sysInfo);
1,941✔
2286
  }
2287

2288
  return code;
1,939✔
2289
}
2290

2291
static int32_t jsonToPhysiSysTableScanNode(const SJson* pJson, void* pObj) {
46✔
2292
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
46✔
2293

2294
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
46✔
2295
  if (TSDB_CODE_SUCCESS == code) {
46!
2296
    code = tjsonToObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, jsonToEpSet, &pNode->mgmtEpSet);
46✔
2297
  }
2298
  if (TSDB_CODE_SUCCESS == code) {
46!
2299
    code = tjsonGetBoolValue(pJson, jkSysTableScanPhysiPlanShowRewrite, &pNode->showRewrite);
46✔
2300
  }
2301
  if (TSDB_CODE_SUCCESS == code) {
46!
2302
    tjsonGetNumberValue(pJson, jkSysTableScanPhysiPlanAccountId, pNode->accountId, code);
46✔
2303
  }
2304
  if (TSDB_CODE_SUCCESS == code) {
46!
2305
    code = tjsonGetBoolValue(pJson, jkSysTableScanPhysiPlanSysInfo, &pNode->sysInfo);
46✔
2306
  }
2307

2308
  return code;
46✔
2309
}
2310

2311
static const char* jkProjectPhysiPlanProjections = "Projections";
2312
static const char* jkProjectPhysiPlanMergeDataBlock = "MergeDataBlock";
2313
static const char* jkProjectPhysiPlanIgnoreGroupId = "IgnoreGroupId";
2314
static const char* jkProjectPhysiPlanInputIgnoreGroup = "InputIgnoreGroup";
2315

2316
static int32_t physiProjectNodeToJson(const void* pObj, SJson* pJson) {
7,617✔
2317
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
7,617✔
2318

2319
  int32_t code = physicPlanNodeToJson(pObj, pJson);
7,617✔
2320
  if (TSDB_CODE_SUCCESS == code) {
7,617!
2321
    code = nodeListToJson(pJson, jkProjectPhysiPlanProjections, pNode->pProjections);
7,617✔
2322
  }
2323
  if (TSDB_CODE_SUCCESS == code) {
7,617!
2324
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
7,617✔
2325
  }
2326
  if (TSDB_CODE_SUCCESS == code) {
7,617!
2327
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanIgnoreGroupId, pNode->ignoreGroupId);
7,617✔
2328
  }
2329
  if (TSDB_CODE_SUCCESS == code) {
7,617!
2330
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanInputIgnoreGroup, pNode->inputIgnoreGroup);
7,617✔
2331
  }
2332
  return code;
7,617✔
2333
}
2334

2335
static int32_t jsonToPhysiProjectNode(const SJson* pJson, void* pObj) {
7,440✔
2336
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
7,440✔
2337

2338
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
7,440✔
2339
  if (TSDB_CODE_SUCCESS == code) {
7,441!
2340
    code = jsonToNodeList(pJson, jkProjectPhysiPlanProjections, &pNode->pProjections);
7,441✔
2341
  }
2342
  if (TSDB_CODE_SUCCESS == code) {
7,443!
2343
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
7,443✔
2344
  }
2345
  if (TSDB_CODE_SUCCESS == code) {
7,443!
2346
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanIgnoreGroupId, &pNode->ignoreGroupId);
7,443✔
2347
  }
2348
  if (TSDB_CODE_SUCCESS == code) {
7,443!
2349
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanInputIgnoreGroup, &pNode->inputIgnoreGroup);
7,443✔
2350
  }
2351
  return code;
7,443✔
2352
}
2353

2354
static const char* jkJoinPhysiPlanJoinType = "JoinType";
2355
static const char* jkJoinPhysiPlanSubType = "SubType";
2356
static const char* jkJoinPhysiPlanWinOffset = "WindowOffset";
2357
static const char* jkJoinPhysiPlanJoinLimit = "JoinLimit";
2358
static const char* jkJoinPhysiPlanAsofOp = "AsofOp";
2359
static const char* jkJoinPhysiPlanLeftPrimExpr = "LeftPrimExpr";
2360
static const char* jkJoinPhysiPlanRightPrimExpr = "RightPrimExpr";
2361
static const char* jkJoinPhysiPlanLeftPrimSlotId = "LeftPrimSlotId";
2362
static const char* jkJoinPhysiPlanRightPrimSlotId = "RightPrimSlotId";
2363
static const char* jkJoinPhysiPlanLeftEqCols = "LeftEqCols";
2364
static const char* jkJoinPhysiPlanRightEqCols = "RightEqCols";
2365
static const char* jkJoinPhysiPlanInputTsOrder = "InputTsOrder";
2366
static const char* jkJoinPhysiPlanOnLeftCols = "OnLeftColumns";
2367
static const char* jkJoinPhysiPlanOnRightCols = "OnRightColumns";
2368
static const char* jkJoinPhysiPlanPrimKeyCondition = "PrimKeyCondition";
2369
static const char* jkJoinPhysiPlanOnConditions = "OnConditions";
2370
static const char* jkJoinPhysiPlanTargets = "Targets";
2371
static const char* jkJoinPhysiPlanColOnConditions = "ColumnOnConditions";
2372
static const char* jkJoinPhysiPlanLeftInputRowNum = "LeftInputRowNum";
2373
static const char* jkJoinPhysiPlanRightInputRowNum = "RightInputRowNum";
2374
static const char* jkJoinPhysiPlanLeftInputRowSize = "LeftInputRowSize";
2375
static const char* jkJoinPhysiPlanRightInputRowSize = "RightInputRowSize";
2376
static const char* jkJoinPhysiPlanSeqWinGroup = "SeqWinGroup";
2377
static const char* jkJoinPhysiPlanGroupJoin = "GroupJoin";
2378
static const char* jkJoinPhysiPlanLeftOnCond = "LeftOnCond";
2379
static const char* jkJoinPhysiPlanRightOnCond = "RightOnCond";
2380
static const char* jkJoinPhysiPlanTimeRangeSKey = "TimeRangeSKey";
2381
static const char* jkJoinPhysiPlanTimeRangeEKey = "TimeRangeEKey";
2382
static const char* jkJoinPhysiPlanTimeRangeTarget = "TimeRangeTarget";
2383

2384
static int32_t physiMergeJoinNodeToJson(const void* pObj, SJson* pJson) {
22✔
2385
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
22✔
2386

2387
  int32_t code = physicPlanNodeToJson(pObj, pJson);
22✔
2388
  if (TSDB_CODE_SUCCESS == code) {
22!
2389
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanJoinType, pNode->joinType);
22✔
2390
  }
2391
  if (TSDB_CODE_SUCCESS == code) {
22!
2392
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanSubType, pNode->subType);
22✔
2393
  }
2394
  if (TSDB_CODE_SUCCESS == code) {
22!
2395
    code = tjsonAddObject(pJson, jkJoinPhysiPlanWinOffset, nodeToJson, pNode->pWindowOffset);
22✔
2396
  }
2397
  if (TSDB_CODE_SUCCESS == code) {
22!
2398
    code = tjsonAddObject(pJson, jkJoinPhysiPlanJoinLimit, nodeToJson, pNode->pJLimit);
22✔
2399
  }
2400
  if (TSDB_CODE_SUCCESS == code) {
22!
2401
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanAsofOp, pNode->asofOpType);
22✔
2402
  }
2403
  if (TSDB_CODE_SUCCESS == code) {
22!
2404
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftPrimExpr, nodeToJson, pNode->leftPrimExpr);
22✔
2405
  }
2406
  if (TSDB_CODE_SUCCESS == code) {
22!
2407
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightPrimExpr, nodeToJson, pNode->rightPrimExpr);
22✔
2408
  }
2409
  if (TSDB_CODE_SUCCESS == code) {
22!
2410
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId);
22✔
2411
  }
2412
  if (TSDB_CODE_SUCCESS == code) {
22!
2413
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId);
22✔
2414
  }
2415
  if (TSDB_CODE_SUCCESS == code) {
22!
2416
    code = nodeListToJson(pJson, jkJoinPhysiPlanLeftEqCols, pNode->pEqLeft);
22✔
2417
  }
2418
  if (TSDB_CODE_SUCCESS == code) {
22!
2419
    code = nodeListToJson(pJson, jkJoinPhysiPlanRightEqCols, pNode->pEqRight);
22✔
2420
  }
2421
  if (TSDB_CODE_SUCCESS == code) {
22!
2422
    code = tjsonAddObject(pJson, jkJoinPhysiPlanOnConditions, nodeToJson, pNode->pFullOnCond);
22✔
2423
  }
2424
  if (TSDB_CODE_SUCCESS == code) {
22!
2425
    code = nodeListToJson(pJson, jkJoinPhysiPlanTargets, pNode->pTargets);
22✔
2426
  }
2427
  if (TSDB_CODE_SUCCESS == code) {
22!
2428
    code = tjsonAddObject(pJson, jkJoinPhysiPlanColOnConditions, nodeToJson, pNode->pColOnCond);
22✔
2429
  }
2430
  if (TSDB_CODE_SUCCESS == code) {
22!
2431
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum);
22✔
2432
  }
2433
  if (TSDB_CODE_SUCCESS == code) {
22!
2434
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize);
22✔
2435
  }
2436
  if (TSDB_CODE_SUCCESS == code) {
22!
2437
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum);
22✔
2438
  }
2439
  if (TSDB_CODE_SUCCESS == code) {
22!
2440
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize);
22✔
2441
  }
2442
  if (TSDB_CODE_SUCCESS == code) {
22!
2443
    code = tjsonAddBoolToObject(pJson, jkJoinPhysiPlanSeqWinGroup, pNode->seqWinGroup);
22✔
2444
  }
2445
  if (TSDB_CODE_SUCCESS == code) {
22!
2446
    code = tjsonAddBoolToObject(pJson, jkJoinPhysiPlanGroupJoin, pNode->grpJoin);
22✔
2447
  }
2448

2449
  return code;
22✔
2450
}
2451

2452
static int32_t jsonToPhysiMergeJoinNode(const SJson* pJson, void* pObj) {
22✔
2453
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
22✔
2454

2455
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
22✔
2456
  if (TSDB_CODE_SUCCESS == code) {
22!
2457
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanJoinType, pNode->joinType, code);
22✔
2458
  }
2459
  if (TSDB_CODE_SUCCESS == code) {
22!
2460
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanSubType, pNode->subType, code);
22✔
2461
  }
2462
  if (TSDB_CODE_SUCCESS == code) {
22!
2463
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanWinOffset, &pNode->pWindowOffset);
22✔
2464
  }
2465
  if (TSDB_CODE_SUCCESS == code) {
22!
2466
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanJoinLimit, &pNode->pJLimit);
22✔
2467
  }
2468
  if (TSDB_CODE_SUCCESS == code) {
22!
2469
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanAsofOp, pNode->asofOpType, code);
22✔
2470
  }
2471
  if (TSDB_CODE_SUCCESS == code) {
22!
2472
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftPrimExpr, &pNode->leftPrimExpr);
22✔
2473
  }
2474
  if (TSDB_CODE_SUCCESS == code) {
22!
2475
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightPrimExpr, &pNode->rightPrimExpr);
22✔
2476
  }
2477
  if (TSDB_CODE_SUCCESS == code) {
22!
2478
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId, code);
22✔
2479
  }
2480
  if (TSDB_CODE_SUCCESS == code) {
22!
2481
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId, code);
22✔
2482
  }
2483
  if (TSDB_CODE_SUCCESS == code) {
22!
2484
    code = jsonToNodeList(pJson, jkJoinPhysiPlanLeftEqCols, &pNode->pEqLeft);
22✔
2485
  }
2486
  if (TSDB_CODE_SUCCESS == code) {
22!
2487
    code = jsonToNodeList(pJson, jkJoinPhysiPlanRightEqCols, &pNode->pEqRight);
22✔
2488
  }
2489
  if (TSDB_CODE_SUCCESS == code) {
22!
2490
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanOnConditions, &pNode->pFullOnCond);
22✔
2491
  }
2492
  if (TSDB_CODE_SUCCESS == code) {
22!
2493
    code = jsonToNodeList(pJson, jkJoinPhysiPlanTargets, &pNode->pTargets);
22✔
2494
  }
2495
  if (TSDB_CODE_SUCCESS == code) {
22!
2496
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanColOnConditions, &pNode->pColOnCond);
22✔
2497
  }
2498
  if (TSDB_CODE_SUCCESS == code) {
22!
2499
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum, code);
22✔
2500
  }
2501
  if (TSDB_CODE_SUCCESS == code) {
22!
2502
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize, code);
22✔
2503
  }
2504
  if (TSDB_CODE_SUCCESS == code) {
22!
2505
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum, code);
22✔
2506
  }
2507
  if (TSDB_CODE_SUCCESS == code) {
22!
2508
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize, code);
22✔
2509
  }
2510
  if (TSDB_CODE_SUCCESS == code) {
22!
2511
    code = tjsonGetBoolValue(pJson, jkJoinPhysiPlanSeqWinGroup, &pNode->seqWinGroup);
22✔
2512
  }
2513
  if (TSDB_CODE_SUCCESS == code) {
22!
2514
    code = tjsonGetBoolValue(pJson, jkJoinPhysiPlanGroupJoin, &pNode->grpJoin);
22✔
2515
  }
2516

2517
  return code;
22✔
2518
}
2519

2520
static int32_t physiHashJoinNodeToJson(const void* pObj, SJson* pJson) {
×
2521
  const SHashJoinPhysiNode* pNode = (const SHashJoinPhysiNode*)pObj;
×
2522

2523
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
2524
  if (TSDB_CODE_SUCCESS == code) {
×
2525
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanJoinType, pNode->joinType);
×
2526
  }
2527
  if (TSDB_CODE_SUCCESS == code) {
×
2528
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanSubType, pNode->subType);
×
2529
  }
2530
  if (TSDB_CODE_SUCCESS == code) {
×
2531
    code = nodeListToJson(pJson, jkJoinPhysiPlanOnLeftCols, pNode->pOnLeft);
×
2532
  }
2533
  if (TSDB_CODE_SUCCESS == code) {
×
2534
    code = nodeListToJson(pJson, jkJoinPhysiPlanOnRightCols, pNode->pOnRight);
×
2535
  }
2536
  if (TSDB_CODE_SUCCESS == code) {
×
2537
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftPrimExpr, nodeToJson, pNode->leftPrimExpr);
×
2538
  }
2539
  if (TSDB_CODE_SUCCESS == code) {
×
2540
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightPrimExpr, nodeToJson, pNode->rightPrimExpr);
×
2541
  }
2542
  if (TSDB_CODE_SUCCESS == code) {
×
2543
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId);
×
2544
  }
2545
  if (TSDB_CODE_SUCCESS == code) {
×
2546
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId);
×
2547
  }
2548
  if (TSDB_CODE_SUCCESS == code) {
×
2549
    code = tjsonAddObject(pJson, jkJoinPhysiPlanOnConditions, nodeToJson, pNode->pFullOnCond);
×
2550
  }
2551
  if (TSDB_CODE_SUCCESS == code) {
×
2552
    code = nodeListToJson(pJson, jkJoinPhysiPlanTargets, pNode->pTargets);
×
2553
  }
2554
  if (TSDB_CODE_SUCCESS == code) {
×
2555
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum);
×
2556
  }
2557
  if (TSDB_CODE_SUCCESS == code) {
×
2558
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize);
×
2559
  }
2560
  if (TSDB_CODE_SUCCESS == code) {
×
2561
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum);
×
2562
  }
2563
  if (TSDB_CODE_SUCCESS == code) {
×
2564
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize);
×
2565
  }
2566
  if (TSDB_CODE_SUCCESS == code) {
×
2567
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftOnCond, nodeToJson, pNode->pLeftOnCond);
×
2568
  }
2569
  if (TSDB_CODE_SUCCESS == code) {
×
2570
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightOnCond, nodeToJson, pNode->pRightOnCond);
×
2571
  }
2572
  if (TSDB_CODE_SUCCESS == code) {
×
2573
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeTarget, pNode->timeRangeTarget);
×
2574
  }
2575
  if (TSDB_CODE_SUCCESS == code) {
×
2576
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeSKey, pNode->timeRange.skey);
×
2577
  }
2578
  if (TSDB_CODE_SUCCESS == code) {
×
2579
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeEKey, pNode->timeRange.ekey);
×
2580
  }
2581

2582
  return code;
×
2583
}
2584

2585
static int32_t jsonToPhysiHashJoinNode(const SJson* pJson, void* pObj) {
×
2586
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
×
2587

2588
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
2589
  if (TSDB_CODE_SUCCESS == code) {
×
2590
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanJoinType, pNode->joinType, code);
×
2591
  }
2592
  if (TSDB_CODE_SUCCESS == code) {
×
2593
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanSubType, pNode->subType, code);
×
2594
  }
2595
  if (TSDB_CODE_SUCCESS == code) {
×
2596
    code = jsonToNodeList(pJson, jkJoinPhysiPlanOnLeftCols, &pNode->pOnLeft);
×
2597
  }
2598
  if (TSDB_CODE_SUCCESS == code) {
×
2599
    code = jsonToNodeList(pJson, jkJoinPhysiPlanOnRightCols, &pNode->pOnRight);
×
2600
  }
2601
  if (TSDB_CODE_SUCCESS == code) {
×
2602
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftPrimExpr, &pNode->leftPrimExpr);
×
2603
  }
2604
  if (TSDB_CODE_SUCCESS == code) {
×
2605
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightPrimExpr, &pNode->rightPrimExpr);
×
2606
  }
2607
  if (TSDB_CODE_SUCCESS == code) {
×
2608
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId, code);
×
2609
  }
2610
  if (TSDB_CODE_SUCCESS == code) {
×
2611
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId, code);
×
2612
  }
2613
  if (TSDB_CODE_SUCCESS == code) {
×
2614
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanOnConditions, &pNode->pFullOnCond);
×
2615
  }
2616
  if (TSDB_CODE_SUCCESS == code) {
×
2617
    code = jsonToNodeList(pJson, jkJoinPhysiPlanTargets, &pNode->pTargets);
×
2618
  }
2619
  if (TSDB_CODE_SUCCESS == code) {
×
2620
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum, code);
×
2621
  }
2622
  if (TSDB_CODE_SUCCESS == code) {
×
2623
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize, code);
×
2624
  }
2625
  if (TSDB_CODE_SUCCESS == code) {
×
2626
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum, code);
×
2627
  }
2628
  if (TSDB_CODE_SUCCESS == code) {
×
2629
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize, code);
×
2630
  }
2631
  if (TSDB_CODE_SUCCESS == code) {
×
2632
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftOnCond, &pNode->pLeftOnCond);
×
2633
  }
2634
  if (TSDB_CODE_SUCCESS == code) {
×
2635
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightOnCond, &pNode->pRightOnCond);
×
2636
  }
2637
  if (TSDB_CODE_SUCCESS == code) {
×
2638
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanTimeRangeTarget, pNode->timeRangeTarget, code);
×
2639
  }
2640
  if (TSDB_CODE_SUCCESS == code) {
×
2641
    code = tjsonGetBigIntValue(pJson, jkJoinPhysiPlanTimeRangeSKey, &pNode->timeRange.skey);
×
2642
  }
2643
  if (TSDB_CODE_SUCCESS == code) {
×
2644
    code = tjsonGetBigIntValue(pJson, jkJoinPhysiPlanTimeRangeEKey, &pNode->timeRange.ekey);
×
2645
  }
2646

2647
  return code;
×
2648
}
2649

2650
static const char* jkAggPhysiPlanExprs = "Exprs";
2651
static const char* jkAggPhysiPlanGroupKeys = "GroupKeys";
2652
static const char* jkAggPhysiPlanAggFuncs = "AggFuncs";
2653
static const char* jkAggPhysiPlanMergeDataBlock = "MergeDataBlock";
2654
static const char* jkAggPhysiPlanGroupKeyOptimized = "GroupKeyOptimized";
2655
static const char* jkAggPhysiPlanHasCountLikeFunc = "HasCountFunc";
2656

2657
static int32_t physiAggNodeToJson(const void* pObj, SJson* pJson) {
416✔
2658
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
416✔
2659

2660
  int32_t code = physicPlanNodeToJson(pObj, pJson);
416✔
2661
  if (TSDB_CODE_SUCCESS == code) {
416!
2662
    code = nodeListToJson(pJson, jkAggPhysiPlanExprs, pNode->pExprs);
416✔
2663
  }
2664
  if (TSDB_CODE_SUCCESS == code) {
416!
2665
    code = nodeListToJson(pJson, jkAggPhysiPlanGroupKeys, pNode->pGroupKeys);
416✔
2666
  }
2667
  if (TSDB_CODE_SUCCESS == code) {
416!
2668
    code = nodeListToJson(pJson, jkAggPhysiPlanAggFuncs, pNode->pAggFuncs);
416✔
2669
  }
2670
  if (TSDB_CODE_SUCCESS == code) {
416!
2671
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
416✔
2672
  }
2673
  if (TSDB_CODE_SUCCESS == code) {
416!
2674
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanGroupKeyOptimized, pNode->groupKeyOptimized);
416✔
2675
  }
2676
  if (TSDB_CODE_SUCCESS == code) {
416!
2677
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanHasCountLikeFunc, pNode->hasCountLikeFunc);
416✔
2678
  }
2679

2680
  return code;
416✔
2681
}
2682

2683
static int32_t jsonToPhysiAggNode(const SJson* pJson, void* pObj) {
401✔
2684
  SAggPhysiNode* pNode = (SAggPhysiNode*)pObj;
401✔
2685

2686
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
401✔
2687
  if (TSDB_CODE_SUCCESS == code) {
401!
2688
    code = jsonToNodeList(pJson, jkAggPhysiPlanExprs, &pNode->pExprs);
401✔
2689
  }
2690
  if (TSDB_CODE_SUCCESS == code) {
401!
2691
    code = jsonToNodeList(pJson, jkAggPhysiPlanGroupKeys, &pNode->pGroupKeys);
401✔
2692
  }
2693
  if (TSDB_CODE_SUCCESS == code) {
401!
2694
    code = jsonToNodeList(pJson, jkAggPhysiPlanAggFuncs, &pNode->pAggFuncs);
401✔
2695
  }
2696
  if (TSDB_CODE_SUCCESS == code) {
401!
2697
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
401✔
2698
  }
2699
  if (TSDB_CODE_SUCCESS == code) {
401!
2700
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanGroupKeyOptimized, &pNode->groupKeyOptimized);
401✔
2701
  }
2702
  if (TSDB_CODE_SUCCESS == code) {
401!
2703
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanHasCountLikeFunc, &pNode->hasCountLikeFunc);
401✔
2704
  }
2705

2706
  return code;
401✔
2707
}
2708

2709
static const char* jkExchangePhysiPlanSrcStartGroupId = "SrcStartGroupId";
2710
static const char* jkExchangePhysiPlanSrcEndGroupId = "SrcEndGroupId";
2711
static const char* jkExchangePhysiPlanSrcEndPoints = "SrcEndPoints";
2712
static const char* jkExchangePhysiPlanSeqRecvData = "SeqRecvData";
2713

2714
static int32_t physiExchangeNodeToJson(const void* pObj, SJson* pJson) {
966✔
2715
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
966✔
2716

2717
  int32_t code = physicPlanNodeToJson(pObj, pJson);
966✔
2718
  if (TSDB_CODE_SUCCESS == code) {
966!
2719
    code = tjsonAddIntegerToObject(pJson, jkExchangePhysiPlanSrcStartGroupId, pNode->srcStartGroupId);
966✔
2720
  }
2721
  if (TSDB_CODE_SUCCESS == code) {
966!
2722
    code = tjsonAddIntegerToObject(pJson, jkExchangePhysiPlanSrcEndGroupId, pNode->srcEndGroupId);
966✔
2723
  }
2724
  if (TSDB_CODE_SUCCESS == code) {
966!
2725
    code = nodeListToJson(pJson, jkExchangePhysiPlanSrcEndPoints, pNode->pSrcEndPoints);
966✔
2726
  }
2727
  if (TSDB_CODE_SUCCESS == code) {
966!
2728
    code = tjsonAddBoolToObject(pJson, jkExchangePhysiPlanSeqRecvData, pNode->seqRecvData);
966✔
2729
  }
2730

2731
  return code;
966✔
2732
}
2733

2734
static int32_t jsonToPhysiExchangeNode(const SJson* pJson, void* pObj) {
334✔
2735
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
334✔
2736

2737
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
334✔
2738
  if (TSDB_CODE_SUCCESS == code) {
334!
2739
    code = tjsonGetIntValue(pJson, jkExchangePhysiPlanSrcStartGroupId, &pNode->srcStartGroupId);
334✔
2740
  }
2741
  if (TSDB_CODE_SUCCESS == code) {
334!
2742
    code = tjsonGetIntValue(pJson, jkExchangePhysiPlanSrcEndGroupId, &pNode->srcEndGroupId);
334✔
2743
  }
2744
  if (TSDB_CODE_SUCCESS == code) {
334!
2745
    code = jsonToNodeList(pJson, jkExchangePhysiPlanSrcEndPoints, &pNode->pSrcEndPoints);
334✔
2746
  }
2747
  if (TSDB_CODE_SUCCESS == code) {
334!
2748
    code = tjsonGetBoolValue(pJson, jkExchangePhysiPlanSeqRecvData, &pNode->seqRecvData);
334✔
2749
  }
2750

2751
  return code;
334✔
2752
}
2753

2754
static const char* jkMergePhysiPlanMergeKeys = "MergeKeys";
2755
static const char* jkMergePhysiPlanTargets = "Targets";
2756
static const char* jkMergePhysiPlanNumOfChannels = "NumOfChannels";
2757
static const char* jkMergePhysiPlanSrcGroupId = "SrcGroupId";
2758
static const char* jkMergePhysiPlanGroupSort = "GroupSort";
2759
static const char* jkMergePhysiPlanIgnoreGroupID = "IgnoreGroupID";
2760
static const char* jkMergePhysiPlanInputWithGroupId = "InputWithGroupId";
2761
static const char* jkMergePhysiPlanType = "Type";
2762

2763
static int32_t physiMergeNodeToJson(const void* pObj, SJson* pJson) {
70✔
2764
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
70✔
2765

2766
  int32_t code = physicPlanNodeToJson(pObj, pJson);
70✔
2767
  if (TSDB_CODE_SUCCESS == code) {
70!
2768
    code = nodeListToJson(pJson, jkMergePhysiPlanMergeKeys, pNode->pMergeKeys);
70✔
2769
  }
2770
  if (TSDB_CODE_SUCCESS == code) {
70!
2771
    code = nodeListToJson(pJson, jkMergePhysiPlanTargets, pNode->pTargets);
70✔
2772
  }
2773
  if (TSDB_CODE_SUCCESS == code) {
70!
2774
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanNumOfChannels, pNode->numOfChannels);
70✔
2775
  }
2776
  if (TSDB_CODE_SUCCESS == code) {
70!
2777
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanSrcGroupId, pNode->srcGroupId);
70✔
2778
  }
2779
  if (TSDB_CODE_SUCCESS == code) {
70!
2780
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanGroupSort, pNode->groupSort);
70✔
2781
  }
2782
  if (TSDB_CODE_SUCCESS == code) {
70!
2783
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanIgnoreGroupID, pNode->ignoreGroupId);
70✔
2784
  }
2785
  if (TSDB_CODE_SUCCESS == code) {
70!
2786
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanInputWithGroupId, pNode->inputWithGroupId);
70✔
2787
  }
2788
  if (TSDB_CODE_SUCCESS == code) {
70!
2789
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanType, pNode->type);
70✔
2790
  }
2791

2792
  return code;
70✔
2793
}
2794

2795
static int32_t jsonToPhysiMergeNode(const SJson* pJson, void* pObj) {
70✔
2796
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
70✔
2797

2798
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
70✔
2799
  if (TSDB_CODE_SUCCESS == code) {
70!
2800
    code = jsonToNodeList(pJson, jkMergePhysiPlanMergeKeys, &pNode->pMergeKeys);
70✔
2801
  }
2802
  if (TSDB_CODE_SUCCESS == code) {
70!
2803
    code = jsonToNodeList(pJson, jkMergePhysiPlanTargets, &pNode->pTargets);
70✔
2804
  }
2805
  if (TSDB_CODE_SUCCESS == code) {
70!
2806
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanNumOfChannels, &pNode->numOfChannels);
70✔
2807
  }
2808
  if (TSDB_CODE_SUCCESS == code) {
70!
2809
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanSrcGroupId, &pNode->srcGroupId);
70✔
2810
  }
2811
  if (TSDB_CODE_SUCCESS == code) {
70!
2812
    code = tjsonGetBoolValue(pJson, jkMergePhysiPlanGroupSort, &pNode->groupSort);
70✔
2813
  }
2814
  if (TSDB_CODE_SUCCESS == code) {
70!
2815
    code = tjsonGetBoolValue(pJson, jkMergePhysiPlanIgnoreGroupID, &pNode->ignoreGroupId);
70✔
2816
  }
2817
  if (TSDB_CODE_SUCCESS == code) {
70!
2818
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanType, (int32_t*)&pNode->type);
70✔
2819
  }
2820

2821
  return code;
70✔
2822
}
2823

2824
static const char* jkSortPhysiPlanExprs = "Exprs";
2825
static const char* jkSortPhysiPlanSortKeys = "SortKeys";
2826
static const char* jkSortPhysiPlanTargets = "Targets";
2827
static const char* jkSortPhysiPlanCalcGroupIds = "CalcGroupIds";
2828
static const char* jkSortPhysiPlanExcludePKCol = "ExcludePKCol";
2829

2830
static int32_t physiSortNodeToJson(const void* pObj, SJson* pJson) {
78✔
2831
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
78✔
2832

2833
  int32_t code = physicPlanNodeToJson(pObj, pJson);
78✔
2834
  if (TSDB_CODE_SUCCESS == code) {
78!
2835
    code = nodeListToJson(pJson, jkSortPhysiPlanExprs, pNode->pExprs);
78✔
2836
  }
2837
  if (TSDB_CODE_SUCCESS == code) {
78!
2838
    code = nodeListToJson(pJson, jkSortPhysiPlanSortKeys, pNode->pSortKeys);
78✔
2839
  }
2840
  if (TSDB_CODE_SUCCESS == code) {
78!
2841
    code = nodeListToJson(pJson, jkSortPhysiPlanTargets, pNode->pTargets);
78✔
2842
  }
2843
  if (TSDB_CODE_SUCCESS == code) {
78!
2844
    code = tjsonAddBoolToObject(pJson, jkSortPhysiPlanCalcGroupIds, pNode->calcGroupId);
78✔
2845
  }
2846
  if (TSDB_CODE_SUCCESS == code) {
78!
2847
    code = tjsonAddBoolToObject(pJson, jkSortPhysiPlanExcludePKCol, pNode->excludePkCol);
78✔
2848
  }
2849

2850
  return code;
78✔
2851
}
2852

2853
static int32_t jsonToPhysiSortNode(const SJson* pJson, void* pObj) {
78✔
2854
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
78✔
2855

2856
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
78✔
2857
  if (TSDB_CODE_SUCCESS == code) {
78!
2858
    code = jsonToNodeList(pJson, jkSortPhysiPlanExprs, &pNode->pExprs);
78✔
2859
  }
2860
  if (TSDB_CODE_SUCCESS == code) {
78!
2861
    code = jsonToNodeList(pJson, jkSortPhysiPlanSortKeys, &pNode->pSortKeys);
78✔
2862
  }
2863
  if (TSDB_CODE_SUCCESS == code) {
78!
2864
    code = jsonToNodeList(pJson, jkSortPhysiPlanTargets, &pNode->pTargets);
78✔
2865
  }
2866
  if (TSDB_CODE_SUCCESS == code) {
78!
2867
    code = tjsonGetBoolValue(pJson, jkSortPhysiPlanCalcGroupIds, &pNode->calcGroupId);
78✔
2868
  }
2869
  if (TSDB_CODE_SUCCESS == code) {
78!
2870
    code = tjsonGetBoolValue(pJson, jkSortPhysiPlanExcludePKCol, &pNode->excludePkCol);
78✔
2871
  }
2872

2873
  return code;
78✔
2874
}
2875

2876
static const char* jkWindowPhysiPlanExprs = "Exprs";
2877
static const char* jkWindowPhysiPlanFuncs = "Funcs";
2878
static const char* jkWindowPhysiPlanTsPk = "TsPk";
2879
static const char* jkWindowPhysiPlanTsEnd = "TsEnd";
2880
static const char* jkWindowPhysiPlanTriggerType = "TriggerType";
2881
static const char* jkWindowPhysiPlanWatermark = "Watermark";
2882
static const char* jkWindowPhysiPlanDeleteMark = "DeleteMark";
2883
static const char* jkWindowPhysiPlanIgnoreExpired = "IgnoreExpired";
2884
static const char* jkWindowPhysiPlanInputTsOrder = "InputTsOrder";
2885
static const char* jkWindowPhysiPlanMergeDataBlock = "MergeDataBlock";
2886
static const char* jkWindowPhysiPlanDestHasPrimaryKey = "DestHasPrimaryKey";
2887

2888
static int32_t physiWindowNodeToJson(const void* pObj, SJson* pJson) {
7,473✔
2889
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
7,473✔
2890

2891
  int32_t code = physicPlanNodeToJson(pObj, pJson);
7,473✔
2892
  if (TSDB_CODE_SUCCESS == code) {
7,473!
2893
    code = nodeListToJson(pJson, jkWindowPhysiPlanExprs, pNode->pExprs);
7,473✔
2894
  }
2895
  if (TSDB_CODE_SUCCESS == code) {
7,473!
2896
    code = nodeListToJson(pJson, jkWindowPhysiPlanFuncs, pNode->pFuncs);
7,473✔
2897
  }
2898
  if (TSDB_CODE_SUCCESS == code) {
7,473!
2899
    code = tjsonAddObject(pJson, jkWindowPhysiPlanTsPk, nodeToJson, pNode->pTspk);
7,473✔
2900
  }
2901
  if (TSDB_CODE_SUCCESS == code) {
7,473!
2902
    code = tjsonAddObject(pJson, jkWindowPhysiPlanTsEnd, nodeToJson, pNode->pTsEnd);
7,473✔
2903
  }
2904
  if (TSDB_CODE_SUCCESS == code) {
7,473!
2905
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanTriggerType, pNode->triggerType);
7,473✔
2906
  }
2907
  if (TSDB_CODE_SUCCESS == code) {
7,473!
2908
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanWatermark, pNode->watermark);
7,473✔
2909
  }
2910
  if (TSDB_CODE_SUCCESS == code) {
7,473!
2911
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanDeleteMark, pNode->deleteMark);
7,473✔
2912
  }
2913
  if (TSDB_CODE_SUCCESS == code) {
7,473!
2914
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanIgnoreExpired, pNode->igExpired);
7,473✔
2915
  }
2916
  if (TSDB_CODE_SUCCESS == code) {
7,473!
2917
    code = tjsonAddBoolToObject(pJson, jkWindowPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
7,473✔
2918
  }
2919
  if (TSDB_CODE_SUCCESS == code) {
7,473!
2920
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanDestHasPrimaryKey, pNode->destHasPrimaryKey);
7,473✔
2921
  }
2922

2923
  return code;
7,473✔
2924
}
2925

2926
static int32_t jsonToPhysiWindowNode(const SJson* pJson, void* pObj) {
7,645✔
2927
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
7,645✔
2928

2929
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
7,645✔
2930
  if (TSDB_CODE_SUCCESS == code) {
7,645!
2931
    code = jsonToNodeList(pJson, jkWindowPhysiPlanExprs, &pNode->pExprs);
7,645✔
2932
  }
2933
  if (TSDB_CODE_SUCCESS == code) {
7,644!
2934
    code = jsonToNodeList(pJson, jkWindowPhysiPlanFuncs, &pNode->pFuncs);
7,645✔
2935
  }
2936
  if (TSDB_CODE_SUCCESS == code) {
7,644!
2937
    code = jsonToNodeObject(pJson, jkWindowPhysiPlanTsPk, (SNode**)&pNode->pTspk);
7,645✔
2938
  }
2939
  if (TSDB_CODE_SUCCESS == code) {
7,644!
2940
    code = jsonToNodeObject(pJson, jkWindowPhysiPlanTsEnd, (SNode**)&pNode->pTsEnd);
7,645✔
2941
  }
2942
  if (TSDB_CODE_SUCCESS == code) {
7,642!
2943
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanTriggerType, &pNode->triggerType);
7,643✔
2944
  }
2945
  if (TSDB_CODE_SUCCESS == code) {
7,644!
2946
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanWatermark, &pNode->watermark);
7,645✔
2947
  }
2948
  if (TSDB_CODE_SUCCESS == code) {
7,644!
2949
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanDeleteMark, &pNode->deleteMark);
7,645✔
2950
  }
2951
  if (TSDB_CODE_SUCCESS == code) {
7,644!
2952
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanIgnoreExpired, &pNode->igExpired);
7,645✔
2953
  }
2954
  if (TSDB_CODE_SUCCESS == code) {
7,644!
2955
    code = tjsonGetBoolValue(pJson, jkWindowPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
7,645✔
2956
  }
2957
  if (TSDB_CODE_SUCCESS == code) {
7,644!
2958
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanDestHasPrimaryKey, &pNode->destHasPrimaryKey);
7,645✔
2959
  }
2960

2961
  return code;
7,645✔
2962
}
2963

2964
static const char* jkIntervalPhysiPlanInterval = "Interval";
2965
static const char* jkIntervalPhysiPlanOffset = "Offset";
2966
static const char* jkIntervalPhysiPlanSliding = "Sliding";
2967
static const char* jkIntervalPhysiPlanIntervalUnit = "intervalUnit";
2968
static const char* jkIntervalPhysiPlanSlidingUnit = "slidingUnit";
2969
static const char* jkIntervalPhysiPlanStartTime = "StartTime";
2970
static const char* jkIntervalPhysiPlanEndTime = "EndTime";
2971

2972
static int32_t physiIntervalNodeToJson(const void* pObj, SJson* pJson) {
5,381✔
2973
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
5,381✔
2974

2975
  int32_t code = physiWindowNodeToJson(pObj, pJson);
5,381✔
2976
  if (TSDB_CODE_SUCCESS == code) {
5,381!
2977
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanInterval, pNode->interval);
5,381✔
2978
  }
2979
  if (TSDB_CODE_SUCCESS == code) {
5,381!
2980
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanOffset, pNode->offset);
5,381✔
2981
  }
2982
  if (TSDB_CODE_SUCCESS == code) {
5,381!
2983
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanSliding, pNode->sliding);
5,381✔
2984
  }
2985
  if (TSDB_CODE_SUCCESS == code) {
5,381!
2986
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanIntervalUnit, pNode->intervalUnit);
5,381✔
2987
  }
2988
  if (TSDB_CODE_SUCCESS == code) {
5,381!
2989
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanSlidingUnit, pNode->slidingUnit);
5,381✔
2990
  }
2991
  if (TSDB_CODE_SUCCESS == code) {
5,381!
2992
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanStartTime, pNode->timeRange.skey);
5,381✔
2993
  }
2994
  if (TSDB_CODE_SUCCESS == code) {
5,381!
2995
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanEndTime, pNode->timeRange.ekey);
5,381✔
2996
  }
2997

2998
  return code;
5,381✔
2999
}
3000

3001
static int32_t jsonToPhysiIntervalNode(const SJson* pJson, void* pObj) {
5,517✔
3002
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
5,517✔
3003

3004
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
5,517✔
3005
  if (TSDB_CODE_SUCCESS == code) {
5,517!
3006
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanInterval, &pNode->interval);
5,517✔
3007
  }
3008
  if (TSDB_CODE_SUCCESS == code) {
5,517!
3009
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanOffset, &pNode->offset);
5,517✔
3010
  }
3011
  if (TSDB_CODE_SUCCESS == code) {
5,517!
3012
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanSliding, &pNode->sliding);
5,517✔
3013
  }
3014
  if (TSDB_CODE_SUCCESS == code) {
5,517!
3015
    code = tjsonGetTinyIntValue(pJson, jkIntervalPhysiPlanIntervalUnit, &pNode->intervalUnit);
5,517✔
3016
  }
3017
  if (TSDB_CODE_SUCCESS == code) {
5,517!
3018
    code = tjsonGetTinyIntValue(pJson, jkIntervalPhysiPlanSlidingUnit, &pNode->slidingUnit);
5,517✔
3019
  }
3020
  if (TSDB_CODE_SUCCESS == code) {
5,517!
3021
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanStartTime, &pNode->timeRange.skey);
5,517✔
3022
  }
3023
  if (TSDB_CODE_SUCCESS == code) {
5,516!
3024
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanEndTime, &pNode->timeRange.ekey);
5,516✔
3025
  }
3026

3027
  return code;
5,517✔
3028
}
3029

3030
static const char* jkFillPhysiPlanMode = "Mode";
3031
static const char* jkFillPhysiPlanFillExprs = "FillExprs";
3032
static const char* jkFillPhysiPlanNotFillExprs = "NotFillExprs";
3033
static const char* jkFillPhysiPlanWStartTs = "WStartTs";
3034
static const char* jkFillPhysiPlanValues = "Values";
3035
static const char* jkFillPhysiPlanStartTime = "StartTime";
3036
static const char* jkFillPhysiPlanEndTime = "EndTime";
3037
static const char* jkFillPhysiPlanFillNullExprs = "FillNullExprs";
3038

3039
static int32_t physiFillNodeToJson(const void* pObj, SJson* pJson) {
681✔
3040
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
681✔
3041

3042
  int32_t code = physicPlanNodeToJson(pObj, pJson);
681✔
3043
  if (TSDB_CODE_SUCCESS == code) {
681!
3044
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanMode, pNode->mode);
681✔
3045
  }
3046
  if (TSDB_CODE_SUCCESS == code) {
681!
3047
    code = nodeListToJson(pJson, jkFillPhysiPlanFillExprs, pNode->pFillExprs);
681✔
3048
  }
3049
  if (TSDB_CODE_SUCCESS == code) {
681!
3050
    code = nodeListToJson(pJson, jkFillPhysiPlanNotFillExprs, pNode->pNotFillExprs);
681✔
3051
  }
3052
  if (TSDB_CODE_SUCCESS == code) {
681!
3053
    code = tjsonAddObject(pJson, jkFillPhysiPlanWStartTs, nodeToJson, pNode->pWStartTs);
681✔
3054
  }
3055
  if (TSDB_CODE_SUCCESS == code) {
681!
3056
    code = tjsonAddObject(pJson, jkFillPhysiPlanValues, nodeToJson, pNode->pValues);
681✔
3057
  }
3058
  if (TSDB_CODE_SUCCESS == code) {
681!
3059
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanStartTime, pNode->timeRange.skey);
681✔
3060
  }
3061
  if (TSDB_CODE_SUCCESS == code) {
681!
3062
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanEndTime, pNode->timeRange.ekey);
681✔
3063
  }
3064
  if (TSDB_CODE_SUCCESS == code) {
681!
3065
    code = nodeListToJson(pJson, jkFillPhysiPlanFillNullExprs, pNode->pFillNullExprs);
681✔
3066
  }
3067

3068
  return code;
681✔
3069
}
3070

3071
static int32_t jsonToPhysiFillNode(const SJson* pJson, void* pObj) {
682✔
3072
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
682✔
3073

3074
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
682✔
3075
  if (TSDB_CODE_SUCCESS == code) {
682!
3076
    tjsonGetNumberValue(pJson, jkFillPhysiPlanMode, pNode->mode, code);
682✔
3077
  }
3078
  if (TSDB_CODE_SUCCESS == code) {
682!
3079
    code = jsonToNodeList(pJson, jkFillPhysiPlanFillExprs, &pNode->pFillExprs);
682✔
3080
  }
3081
  if (TSDB_CODE_SUCCESS == code) {
682!
3082
    code = jsonToNodeList(pJson, jkFillPhysiPlanNotFillExprs, &pNode->pNotFillExprs);
682✔
3083
  }
3084
  if (TSDB_CODE_SUCCESS == code) {
682!
3085
    code = jsonToNodeObject(pJson, jkFillPhysiPlanWStartTs, &pNode->pWStartTs);
682✔
3086
  }
3087
  if (TSDB_CODE_SUCCESS == code) {
682!
3088
    code = jsonToNodeObject(pJson, jkFillPhysiPlanValues, &pNode->pValues);
682✔
3089
  }
3090
  if (TSDB_CODE_SUCCESS == code) {
682!
3091
    code = tjsonGetBigIntValue(pJson, jkFillPhysiPlanStartTime, &pNode->timeRange.skey);
682✔
3092
  }
3093
  if (TSDB_CODE_SUCCESS == code) {
682!
3094
    code = tjsonGetBigIntValue(pJson, jkFillPhysiPlanEndTime, &pNode->timeRange.ekey);
682✔
3095
  }
3096
  if (TSDB_CODE_SUCCESS == code) {
682!
3097
    code = jsonToNodeList(pJson, jkFillPhysiPlanFillNullExprs, &pNode->pFillNullExprs);
682✔
3098
  }
3099

3100
  return code;
682✔
3101
}
3102

3103
static const char* jkSessionWindowPhysiPlanGap = "Gap";
3104

3105
static int32_t physiSessionWindowNodeToJson(const void* pObj, SJson* pJson) {
1,014✔
3106
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
1,014✔
3107

3108
  int32_t code = physiWindowNodeToJson(pObj, pJson);
1,014✔
3109
  if (TSDB_CODE_SUCCESS == code) {
1,014!
3110
    code = tjsonAddIntegerToObject(pJson, jkSessionWindowPhysiPlanGap, pNode->gap);
1,014✔
3111
  }
3112

3113
  return code;
1,014✔
3114
}
3115

3116
static int32_t jsonToPhysiSessionWindowNode(const SJson* pJson, void* pObj) {
1,019✔
3117
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
1,019✔
3118

3119
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
1,019✔
3120
  if (TSDB_CODE_SUCCESS == code) {
1,019!
3121
    tjsonGetNumberValue(pJson, jkSessionWindowPhysiPlanGap, pNode->gap, code);
1,019✔
3122
  }
3123

3124
  return code;
1,019✔
3125
}
3126

3127
static const char* jkStateWindowPhysiPlanStateKey = "StateKey";
3128

3129
static int32_t physiStateWindowNodeToJson(const void* pObj, SJson* pJson) {
451✔
3130
  const SStateWinodwPhysiNode* pNode = (const SStateWinodwPhysiNode*)pObj;
451✔
3131

3132
  int32_t code = physiWindowNodeToJson(pObj, pJson);
451✔
3133
  if (TSDB_CODE_SUCCESS == code) {
451!
3134
    code = tjsonAddObject(pJson, jkStateWindowPhysiPlanStateKey, nodeToJson, pNode->pStateKey);
451✔
3135
  }
3136

3137
  return code;
451✔
3138
}
3139

3140
static int32_t jsonToPhysiStateWindowNode(const SJson* pJson, void* pObj) {
456✔
3141
  SStateWinodwPhysiNode* pNode = (SStateWinodwPhysiNode*)pObj;
456✔
3142

3143
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
456✔
3144
  if (TSDB_CODE_SUCCESS == code) {
456!
3145
    code = jsonToNodeObject(pJson, jkStateWindowPhysiPlanStateKey, &pNode->pStateKey);
456✔
3146
  }
3147

3148
  return code;
456✔
3149
}
3150

3151
static const char* jkEventWindowPhysiPlanStartCond = "StartCond";
3152
static const char* jkEventWindowPhysiPlanEndCond = "EndCond";
3153

3154
static int32_t physiEventWindowNodeToJson(const void* pObj, SJson* pJson) {
251✔
3155
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
251✔
3156

3157
  int32_t code = physiWindowNodeToJson(pObj, pJson);
251✔
3158
  if (TSDB_CODE_SUCCESS == code) {
251!
3159
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanStartCond, nodeToJson, pNode->pStartCond);
251✔
3160
  }
3161
  if (TSDB_CODE_SUCCESS == code) {
251!
3162
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanEndCond, nodeToJson, pNode->pEndCond);
251✔
3163
  }
3164

3165
  return code;
251✔
3166
}
3167

3168
static int32_t jsonToPhysiEventWindowNode(const SJson* pJson, void* pObj) {
255✔
3169
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
255✔
3170

3171
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
255✔
3172
  if (TSDB_CODE_SUCCESS == code) {
255!
3173
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanStartCond, &pNode->pStartCond);
255✔
3174
  }
3175
  if (TSDB_CODE_SUCCESS == code) {
255!
3176
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanEndCond, &pNode->pEndCond);
255✔
3177
  }
3178

3179
  return code;
255✔
3180
}
3181

3182
static const char* jkCountWindowPhysiPlanWindowCount = "WindowCount";
3183
static const char* jkCountWindowPhysiPlanWindowSliding = "WindowSliding";
3184

3185
static int32_t physiCountWindowNodeToJson(const void* pObj, SJson* pJson) {
376✔
3186
  const SCountWinodwPhysiNode* pNode = (const SCountWinodwPhysiNode*)pObj;
376✔
3187

3188
  int32_t code = physiWindowNodeToJson(pObj, pJson);
376✔
3189
  if (TSDB_CODE_SUCCESS == code) {
376!
3190
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowCount, pNode->windowCount);
376✔
3191
  }
3192
  if (TSDB_CODE_SUCCESS == code) {
376!
3193
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowSliding, pNode->windowSliding);
376✔
3194
  }
3195
  return code;
376✔
3196
}
3197

3198
static int32_t jsonToPhysiCountWindowNode(const SJson* pJson, void* pObj) {
398✔
3199
  SCountWinodwPhysiNode* pNode = (SCountWinodwPhysiNode*)pObj;
398✔
3200

3201
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
398✔
3202
  if (TSDB_CODE_SUCCESS == code) {
398!
3203
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowCount, &pNode->windowCount);
398✔
3204
  }
3205
  if (TSDB_CODE_SUCCESS == code) {
398!
3206
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowSliding, &pNode->windowSliding);
398✔
3207
  }
3208

3209
  return code;
398✔
3210
}
3211

3212
static const char* jkAnomalyWindowPhysiPlanAnomalyKey = "AnomalyKey";
3213
static const char* jkAnomalyWindowPhysiPlanAnomalyOption = "AnomalyOpt";
3214

3215
static int32_t physiAnomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
3216
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3217

3218
  int32_t code = physiWindowNodeToJson(pObj, pJson);
×
3219
  if (TSDB_CODE_SUCCESS == code) {
×
3220
    code = tjsonAddObject(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, nodeToJson, pNode->pAnomalyKey);
×
3221
  }
3222
  if (TSDB_CODE_SUCCESS == code) {
×
3223
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt);
×
3224
  }
3225
  return code;
×
3226
}
3227

3228
static int32_t jsonToPhysiAnomalyWindowNode(const SJson* pJson, void* pObj) {
×
3229
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3230

3231
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
×
3232
  if (TSDB_CODE_SUCCESS == code) {
×
3233
    code = jsonToNodeObject(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, &pNode->pAnomalyKey);
×
3234
  }
3235
  if (TSDB_CODE_SUCCESS == code) {
×
3236
    code = tjsonGetStringValue(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt);
×
3237
  }
3238

3239
  return code;
×
3240
}
3241

3242
static const char* jkPartitionPhysiPlanExprs = "Exprs";
3243
static const char* jkPartitionPhysiPlanPartitionKeys = "PartitionKeys";
3244
static const char* jkPartitionPhysiPlanTargets = "Targets";
3245
static const char* jkPartitionPhysiPlanNeedBlockOutputTsOrder = "NeedBlockOutputTsOrder";
3246
static const char* jkPartitionPhysiPlanTsSlotId = "tsSlotId";
3247

3248
static int32_t physiPartitionNodeToJson(const void* pObj, SJson* pJson) {
1,561✔
3249
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
1,561✔
3250

3251
  int32_t code = physicPlanNodeToJson(pObj, pJson);
1,561✔
3252
  if (TSDB_CODE_SUCCESS == code) {
1,561!
3253
    code = nodeListToJson(pJson, jkPartitionPhysiPlanExprs, pNode->pExprs);
1,561✔
3254
  }
3255
  if (TSDB_CODE_SUCCESS == code) {
1,561!
3256
    code = nodeListToJson(pJson, jkPartitionPhysiPlanPartitionKeys, pNode->pPartitionKeys);
1,561✔
3257
  }
3258
  if (TSDB_CODE_SUCCESS == code) {
1,561!
3259
    code = nodeListToJson(pJson, jkPartitionPhysiPlanTargets, pNode->pTargets);
1,561✔
3260
  }
3261
  if (TSDB_CODE_SUCCESS == code) {
1,561!
3262
    code = tjsonAddBoolToObject(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, pNode->needBlockOutputTsOrder);
1,561✔
3263
  }
3264
  if (TSDB_CODE_SUCCESS == code) {
1,561!
3265
    code = tjsonAddIntegerToObject(pJson, jkPartitionPhysiPlanTsSlotId, pNode->tsSlotId);
1,561✔
3266
  }
3267

3268
  return code;
1,561✔
3269
}
3270

3271
static int32_t jsonToPhysiPartitionNode(const SJson* pJson, void* pObj) {
1,558✔
3272
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
1,558✔
3273

3274
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
1,558✔
3275
  if (TSDB_CODE_SUCCESS == code) {
1,557!
3276
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanExprs, &pNode->pExprs);
1,557✔
3277
  }
3278
  if (TSDB_CODE_SUCCESS == code) {
1,558!
3279
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanPartitionKeys, &pNode->pPartitionKeys);
1,558✔
3280
  }
3281
  if (TSDB_CODE_SUCCESS == code) {
1,558!
3282
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanTargets, &pNode->pTargets);
1,558✔
3283
  }
3284
  if (TSDB_CODE_SUCCESS == code) {
1,558!
3285
    code = tjsonGetBoolValue(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, &pNode->needBlockOutputTsOrder);
1,558✔
3286
  }
3287
  if (TSDB_CODE_SUCCESS == code) {
1,558!
3288
    code = tjsonGetIntValue(pJson, jkPartitionPhysiPlanTsSlotId, &pNode->tsSlotId);
1,558✔
3289
  }
3290

3291
  return code;
1,558✔
3292
}
3293

3294
static const char* jkStreamPartitionPhysiPlanTags = "Tags";
3295
static const char* jkStreamPartitionPhysiPlanSubtable = "Subtable";
3296

3297
static int32_t physiStreamPartitionNodeToJson(const void* pObj, SJson* pJson) {
1,527✔
3298
  const SStreamPartitionPhysiNode* pNode = (const SStreamPartitionPhysiNode*)pObj;
1,527✔
3299

3300
  int32_t code = physiPartitionNodeToJson(pObj, pJson);
1,527✔
3301
  if (TSDB_CODE_SUCCESS == code) {
1,527!
3302
    code = nodeListToJson(pJson, jkStreamPartitionPhysiPlanTags, pNode->pTags);
1,527✔
3303
  }
3304
  if (TSDB_CODE_SUCCESS == code) {
1,527!
3305
    code = tjsonAddObject(pJson, jkStreamPartitionPhysiPlanSubtable, nodeToJson, pNode->pSubtable);
1,527✔
3306
  }
3307

3308
  return code;
1,527✔
3309
}
3310

3311
static int32_t jsonToPhysiStreamPartitionNode(const SJson* pJson, void* pObj) {
1,524✔
3312
  SStreamPartitionPhysiNode* pNode = (SStreamPartitionPhysiNode*)pObj;
1,524✔
3313

3314
  int32_t code = jsonToPhysiPartitionNode(pJson, pObj);
1,524✔
3315
  if (TSDB_CODE_SUCCESS == code) {
1,524!
3316
    code = jsonToNodeList(pJson, jkStreamPartitionPhysiPlanTags, &pNode->pTags);
1,524✔
3317
  }
3318
  if (TSDB_CODE_SUCCESS == code) {
1,524!
3319
    code = jsonToNodeObject(pJson, jkStreamPartitionPhysiPlanSubtable, &pNode->pSubtable);
1,524✔
3320
  }
3321

3322
  return code;
1,524✔
3323
}
3324

3325
static const char* jkIndefRowsFuncPhysiPlanExprs = "Exprs";
3326
static const char* jkIndefRowsFuncPhysiPlanFuncs = "Funcs";
3327

3328
static int32_t physiIndefRowsFuncNodeToJson(const void* pObj, SJson* pJson) {
20✔
3329
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
20✔
3330

3331
  int32_t code = physicPlanNodeToJson(pObj, pJson);
20✔
3332
  if (TSDB_CODE_SUCCESS == code) {
20!
3333
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanExprs, pNode->pExprs);
20✔
3334
  }
3335
  if (TSDB_CODE_SUCCESS == code) {
20!
3336
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanFuncs, pNode->pFuncs);
20✔
3337
  }
3338

3339
  return code;
20✔
3340
}
3341

3342
static int32_t jsonToPhysiIndefRowsFuncNode(const SJson* pJson, void* pObj) {
20✔
3343
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
20✔
3344

3345
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
20✔
3346
  if (TSDB_CODE_SUCCESS == code) {
20!
3347
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanExprs, &pNode->pExprs);
20✔
3348
  }
3349
  if (TSDB_CODE_SUCCESS == code) {
20!
3350
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanFuncs, &pNode->pFuncs);
20✔
3351
  }
3352

3353
  return code;
20✔
3354
}
3355

3356
static const char* jkInterpFuncPhysiPlanExprs = "Exprs";
3357
static const char* jkInterpFuncPhysiPlanFuncs = "Funcs";
3358
static const char* jkInterpFuncPhysiPlanStartTime = "StartTime";
3359
static const char* jkInterpFuncPhysiPlanEndTime = "EndTime";
3360
static const char* jkInterpFuncPhysiPlanInterval = "Interval";
3361
static const char* jkInterpFuncPhysiPlanIntervalUnit = "intervalUnit";
3362
static const char* jkInterpFuncPhysiPlanPrecision = "precision";
3363
static const char* jkInterpFuncPhysiPlanFillMode = "FillMode";
3364
static const char* jkInterpFuncPhysiPlanFillValues = "FillValues";
3365
static const char* jkInterpFuncPhysiPlanTimeSeries = "TimeSeries";
3366
static const char* jkInterpFuncPhysiPlanStreamNodeOption = "StreamNodeOption";
3367
static const char* jkInterpFuncPhysiPlanRangeInterval = "RangeInterval";
3368
static const char* jkInterpFuncPhysiPlanRangeIntervalUnit = "RangeIntervalUnit";
3369

3370
static int32_t physiInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
349✔
3371
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
349✔
3372

3373
  int32_t code = physicPlanNodeToJson(pObj, pJson);
349✔
3374
  if (TSDB_CODE_SUCCESS == code) {
349!
3375
    code = nodeListToJson(pJson, jkInterpFuncPhysiPlanExprs, pNode->pExprs);
349✔
3376
  }
3377
  if (TSDB_CODE_SUCCESS == code) {
349!
3378
    code = nodeListToJson(pJson, jkInterpFuncPhysiPlanFuncs, pNode->pFuncs);
349✔
3379
  }
3380
  if (TSDB_CODE_SUCCESS == code) {
349!
3381
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanStartTime, pNode->timeRange.skey);
349✔
3382
  }
3383
  if (TSDB_CODE_SUCCESS == code) {
349!
3384
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanEndTime, pNode->timeRange.ekey);
349✔
3385
  }
3386
  if (TSDB_CODE_SUCCESS == code) {
349!
3387
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanInterval, pNode->interval);
349✔
3388
  }
3389
  if (TSDB_CODE_SUCCESS == code) {
349!
3390
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanIntervalUnit, pNode->intervalUnit);
349✔
3391
  }
3392
  if (TSDB_CODE_SUCCESS == code) {
349!
3393
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanPrecision, pNode->precision);
349✔
3394
  }
3395
  if (TSDB_CODE_SUCCESS == code) {
349!
3396
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanFillMode, pNode->fillMode);
349✔
3397
  }
3398
  if (TSDB_CODE_SUCCESS == code) {
349!
3399
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanFillValues, nodeToJson, pNode->pFillValues);
349✔
3400
  }
3401
  if (TSDB_CODE_SUCCESS == code) {
349!
3402
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanTimeSeries, nodeToJson, pNode->pTimeSeries);
349✔
3403
  }
3404
  if (TSDB_CODE_SUCCESS == code) {
349!
3405
    code =
3406
        tjsonAddObject(pJson, jkInterpFuncPhysiPlanStreamNodeOption, streamNodeOptionToJson, &pNode->streamNodeOption);
349✔
3407
  }
3408
  if (TSDB_CODE_SUCCESS == code) {
349!
3409
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanRangeInterval, pNode->rangeInterval);
349✔
3410
  }
3411
  if (TSDB_CODE_SUCCESS == code) {
349!
3412
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanRangeIntervalUnit, pNode->rangeIntervalUnit);
349✔
3413
  }
3414

3415
  return code;
349✔
3416
}
3417

3418
static int32_t jsonToPhysiInterpFuncNode(const SJson* pJson, void* pObj) {
350✔
3419
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
350✔
3420

3421
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
350✔
3422
  if (TSDB_CODE_SUCCESS == code) {
350!
3423
    code = jsonToNodeList(pJson, jkInterpFuncPhysiPlanExprs, &pNode->pExprs);
350✔
3424
  }
3425
  if (TSDB_CODE_SUCCESS == code) {
350!
3426
    code = jsonToNodeList(pJson, jkInterpFuncPhysiPlanFuncs, &pNode->pFuncs);
350✔
3427
  }
3428
  if (TSDB_CODE_SUCCESS == code) {
350!
3429
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanStartTime, &pNode->timeRange.skey);
350✔
3430
  }
3431
  if (TSDB_CODE_SUCCESS == code) {
350!
3432
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanEndTime, &pNode->timeRange.ekey);
350✔
3433
  }
3434
  if (TSDB_CODE_SUCCESS == code) {
350!
3435
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanInterval, &pNode->interval);
350✔
3436
  }
3437
  if (TSDB_CODE_SUCCESS == code) {
350!
3438
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanIntervalUnit, &pNode->intervalUnit);
350✔
3439
  }
3440
  if (TSDB_CODE_SUCCESS == code) {
350!
3441
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanPrecision, &pNode->precision);
350✔
3442
  }
3443
  if (TSDB_CODE_SUCCESS == code) {
350!
3444
    tjsonGetNumberValue(pJson, jkInterpFuncPhysiPlanFillMode, pNode->fillMode, code);
350✔
3445
  }
3446
  if (TSDB_CODE_SUCCESS == code) {
350!
3447
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanFillValues, &pNode->pFillValues);
350✔
3448
  }
3449
  if (TSDB_CODE_SUCCESS == code) {
350!
3450
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanTimeSeries, &pNode->pTimeSeries);
350✔
3451
  }
3452
  if (TSDB_CODE_SUCCESS == code) {
350!
3453
    code =
3454
        tjsonToObject(pJson, jkInterpFuncPhysiPlanStreamNodeOption, jsonToStreamNodeOption, &pNode->streamNodeOption);
350✔
3455
  }
3456
  if (TSDB_CODE_SUCCESS == code) {
350!
3457
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanRangeInterval, &pNode->rangeInterval);
350✔
3458
  }
3459
  if (TSDB_CODE_SUCCESS == code) {
350!
3460
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanRangeIntervalUnit, &pNode->rangeIntervalUnit);
350✔
3461
  }
3462

3463
  return code;
350✔
3464
}
3465

3466
static const char* jkForecastFuncPhysiPlanExprs = "Exprs";
3467
static const char* jkForecastFuncPhysiPlanFuncs = "Funcs";
3468

3469
static int32_t physiForecastFuncNodeToJson(const void* pObj, SJson* pJson) {
×
3470
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
3471

3472
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3473
  if (TSDB_CODE_SUCCESS == code) {
×
3474
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanExprs, pNode->pExprs);
×
3475
  }
3476
  if (TSDB_CODE_SUCCESS == code) {
×
3477
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanFuncs, pNode->pFuncs);
×
3478
  }
3479

3480
  return code;
×
3481
}
3482

3483
static int32_t jsonToPhysiForecastFuncNode(const SJson* pJson, void* pObj) {
×
3484
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
3485

3486
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3487
  if (TSDB_CODE_SUCCESS == code) {
×
3488
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanExprs, &pNode->pExprs);
×
3489
  }
3490
  if (TSDB_CODE_SUCCESS == code) {
×
3491
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanFuncs, &pNode->pFuncs);
×
3492
  }
3493

3494
  return code;
×
3495
}
3496

3497
static const char* jkDataSinkInputDataBlockDesc = "InputDataBlockDesc";
3498

3499
static int32_t physicDataSinkNodeToJson(const void* pObj, SJson* pJson) {
3,606✔
3500
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
3,606✔
3501
  return tjsonAddObject(pJson, jkDataSinkInputDataBlockDesc, nodeToJson, pNode->pInputDataBlockDesc);
3,606✔
3502
}
3503

3504
static int32_t jsonToPhysicDataSinkNode(const SJson* pJson, void* pObj) {
1,078✔
3505
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
1,078✔
3506
  return jsonToNodeObject(pJson, jkDataSinkInputDataBlockDesc, (SNode**)&pNode->pInputDataBlockDesc);
1,078✔
3507
}
3508

3509
static int32_t physiDispatchNodeToJson(const void* pObj, SJson* pJson) { return physicDataSinkNodeToJson(pObj, pJson); }
3,588✔
3510

3511
static int32_t jsonToPhysiDispatchNode(const SJson* pJson, void* pObj) { return jsonToPhysicDataSinkNode(pJson, pObj); }
1,060✔
3512

3513
static const char* jkQueryInsertPhysiPlanInsertCols = "InsertCols";
3514
static const char* jkQueryInsertPhysiPlanStableId = "StableId";
3515
static const char* jkQueryInsertPhysiPlanTableId = "TableId";
3516
static const char* jkQueryInsertPhysiPlanTableType = "TableType";
3517
static const char* jkQueryInsertPhysiPlanTableFName = "TableFName";
3518
static const char* jkQueryInsertPhysiPlanVgId = "VgId";
3519
static const char* jkQueryInsertPhysiPlanEpSet = "EpSet";
3520
static const char* jkQueryInsertPhysiPlanExplain = "Explain";
3521

3522
static int32_t physiQueryInsertNodeToJson(const void* pObj, SJson* pJson) {
6✔
3523
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
6✔
3524

3525
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
6✔
3526
  if (TSDB_CODE_SUCCESS == code) {
6!
3527
    code = nodeListToJson(pJson, jkQueryInsertPhysiPlanInsertCols, pNode->pCols);
6✔
3528
  }
3529
  if (TSDB_CODE_SUCCESS == code) {
6!
3530
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanStableId, pNode->stableId);
6✔
3531
  }
3532
  if (TSDB_CODE_SUCCESS == code) {
6!
3533
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableId, pNode->tableId);
6✔
3534
  }
3535
  if (TSDB_CODE_SUCCESS == code) {
6!
3536
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableType, pNode->tableType);
6✔
3537
  }
3538
  if (TSDB_CODE_SUCCESS == code) {
6!
3539
    code = tjsonAddStringToObject(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName);
6✔
3540
  }
3541
  if (TSDB_CODE_SUCCESS == code) {
6!
3542
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanVgId, pNode->vgId);
6✔
3543
  }
3544
  if (TSDB_CODE_SUCCESS == code) {
6!
3545
    code = tjsonAddObject(pJson, jkQueryInsertPhysiPlanEpSet, epSetToJson, &pNode->epSet);
6✔
3546
  }
3547
  if (TSDB_CODE_SUCCESS == code) {
6!
3548
    code = tjsonAddBoolToObject(pJson, jkQueryInsertPhysiPlanExplain, pNode->explain);
6✔
3549
  }
3550

3551
  return code;
6✔
3552
}
3553

3554
static int32_t jsonToPhysiQueryInsertNode(const SJson* pJson, void* pObj) {
6✔
3555
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
6✔
3556

3557
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
6✔
3558
  if (TSDB_CODE_SUCCESS == code) {
6!
3559
    code = jsonToNodeList(pJson, jkQueryInsertPhysiPlanInsertCols, &pNode->pCols);
6✔
3560
  }
3561
  if (TSDB_CODE_SUCCESS == code) {
6!
3562
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanStableId, &pNode->stableId);
6✔
3563
  }
3564
  if (TSDB_CODE_SUCCESS == code) {
6!
3565
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanTableId, &pNode->tableId);
6✔
3566
  }
3567
  if (TSDB_CODE_SUCCESS == code) {
6!
3568
    code = tjsonGetTinyIntValue(pJson, jkQueryInsertPhysiPlanTableType, &pNode->tableType);
6✔
3569
  }
3570
  if (TSDB_CODE_SUCCESS == code) {
6!
3571
    code = tjsonGetStringValue(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName);
6✔
3572
  }
3573
  if (TSDB_CODE_SUCCESS == code) {
6!
3574
    code = tjsonGetIntValue(pJson, jkQueryInsertPhysiPlanVgId, &pNode->vgId);
6✔
3575
  }
3576
  if (TSDB_CODE_SUCCESS == code) {
6!
3577
    code = tjsonToObject(pJson, jkQueryInsertPhysiPlanEpSet, jsonToEpSet, &pNode->epSet);
6✔
3578
  }
3579
  if (TSDB_CODE_SUCCESS == code) {
6!
3580
    code = tjsonGetBoolValue(pJson, jkQueryInsertPhysiPlanExplain, &pNode->explain);
6✔
3581
  }
3582

3583
  return code;
6✔
3584
}
3585

3586
static const char* jkDeletePhysiPlanTableId = "TableId";
3587
static const char* jkDeletePhysiPlanTableType = "TableType";
3588
static const char* jkDeletePhysiPlanTableFName = "TableFName";
3589
static const char* jkDeletePhysiPlanTsColName = "TsColName";
3590
static const char* jkDeletePhysiPlanDeleteTimeRangeStartKey = "DeleteTimeRangeStartKey";
3591
static const char* jkDeletePhysiPlanDeleteTimeRangeEndKey = "DeleteTimeRangeEndKey";
3592
static const char* jkDeletePhysiPlanAffectedRows = "AffectedRows";
3593
static const char* jkDeletePhysiPlanStartTs = "StartTs";
3594
static const char* jkDeletePhysiPlanEndTs = "EndTs";
3595

3596
static int32_t physiDeleteNodeToJson(const void* pObj, SJson* pJson) {
12✔
3597
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
12✔
3598

3599
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
12✔
3600
  if (TSDB_CODE_SUCCESS == code) {
12!
3601
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableId, pNode->tableId);
12✔
3602
  }
3603
  if (TSDB_CODE_SUCCESS == code) {
12!
3604
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableType, pNode->tableType);
12✔
3605
  }
3606
  if (TSDB_CODE_SUCCESS == code) {
12!
3607
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName);
12✔
3608
  }
3609
  if (TSDB_CODE_SUCCESS == code) {
12!
3610
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName);
12✔
3611
  }
3612
  if (TSDB_CODE_SUCCESS == code) {
12!
3613
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, pNode->deleteTimeRange.skey);
12✔
3614
  }
3615
  if (TSDB_CODE_SUCCESS == code) {
12!
3616
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, pNode->deleteTimeRange.ekey);
12✔
3617
  }
3618
  if (TSDB_CODE_SUCCESS == code) {
12!
3619
    code = tjsonAddObject(pJson, jkDeletePhysiPlanAffectedRows, nodeToJson, pNode->pAffectedRows);
12✔
3620
  }
3621
  if (TSDB_CODE_SUCCESS == code) {
12!
3622
    code = tjsonAddObject(pJson, jkDeletePhysiPlanStartTs, nodeToJson, pNode->pStartTs);
12✔
3623
  }
3624
  if (TSDB_CODE_SUCCESS == code) {
12!
3625
    code = tjsonAddObject(pJson, jkDeletePhysiPlanEndTs, nodeToJson, pNode->pEndTs);
12✔
3626
  }
3627

3628
  return code;
12✔
3629
}
3630

3631
static int32_t jsonToPhysiDeleteNode(const SJson* pJson, void* pObj) {
12✔
3632
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
12✔
3633

3634
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
12✔
3635
  if (TSDB_CODE_SUCCESS == code) {
12!
3636
    code = tjsonGetUBigIntValue(pJson, jkDeletePhysiPlanTableId, &pNode->tableId);
12✔
3637
  }
3638
  if (TSDB_CODE_SUCCESS == code) {
12!
3639
    code = tjsonGetTinyIntValue(pJson, jkDeletePhysiPlanTableType, &pNode->tableType);
12✔
3640
  }
3641
  if (TSDB_CODE_SUCCESS == code) {
12!
3642
    code = tjsonGetStringValue(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName);
12✔
3643
  }
3644
  if (TSDB_CODE_SUCCESS == code) {
12!
3645
    code = tjsonGetStringValue(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName);
12✔
3646
  }
3647
  if (TSDB_CODE_SUCCESS == code) {
12!
3648
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, &pNode->deleteTimeRange.skey);
12✔
3649
  }
3650
  if (TSDB_CODE_SUCCESS == code) {
12!
3651
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, &pNode->deleteTimeRange.ekey);
12✔
3652
  }
3653
  if (TSDB_CODE_SUCCESS == code) {
12!
3654
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanAffectedRows, &pNode->pAffectedRows);
12✔
3655
  }
3656
  if (TSDB_CODE_SUCCESS == code) {
12!
3657
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanStartTs, &pNode->pStartTs);
12✔
3658
  }
3659
  if (TSDB_CODE_SUCCESS == code) {
12!
3660
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanEndTs, &pNode->pEndTs);
12✔
3661
  }
3662

3663
  return code;
12✔
3664
}
3665

3666
static const char* jkGroupCachePhysiPlanGroupCols = "GroupColumns";
3667
static const char* jkGroupCachePhysiPlanGrpColsMayBeNull = "GroupColumnsMayBeNull";
3668
static const char* jkGroupCachePhysiPlanGroupByUid = "GroupByUid";
3669
static const char* jkGroupCachePhysiPlanGlobalGroup = "GlobalGroup";
3670
static const char* jkGroupCachePhysiPlanBatchFetch = "BatchFetch";
3671

3672
static int32_t physiGroupCacheNodeToJson(const void* pObj, SJson* pJson) {
×
3673
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
×
3674

3675
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3676
  if (TSDB_CODE_SUCCESS == code) {
×
3677
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, pNode->grpColsMayBeNull);
×
3678
  }
3679
  if (TSDB_CODE_SUCCESS == code) {
×
3680
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGroupByUid, pNode->grpByUid);
×
3681
  }
3682
  if (TSDB_CODE_SUCCESS == code) {
×
3683
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGlobalGroup, pNode->globalGrp);
×
3684
  }
3685
  if (TSDB_CODE_SUCCESS == code) {
×
3686
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanBatchFetch, pNode->batchFetch);
×
3687
  }
3688
  if (TSDB_CODE_SUCCESS == code) {
×
3689
    code = nodeListToJson(pJson, jkGroupCachePhysiPlanGroupCols, pNode->pGroupCols);
×
3690
  }
3691
  return code;
×
3692
}
3693

3694
static int32_t jsonToPhysiGroupCacheNode(const SJson* pJson, void* pObj) {
×
3695
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
×
3696

3697
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3698
  if (TSDB_CODE_SUCCESS == code) {
×
3699
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, &pNode->grpColsMayBeNull);
×
3700
  }
3701
  if (TSDB_CODE_SUCCESS == code) {
×
3702
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGroupByUid, &pNode->grpByUid);
×
3703
  }
3704
  if (TSDB_CODE_SUCCESS == code) {
×
3705
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGlobalGroup, &pNode->globalGrp);
×
3706
  }
3707
  if (TSDB_CODE_SUCCESS == code) {
×
3708
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanBatchFetch, &pNode->batchFetch);
×
3709
  }
3710
  if (TSDB_CODE_SUCCESS == code) {
×
3711
    code = jsonToNodeList(pJson, jkGroupCachePhysiPlanGroupCols, &pNode->pGroupCols);
×
3712
  }
3713
  return code;
×
3714
}
3715

3716
static const char* jkDynQueryCtrlPhysiPlanQueryType = "QueryType";
3717
static const char* jkDynQueryCtrlPhysiPlanBatchFetch = "BatchFetch";
3718
static const char* jkDynQueryCtrlPhysiPlanVgSlot0 = "VgSlot[0]";
3719
static const char* jkDynQueryCtrlPhysiPlanVgSlot1 = "VgSlot[1]";
3720
static const char* jkDynQueryCtrlPhysiPlanUidSlot0 = "UidSlot[0]";
3721
static const char* jkDynQueryCtrlPhysiPlanUidSlot1 = "UidSlot[1]";
3722
static const char* jkDynQueryCtrlPhysiPlanSrcScan0 = "SrcScan[0]";
3723
static const char* jkDynQueryCtrlPhysiPlanSrcScan1 = "SrcScan[1]";
3724

3725
static int32_t physiDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
×
3726
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
×
3727

3728
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3729
  if (TSDB_CODE_SUCCESS == code) {
×
3730
    code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType);
×
3731
  }
3732
  if (TSDB_CODE_SUCCESS == code) {
×
3733
    switch (pNode->qType) {
×
3734
      case DYN_QTYPE_STB_HASH: {
×
3735
        code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanBatchFetch, pNode->stbJoin.batchFetch);
×
3736
        if (TSDB_CODE_SUCCESS == code) {
×
3737
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot0, pNode->stbJoin.vgSlot[0]);
×
3738
        }
3739
        if (TSDB_CODE_SUCCESS == code) {
×
3740
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot1, pNode->stbJoin.vgSlot[1]);
×
3741
        }
3742
        if (TSDB_CODE_SUCCESS == code) {
×
3743
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot0, pNode->stbJoin.uidSlot[0]);
×
3744
        }
3745
        if (TSDB_CODE_SUCCESS == code) {
×
3746
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot1, pNode->stbJoin.uidSlot[1]);
×
3747
        }
3748
        if (TSDB_CODE_SUCCESS == code) {
×
3749
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan0, pNode->stbJoin.srcScan[0]);
×
3750
        }
3751
        if (TSDB_CODE_SUCCESS == code) {
×
3752
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan1, pNode->stbJoin.srcScan[1]);
×
3753
        }
3754
        break;
×
3755
      }
3756
      default:
×
3757
        return TSDB_CODE_INVALID_PARA;
×
3758
    }
3759
  }
3760
  return code;
×
3761
}
3762

3763
static int32_t jsonToPhysiDynQueryCtrlNode(const SJson* pJson, void* pObj) {
×
3764
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
×
3765

3766
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3767
  if (TSDB_CODE_SUCCESS == code) {
×
3768
    tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType, code);
×
3769
  }
3770
  if (TSDB_CODE_SUCCESS == code) {
×
3771
    switch (pNode->qType) {
×
3772
      case DYN_QTYPE_STB_HASH: {
×
3773
        tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType, code);
×
3774
        if (TSDB_CODE_SUCCESS == code) {
×
3775
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanBatchFetch, &pNode->stbJoin.batchFetch);
×
3776
        }
3777
        if (TSDB_CODE_SUCCESS == code) {
×
3778
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanVgSlot0, pNode->stbJoin.vgSlot[0], code);
×
3779
        }
3780
        if (TSDB_CODE_SUCCESS == code) {
×
3781
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanVgSlot1, pNode->stbJoin.vgSlot[1], code);
×
3782
        }
3783
        if (TSDB_CODE_SUCCESS == code) {
×
3784
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanUidSlot0, pNode->stbJoin.uidSlot[0], code);
×
3785
        }
3786
        if (TSDB_CODE_SUCCESS == code) {
×
3787
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanUidSlot1, pNode->stbJoin.uidSlot[1], code);
×
3788
        }
3789
        if (TSDB_CODE_SUCCESS == code) {
×
3790
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanSrcScan0, &pNode->stbJoin.srcScan[0]);
×
3791
        }
3792
        if (TSDB_CODE_SUCCESS == code) {
×
3793
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanSrcScan1, &pNode->stbJoin.srcScan[1]);
×
3794
        }
3795
        break;
×
3796
      }
3797
      default:
×
3798
        return TSDB_CODE_INVALID_PARA;
×
3799
    }
3800
  }
3801

3802
  return code;
×
3803
}
3804

3805
static const char* jkQueryNodeAddrId = "Id";
3806
static const char* jkQueryNodeAddrInUse = "InUse";
3807
static const char* jkQueryNodeAddrNumOfEps = "NumOfEps";
3808
static const char* jkQueryNodeAddrEps = "Eps";
3809

3810
static int32_t queryNodeAddrToJson(const void* pObj, SJson* pJson) {
16,996✔
3811
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
16,996✔
3812

3813
  int32_t code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrId, pNode->nodeId);
16,996✔
3814
  if (TSDB_CODE_SUCCESS == code) {
16,995!
3815
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrInUse, pNode->epSet.inUse);
16,995✔
3816
  }
3817
  if (TSDB_CODE_SUCCESS == code) {
16,992!
3818
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrNumOfEps, pNode->epSet.numOfEps);
16,993✔
3819
  }
3820
  if (TSDB_CODE_SUCCESS == code) {
16,992!
3821
    code = tjsonAddArray(pJson, jkQueryNodeAddrEps, epToJson, pNode->epSet.eps, sizeof(SEp), pNode->epSet.numOfEps);
16,993✔
3822
  }
3823

3824
  return code;
16,994✔
3825
}
3826

3827
static int32_t jsonToQueryNodeAddr(const SJson* pJson, void* pObj) {
13,473✔
3828
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
13,473✔
3829

3830
  int32_t code = tjsonGetIntValue(pJson, jkQueryNodeAddrId, &pNode->nodeId);
13,473✔
3831
  if (TSDB_CODE_SUCCESS == code) {
13,474!
3832
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrInUse, &pNode->epSet.inUse);
13,474✔
3833
  }
3834
  if (TSDB_CODE_SUCCESS == code) {
13,474!
3835
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrNumOfEps, &pNode->epSet.numOfEps);
13,474✔
3836
  }
3837
  if (TSDB_CODE_SUCCESS == code) {
13,472!
3838
    code = tjsonToArray(pJson, jkQueryNodeAddrEps, jsonToEp, pNode->epSet.eps, sizeof(SEp));
13,472✔
3839
  }
3840

3841
  return code;
13,473✔
3842
}
3843

3844
static const char* jkSubplanId = "Id";
3845
static const char* jkSubplanType = "SubplanType";
3846
static const char* jkSubplanMsgType = "MsgType";
3847
static const char* jkSubplanLevel = "Level";
3848
static const char* jkSubplanDbFName = "DbFName";
3849
static const char* jkSubplanUser = "User";
3850
static const char* jkSubplanNodeAddr = "NodeAddr";
3851
static const char* jkSubplanRootNode = "RootNode";
3852
static const char* jkSubplanDataSink = "DataSink";
3853
static const char* jkSubplanTagCond = "TagCond";
3854
static const char* jkSubplanTagIndexCond = "TagIndexCond";
3855
static const char* jkSubplanShowRewrite = "ShowRewrite";
3856
static const char* jkSubplanRowsThreshold = "RowThreshold";
3857
static const char* jkSubplanDynamicRowsThreshold = "DyRowThreshold";
3858
static const char* jkSubplanIsView = "IsView";
3859
static const char* jkSubplanIsAudit = "IsAudit";
3860

3861
static int32_t subplanToJson(const void* pObj, SJson* pJson) {
16,040✔
3862
  const SSubplan* pNode = (const SSubplan*)pObj;
16,040✔
3863

3864
  int32_t code = tjsonAddObject(pJson, jkSubplanId, subplanIdToJson, &pNode->id);
16,040✔
3865
  if (TSDB_CODE_SUCCESS == code) {
16,046!
3866
    code = tjsonAddIntegerToObject(pJson, jkSubplanType, pNode->subplanType);
16,046✔
3867
  }
3868
  if (TSDB_CODE_SUCCESS == code) {
16,046!
3869
    code = tjsonAddIntegerToObject(pJson, jkSubplanMsgType, pNode->msgType);
16,046✔
3870
  }
3871
  if (TSDB_CODE_SUCCESS == code) {
16,047!
3872
    code = tjsonAddIntegerToObject(pJson, jkSubplanLevel, pNode->level);
16,047✔
3873
  }
3874
  if (TSDB_CODE_SUCCESS == code) {
16,046!
3875
    code = tjsonAddStringToObject(pJson, jkSubplanDbFName, pNode->dbFName);
16,046✔
3876
  }
3877
  if (TSDB_CODE_SUCCESS == code) {
16,045!
3878
    code = tjsonAddStringToObject(pJson, jkSubplanUser, pNode->user);
16,045✔
3879
  }
3880
  if (TSDB_CODE_SUCCESS == code) {
16,048!
3881
    code = tjsonAddObject(pJson, jkSubplanNodeAddr, queryNodeAddrToJson, &pNode->execNode);
16,048✔
3882
  }
3883
  if (TSDB_CODE_SUCCESS == code) {
16,048!
3884
    code = tjsonAddObject(pJson, jkSubplanRootNode, nodeToJson, pNode->pNode);
16,048✔
3885
  }
3886
  if (TSDB_CODE_SUCCESS == code) {
16,046!
3887
    code = tjsonAddObject(pJson, jkSubplanDataSink, nodeToJson, pNode->pDataSink);
16,046✔
3888
  }
3889
  if (TSDB_CODE_SUCCESS == code) {
16,044!
3890
    code = tjsonAddObject(pJson, jkSubplanTagCond, nodeToJson, pNode->pTagCond);
16,044✔
3891
  }
3892
  if (TSDB_CODE_SUCCESS == code) {
16,044!
3893
    code = tjsonAddObject(pJson, jkSubplanTagIndexCond, nodeToJson, pNode->pTagIndexCond);
16,044✔
3894
  }
3895
  if (TSDB_CODE_SUCCESS == code) {
16,044!
3896
    code = tjsonAddBoolToObject(pJson, jkSubplanShowRewrite, pNode->showRewrite);
16,044✔
3897
  }
3898
  if (TSDB_CODE_SUCCESS == code) {
16,046!
3899
    code = tjsonAddBoolToObject(pJson, jkSubplanIsView, pNode->isView);
16,046✔
3900
  }
3901
  if (TSDB_CODE_SUCCESS == code) {
16,047!
3902
    code = tjsonAddBoolToObject(pJson, jkSubplanIsAudit, pNode->isAudit);
16,047✔
3903
  }
3904
  if (TSDB_CODE_SUCCESS == code) {
16,046!
3905
    code = tjsonAddIntegerToObject(pJson, jkSubplanRowsThreshold, pNode->rowsThreshold);
16,046✔
3906
  }
3907
  if (TSDB_CODE_SUCCESS == code) {
16,047!
3908
    code = tjsonAddBoolToObject(pJson, jkSubplanDynamicRowsThreshold, pNode->dynamicRowThreshold);
16,047✔
3909
  }
3910

3911
  return code;
16,047✔
3912
}
3913

3914
static int32_t jsonToSubplan(const SJson* pJson, void* pObj) {
13,473✔
3915
  SSubplan* pNode = (SSubplan*)pObj;
13,473✔
3916

3917
  int32_t code = tjsonToObject(pJson, jkSubplanId, jsonToSubplanId, &pNode->id);
13,473✔
3918
  if (TSDB_CODE_SUCCESS == code) {
13,475!
3919
    tjsonGetNumberValue(pJson, jkSubplanType, pNode->subplanType, code);
13,475✔
3920
  }
3921
  if (TSDB_CODE_SUCCESS == code) {
13,475!
3922
    code = tjsonGetIntValue(pJson, jkSubplanMsgType, &pNode->msgType);
13,475✔
3923
  }
3924
  if (TSDB_CODE_SUCCESS == code) {
13,475!
3925
    code = tjsonGetIntValue(pJson, jkSubplanLevel, &pNode->level);
13,475✔
3926
  }
3927
  if (TSDB_CODE_SUCCESS == code) {
13,474!
3928
    code = tjsonGetStringValue(pJson, jkSubplanDbFName, pNode->dbFName);
13,474✔
3929
  }
3930
  if (TSDB_CODE_SUCCESS == code) {
13,473!
3931
    code = tjsonGetStringValue(pJson, jkSubplanUser, pNode->user);
13,473✔
3932
  }
3933
  if (TSDB_CODE_SUCCESS == code) {
13,474!
3934
    code = tjsonToObject(pJson, jkSubplanNodeAddr, jsonToQueryNodeAddr, &pNode->execNode);
13,474✔
3935
  }
3936
  if (TSDB_CODE_SUCCESS == code) {
13,473!
3937
    code = jsonToNodeObject(pJson, jkSubplanRootNode, (SNode**)&pNode->pNode);
13,473✔
3938
  }
3939
  if (TSDB_CODE_SUCCESS == code) {
13,474!
3940
    code = jsonToNodeObject(pJson, jkSubplanDataSink, (SNode**)&pNode->pDataSink);
13,474✔
3941
  }
3942
  if (TSDB_CODE_SUCCESS == code) {
13,475!
3943
    code = jsonToNodeObject(pJson, jkSubplanTagCond, (SNode**)&pNode->pTagCond);
13,475✔
3944
  }
3945
  if (TSDB_CODE_SUCCESS == code) {
13,475!
3946
    code = jsonToNodeObject(pJson, jkSubplanTagIndexCond, (SNode**)&pNode->pTagIndexCond);
13,475✔
3947
  }
3948
  if (TSDB_CODE_SUCCESS == code) {
13,474!
3949
    code = tjsonGetBoolValue(pJson, jkSubplanShowRewrite, &pNode->showRewrite);
13,474✔
3950
  }
3951
  if (TSDB_CODE_SUCCESS == code) {
13,475!
3952
    code = tjsonGetBoolValue(pJson, jkSubplanIsView, &pNode->isView);
13,475✔
3953
  }
3954
  if (TSDB_CODE_SUCCESS == code) {
13,475!
3955
    code = tjsonGetBoolValue(pJson, jkSubplanIsAudit, &pNode->isAudit);
13,475✔
3956
  }
3957
  if (TSDB_CODE_SUCCESS == code) {
13,474!
3958
    code = tjsonGetIntValue(pJson, jkSubplanRowsThreshold, &pNode->rowsThreshold);
13,474✔
3959
  }
3960
  if (TSDB_CODE_SUCCESS == code) {
13,475!
3961
    code = tjsonGetBoolValue(pJson, jkSubplanDynamicRowsThreshold, &pNode->dynamicRowThreshold);
13,475✔
3962
  }
3963

3964
  return code;
13,475✔
3965
}
3966

3967
static const char* jkPlanQueryId = "QueryId";
3968
static const char* jkPlanNumOfSubplans = "NumOfSubplans";
3969
static const char* jkPlanSubplans = "Subplans";
3970

3971
static int32_t planToJson(const void* pObj, SJson* pJson) {
2,767✔
3972
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
2,767✔
3973

3974
  int32_t code = tjsonAddIntegerToObject(pJson, jkPlanQueryId, pNode->queryId);
2,767✔
3975
  if (TSDB_CODE_SUCCESS == code) {
2,767!
3976
    code = tjsonAddIntegerToObject(pJson, jkPlanNumOfSubplans, pNode->numOfSubplans);
2,767✔
3977
  }
3978
  if (TSDB_CODE_SUCCESS == code) {
2,767!
3979
    code = nodeListToJson(pJson, jkPlanSubplans, pNode->pSubplans);
2,767✔
3980
  }
3981

3982
  return code;
2,767✔
3983
}
3984

3985
static int32_t jsonToPlan(const SJson* pJson, void* pObj) {
2,453✔
3986
  SQueryPlan* pNode = (SQueryPlan*)pObj;
2,453✔
3987

3988
  int32_t code = tjsonGetUBigIntValue(pJson, jkPlanQueryId, &pNode->queryId);
2,453✔
3989
  if (TSDB_CODE_SUCCESS == code) {
2,453!
3990
    code = tjsonGetIntValue(pJson, jkPlanNumOfSubplans, &pNode->numOfSubplans);
2,453✔
3991
  }
3992
  if (TSDB_CODE_SUCCESS == code) {
2,453!
3993
    code = jsonToNodeList(pJson, jkPlanSubplans, &pNode->pSubplans);
2,453✔
3994
  }
3995

3996
  return code;
2,453✔
3997
}
3998

3999
static const char* jkAggLogicPlanGroupKeys = "GroupKeys";
4000
static const char* jkAggLogicPlanAggFuncs = "AggFuncs";
4001

4002
static int32_t logicAggNodeToJson(const void* pObj, SJson* pJson) {
1,174✔
4003
  const SAggLogicNode* pNode = (const SAggLogicNode*)pObj;
1,174✔
4004

4005
  int32_t code = logicPlanNodeToJson(pObj, pJson);
1,174✔
4006
  if (TSDB_CODE_SUCCESS == code) {
1,174!
4007
    code = nodeListToJson(pJson, jkAggLogicPlanGroupKeys, pNode->pGroupKeys);
1,174✔
4008
  }
4009
  if (TSDB_CODE_SUCCESS == code) {
1,174!
4010
    code = nodeListToJson(pJson, jkAggLogicPlanAggFuncs, pNode->pAggFuncs);
1,174✔
4011
  }
4012

4013
  return code;
1,174✔
4014
}
4015

4016
static int32_t jsonToLogicAggNode(const SJson* pJson, void* pObj) {
556✔
4017
  SAggLogicNode* pNode = (SAggLogicNode*)pObj;
556✔
4018

4019
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
556✔
4020
  if (TSDB_CODE_SUCCESS == code) {
556!
4021
    code = jsonToNodeList(pJson, jkAggLogicPlanGroupKeys, &pNode->pGroupKeys);
556✔
4022
  }
4023
  if (TSDB_CODE_SUCCESS == code) {
556!
4024
    code = jsonToNodeList(pJson, jkAggLogicPlanAggFuncs, &pNode->pAggFuncs);
556✔
4025
  }
4026

4027
  return code;
556✔
4028
}
4029

4030
static const char* jkDataTypeType = "Type";
4031
static const char* jkDataTypePrecision = "Precision";
4032
static const char* jkDataTypeScale = "Scale";
4033
static const char* jkDataTypeDataBytes = "Bytes";
4034

4035
static int32_t dataTypeToJson(const void* pObj, SJson* pJson) {
2,177,241✔
4036
  const SDataType* pNode = (const SDataType*)pObj;
2,177,241✔
4037

4038
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataTypeType, pNode->type);
2,177,241✔
4039
  if (TSDB_CODE_SUCCESS == code) {
2,177,204!
4040
    code = tjsonAddIntegerToObject(pJson, jkDataTypePrecision, pNode->precision);
2,177,204✔
4041
  }
4042
  if (TSDB_CODE_SUCCESS == code) {
2,177,194!
4043
    code = tjsonAddIntegerToObject(pJson, jkDataTypeScale, pNode->scale);
2,177,194✔
4044
  }
4045
  if (TSDB_CODE_SUCCESS == code) {
2,177,181!
4046
    code = tjsonAddIntegerToObject(pJson, jkDataTypeDataBytes, pNode->bytes);
2,177,181✔
4047
  }
4048

4049
  return code;
2,177,180✔
4050
}
4051

4052
static int32_t jsonToDataType(const SJson* pJson, void* pObj) {
2,892,817✔
4053
  SDataType* pNode = (SDataType*)pObj;
2,892,817✔
4054

4055
  int32_t code = tjsonGetUTinyIntValue(pJson, jkDataTypeType, &pNode->type);
2,892,817✔
4056
  if (TSDB_CODE_SUCCESS == code) {
2,890,121!
4057
    code = tjsonGetUTinyIntValue(pJson, jkDataTypePrecision, &pNode->precision);
2,890,130✔
4058
  }
4059
  if (TSDB_CODE_SUCCESS == code) {
2,890,534!
4060
    code = tjsonGetUTinyIntValue(pJson, jkDataTypeScale, &pNode->scale);
2,890,552✔
4061
  }
4062
  if (TSDB_CODE_SUCCESS == code) {
2,889,026!
4063
    code = tjsonGetIntValue(pJson, jkDataTypeDataBytes, &pNode->bytes);
2,889,050✔
4064
  }
4065

4066
  return TSDB_CODE_SUCCESS;
2,889,330✔
4067
}
4068

4069
static const char* jkExprDataType = "DataType";
4070
static const char* jkExprAliasName = "AliasName";
4071
static const char* jkExprUserAlias = "UserAlias";
4072

4073
static int32_t exprNodeToJson(const void* pObj, SJson* pJson) {
1,418,170✔
4074
  const SExprNode* pNode = (const SExprNode*)pObj;
1,418,170✔
4075

4076
  int32_t code = tjsonAddObject(pJson, jkExprDataType, dataTypeToJson, &pNode->resType);
1,418,170✔
4077
  if (TSDB_CODE_SUCCESS == code) {
1,418,175!
4078
    code = tjsonAddStringToObject(pJson, jkExprAliasName, pNode->aliasName);
1,418,175✔
4079
  }
4080
  if (TSDB_CODE_SUCCESS == code) {
1,418,170!
4081
    code = tjsonAddStringToObject(pJson, jkExprUserAlias, pNode->userAlias);
1,418,170✔
4082
  }
4083

4084
  return code;
1,418,167✔
4085
}
4086

4087
static int32_t jsonToExprNode(const SJson* pJson, void* pObj) {
2,157,877✔
4088
  SExprNode* pNode = (SExprNode*)pObj;
2,157,877✔
4089

4090
  int32_t code = tjsonToObject(pJson, jkExprDataType, jsonToDataType, &pNode->resType);
2,157,877✔
4091
  if (TSDB_CODE_SUCCESS == code) {
2,156,829!
4092
    code = tjsonGetStringValue(pJson, jkExprAliasName, pNode->aliasName);
2,156,830✔
4093
  }
4094
  if (TSDB_CODE_SUCCESS == code) {
2,158,481!
4095
    code = tjsonGetStringValue(pJson, jkExprUserAlias, pNode->userAlias);
2,158,484✔
4096
  }
4097

4098
  return code;
2,158,506✔
4099
}
4100

4101
static const char* jkColumnTableId = "TableId";
4102
static const char* jkColumnTableType = "TableType";
4103
static const char* jkColumnColId = "ColId";
4104
static const char* jkColumnColType = "ColType";
4105
static const char* jkColumnProjId = "ProjId";
4106
static const char* jkColumnDbName = "DbName";
4107
static const char* jkColumnTableName = "TableName";
4108
static const char* jkColumnTableAlias = "TableAlias";
4109
static const char* jkColumnColName = "ColName";
4110
static const char* jkColumnDataBlockId = "DataBlockId";
4111
static const char* jkColumnSlotId = "SlotId";
4112
static const char* jkColumnTableHasPk = "TableHasPk";
4113
static const char* jkColumnIsPk = "IsPk";
4114
static const char* jkColumnNumOfPKs = "NumOfPKs";
4115

4116
static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
914,242✔
4117
  const SColumnNode* pNode = (const SColumnNode*)pObj;
914,242✔
4118

4119
  int32_t code = exprNodeToJson(pObj, pJson);
914,242✔
4120
  if (TSDB_CODE_SUCCESS == code) {
914,234!
4121
    code = tjsonAddIntegerToObject(pJson, jkColumnTableId, pNode->tableId);
914,234✔
4122
  }
4123
  if (TSDB_CODE_SUCCESS == code) {
914,243!
4124
    code = tjsonAddIntegerToObject(pJson, jkColumnTableType, pNode->tableType);
914,244✔
4125
  }
4126
  if (TSDB_CODE_SUCCESS == code) {
914,232!
4127
    code = tjsonAddIntegerToObject(pJson, jkColumnColId, pNode->colId);
914,233✔
4128
  }
4129
  if (TSDB_CODE_SUCCESS == code) {
914,241!
4130
    code = tjsonAddIntegerToObject(pJson, jkColumnProjId, pNode->projIdx);
914,242✔
4131
  }
4132
  if (TSDB_CODE_SUCCESS == code) {
914,240!
4133
    code = tjsonAddIntegerToObject(pJson, jkColumnColType, pNode->colType);
914,242✔
4134
  }
4135
  if (TSDB_CODE_SUCCESS == code) {
914,239!
4136
    code = tjsonAddStringToObject(pJson, jkColumnDbName, pNode->dbName);
914,241✔
4137
  }
4138
  if (TSDB_CODE_SUCCESS == code) {
914,239!
4139
    code = tjsonAddStringToObject(pJson, jkColumnTableName, pNode->tableName);
914,241✔
4140
  }
4141
  if (TSDB_CODE_SUCCESS == code) {
914,242!
4142
    code = tjsonAddStringToObject(pJson, jkColumnTableAlias, pNode->tableAlias);
914,243✔
4143
  }
4144
  if (TSDB_CODE_SUCCESS == code) {
914,237!
4145
    code = tjsonAddStringToObject(pJson, jkColumnColName, pNode->colName);
914,238✔
4146
  }
4147
  if (TSDB_CODE_SUCCESS == code) {
914,235!
4148
    code = tjsonAddIntegerToObject(pJson, jkColumnDataBlockId, pNode->dataBlockId);
914,236✔
4149
  }
4150
  if (TSDB_CODE_SUCCESS == code) {
914,237!
4151
    code = tjsonAddIntegerToObject(pJson, jkColumnSlotId, pNode->slotId);
914,239✔
4152
  }
4153
  if (TSDB_CODE_SUCCESS == code) {
914,242!
4154
    code = tjsonAddBoolToObject(pJson, jkColumnTableHasPk, pNode->tableHasPk);
914,244✔
4155
  }
4156
  if (TSDB_CODE_SUCCESS == code) {
914,240!
4157
    code = tjsonAddBoolToObject(pJson, jkColumnIsPk, pNode->isPk);
914,242✔
4158
  }
4159
  if (TSDB_CODE_SUCCESS == code) {
914,237!
4160
    code = tjsonAddIntegerToObject(pJson, jkColumnNumOfPKs, pNode->numOfPKs);
914,239✔
4161
  }
4162
  return code;
914,243✔
4163
}
4164

4165
static int32_t jsonToColumnNode(const SJson* pJson, void* pObj) {
1,258,288✔
4166
  SColumnNode* pNode = (SColumnNode*)pObj;
1,258,288✔
4167

4168
  int32_t code = jsonToExprNode(pJson, pObj);
1,258,288✔
4169
  if (TSDB_CODE_SUCCESS == code) {
1,258,524!
4170
    code = tjsonGetUBigIntValue(pJson, jkColumnTableId, &pNode->tableId);
1,258,525✔
4171
  }
4172
  if (TSDB_CODE_SUCCESS == code) {
1,258,364!
4173
    code = tjsonGetTinyIntValue(pJson, jkColumnTableType, &pNode->tableType);
1,258,368✔
4174
  }
4175
  if (TSDB_CODE_SUCCESS == code) {
1,258,368!
4176
    code = tjsonGetSmallIntValue(pJson, jkColumnColId, &pNode->colId);
1,258,375✔
4177
  }
4178
  if (TSDB_CODE_SUCCESS == code) {
1,258,019!
4179
    code = tjsonGetSmallIntValue(pJson, jkColumnProjId, &pNode->projIdx);
1,258,023✔
4180
  }
4181
  if (TSDB_CODE_SUCCESS == code) {
1,258,154!
4182
    tjsonGetNumberValue(pJson, jkColumnColType, pNode->colType, code);
1,258,159✔
4183
  }
4184
  if (TSDB_CODE_SUCCESS == code) {
1,258,360!
4185
    code = tjsonGetStringValue(pJson, jkColumnDbName, pNode->dbName);
1,258,367✔
4186
  }
4187
  if (TSDB_CODE_SUCCESS == code) {
1,258,413!
4188
    code = tjsonGetStringValue(pJson, jkColumnTableName, pNode->tableName);
1,258,424✔
4189
  }
4190
  if (TSDB_CODE_SUCCESS == code) {
1,258,565!
4191
    code = tjsonGetStringValue(pJson, jkColumnTableAlias, pNode->tableAlias);
1,258,568✔
4192
  }
4193
  if (TSDB_CODE_SUCCESS == code) {
1,258,528!
4194
    code = tjsonGetStringValue(pJson, jkColumnColName, pNode->colName);
1,258,534✔
4195
  }
4196
  if (TSDB_CODE_SUCCESS == code) {
1,258,464!
4197
    code = tjsonGetSmallIntValue(pJson, jkColumnDataBlockId, &pNode->dataBlockId);
1,258,473✔
4198
  }
4199
  if (TSDB_CODE_SUCCESS == code) {
1,258,409!
4200
    code = tjsonGetSmallIntValue(pJson, jkColumnSlotId, &pNode->slotId);
1,258,419✔
4201
  }
4202
  if (TSDB_CODE_SUCCESS == code) {
1,258,488!
4203
    code = tjsonGetBoolValue(pJson, jkColumnTableHasPk, &pNode->tableHasPk);
1,258,498✔
4204
  }
4205
  if (TSDB_CODE_SUCCESS == code) {
1,258,557!
4206
    code = tjsonGetBoolValue(pJson, jkColumnIsPk, &pNode->isPk);
1,258,569✔
4207
  }
4208
  if (TSDB_CODE_SUCCESS == code) {
1,258,403!
4209
    code = tjsonGetSmallIntValue(pJson, jkColumnNumOfPKs, &pNode->numOfPKs);
1,258,418✔
4210
  }
4211
  return code;
1,258,570✔
4212
}
4213

4214
static const char* jkValueLiteralSize = "LiteralSize";
4215
static const char* jkValueLiteral = "Literal";
4216
static const char* jkValueFlag = "Flag";
4217
static const char* jkValueTranslate = "Translate";
4218
static const char* jkValueNotReserved = "NotReserved";
4219
static const char* jkValueIsNull = "IsNull";
4220
static const char* jkValueUnit = "Unit";
4221
static const char* jkValueDatum = "Datum";
4222

4223
static int32_t datumToJson(const void* pObj, SJson* pJson) {
61,629✔
4224
  const SValueNode* pNode = (const SValueNode*)pObj;
61,629✔
4225

4226
  int32_t code = TSDB_CODE_SUCCESS;
61,629✔
4227
  switch (pNode->node.resType.type) {
61,629!
4228
    case TSDB_DATA_TYPE_NULL:
×
4229
      break;
×
4230
    case TSDB_DATA_TYPE_BOOL:
178✔
4231
      code = tjsonAddBoolToObject(pJson, jkValueDatum, pNode->datum.b);
178✔
4232
      break;
178✔
4233
    case TSDB_DATA_TYPE_TINYINT:
44,461✔
4234
    case TSDB_DATA_TYPE_SMALLINT:
4235
    case TSDB_DATA_TYPE_INT:
4236
    case TSDB_DATA_TYPE_BIGINT:
4237
    case TSDB_DATA_TYPE_TIMESTAMP:
4238
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.i);
44,461✔
4239
      break;
44,459✔
4240
    case TSDB_DATA_TYPE_UTINYINT:
184✔
4241
    case TSDB_DATA_TYPE_USMALLINT:
4242
    case TSDB_DATA_TYPE_UINT:
4243
    case TSDB_DATA_TYPE_UBIGINT:
4244
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.u);
184✔
4245
      break;
184✔
4246
    case TSDB_DATA_TYPE_FLOAT:
800✔
4247
    case TSDB_DATA_TYPE_DOUBLE:
4248
      code = tjsonAddDoubleToObject(pJson, jkValueDatum, pNode->datum.d);
800✔
4249
      break;
800✔
4250
    case TSDB_DATA_TYPE_NCHAR: {
×
4251
      // cJSON only support utf-8 encoding. Convert memory content to hex string.
4252
      int32_t bufSize = varDataLen(pNode->datum.p) * 2 + 1;
×
4253
      char*   buf = taosMemoryCalloc(bufSize, sizeof(char));
×
4254
      if (!buf) return terrno;
×
4255
      code = taosHexEncode(varDataVal(pNode->datum.p), buf, varDataLen(pNode->datum.p), bufSize);
×
4256
      if (code != TSDB_CODE_SUCCESS) {
×
4257
        taosMemoryFree(buf);
×
4258
        return TSDB_CODE_TSC_INVALID_VALUE;
×
4259
      }
4260
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
×
4261
      taosMemoryFree(buf);
×
4262
      break;
×
4263
    }
4264
    case TSDB_DATA_TYPE_VARCHAR:
16,006✔
4265
    case TSDB_DATA_TYPE_VARBINARY:
4266
    case TSDB_DATA_TYPE_GEOMETRY:
4267
      code = tjsonAddStringToObject(pJson, jkValueDatum, varDataVal(pNode->datum.p));
16,006✔
4268
      break;
16,006✔
4269
    case TSDB_DATA_TYPE_JSON: {
×
4270
      int32_t len = getJsonValueLen(pNode->datum.p);
×
4271
      int32_t bufSize = len * 2 + 1;
×
4272
      char*   buf = taosMemoryCalloc(bufSize, sizeof(char));
×
4273
      if (!buf) return terrno;
×
4274
      code = taosHexEncode(pNode->datum.p, buf, len, bufSize);
×
4275
      if (code != TSDB_CODE_SUCCESS) {
×
4276
        taosMemoryFree(buf);
×
4277
        return TSDB_CODE_TSC_INVALID_VALUE;
×
4278
      }
4279
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
×
4280
      taosMemoryFree(buf);
×
4281
      break;
×
4282
    }
4283
    case TSDB_DATA_TYPE_DECIMAL:
×
4284
    case TSDB_DATA_TYPE_BLOB:
4285
      // todo
4286
    default:
4287
      break;
×
4288
  }
4289

4290
  return code;
61,627✔
4291
}
4292

4293
static int32_t valueNodeToJson(const void* pObj, SJson* pJson) {
69,106✔
4294
  const SValueNode* pNode = (const SValueNode*)pObj;
69,106✔
4295

4296
  int32_t code = exprNodeToJson(pObj, pJson);
69,106✔
4297
  if (TSDB_CODE_SUCCESS == code) {
69,106!
4298
    code = tjsonAddIntegerToObject(pJson, jkValueLiteralSize, NULL != pNode->literal ? strlen(pNode->literal) : 0);
69,106✔
4299
  }
4300
  if (TSDB_CODE_SUCCESS == code && NULL != pNode->literal) {
69,106!
4301
    code = tjsonAddStringToObject(pJson, jkValueLiteral, pNode->literal);
47,941✔
4302
  }
4303
  if (TSDB_CODE_SUCCESS == code) {
69,106!
4304
    code = tjsonAddBoolToObject(pJson, jkValueFlag, pNode->flag);
69,106✔
4305
  }
4306
  if (TSDB_CODE_SUCCESS == code) {
69,104!
4307
    code = tjsonAddBoolToObject(pJson, jkValueTranslate, pNode->translate);
69,104✔
4308
  }
4309
  if (TSDB_CODE_SUCCESS == code) {
69,107!
4310
    code = tjsonAddBoolToObject(pJson, jkValueNotReserved, pNode->notReserved);
69,107✔
4311
  }
4312
  if (TSDB_CODE_SUCCESS == code) {
69,107!
4313
    code = tjsonAddBoolToObject(pJson, jkValueIsNull, pNode->isNull);
69,107✔
4314
  }
4315
  if (TSDB_CODE_SUCCESS == code) {
69,107!
4316
    code = tjsonAddIntegerToObject(pJson, jkValueUnit, pNode->unit);
69,108✔
4317
  }
4318
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
69,106!
4319
    code = datumToJson(pNode, pJson);
61,629✔
4320
  }
4321

4322
  return code;
69,105✔
4323
}
4324

4325
static int32_t jsonToDatum(const SJson* pJson, void* pObj) {
69,401✔
4326
  SValueNode* pNode = (SValueNode*)pObj;
69,401✔
4327

4328
  int32_t code = TSDB_CODE_SUCCESS;
69,401✔
4329
  switch (pNode->node.resType.type) {
69,401!
4330
    case TSDB_DATA_TYPE_NULL:
×
4331
      break;
×
4332
    case TSDB_DATA_TYPE_BOOL:
233✔
4333
      code = tjsonGetBoolValue(pJson, jkValueDatum, &pNode->datum.b);
233✔
4334
      *(bool*)&pNode->typeData = pNode->datum.b;
233✔
4335
      break;
233✔
4336
    case TSDB_DATA_TYPE_TINYINT:
15,175✔
4337
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
15,175✔
4338
      *(int8_t*)&pNode->typeData = pNode->datum.i;
15,175✔
4339
      break;
15,175✔
4340
    case TSDB_DATA_TYPE_SMALLINT:
210✔
4341
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
210✔
4342
      *(int16_t*)&pNode->typeData = pNode->datum.i;
210✔
4343
      break;
210✔
4344
    case TSDB_DATA_TYPE_INT:
285✔
4345
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
285✔
4346
      *(int32_t*)&pNode->typeData = pNode->datum.i;
285✔
4347
      break;
285✔
4348
    case TSDB_DATA_TYPE_BIGINT:
31,701✔
4349
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
31,701✔
4350
      *(int64_t*)&pNode->typeData = pNode->datum.i;
31,701✔
4351
      break;
31,701✔
4352
    case TSDB_DATA_TYPE_TIMESTAMP:
171✔
4353
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
171✔
4354
      *(int64_t*)&pNode->typeData = pNode->datum.i;
171✔
4355
      break;
171✔
4356
    case TSDB_DATA_TYPE_UTINYINT:
198✔
4357
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
198✔
4358
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
198✔
4359
      break;
198✔
4360
    case TSDB_DATA_TYPE_USMALLINT:
×
4361
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
4362
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
×
4363
      break;
×
4364
    case TSDB_DATA_TYPE_UINT:
×
4365
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
4366
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
×
4367
      break;
×
4368
    case TSDB_DATA_TYPE_UBIGINT:
6✔
4369
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
6✔
4370
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
6✔
4371
      break;
6✔
4372
    case TSDB_DATA_TYPE_FLOAT:
×
4373
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
×
4374
      *(float*)&pNode->typeData = pNode->datum.d;
×
4375
      break;
×
4376
    case TSDB_DATA_TYPE_DOUBLE:
880✔
4377
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
880✔
4378
      *(double*)&pNode->typeData = pNode->datum.d;
880✔
4379
      break;
880✔
4380
    case TSDB_DATA_TYPE_NCHAR:
20,550✔
4381
    case TSDB_DATA_TYPE_VARCHAR:
4382
    case TSDB_DATA_TYPE_VARBINARY:
4383
    case TSDB_DATA_TYPE_GEOMETRY: {
4384
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
20,550!
4385
      if (NULL == pNode->datum.p) {
20,550!
4386
        code = terrno;
×
4387
        break;
×
4388
      }
4389
      varDataSetLen(pNode->datum.p, pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
20,550✔
4390
      if (TSDB_DATA_TYPE_NCHAR == pNode->node.resType.type) {
20,550!
4391
        char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + VARSTR_HEADER_SIZE + 1);
×
4392
        if (NULL == buf) {
×
4393
          code = terrno;
×
4394
          break;
×
4395
        }
4396
        code = tjsonGetStringValue(pJson, jkValueDatum, buf);
×
4397
        if (code != TSDB_CODE_SUCCESS) {
×
4398
          taosMemoryFree(buf);
×
4399
          break;
×
4400
        }
4401
        code = taosHexDecode(buf, varDataVal(pNode->datum.p), pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
×
4402
        if (code != TSDB_CODE_SUCCESS) {
×
4403
          taosMemoryFree(buf);
×
4404
          break;
×
4405
        }
4406
        taosMemoryFree(buf);
×
4407
      } else {
4408
        code = tjsonGetStringValue(pJson, jkValueDatum, varDataVal(pNode->datum.p));
20,550✔
4409
      }
4410
      break;
20,551✔
4411
    }
4412
    case TSDB_DATA_TYPE_JSON: {
×
4413
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes);
×
4414
      if (NULL == pNode->datum.p) {
×
4415
        code = terrno;
×
4416
        break;
×
4417
      }
4418
      char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + 1);
×
4419
      if (NULL == buf) {
×
4420
        code = terrno;
×
4421
        break;
×
4422
      }
4423
      code = tjsonGetStringValue(pJson, jkValueDatum, buf);
×
4424
      if (code != TSDB_CODE_SUCCESS) {
×
4425
        taosMemoryFree(buf);
×
4426
        break;
×
4427
      }
4428
      code = taosHexDecode(buf, pNode->datum.p, pNode->node.resType.bytes);
×
4429
      if (code != TSDB_CODE_SUCCESS) {
×
4430
        taosMemoryFree(buf);
×
4431
        break;
×
4432
      }
4433
      taosMemoryFree(buf);
×
4434
      break;
×
4435
    }
4436
    case TSDB_DATA_TYPE_DECIMAL:
×
4437
    case TSDB_DATA_TYPE_BLOB:
4438
      // todo
4439
    default:
4440
      break;
×
4441
  }
4442

4443
  return code;
69,402✔
4444
}
4445

4446
static int32_t jsonToValueNode(const SJson* pJson, void* pObj) {
77,414✔
4447
  SValueNode* pNode = (SValueNode*)pObj;
77,414✔
4448

4449
  int32_t code = jsonToExprNode(pJson, pObj);
77,414✔
4450
  int32_t literalSize = 0;
77,410✔
4451
  if (TSDB_CODE_SUCCESS == code) {
77,410!
4452
    code = tjsonGetIntValue(pJson, jkValueLiteralSize, &literalSize);
77,410✔
4453
  }
4454
  if (TSDB_CODE_SUCCESS == code && literalSize > 0) {
77,409✔
4455
    code = tjsonDupStringValue(pJson, jkValueLiteral, &pNode->literal);
54,152✔
4456
  }
4457
  if (TSDB_CODE_SUCCESS == code) {
77,412✔
4458
    code = tjsonGetIntValue(pJson, jkValueFlag, &pNode->flag);
77,411✔
4459
  }
4460
  if (TSDB_CODE_SUCCESS == code) {
77,409✔
4461
    code = tjsonGetBoolValue(pJson, jkValueTranslate, &pNode->translate);
77,408✔
4462
  }
4463
  if (TSDB_CODE_SUCCESS == code) {
77,413!
4464
    code = tjsonGetBoolValue(pJson, jkValueNotReserved, &pNode->notReserved);
77,413✔
4465
  }
4466
  if (TSDB_CODE_SUCCESS == code) {
77,413!
4467
    code = tjsonGetBoolValue(pJson, jkValueIsNull, &pNode->isNull);
77,413✔
4468
  }
4469
  if (TSDB_CODE_SUCCESS == code) {
77,410!
4470
    code = tjsonGetTinyIntValue(pJson, jkValueUnit, &pNode->unit);
77,410✔
4471
  }
4472
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
77,401!
4473
    code = jsonToDatum(pJson, pNode);
69,400✔
4474
  }
4475

4476
  return code;
77,406✔
4477
}
4478

4479
static const char* jkOperatorType = "OpType";
4480
static const char* jkOperatorLeft = "Left";
4481
static const char* jkOperatorRight = "Right";
4482

4483
static int32_t operatorNodeToJson(const void* pObj, SJson* pJson) {
12,918✔
4484
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
12,918✔
4485

4486
  int32_t code = exprNodeToJson(pObj, pJson);
12,918✔
4487
  if (TSDB_CODE_SUCCESS == code) {
12,919!
4488
    code = tjsonAddIntegerToObject(pJson, jkOperatorType, pNode->opType);
12,919✔
4489
  }
4490
  if (TSDB_CODE_SUCCESS == code) {
12,919✔
4491
    code = tjsonAddObject(pJson, jkOperatorLeft, nodeToJson, pNode->pLeft);
12,918✔
4492
  }
4493
  if (TSDB_CODE_SUCCESS == code) {
12,917✔
4494
    code = tjsonAddObject(pJson, jkOperatorRight, nodeToJson, pNode->pRight);
12,916✔
4495
  }
4496

4497
  return code;
12,917✔
4498
}
4499

4500
static int32_t jsonToOperatorNode(const SJson* pJson, void* pObj) {
10,610✔
4501
  SOperatorNode* pNode = (SOperatorNode*)pObj;
10,610✔
4502

4503
  int32_t code = jsonToExprNode(pJson, pObj);
10,610✔
4504
  if (TSDB_CODE_SUCCESS == code) {
10,610!
4505
    tjsonGetNumberValue(pJson, jkOperatorType, pNode->opType, code);
10,610✔
4506
  }
4507
  if (TSDB_CODE_SUCCESS == code) {
10,610!
4508
    code = jsonToNodeObject(pJson, jkOperatorLeft, &pNode->pLeft);
10,610✔
4509
  }
4510
  if (TSDB_CODE_SUCCESS == code) {
10,609!
4511
    code = jsonToNodeObject(pJson, jkOperatorRight, &pNode->pRight);
10,609✔
4512
  }
4513

4514
  return code;
10,609✔
4515
}
4516

4517
static const char* jkLogicCondType = "CondType";
4518
static const char* jkLogicCondParameters = "Parameters";
4519

4520
static int32_t logicConditionNodeToJson(const void* pObj, SJson* pJson) {
2,186✔
4521
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
2,186✔
4522

4523
  int32_t code = exprNodeToJson(pObj, pJson);
2,186✔
4524
  if (TSDB_CODE_SUCCESS == code) {
2,186!
4525
    code = tjsonAddIntegerToObject(pJson, jkLogicCondType, pNode->condType);
2,186✔
4526
  }
4527
  if (TSDB_CODE_SUCCESS == code) {
2,186!
4528
    code = nodeListToJson(pJson, jkLogicCondParameters, pNode->pParameterList);
2,186✔
4529
  }
4530

4531
  return code;
2,186✔
4532
}
4533

4534
static int32_t jsonToLogicConditionNode(const SJson* pJson, void* pObj) {
2,727✔
4535
  SLogicConditionNode* pNode = (SLogicConditionNode*)pObj;
2,727✔
4536

4537
  int32_t code = jsonToExprNode(pJson, pObj);
2,727✔
4538
  if (TSDB_CODE_SUCCESS == code) {
2,726!
4539
    tjsonGetNumberValue(pJson, jkLogicCondType, pNode->condType, code);
2,726✔
4540
  }
4541
  if (TSDB_CODE_SUCCESS == code) {
2,727!
4542
    code = jsonToNodeList(pJson, jkLogicCondParameters, &pNode->pParameterList);
2,727✔
4543
  }
4544

4545
  return code;
2,727✔
4546
}
4547

4548
static const char* jkFunctionName = "Name";
4549
static const char* jkFunctionId = "Id";
4550
static const char* jkFunctionType = "Type";
4551
static const char* jkFunctionParameter = "Parameters";
4552
static const char* jkFunctionUdfBufSize = "UdfBufSize";
4553
static const char* jkFunctionHasPk = "HasPk";
4554
static const char* jkFunctionPkBytes = "PkBytes";
4555
static const char* jkFunctionIsMergeFunc = "IsMergeFunc";
4556
static const char* jkFunctionMergeFuncOf = "MergeFuncOf";
4557
static const char* jkFunctionTrimType = "TrimType";
4558

4559
static int32_t functionNodeToJson(const void* pObj, SJson* pJson) {
415,677✔
4560
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
415,677✔
4561

4562
  int32_t code = exprNodeToJson(pObj, pJson);
415,677✔
4563
  if (TSDB_CODE_SUCCESS == code) {
415,677!
4564
    code = tjsonAddStringToObject(pJson, jkFunctionName, pNode->functionName);
415,677✔
4565
  }
4566
  if (TSDB_CODE_SUCCESS == code) {
415,677!
4567
    code = tjsonAddIntegerToObject(pJson, jkFunctionId, pNode->funcId);
415,677✔
4568
  }
4569
  if (TSDB_CODE_SUCCESS == code) {
415,677!
4570
    code = tjsonAddIntegerToObject(pJson, jkFunctionType, pNode->funcType);
415,677✔
4571
  }
4572
  if (TSDB_CODE_SUCCESS == code) {
415,677!
4573
    code = nodeListToJson(pJson, jkFunctionParameter, pNode->pParameterList);
415,677✔
4574
  }
4575
  if (TSDB_CODE_SUCCESS == code) {
415,677!
4576
    code = tjsonAddIntegerToObject(pJson, jkFunctionUdfBufSize, pNode->udfBufSize);
415,677✔
4577
  }
4578
  if (TSDB_CODE_SUCCESS == code) {
415,677!
4579
    code = tjsonAddBoolToObject(pJson, jkFunctionHasPk, pNode->hasPk);
415,677✔
4580
  }
4581
  if (TSDB_CODE_SUCCESS == code) {
415,677!
4582
    code = tjsonAddIntegerToObject(pJson, jkFunctionPkBytes, pNode->pkBytes);
415,677✔
4583
  }
4584
  if (TSDB_CODE_SUCCESS == code) {
415,677!
4585
    code = tjsonAddBoolToObject(pJson, jkFunctionIsMergeFunc, pNode->hasOriginalFunc);
415,677✔
4586
  }
4587
  if (TSDB_CODE_SUCCESS == code) {
415,677!
4588
    code = tjsonAddIntegerToObject(pJson, jkFunctionMergeFuncOf, pNode->originalFuncId);
415,677✔
4589
  }
4590
  if (TSDB_CODE_SUCCESS == code) {
415,677!
4591
    code = tjsonAddIntegerToObject(pJson, jkFunctionTrimType, pNode->trimType);
415,677✔
4592
  }
4593
  return code;
415,677✔
4594
}
4595

4596
static int32_t jsonToFunctionNode(const SJson* pJson, void* pObj) {
802,099✔
4597
  SFunctionNode* pNode = (SFunctionNode*)pObj;
802,099✔
4598

4599
  int32_t code = jsonToExprNode(pJson, pObj);
802,099✔
4600
  if (TSDB_CODE_SUCCESS == code) {
802,051!
4601
    code = tjsonGetStringValue(pJson, jkFunctionName, pNode->functionName);
802,052✔
4602
  }
4603
  if (TSDB_CODE_SUCCESS == code) {
801,771✔
4604
    code = tjsonGetIntValue(pJson, jkFunctionId, &pNode->funcId);
801,764✔
4605
  }
4606
  if (TSDB_CODE_SUCCESS == code) {
801,542✔
4607
    code = tjsonGetIntValue(pJson, jkFunctionType, &pNode->funcType);
801,535✔
4608
  }
4609
  if (TSDB_CODE_SUCCESS == code) {
801,790✔
4610
    code = jsonToNodeList(pJson, jkFunctionParameter, &pNode->pParameterList);
801,783✔
4611
  }
4612
  if (TSDB_CODE_SUCCESS == code) {
802,242✔
4613
    code = tjsonGetIntValue(pJson, jkFunctionUdfBufSize, &pNode->udfBufSize);
802,235✔
4614
  }
4615
  if (TSDB_CODE_SUCCESS == code) {
802,175✔
4616
    code = tjsonGetBoolValue(pJson, jkFunctionHasPk, &pNode->hasPk);
802,168✔
4617
  }
4618
  if (TSDB_CODE_SUCCESS == code) {
802,146✔
4619
    code = tjsonGetIntValue(pJson, jkFunctionPkBytes, &pNode->pkBytes);
802,139✔
4620
  }
4621
  if (TSDB_CODE_SUCCESS == code) {
802,115✔
4622
    code = tjsonGetBoolValue(pJson, jkFunctionIsMergeFunc, &pNode->hasOriginalFunc);
802,109✔
4623
  }
4624
  if (TSDB_CODE_SUCCESS == code) {
802,157✔
4625
    code = tjsonGetIntValue(pJson, jkFunctionMergeFuncOf, &pNode->originalFuncId);
802,151✔
4626
  }
4627
  if (TSDB_CODE_SUCCESS == code) {
802,158✔
4628
    tjsonGetNumberValue(pJson, jkFunctionTrimType, pNode->trimType, code);
802,156✔
4629
  }
4630

4631
  return code;
802,180✔
4632
}
4633

4634
static const char* jkTableDbName = "DbName";
4635
static const char* jkTableTableName = "tableName";
4636
static const char* jkTableTableAlias = "tableAlias";
4637

4638
static int32_t tableNodeToJson(const void* pObj, SJson* pJson) {
3,762✔
4639
  const STableNode* pNode = (const STableNode*)pObj;
3,762✔
4640

4641
  int32_t code = exprNodeToJson(pObj, pJson);
3,762✔
4642
  if (TSDB_CODE_SUCCESS == code) {
3,762!
4643
    code = tjsonAddStringToObject(pJson, jkTableDbName, pNode->dbName);
3,762✔
4644
  }
4645
  if (TSDB_CODE_SUCCESS == code) {
3,762!
4646
    code = tjsonAddStringToObject(pJson, jkTableTableName, pNode->tableName);
3,762✔
4647
  }
4648
  if (TSDB_CODE_SUCCESS == code) {
3,762!
4649
    code = tjsonAddStringToObject(pJson, jkTableTableAlias, pNode->tableAlias);
3,762✔
4650
  }
4651

4652
  return code;
3,762✔
4653
}
4654

4655
static int32_t jsonToTableNode(const SJson* pJson, void* pObj) {
7,619✔
4656
  STableNode* pNode = (STableNode*)pObj;
7,619✔
4657

4658
  int32_t code = jsonToExprNode(pJson, pObj);
7,619✔
4659
  if (TSDB_CODE_SUCCESS == code) {
7,619!
4660
    code = tjsonGetStringValue(pJson, jkTableDbName, pNode->dbName);
7,619✔
4661
  }
4662
  if (TSDB_CODE_SUCCESS == code) {
7,619!
4663
    code = tjsonGetStringValue(pJson, jkTableTableName, pNode->tableName);
7,619✔
4664
  }
4665
  if (TSDB_CODE_SUCCESS == code) {
7,619!
4666
    code = tjsonGetStringValue(pJson, jkTableTableAlias, pNode->tableAlias);
7,619✔
4667
  }
4668

4669
  return code;
7,619✔
4670
}
4671

4672
static const char* jkTableIndexInfoIntervalUnit = "IntervalUnit";
4673
static const char* jkTableIndexInfoSlidingUnit = "SlidingUnit";
4674
static const char* jkTableIndexInfoInterval = "Interval";
4675
static const char* jkTableIndexInfoOffset = "Offset";
4676
static const char* jkTableIndexInfoSliding = "Sliding";
4677
static const char* jkTableIndexInfoDstTbUid = "DstTbUid";
4678
static const char* jkTableIndexInfoDstVgId = "DstVgId";
4679
static const char* jkTableIndexInfoEpSet = "EpSet";
4680
static const char* jkTableIndexInfoExpr = "Expr";
4681

4682
static int32_t tableIndexInfoToJson(const void* pObj, SJson* pJson) {
×
4683
  const STableIndexInfo* pNode = (const STableIndexInfo*)pObj;
×
4684

4685
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoIntervalUnit, pNode->intervalUnit);
×
4686
  if (TSDB_CODE_SUCCESS == code) {
×
4687
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoSlidingUnit, pNode->slidingUnit);
×
4688
  }
4689
  if (TSDB_CODE_SUCCESS == code) {
×
4690
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoInterval, pNode->interval);
×
4691
  }
4692
  if (TSDB_CODE_SUCCESS == code) {
×
4693
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoOffset, pNode->offset);
×
4694
  }
4695
  if (TSDB_CODE_SUCCESS == code) {
×
4696
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoSliding, pNode->sliding);
×
4697
  }
4698
  if (TSDB_CODE_SUCCESS == code) {
×
4699
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoDstTbUid, pNode->dstTbUid);
×
4700
  }
4701
  if (TSDB_CODE_SUCCESS == code) {
×
4702
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoDstVgId, pNode->dstVgId);
×
4703
  }
4704
  if (TSDB_CODE_SUCCESS == code) {
×
4705
    code = tjsonAddObject(pJson, jkTableIndexInfoEpSet, epSetToJson, &pNode->epSet);
×
4706
  }
4707
  if (TSDB_CODE_SUCCESS == code) {
×
4708
    code = tjsonAddStringToObject(pJson, jkTableIndexInfoExpr, pNode->expr);
×
4709
  }
4710

4711
  return code;
×
4712
}
4713

4714
static int32_t jsonToTableIndexInfo(const SJson* pJson, void* pObj) {
×
4715
  STableIndexInfo* pNode = (STableIndexInfo*)pObj;
×
4716

4717
  int32_t code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoIntervalUnit, &pNode->intervalUnit);
×
4718
  if (TSDB_CODE_SUCCESS == code) {
×
4719
    code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoSlidingUnit, &pNode->slidingUnit);
×
4720
  }
4721
  if (TSDB_CODE_SUCCESS == code) {
×
4722
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoInterval, &pNode->interval);
×
4723
  }
4724
  if (TSDB_CODE_SUCCESS == code) {
×
4725
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoOffset, &pNode->offset);
×
4726
  }
4727
  if (TSDB_CODE_SUCCESS == code) {
×
4728
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoSliding, &pNode->sliding);
×
4729
  }
4730
  if (TSDB_CODE_SUCCESS == code) {
×
4731
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoDstTbUid, &pNode->dstTbUid);
×
4732
  }
4733
  if (TSDB_CODE_SUCCESS == code) {
×
4734
    code = tjsonGetIntValue(pJson, jkTableIndexInfoDstVgId, &pNode->dstVgId);
×
4735
  }
4736
  if (TSDB_CODE_SUCCESS == code) {
×
4737
    code = tjsonToObject(pJson, jkTableIndexInfoEpSet, jsonToEpSet, &pNode->epSet);
×
4738
  }
4739
  if (TSDB_CODE_SUCCESS == code) {
×
4740
    code = tjsonDupStringValue(pJson, jkTableIndexInfoExpr, &pNode->expr);
×
4741
  }
4742

4743
  return code;
×
4744
}
4745

4746
static const char* jkRealTableMetaSize = "MetaSize";
4747
static const char* jkRealTableMeta = "Meta";
4748
static const char* jkRealTableVgroupsInfoSize = "VgroupsInfoSize";
4749
static const char* jkRealTableVgroupsInfo = "VgroupsInfo";
4750
static const char* jkRealTableSmaIndexes = "SmaIndexes";
4751

4752
static int32_t realTableNodeToJson(const void* pObj, SJson* pJson) {
3,534✔
4753
  const SRealTableNode* pNode = (const SRealTableNode*)pObj;
3,534✔
4754

4755
  int32_t code = tableNodeToJson(pObj, pJson);
3,534✔
4756
  if (TSDB_CODE_SUCCESS == code) {
3,534!
4757
    code = tjsonAddIntegerToObject(pJson, jkRealTableMetaSize, TABLE_META_SIZE(pNode->pMeta));
3,534✔
4758
  }
4759
  if (TSDB_CODE_SUCCESS == code) {
3,534!
4760
    code = tjsonAddObject(pJson, jkRealTableMeta, tableMetaToJson, pNode->pMeta);
3,534✔
4761
  }
4762
  if (TSDB_CODE_SUCCESS == code) {
3,534!
4763
    code = tjsonAddIntegerToObject(pJson, jkRealTableVgroupsInfoSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
3,534✔
4764
  }
4765
  if (TSDB_CODE_SUCCESS == code) {
3,534!
4766
    code = tjsonAddObject(pJson, jkRealTableVgroupsInfo, vgroupsInfoToJson, pNode->pVgroupList);
3,534✔
4767
  }
4768
  if (TSDB_CODE_SUCCESS == code) {
3,534!
4769
    code = tjsonAddTArray(pJson, jkRealTableSmaIndexes, tableIndexInfoToJson, pNode->pSmaIndexes);
3,534✔
4770
  }
4771

4772
  return code;
3,534✔
4773
}
4774

4775
static int32_t jsonToRealTableNode(const SJson* pJson, void* pObj) {
7,392✔
4776
  SRealTableNode* pNode = (SRealTableNode*)pObj;
7,392✔
4777

4778
  int32_t objSize = 0;
7,392✔
4779
  int32_t code = jsonToTableNode(pJson, pObj);
7,392✔
4780
  if (TSDB_CODE_SUCCESS == code) {
7,392!
4781
    code = tjsonGetIntValue(pJson, jkRealTableMetaSize, &objSize);
7,392✔
4782
  }
4783
  if (TSDB_CODE_SUCCESS == code) {
7,392!
4784
    code = tjsonMakeObject(pJson, jkRealTableMeta, jsonToTableMeta, (void**)&pNode->pMeta, objSize);
7,392✔
4785
  }
4786
  if (TSDB_CODE_SUCCESS == code) {
7,392!
4787
    code = tjsonGetIntValue(pJson, jkRealTableVgroupsInfoSize, &objSize);
7,392✔
4788
  }
4789
  if (TSDB_CODE_SUCCESS == code) {
7,392!
4790
    code = tjsonMakeObject(pJson, jkRealTableVgroupsInfo, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
7,392✔
4791
  }
4792
  if (TSDB_CODE_SUCCESS == code) {
7,392!
4793
    code =
4794
        tjsonToTArray(pJson, jkRealTableSmaIndexes, jsonToTableIndexInfo, &pNode->pSmaIndexes, sizeof(STableIndexInfo));
7,392✔
4795
  }
4796

4797
  return code;
7,392✔
4798
}
4799

4800
static const char* jkTempTableSubquery = "Subquery";
4801

4802
static int32_t tempTableNodeToJson(const void* pObj, SJson* pJson) {
166✔
4803
  const STempTableNode* pNode = (const STempTableNode*)pObj;
166✔
4804

4805
  int32_t code = tableNodeToJson(pObj, pJson);
166✔
4806
  if (TSDB_CODE_SUCCESS == code) {
166!
4807
    code = tjsonAddObject(pJson, jkTempTableSubquery, nodeToJson, pNode->pSubquery);
166✔
4808
  }
4809

4810
  return code;
166✔
4811
}
4812

4813
static int32_t jsonToTempTableNode(const SJson* pJson, void* pObj) {
165✔
4814
  STempTableNode* pNode = (STempTableNode*)pObj;
165✔
4815

4816
  int32_t code = jsonToTableNode(pJson, pObj);
165✔
4817
  if (TSDB_CODE_SUCCESS == code) {
165!
4818
    code = jsonToNodeObject(pJson, jkTempTableSubquery, &pNode->pSubquery);
165✔
4819
  }
4820

4821
  return code;
165✔
4822
}
4823

4824
static const char* jkJoinTableJoinType = "JoinType";
4825
static const char* jkJoinTableSubType = "SubType";
4826
static const char* jkJoinTableLeft = "Left";
4827
static const char* jkJoinTableRight = "Right";
4828
static const char* jkJoinTableOnCond = "OnCond";
4829

4830
static int32_t joinTableNodeToJson(const void* pObj, SJson* pJson) {
62✔
4831
  const SJoinTableNode* pNode = (const SJoinTableNode*)pObj;
62✔
4832

4833
  int32_t code = tableNodeToJson(pObj, pJson);
62✔
4834
  if (TSDB_CODE_SUCCESS == code) {
62!
4835
    code = tjsonAddIntegerToObject(pJson, jkJoinTableJoinType, pNode->joinType);
62✔
4836
  }
4837
  if (TSDB_CODE_SUCCESS == code) {
62!
4838
    code = tjsonAddIntegerToObject(pJson, jkJoinTableSubType, pNode->subType);
62✔
4839
  }
4840
  if (TSDB_CODE_SUCCESS == code) {
62!
4841
    code = tjsonAddObject(pJson, jkJoinTableLeft, nodeToJson, pNode->pLeft);
62✔
4842
  }
4843
  if (TSDB_CODE_SUCCESS == code) {
62!
4844
    code = tjsonAddObject(pJson, jkJoinTableRight, nodeToJson, pNode->pRight);
62✔
4845
  }
4846
  if (TSDB_CODE_SUCCESS == code) {
62!
4847
    code = tjsonAddObject(pJson, jkJoinTableOnCond, nodeToJson, pNode->pOnCond);
62✔
4848
  }
4849

4850
  return code;
62✔
4851
}
4852

4853
static int32_t jsonToJoinTableNode(const SJson* pJson, void* pObj) {
62✔
4854
  SJoinTableNode* pNode = (SJoinTableNode*)pObj;
62✔
4855

4856
  int32_t code = jsonToTableNode(pJson, pObj);
62✔
4857
  if (TSDB_CODE_SUCCESS == code) {
62!
4858
    tjsonGetNumberValue(pJson, jkJoinTableJoinType, pNode->joinType, code);
62✔
4859
  }
4860
  if (TSDB_CODE_SUCCESS == code) {
62!
4861
    tjsonGetNumberValue(pJson, jkJoinTableSubType, pNode->subType, code);
62✔
4862
  }
4863
  if (TSDB_CODE_SUCCESS == code) {
62!
4864
    code = jsonToNodeObject(pJson, jkJoinTableLeft, &pNode->pLeft);
62✔
4865
  }
4866
  if (TSDB_CODE_SUCCESS == code) {
62!
4867
    code = jsonToNodeObject(pJson, jkJoinTableRight, &pNode->pRight);
62✔
4868
  }
4869
  if (TSDB_CODE_SUCCESS == code) {
62!
4870
    code = jsonToNodeObject(pJson, jkJoinTableOnCond, &pNode->pOnCond);
62✔
4871
  }
4872

4873
  return code;
62✔
4874
}
4875

4876
static const char* jkGroupingSetType = "GroupingSetType";
4877
static const char* jkGroupingSetParameter = "Parameters";
4878

4879
static int32_t groupingSetNodeToJson(const void* pObj, SJson* pJson) {
657✔
4880
  const SGroupingSetNode* pNode = (const SGroupingSetNode*)pObj;
657✔
4881

4882
  int32_t code = tjsonAddIntegerToObject(pJson, jkGroupingSetType, pNode->groupingSetType);
657✔
4883
  if (TSDB_CODE_SUCCESS == code) {
657!
4884
    code = nodeListToJson(pJson, jkGroupingSetParameter, pNode->pParameterList);
657✔
4885
  }
4886

4887
  return code;
657✔
4888
}
4889

4890
static int32_t jsonToGroupingSetNode(const SJson* pJson, void* pObj) {
413✔
4891
  SGroupingSetNode* pNode = (SGroupingSetNode*)pObj;
413✔
4892

4893
  int32_t code = TSDB_CODE_SUCCESS;
413✔
4894
  tjsonGetNumberValue(pJson, jkGroupingSetType, pNode->groupingSetType, code);
413✔
4895
  if (TSDB_CODE_SUCCESS == code) {
413!
4896
    code = jsonToNodeList(pJson, jkGroupingSetParameter, &pNode->pParameterList);
413✔
4897
  }
4898

4899
  return code;
413✔
4900
}
4901

4902
static const char* jkOrderByExprExpr = "Expr";
4903
static const char* jkOrderByExprOrder = "Order";
4904
static const char* jkOrderByExprNullOrder = "NullOrder";
4905

4906
static int32_t orderByExprNodeToJson(const void* pObj, SJson* pJson) {
907✔
4907
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
907✔
4908

4909
  int32_t code = tjsonAddObject(pJson, jkOrderByExprExpr, nodeToJson, pNode->pExpr);
907✔
4910
  if (TSDB_CODE_SUCCESS == code) {
907!
4911
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprOrder, pNode->order);
907✔
4912
  }
4913
  if (TSDB_CODE_SUCCESS == code) {
907!
4914
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprNullOrder, pNode->nullOrder);
907✔
4915
  }
4916

4917
  return code;
907✔
4918
}
4919

4920
static int32_t jsonToOrderByExprNode(const SJson* pJson, void* pObj) {
658✔
4921
  SOrderByExprNode* pNode = (SOrderByExprNode*)pObj;
658✔
4922

4923
  int32_t code = jsonToNodeObject(pJson, jkOrderByExprExpr, &pNode->pExpr);
658✔
4924
  if (TSDB_CODE_SUCCESS == code) {
658!
4925
    tjsonGetNumberValue(pJson, jkOrderByExprOrder, pNode->order, code);
658✔
4926
  }
4927
  if (TSDB_CODE_SUCCESS == code) {
658!
4928
    tjsonGetNumberValue(pJson, jkOrderByExprNullOrder, pNode->nullOrder, code);
658✔
4929
  }
4930

4931
  return code;
658✔
4932
}
4933

4934
static const char* jkLimitLimit = "Limit";
4935
static const char* jkLimitOffset = "Offset";
4936

4937
static int32_t limitNodeToJson(const void* pObj, SJson* pJson) {
360✔
4938
  const SLimitNode* pNode = (const SLimitNode*)pObj;
360✔
4939

4940
  int32_t code = tjsonAddIntegerToObject(pJson, jkLimitLimit, pNode->limit);
360✔
4941
  if (TSDB_CODE_SUCCESS == code) {
360!
4942
    code = tjsonAddIntegerToObject(pJson, jkLimitOffset, pNode->offset);
360✔
4943
  }
4944

4945
  return code;
360✔
4946
}
4947

4948
static int32_t jsonToLimitNode(const SJson* pJson, void* pObj) {
222✔
4949
  SLimitNode* pNode = (SLimitNode*)pObj;
222✔
4950

4951
  int32_t code = tjsonGetBigIntValue(pJson, jkLimitLimit, &pNode->limit);
222✔
4952
  if (TSDB_CODE_SUCCESS == code) {
222!
4953
    code = tjsonGetBigIntValue(pJson, jkLimitOffset, &pNode->offset);
222✔
4954
  }
4955

4956
  return code;
222✔
4957
}
4958

4959
static const char* jkStateWindowCol = "StateWindowCol";
4960
static const char* jkStateWindowExpr = "StateWindowExpr";
4961

4962
static int32_t stateWindowNodeToJson(const void* pObj, SJson* pJson) {
81✔
4963
  const SStateWindowNode* pNode = (const SStateWindowNode*)pObj;
81✔
4964
  int32_t                 code = tjsonAddObject(pJson, jkStateWindowCol, nodeToJson, pNode->pCol);
81✔
4965
  if (TSDB_CODE_SUCCESS == code) {
81!
4966
    code = tjsonAddObject(pJson, jkStateWindowExpr, nodeToJson, pNode->pExpr);
81✔
4967
  }
4968
  return code;
81✔
4969
}
4970

4971
static int32_t jsonToStateWindowNode(const SJson* pJson, void* pObj) {
120✔
4972
  SStateWindowNode* pNode = (SStateWindowNode*)pObj;
120✔
4973

4974
  int32_t code = jsonToNodeObject(pJson, jkStateWindowCol, (SNode**)&pNode->pCol);
120✔
4975
  if (TSDB_CODE_SUCCESS == code) {
120!
4976
    code = jsonToNodeObject(pJson, jkStateWindowExpr, (SNode**)&pNode->pExpr);
120✔
4977
  }
4978
  return code;
120✔
4979
}
4980

4981
static const char* jkSessionWindowTsPrimaryKey = "TsPrimaryKey";
4982
static const char* jkSessionWindowGap = "Gap";
4983

4984
static int32_t sessionWindowNodeToJson(const void* pObj, SJson* pJson) {
113✔
4985
  const SSessionWindowNode* pNode = (const SSessionWindowNode*)pObj;
113✔
4986

4987
  int32_t code = tjsonAddObject(pJson, jkSessionWindowTsPrimaryKey, nodeToJson, pNode->pCol);
113✔
4988
  if (TSDB_CODE_SUCCESS == code) {
113!
4989
    code = tjsonAddObject(pJson, jkSessionWindowGap, nodeToJson, pNode->pGap);
113✔
4990
  }
4991
  return code;
113✔
4992
}
4993

4994
static int32_t jsonToSessionWindowNode(const SJson* pJson, void* pObj) {
219✔
4995
  SSessionWindowNode* pNode = (SSessionWindowNode*)pObj;
219✔
4996

4997
  int32_t code = jsonToNodeObject(pJson, jkSessionWindowTsPrimaryKey, (SNode**)&pNode->pCol);
219✔
4998
  if (TSDB_CODE_SUCCESS == code) {
219!
4999
    code = jsonToNodeObject(pJson, jkSessionWindowGap, (SNode**)&pNode->pGap);
219✔
5000
  }
5001
  return code;
219✔
5002
}
5003

5004
static const char* jkEventWindowTsPrimaryKey = "TsPrimaryKey";
5005
static const char* jkEventWindowStartCond = "StartCond";
5006
static const char* jkEventWindowEndCond = "EndCond";
5007

5008
static int32_t eventWindowNodeToJson(const void* pObj, SJson* pJson) {
13✔
5009
  const SEventWindowNode* pNode = (const SEventWindowNode*)pObj;
13✔
5010

5011
  int32_t code = tjsonAddObject(pJson, jkEventWindowTsPrimaryKey, nodeToJson, pNode->pCol);
13✔
5012
  if (TSDB_CODE_SUCCESS == code) {
13!
5013
    code = tjsonAddObject(pJson, jkEventWindowStartCond, nodeToJson, pNode->pStartCond);
13✔
5014
  }
5015
  if (TSDB_CODE_SUCCESS == code) {
13!
5016
    code = tjsonAddObject(pJson, jkEventWindowEndCond, nodeToJson, pNode->pEndCond);
13✔
5017
  }
5018
  return code;
13✔
5019
}
5020

5021
static int32_t jsonToEventWindowNode(const SJson* pJson, void* pObj) {
48✔
5022
  SEventWindowNode* pNode = (SEventWindowNode*)pObj;
48✔
5023

5024
  int32_t code = jsonToNodeObject(pJson, jkEventWindowTsPrimaryKey, &pNode->pCol);
48✔
5025
  if (TSDB_CODE_SUCCESS == code) {
48!
5026
    code = jsonToNodeObject(pJson, jkEventWindowStartCond, &pNode->pStartCond);
48✔
5027
  }
5028
  if (TSDB_CODE_SUCCESS == code) {
48!
5029
    code = jsonToNodeObject(pJson, jkEventWindowEndCond, &pNode->pEndCond);
48✔
5030
  }
5031
  return code;
48✔
5032
}
5033

5034
static const char* jkCountWindowTsPrimaryKey = "CountTsPrimaryKey";
5035
static const char* jkCountWindowCount = "CountWindowCount";
5036
static const char* jkCountWindowSliding = "CountWindowSliding";
5037

5038
static int32_t countWindowNodeToJson(const void* pObj, SJson* pJson) {
15✔
5039
  const SCountWindowNode* pNode = (const SCountWindowNode*)pObj;
15✔
5040

5041
  int32_t code = tjsonAddObject(pJson, jkCountWindowTsPrimaryKey, nodeToJson, pNode->pCol);
15✔
5042
  if (TSDB_CODE_SUCCESS == code) {
15!
5043
    code = tjsonAddIntegerToObject(pJson, jkCountWindowCount, pNode->windowCount);
15✔
5044
  }
5045
  if (TSDB_CODE_SUCCESS == code) {
15!
5046
    code = tjsonAddIntegerToObject(pJson, jkCountWindowSliding, pNode->windowSliding);
15✔
5047
  }
5048
  return code;
15✔
5049
}
5050

5051
static int32_t jsonToCountWindowNode(const SJson* pJson, void* pObj) {
78✔
5052
  SCountWindowNode* pNode = (SCountWindowNode*)pObj;
78✔
5053

5054
  int32_t code = jsonToNodeObject(pJson, jkCountWindowTsPrimaryKey, &pNode->pCol);
78✔
5055
  if (TSDB_CODE_SUCCESS == code) {
78!
5056
    code = tjsonGetBigIntValue(pJson, jkCountWindowCount, &pNode->windowCount);
78✔
5057
  }
5058
  if (TSDB_CODE_SUCCESS == code) {
78!
5059
    code = tjsonGetBigIntValue(pJson, jkCountWindowSliding, &pNode->windowSliding);
78✔
5060
  }
5061
  return code;
78✔
5062
}
5063

5064
static const char* jkAnomalyWindowTsPrimaryKey = "AnomalyTsPrimaryKey";
5065
static const char* jkAnomalyWindowExpr = "AnomalyWindowExpr";
5066
static const char* jkAnomalyWindowOption = "AnomalyWindowOpt";
5067

5068
static int32_t anomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
5069
  const SAnomalyWindowNode* pNode = (const SAnomalyWindowNode*)pObj;
×
5070

5071
  int32_t code = tjsonAddObject(pJson, jkAnomalyWindowTsPrimaryKey, nodeToJson, pNode->pCol);
×
5072
  if (TSDB_CODE_SUCCESS == code) {
×
5073
    code = tjsonAddObject(pJson, jkAnomalyWindowExpr, nodeToJson, pNode->pExpr);
×
5074
  }
5075
  if (TSDB_CODE_SUCCESS == code) {
×
5076
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowOption, pNode->anomalyOpt);
×
5077
  }
5078
  return code;
×
5079
}
5080

5081
static int32_t jsonToAnomalyWindowNode(const SJson* pJson, void* pObj) {
×
5082
  SAnomalyWindowNode* pNode = (SAnomalyWindowNode*)pObj;
×
5083

5084
  int32_t code = jsonToNodeObject(pJson, jkAnomalyWindowTsPrimaryKey, &pNode->pCol);
×
5085
  if (TSDB_CODE_SUCCESS == code) {
×
5086
    code = jsonToNodeObject(pJson, jkAnomalyWindowExpr, (SNode**)&pNode->pExpr);
×
5087
  }
5088
  if (TSDB_CODE_SUCCESS == code) {
×
5089
    code = tjsonGetStringValue(pJson, jkAnomalyWindowOption, pNode->anomalyOpt);
×
5090
  }
5091
  return code;
×
5092
}
5093

5094
static const char* jkIntervalWindowInterval = "Interval";
5095
static const char* jkIntervalWindowOffset = "Offset";
5096
static const char* jkIntervalWindowSliding = "Sliding";
5097
static const char* jkIntervalWindowFill = "Fill";
5098
static const char* jkIntervalWindowTsPk = "TsPk";
5099
static const char* jkIntervalStartTime = "StartTime";
5100
static const char* jkIntervalEndTime = "EndTime";
5101

5102
static int32_t intervalWindowNodeToJson(const void* pObj, SJson* pJson) {
1,099✔
5103
  const SIntervalWindowNode* pNode = (const SIntervalWindowNode*)pObj;
1,099✔
5104

5105
  int32_t code = tjsonAddObject(pJson, jkIntervalWindowInterval, nodeToJson, pNode->pInterval);
1,099✔
5106
  if (TSDB_CODE_SUCCESS == code) {
1,099!
5107
    code = tjsonAddObject(pJson, jkIntervalWindowOffset, nodeToJson, pNode->pOffset);
1,099✔
5108
  }
5109
  if (TSDB_CODE_SUCCESS == code) {
1,099!
5110
    code = tjsonAddObject(pJson, jkIntervalWindowSliding, nodeToJson, pNode->pSliding);
1,099✔
5111
  }
5112
  if (TSDB_CODE_SUCCESS == code) {
1,099!
5113
    code = tjsonAddObject(pJson, jkIntervalWindowFill, nodeToJson, pNode->pFill);
1,099✔
5114
  }
5115
  if (TSDB_CODE_SUCCESS == code) {
1,099!
5116
    code = tjsonAddObject(pJson, jkIntervalWindowTsPk, nodeToJson, pNode->pCol);
1,099✔
5117
  }
5118
  if (TSDB_CODE_SUCCESS == code) {
1,099!
5119
    code = tjsonAddIntegerToObject(pJson, jkIntervalStartTime, pNode->timeRange.skey);
1,099✔
5120
  }
5121
  if (TSDB_CODE_SUCCESS == code) {
1,099!
5122
    code = tjsonAddIntegerToObject(pJson, jkIntervalEndTime, pNode->timeRange.ekey);
1,099✔
5123
  }
5124

5125
  return code;
1,099✔
5126
}
5127

5128
static int32_t jsonToIntervalWindowNode(const SJson* pJson, void* pObj) {
3,535✔
5129
  SIntervalWindowNode* pNode = (SIntervalWindowNode*)pObj;
3,535✔
5130

5131
  int32_t code = jsonToNodeObject(pJson, jkIntervalWindowInterval, &pNode->pInterval);
3,535✔
5132
  if (TSDB_CODE_SUCCESS == code) {
3,535!
5133
    code = jsonToNodeObject(pJson, jkIntervalWindowOffset, &pNode->pOffset);
3,535✔
5134
  }
5135
  if (TSDB_CODE_SUCCESS == code) {
3,535!
5136
    code = jsonToNodeObject(pJson, jkIntervalWindowSliding, &pNode->pSliding);
3,535✔
5137
  }
5138
  if (TSDB_CODE_SUCCESS == code) {
3,535!
5139
    code = jsonToNodeObject(pJson, jkIntervalWindowFill, &pNode->pFill);
3,535✔
5140
  }
5141
  if (TSDB_CODE_SUCCESS == code) {
3,535!
5142
    code = jsonToNodeObject(pJson, jkIntervalWindowTsPk, &pNode->pCol);
3,535✔
5143
  }
5144
  if (TSDB_CODE_SUCCESS == code) {
3,535!
5145
    code = tjsonGetBigIntValue(pJson, jkIntervalStartTime, &pNode->timeRange.skey);
3,535✔
5146
  }
5147
  if (TSDB_CODE_SUCCESS == code) {
3,535!
5148
    code = tjsonGetBigIntValue(pJson, jkIntervalEndTime, &pNode->timeRange.ekey);
3,535✔
5149
  }
5150

5151
  return code;
3,535✔
5152
}
5153

5154
static const char* jkNodeListDataType = "DataType";
5155
static const char* jkNodeListNodeList = "NodeList";
5156

5157
static int32_t nodeListNodeToJson(const void* pObj, SJson* pJson) {
4,307✔
5158
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
4,307✔
5159

5160
  int32_t code = tjsonAddObject(pJson, jkNodeListDataType, dataTypeToJson, &pNode->node.resType);
4,307✔
5161
  if (TSDB_CODE_SUCCESS == code) {
4,307!
5162
    code = nodeListToJson(pJson, jkNodeListNodeList, pNode->pNodeList);
4,307✔
5163
  }
5164

5165
  return code;
4,307✔
5166
}
5167

5168
static int32_t jsonToNodeListNode(const SJson* pJson, void* pObj) {
3,838✔
5169
  SNodeListNode* pNode = (SNodeListNode*)pObj;
3,838✔
5170

5171
  int32_t code = tjsonToObject(pJson, jkNodeListDataType, jsonToDataType, &pNode->node.resType);
3,838✔
5172
  if (TSDB_CODE_SUCCESS == code) {
3,838!
5173
    code = jsonToNodeList(pJson, jkNodeListNodeList, &pNode->pNodeList);
3,838✔
5174
  }
5175

5176
  return code;
3,838✔
5177
}
5178

5179
static const char* jkFillMode = "Mode";
5180
static const char* jkFillValues = "Values";
5181
static const char* jkFillWStartTs = "WStartTs";
5182
static const char* jkFillStartTime = "StartTime";
5183
static const char* jkFillEndTime = "EndTime";
5184

5185
static int32_t fillNodeToJson(const void* pObj, SJson* pJson) {
305✔
5186
  const SFillNode* pNode = (const SFillNode*)pObj;
305✔
5187

5188
  int32_t code = tjsonAddIntegerToObject(pJson, jkFillMode, pNode->mode);
305✔
5189
  if (TSDB_CODE_SUCCESS == code) {
305!
5190
    code = tjsonAddObject(pJson, jkFillValues, nodeToJson, pNode->pValues);
305✔
5191
  }
5192
  if (TSDB_CODE_SUCCESS == code) {
305!
5193
    code = tjsonAddObject(pJson, jkFillWStartTs, nodeToJson, pNode->pWStartTs);
305✔
5194
  }
5195
  if (TSDB_CODE_SUCCESS == code) {
305!
5196
    code = tjsonAddIntegerToObject(pJson, jkFillStartTime, pNode->timeRange.skey);
305✔
5197
  }
5198
  if (TSDB_CODE_SUCCESS == code) {
305!
5199
    code = tjsonAddIntegerToObject(pJson, jkFillEndTime, pNode->timeRange.ekey);
305✔
5200
  }
5201

5202
  return code;
305✔
5203
}
5204

5205
static int32_t jsonToFillNode(const SJson* pJson, void* pObj) {
368✔
5206
  SFillNode* pNode = (SFillNode*)pObj;
368✔
5207

5208
  int32_t code;
5209
  tjsonGetNumberValue(pJson, jkFillMode, pNode->mode, code);
368✔
5210
  if (TSDB_CODE_SUCCESS == code) {
368!
5211
    code = jsonToNodeObject(pJson, jkFillValues, &pNode->pValues);
368✔
5212
  }
5213
  if (TSDB_CODE_SUCCESS == code) {
368!
5214
    code = jsonToNodeObject(pJson, jkFillWStartTs, &pNode->pWStartTs);
368✔
5215
  }
5216
  if (TSDB_CODE_SUCCESS == code) {
368!
5217
    code = tjsonGetBigIntValue(pJson, jkFillStartTime, &pNode->timeRange.skey);
368✔
5218
  }
5219
  if (TSDB_CODE_SUCCESS == code) {
368!
5220
    code = tjsonGetBigIntValue(pJson, jkFillEndTime, &pNode->timeRange.ekey);
368✔
5221
  }
5222

5223
  return code;
368✔
5224
}
5225

5226
static const char* jkTargetDataBlockId = "DataBlockId";
5227
static const char* jkTargetSlotId = "SlotId";
5228
static const char* jkTargetExpr = "Expr";
5229

5230
static int32_t targetNodeToJson(const void* pObj, SJson* pJson) {
720,372✔
5231
  const STargetNode* pNode = (const STargetNode*)pObj;
720,372✔
5232

5233
  int32_t code = tjsonAddIntegerToObject(pJson, jkTargetDataBlockId, pNode->dataBlockId);
720,372✔
5234
  if (TSDB_CODE_SUCCESS == code) {
720,362!
5235
    code = tjsonAddIntegerToObject(pJson, jkTargetSlotId, pNode->slotId);
720,362✔
5236
  }
5237
  if (TSDB_CODE_SUCCESS == code) {
720,365!
5238
    code = tjsonAddObject(pJson, jkTargetExpr, nodeToJson, pNode->pExpr);
720,366✔
5239
  }
5240

5241
  return code;
720,371✔
5242
}
5243

5244
static int32_t jsonToTargetNode(const SJson* pJson, void* pObj) {
714,766✔
5245
  STargetNode* pNode = (STargetNode*)pObj;
714,766✔
5246

5247
  int32_t code = tjsonGetSmallIntValue(pJson, jkTargetDataBlockId, &pNode->dataBlockId);
714,766✔
5248
  if (TSDB_CODE_SUCCESS == code) {
714,626!
5249
    code = tjsonGetSmallIntValue(pJson, jkTargetSlotId, &pNode->slotId);
714,629✔
5250
  }
5251
  if (TSDB_CODE_SUCCESS == code) {
714,584!
5252
    code = jsonToNodeObject(pJson, jkTargetExpr, &pNode->pExpr);
714,590✔
5253
  }
5254

5255
  return code;
714,897✔
5256
}
5257

5258
static const char* jkSlotDescSlotId = "SlotId";
5259
static const char* jkSlotDescDataType = "DataType";
5260
static const char* jkSlotDescReserve = "Reserve";
5261
static const char* jkSlotDescOutput = "Output";
5262
static const char* jkSlotDescName = "Name";
5263

5264
static int32_t slotDescNodeToJson(const void* pObj, SJson* pJson) {
741,598✔
5265
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
741,598✔
5266

5267
  int32_t code = tjsonAddIntegerToObject(pJson, jkSlotDescSlotId, pNode->slotId);
741,598✔
5268
  if (TSDB_CODE_SUCCESS == code) {
741,572!
5269
    code = tjsonAddObject(pJson, jkSlotDescDataType, dataTypeToJson, &pNode->dataType);
741,572✔
5270
  }
5271
  if (TSDB_CODE_SUCCESS == code) {
741,604!
5272
    code = tjsonAddBoolToObject(pJson, jkSlotDescReserve, pNode->reserve);
741,604✔
5273
  }
5274
  if (TSDB_CODE_SUCCESS == code) {
741,598!
5275
    code = tjsonAddBoolToObject(pJson, jkSlotDescOutput, pNode->output);
741,598✔
5276
  }
5277
  if (TSDB_CODE_SUCCESS == code) {
741,598!
5278
    code = tjsonAddStringToObject(pJson, jkSlotDescName, pNode->name);
741,599✔
5279
  }
5280

5281
  return code;
741,573✔
5282
}
5283

5284
static int32_t jsonToSlotDescNode(const SJson* pJson, void* pObj) {
717,064✔
5285
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
717,064✔
5286

5287
  int32_t code = tjsonGetSmallIntValue(pJson, jkSlotDescSlotId, &pNode->slotId);
717,064✔
5288
  if (TSDB_CODE_SUCCESS == code) {
716,752!
5289
    code = tjsonToObject(pJson, jkSlotDescDataType, jsonToDataType, &pNode->dataType);
716,756✔
5290
  }
5291
  if (TSDB_CODE_SUCCESS == code) {
716,421!
5292
    code = tjsonGetBoolValue(pJson, jkSlotDescReserve, &pNode->reserve);
716,426✔
5293
  }
5294
  if (TSDB_CODE_SUCCESS == code) {
716,713!
5295
    code = tjsonGetBoolValue(pJson, jkSlotDescOutput, &pNode->output);
716,723✔
5296
  }
5297
  if (TSDB_CODE_SUCCESS == code) {
716,620!
5298
    code = tjsonGetStringValue(pJson, jkSlotDescName, pNode->name);
716,629✔
5299
  }
5300

5301
  return code;
716,262✔
5302
}
5303

5304
static const char* jkColumnDefColName = "ColName";
5305
static const char* jkColumnDefDataType = "DataType";
5306
static const char* jkColumnDefComments = "Comments";
5307
static const char* jkColumnDefSma = "Sma";
5308
static const char* jkColumnDefOptions = "ColumnOptions";
5309

5310
static int32_t columnDefNodeToJson(const void* pObj, SJson* pJson) {
13,000✔
5311
  const SColumnDefNode* pNode = (const SColumnDefNode*)pObj;
13,000✔
5312

5313
  int32_t code = tjsonAddStringToObject(pJson, jkColumnDefColName, pNode->colName);
13,000✔
5314
  if (TSDB_CODE_SUCCESS == code) {
13,000!
5315
    code = tjsonAddObject(pJson, jkColumnDefDataType, dataTypeToJson, &pNode->dataType);
13,000✔
5316
  }
5317
  if (TSDB_CODE_SUCCESS == code) {
13,000!
5318
    code = tjsonAddBoolToObject(pJson, jkColumnDefSma, pNode->sma);
13,000✔
5319
  }
5320
  if (TSDB_CODE_SUCCESS == code) {
13,000!
5321
    code = tjsonAddObject(pJson, jkColumnDefOptions, nodeToJson, pNode->pOptions);
13,000✔
5322
  }
5323

5324
  return code;
13,000✔
5325
}
5326

5327
static int32_t jsonToColumnDefNode(const SJson* pJson, void* pObj) {
13,000✔
5328
  SColumnDefNode* pNode = (SColumnDefNode*)pObj;
13,000✔
5329

5330
  int32_t code = tjsonGetStringValue(pJson, jkColumnDefColName, pNode->colName);
13,000✔
5331
  if (TSDB_CODE_SUCCESS == code) {
13,000!
5332
    code = tjsonToObject(pJson, jkColumnDefDataType, jsonToDataType, &pNode->dataType);
13,000✔
5333
  }
5334
  if (TSDB_CODE_SUCCESS == code) {
13,000!
5335
    code = tjsonGetBoolValue(pJson, jkColumnDefSma, &pNode->sma);
13,000✔
5336
  }
5337
  if (TSDB_CODE_SUCCESS == code) {
13,000!
5338
    code = jsonToNodeObject(pJson, jkColumnDefOptions, (SNode**)&pNode->pOptions);
13,000✔
5339
  }
5340
  return code;
13,000✔
5341
}
5342

5343
static const char* jkDownstreamSourceAddr = "Addr";
5344
static const char* jkDownstreamSourceClientId = "ClientId";
5345
static const char* jkDownstreamSourceTaskId = "TaskId";
5346
static const char* jkDownstreamSourceSeriousId = "SeriousId";
5347
static const char* jkDownstreamSourceExecId = "ExecId";
5348
static const char* jkDownstreamSourceFetchMsgType = "FetchMsgType";
5349

5350
static int32_t downstreamSourceNodeToJson(const void* pObj, SJson* pJson) {
948✔
5351
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
948✔
5352

5353
  int32_t code = tjsonAddObject(pJson, jkDownstreamSourceAddr, queryNodeAddrToJson, &pNode->addr);
948✔
5354
  if (TSDB_CODE_SUCCESS == code) {
948!
5355
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceClientId, pNode->clientId);
948✔
5356
  }
5357
  if (TSDB_CODE_SUCCESS == code) {
948!
5358
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceTaskId, pNode->taskId);
948✔
5359
  }
5360
  if (TSDB_CODE_SUCCESS == code) {
948!
5361
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceSeriousId, pNode->sId);
948✔
5362
  }
5363
  if (TSDB_CODE_SUCCESS == code) {
948!
5364
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceExecId, pNode->execId);
948✔
5365
  }
5366
  if (TSDB_CODE_SUCCESS == code) {
948!
5367
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceFetchMsgType, pNode->fetchMsgType);
948✔
5368
  }
5369

5370
  return code;
948✔
5371
}
5372

5373
static int32_t jsonToDownstreamSourceNode(const SJson* pJson, void* pObj) {
×
5374
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
×
5375

5376
  int32_t code = tjsonToObject(pJson, jkDownstreamSourceAddr, jsonToQueryNodeAddr, &pNode->addr);
×
5377
  if (TSDB_CODE_SUCCESS == code) {
×
5378
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceClientId, &pNode->clientId);
×
5379
  }
5380
  if (TSDB_CODE_SUCCESS == code) {
×
5381
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceTaskId, &pNode->taskId);
×
5382
  }
5383
  if (TSDB_CODE_SUCCESS == code) {
×
5384
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceSeriousId, &pNode->sId);
×
5385
  }
5386
  if (TSDB_CODE_SUCCESS == code) {
×
5387
    code = tjsonGetIntValue(pJson, jkDownstreamSourceExecId, &pNode->execId);
×
5388
  }
5389
  if (TSDB_CODE_SUCCESS == code) {
×
5390
    code = tjsonGetIntValue(pJson, jkDownstreamSourceFetchMsgType, &pNode->fetchMsgType);
×
5391
  }
5392

5393
  return code;
×
5394
}
5395

5396
static const char* jkWindowOffsetStartOffset = "StartOffset";
5397
static const char* jkWindowOffsetEndOffset = "EndOffset";
5398
static int32_t     windowOffsetNodeToJson(const void* pObj, SJson* pJson) {
×
5399
  const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
×
5400

5401
  int32_t code = tjsonAddObject(pJson, jkWindowOffsetStartOffset, nodeToJson, pNode->pStartOffset);
×
5402
  if (TSDB_CODE_SUCCESS == code) {
×
5403
    code = tjsonAddObject(pJson, jkWindowOffsetEndOffset, nodeToJson, pNode->pEndOffset);
×
5404
  }
5405
  return code;
×
5406
}
5407

5408
static int32_t jsonToWindowOffsetNode(const SJson* pJson, void* pObj) {
×
5409
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
×
5410

5411
  int32_t code = jsonToNodeObject(pJson, jkWindowOffsetStartOffset, &pNode->pStartOffset);
×
5412
  if (TSDB_CODE_SUCCESS == code) {
×
5413
    code = jsonToNodeObject(pJson, jkWindowOffsetEndOffset, &pNode->pEndOffset);
×
5414
  }
5415
  return code;
×
5416
}
5417

5418
static const char* jkDatabaseOptionsBuffer = "Buffer";
5419
static const char* jkDatabaseOptionsCacheModel = "CacheModel";
5420
static const char* jkDatabaseOptionsCompressionLevel = "CompressionLevel";
5421
static const char* jkDatabaseOptionsDaysPerFileNode = "DaysPerFileNode";
5422
static const char* jkDatabaseOptionsDaysPerFile = "DaysPerFile";
5423
static const char* jkDatabaseOptionsFsyncPeriod = "FsyncPeriod";
5424
static const char* jkDatabaseOptionsMaxRowsPerBlock = "MaxRowsPerBlock";
5425
static const char* jkDatabaseOptionsMinRowsPerBlock = "MinRowsPerBlock";
5426
static const char* jkDatabaseOptionsKeep = "Keep";
5427
static const char* jkDatabaseOptionsPages = "Pages";
5428
static const char* jkDatabaseOptionsPagesize = "Pagesize";
5429
static const char* jkDatabaseOptionsPrecision = "Precision";
5430
static const char* jkDatabaseOptionsReplica = "Replica";
5431
static const char* jkDatabaseOptionsStrict = "Strict";
5432
static const char* jkDatabaseOptionsWalLevel = "WalLevel";
5433
static const char* jkDatabaseOptionsNumOfVgroups = "NumOfVgroups";
5434
static const char* jkDatabaseOptionsSingleStable = "SingleStable";
5435
static const char* jkDatabaseOptionsRetentions = "Retentions";
5436
static const char* jkDatabaseOptionsSchemaless = "Schemaless";
5437
static const char* jkDatabaseOptionsS3ChunkSize = "S3ChunkSize";
5438
static const char* jkDatabaseOptionsS3KeepLocalNode = "S3KeepLocalNode";
5439
static const char* jkDatabaseOptionsS3KeepLocal = "S3KeepLocal";
5440
static const char* jkDatabaseOptionsS3Compact = "S3Compact";
5441
static const char* jkDatabaseOptionsCompactIntervalNode = "compactIntervalNode";
5442
static const char* jkDatabaseOptionsCompactTimeRange = "compactTimeRange";
5443
static const char* jkDatabaseOptionsCompactTimeOffsetNode = "compactTimeOffsetNode";
5444

5445
static int32_t databaseOptionsToJson(const void* pObj, SJson* pJson) {
420✔
5446
  const SDatabaseOptions* pNode = (const SDatabaseOptions*)pObj;
420✔
5447

5448
  int32_t code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsBuffer, pNode->buffer);
420✔
5449
  if (TSDB_CODE_SUCCESS == code) {
420!
5450
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCacheModel, pNode->cacheModel);
420✔
5451
  }
5452
  if (TSDB_CODE_SUCCESS == code) {
420!
5453
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCompressionLevel, pNode->compressionLevel);
420✔
5454
  }
5455
  if (TSDB_CODE_SUCCESS == code) {
420!
5456
    code = tjsonAddObject(pJson, jkDatabaseOptionsDaysPerFileNode, nodeToJson, pNode->pDaysPerFile);
420✔
5457
  }
5458
  if (TSDB_CODE_SUCCESS == code) {
420!
5459
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsDaysPerFile, pNode->daysPerFile);
420✔
5460
  }
5461
  if (TSDB_CODE_SUCCESS == code) {
420!
5462
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsFsyncPeriod, pNode->fsyncPeriod);
420✔
5463
  }
5464
  if (TSDB_CODE_SUCCESS == code) {
420!
5465
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsMaxRowsPerBlock, pNode->maxRowsPerBlock);
420✔
5466
  }
5467
  if (TSDB_CODE_SUCCESS == code) {
420!
5468
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsMinRowsPerBlock, pNode->minRowsPerBlock);
420✔
5469
  }
5470
  if (TSDB_CODE_SUCCESS == code) {
420!
5471
    code = nodeListToJson(pJson, jkDatabaseOptionsKeep, pNode->pKeep);
420✔
5472
  }
5473
  if (TSDB_CODE_SUCCESS == code) {
420!
5474
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsPages, pNode->pages);
420✔
5475
  }
5476
  if (TSDB_CODE_SUCCESS == code) {
420!
5477
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsPagesize, pNode->pagesize);
420✔
5478
  }
5479
  if (TSDB_CODE_SUCCESS == code) {
420!
5480
    code = tjsonAddStringToObject(pJson, jkDatabaseOptionsPrecision, pNode->precisionStr);
420✔
5481
  }
5482
  if (TSDB_CODE_SUCCESS == code) {
420!
5483
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsReplica, pNode->replica);
420✔
5484
  }
5485
  if (TSDB_CODE_SUCCESS == code) {
420!
5486
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsStrict, pNode->strict);
420✔
5487
  }
5488
  if (TSDB_CODE_SUCCESS == code) {
420!
5489
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsWalLevel, pNode->walLevel);
420✔
5490
  }
5491
  if (TSDB_CODE_SUCCESS == code) {
420!
5492
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsNumOfVgroups, pNode->numOfVgroups);
420✔
5493
  }
5494
  if (TSDB_CODE_SUCCESS == code) {
420!
5495
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSingleStable, pNode->singleStable);
420✔
5496
  }
5497
  if (TSDB_CODE_SUCCESS == code) {
420!
5498
    code = nodeListToJson(pJson, jkDatabaseOptionsRetentions, pNode->pRetentions);
420✔
5499
  }
5500
  if (TSDB_CODE_SUCCESS == code) {
420!
5501
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSchemaless, pNode->schemaless);
420✔
5502
  }
5503
  if (TSDB_CODE_SUCCESS == code) {
420!
5504
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsS3ChunkSize, pNode->s3ChunkSize);
420✔
5505
  }
5506
  if (TSDB_CODE_SUCCESS == code) {
420!
5507
    code = tjsonAddObject(pJson, jkDatabaseOptionsS3KeepLocalNode, nodeToJson, pNode->s3KeepLocalStr);
420✔
5508
  }
5509
  if (TSDB_CODE_SUCCESS == code) {
420!
5510
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsS3KeepLocal, pNode->s3KeepLocal);
420✔
5511
  }
5512
  if (TSDB_CODE_SUCCESS == code) {
420!
5513
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsS3Compact, pNode->s3Compact);
420✔
5514
  }
5515
  if (TSDB_CODE_SUCCESS == code) {
420!
5516
    code = tjsonAddObject(pJson, jkDatabaseOptionsCompactIntervalNode, nodeToJson, pNode->pCompactIntervalNode);
420✔
5517
  }
5518
  if (TSDB_CODE_SUCCESS == code) {
420!
5519
    code = nodeListToJson(pJson, jkDatabaseOptionsCompactTimeRange, pNode->pCompactTimeRangeList);
420✔
5520
  }
5521
  if (TSDB_CODE_SUCCESS == code) {
420!
5522
    code = tjsonAddObject(pJson, jkDatabaseOptionsCompactTimeOffsetNode, nodeToJson, pNode->pCompactTimeOffsetNode);
420✔
5523
  }
5524

5525
  return code;
420✔
5526
}
5527

5528
static int32_t jsonToDatabaseOptions(const SJson* pJson, void* pObj) {
420✔
5529
  SDatabaseOptions* pNode = (SDatabaseOptions*)pObj;
420✔
5530

5531
  int32_t code = tjsonGetIntValue(pJson, jkDatabaseOptionsBuffer, &pNode->buffer);
420✔
5532
  if (TSDB_CODE_SUCCESS == code) {
420!
5533
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCacheModel, &pNode->cacheModel);
420✔
5534
  }
5535
  if (TSDB_CODE_SUCCESS == code) {
420!
5536
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCompressionLevel, &pNode->compressionLevel);
420✔
5537
  }
5538
  if (TSDB_CODE_SUCCESS == code) {
420!
5539
    code = jsonToNodeObject(pJson, jkDatabaseOptionsDaysPerFileNode, (SNode**)&pNode->pDaysPerFile);
420✔
5540
  }
5541
  if (TSDB_CODE_SUCCESS == code) {
420!
5542
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsDaysPerFile, &pNode->daysPerFile);
420✔
5543
  }
5544
  if (TSDB_CODE_SUCCESS == code) {
420!
5545
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsFsyncPeriod, &pNode->fsyncPeriod);
420✔
5546
  }
5547
  if (TSDB_CODE_SUCCESS == code) {
420!
5548
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMaxRowsPerBlock, &pNode->maxRowsPerBlock);
420✔
5549
  }
5550
  if (TSDB_CODE_SUCCESS == code) {
420!
5551
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMinRowsPerBlock, &pNode->minRowsPerBlock);
420✔
5552
  }
5553
  if (TSDB_CODE_SUCCESS == code) {
420!
5554
    code = jsonToNodeList(pJson, jkDatabaseOptionsKeep, &pNode->pKeep);
420✔
5555
  }
5556
  if (TSDB_CODE_SUCCESS == code) {
420!
5557
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPages, &pNode->pages);
420✔
5558
  }
5559
  if (TSDB_CODE_SUCCESS == code) {
420!
5560
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPagesize, &pNode->pagesize);
420✔
5561
  }
5562
  if (TSDB_CODE_SUCCESS == code) {
420!
5563
    code = tjsonGetStringValue(pJson, jkDatabaseOptionsPrecision, pNode->precisionStr);
420✔
5564
  }
5565
  if (TSDB_CODE_SUCCESS == code) {
420!
5566
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsReplica, &pNode->replica);
420✔
5567
  }
5568
  if (TSDB_CODE_SUCCESS == code) {
420!
5569
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsStrict, &pNode->strict);
420✔
5570
  }
5571
  if (TSDB_CODE_SUCCESS == code) {
420!
5572
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsWalLevel, &pNode->walLevel);
420✔
5573
  }
5574
  if (TSDB_CODE_SUCCESS == code) {
420!
5575
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsNumOfVgroups, &pNode->numOfVgroups);
420✔
5576
  }
5577
  if (TSDB_CODE_SUCCESS == code) {
420!
5578
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSingleStable, &pNode->singleStable);
420✔
5579
  }
5580
  if (TSDB_CODE_SUCCESS == code) {
420!
5581
    code = jsonToNodeList(pJson, jkDatabaseOptionsRetentions, &pNode->pRetentions);
420✔
5582
  }
5583
  if (TSDB_CODE_SUCCESS == code) {
420!
5584
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSchemaless, &pNode->schemaless);
420✔
5585
  }
5586
  if (TSDB_CODE_SUCCESS == code) {
420!
5587
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3ChunkSize, &pNode->s3ChunkSize);
420✔
5588
  }
5589
  if (TSDB_CODE_SUCCESS == code) {
420!
5590
    code = jsonToNodeObject(pJson, jkDatabaseOptionsS3KeepLocalNode, (SNode**)&pNode->s3KeepLocalStr);
420✔
5591
  }
5592
  if (TSDB_CODE_SUCCESS == code) {
420!
5593
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3KeepLocal, &pNode->s3KeepLocal);
420✔
5594
  }
5595
  if (TSDB_CODE_SUCCESS == code) {
420!
5596
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsS3Compact, &pNode->s3Compact);
420✔
5597
  }
5598
  if (TSDB_CODE_SUCCESS == code) {
420!
5599
    code = jsonToNodeObject(pJson, jkDatabaseOptionsCompactIntervalNode, (SNode**)&pNode->pCompactIntervalNode);
420✔
5600
  }
5601
  if (TSDB_CODE_SUCCESS == code) {
420!
5602
    code = jsonToNodeList(pJson, jkDatabaseOptionsCompactTimeRange, &pNode->pCompactTimeRangeList);
420✔
5603
  }
5604
  if (TSDB_CODE_SUCCESS == code) {
420!
5605
    code = jsonToNodeObject(pJson, jkDatabaseOptionsCompactTimeOffsetNode, (SNode**)&pNode->pCompactTimeOffsetNode);
420✔
5606
  }
5607

5608
  return code;
420✔
5609
}
5610

5611
static const char* jkTableOptionsComment = "Comment";
5612
static const char* jkTableOptionsMaxDelay = "MaxDelay";
5613
static const char* jkTableOptionsWatermark = "Watermark";
5614
static const char* jkTableOptionsDeleteMark = "DeleteMark";
5615
static const char* jkTableOptionsRollupFuncs = "RollupFuncs";
5616
static const char* jkTableOptionsTtl = "Ttl";
5617
static const char* jkTableOptionsSma = "Sma";
5618

5619
static int32_t tableOptionsToJson(const void* pObj, SJson* pJson) {
78✔
5620
  const STableOptions* pNode = (const STableOptions*)pObj;
78✔
5621

5622
  int32_t code = tjsonAddStringToObject(pJson, jkTableOptionsComment, pNode->comment);
78✔
5623
  if (TSDB_CODE_SUCCESS == code) {
78!
5624
    code = nodeListToJson(pJson, jkTableOptionsMaxDelay, pNode->pMaxDelay);
78✔
5625
  }
5626
  if (TSDB_CODE_SUCCESS == code) {
78!
5627
    code = nodeListToJson(pJson, jkTableOptionsWatermark, pNode->pWatermark);
78✔
5628
  }
5629
  if (TSDB_CODE_SUCCESS == code) {
78!
5630
    code = nodeListToJson(pJson, jkTableOptionsDeleteMark, pNode->pDeleteMark);
78✔
5631
  }
5632
  if (TSDB_CODE_SUCCESS == code) {
78!
5633
    code = nodeListToJson(pJson, jkTableOptionsRollupFuncs, pNode->pRollupFuncs);
78✔
5634
  }
5635
  if (TSDB_CODE_SUCCESS == code) {
78!
5636
    code = tjsonAddIntegerToObject(pJson, jkTableOptionsTtl, pNode->ttl);
78✔
5637
  }
5638
  if (TSDB_CODE_SUCCESS == code) {
78!
5639
    code = nodeListToJson(pJson, jkTableOptionsSma, pNode->pSma);
78✔
5640
  }
5641

5642
  return code;
78✔
5643
}
5644

5645
static int32_t jsonToTableOptions(const SJson* pJson, void* pObj) {
96✔
5646
  STableOptions* pNode = (STableOptions*)pObj;
96✔
5647

5648
  int32_t code = tjsonGetStringValue(pJson, jkTableOptionsComment, pNode->comment);
96✔
5649
  if (TSDB_CODE_SUCCESS == code) {
96!
5650
    code = jsonToNodeList(pJson, jkTableOptionsMaxDelay, &pNode->pMaxDelay);
96✔
5651
  }
5652
  if (TSDB_CODE_SUCCESS == code) {
96!
5653
    code = jsonToNodeList(pJson, jkTableOptionsWatermark, &pNode->pWatermark);
96✔
5654
  }
5655
  if (TSDB_CODE_SUCCESS == code) {
96!
5656
    code = jsonToNodeList(pJson, jkTableOptionsDeleteMark, &pNode->pDeleteMark);
96✔
5657
  }
5658
  if (TSDB_CODE_SUCCESS == code) {
96!
5659
    code = jsonToNodeList(pJson, jkTableOptionsRollupFuncs, &pNode->pRollupFuncs);
96✔
5660
  }
5661
  if (TSDB_CODE_SUCCESS == code) {
96!
5662
    code = tjsonGetIntValue(pJson, jkTableOptionsTtl, &pNode->ttl);
96✔
5663
  }
5664
  if (TSDB_CODE_SUCCESS == code) {
96!
5665
    code = jsonToNodeList(pJson, jkTableOptionsSma, &pNode->pSma);
96✔
5666
  }
5667

5668
  return code;
96✔
5669
}
5670

5671
static const char* jkColumnOptionsEncode = "encode";
5672
static const char* jkColumnOptionsCompress = "compress";
5673
static const char* jkColumnOptionsLevel = "level";
5674
static int32_t     columnOptionsToJson(const void* pObj, SJson* pJson) {
12,663✔
5675
  const SColumnOptions* pNode = (const SColumnOptions*)pObj;
12,663✔
5676
  int32_t               code = tjsonAddStringToObject(pJson, jkColumnOptionsEncode, pNode->encode);
12,663✔
5677
  code = tjsonAddStringToObject(pJson, jkColumnOptionsCompress, pNode->compress);
12,663✔
5678
  code = tjsonAddStringToObject(pJson, jkColumnOptionsLevel, pNode->compressLevel);
12,663✔
5679
  return code;
12,663✔
5680
}
5681

5682
static int32_t jsonToColumnOptions(const SJson* pJson, void* pObj) {
12,663✔
5683
  SColumnOptions* pNode = (SColumnOptions*)pObj;
12,663✔
5684

5685
  int32_t code = tjsonGetStringValue(pJson, jkColumnOptionsEncode, pNode->encode);
12,663✔
5686
  code = tjsonGetStringValue(pJson, jkColumnOptionsCompress, pNode->compress);
12,663✔
5687
  code = tjsonGetStringValue(pJson, jkColumnOptionsLevel, pNode->compressLevel);
12,663✔
5688
  return code;
12,663✔
5689
}
5690

5691
static const char* jkIndexOptionsFuncs = "Funcs";
5692
static const char* jkIndexOptionsInterval = "Interval";
5693
static const char* jkIndexOptionsOffset = "Offset";
5694
static const char* jkIndexOptionsSliding = "Sliding";
5695
static const char* jkIndexOptionsStreamOptions = "StreamOptions";
5696

5697
static int32_t indexOptionsToJson(const void* pObj, SJson* pJson) {
19✔
5698
  const SIndexOptions* pNode = (const SIndexOptions*)pObj;
19✔
5699

5700
  int32_t code = nodeListToJson(pJson, jkIndexOptionsFuncs, pNode->pFuncs);
19✔
5701
  if (TSDB_CODE_SUCCESS == code) {
19!
5702
    code = tjsonAddObject(pJson, jkIndexOptionsInterval, nodeToJson, pNode->pInterval);
19✔
5703
  }
5704
  if (TSDB_CODE_SUCCESS == code) {
19!
5705
    code = tjsonAddObject(pJson, jkIndexOptionsOffset, nodeToJson, pNode->pOffset);
19✔
5706
  }
5707
  if (TSDB_CODE_SUCCESS == code) {
19!
5708
    code = tjsonAddObject(pJson, jkIndexOptionsSliding, nodeToJson, pNode->pSliding);
19✔
5709
  }
5710
  if (TSDB_CODE_SUCCESS == code) {
19!
5711
    code = tjsonAddObject(pJson, jkIndexOptionsStreamOptions, nodeToJson, pNode->pStreamOptions);
19✔
5712
  }
5713

5714
  return code;
19✔
5715
}
5716

5717
static int32_t jsonToIndexOptions(const SJson* pJson, void* pObj) {
19✔
5718
  SIndexOptions* pNode = (SIndexOptions*)pObj;
19✔
5719

5720
  int32_t code = jsonToNodeList(pJson, jkIndexOptionsFuncs, &pNode->pFuncs);
19✔
5721
  if (TSDB_CODE_SUCCESS == code) {
19!
5722
    code = jsonToNodeObject(pJson, jkIndexOptionsInterval, &pNode->pInterval);
19✔
5723
  }
5724
  if (TSDB_CODE_SUCCESS == code) {
19!
5725
    code = jsonToNodeObject(pJson, jkIndexOptionsOffset, &pNode->pOffset);
19✔
5726
  }
5727
  if (TSDB_CODE_SUCCESS == code) {
19!
5728
    code = jsonToNodeObject(pJson, jkIndexOptionsSliding, &pNode->pSliding);
19✔
5729
  }
5730
  if (TSDB_CODE_SUCCESS == code) {
19!
5731
    code = jsonToNodeObject(pJson, jkIndexOptionsStreamOptions, &pNode->pStreamOptions);
19✔
5732
  }
5733

5734
  return code;
19✔
5735
}
5736

5737
static const char* jkExplainOptionsVerbose = "Verbose";
5738
static const char* jkExplainOptionsRatio = "Ratio";
5739

5740
static int32_t explainOptionsToJson(const void* pObj, SJson* pJson) {
30✔
5741
  const SExplainOptions* pNode = (const SExplainOptions*)pObj;
30✔
5742

5743
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainOptionsVerbose, pNode->verbose);
30✔
5744
  if (TSDB_CODE_SUCCESS == code) {
30!
5745
    code = tjsonAddDoubleToObject(pJson, jkExplainOptionsRatio, pNode->ratio);
30✔
5746
  }
5747

5748
  return code;
30✔
5749
}
5750

5751
static int32_t jsonToExplainOptions(const SJson* pJson, void* pObj) {
30✔
5752
  SExplainOptions* pNode = (SExplainOptions*)pObj;
30✔
5753

5754
  int32_t code = tjsonGetBoolValue(pJson, jkExplainOptionsVerbose, &pNode->verbose);
30✔
5755
  if (TSDB_CODE_SUCCESS == code) {
30!
5756
    code = tjsonGetDoubleValue(pJson, jkExplainOptionsRatio, &pNode->ratio);
30✔
5757
  }
5758

5759
  return code;
30✔
5760
}
5761

5762
static const char* jkStreamOptionsTriggerType = "TriggerType";
5763
static const char* jkStreamOptionsDelay = "Delay";
5764
static const char* jkStreamOptionsWatermark = "Watermark";
5765
static const char* jkStreamOptionsDeleteMark = "DeleteMark";
5766
static const char* jkStreamOptionsFillHistory = "FillHistory";
5767
static const char* jkStreamOptionsIgnoreExpired = "IgnoreExpired";
5768

5769
static int32_t streamOptionsToJson(const void* pObj, SJson* pJson) {
105✔
5770
  const SStreamOptions* pNode = (const SStreamOptions*)pObj;
105✔
5771

5772
  int32_t code = tjsonAddIntegerToObject(pJson, jkStreamOptionsTriggerType, pNode->triggerType);
105✔
5773
  if (TSDB_CODE_SUCCESS == code) {
105!
5774
    code = tjsonAddObject(pJson, jkStreamOptionsDelay, nodeToJson, pNode->pDelay);
105✔
5775
  }
5776
  if (TSDB_CODE_SUCCESS == code) {
105!
5777
    code = tjsonAddObject(pJson, jkStreamOptionsWatermark, nodeToJson, pNode->pWatermark);
105✔
5778
  }
5779
  if (TSDB_CODE_SUCCESS == code) {
105!
5780
    code = tjsonAddObject(pJson, jkStreamOptionsDeleteMark, nodeToJson, pNode->pDeleteMark);
105✔
5781
  }
5782
  if (TSDB_CODE_SUCCESS == code) {
105!
5783
    code = tjsonAddIntegerToObject(pJson, jkStreamOptionsFillHistory, pNode->fillHistory);
105✔
5784
  }
5785
  if (TSDB_CODE_SUCCESS == code) {
105!
5786
    code = tjsonAddIntegerToObject(pJson, jkStreamOptionsIgnoreExpired, pNode->ignoreExpired);
105✔
5787
  }
5788

5789
  return code;
105✔
5790
}
5791

5792
static int32_t jsonToStreamOptions(const SJson* pJson, void* pObj) {
105✔
5793
  SStreamOptions* pNode = (SStreamOptions*)pObj;
105✔
5794

5795
  int32_t code = tjsonGetTinyIntValue(pJson, jkStreamOptionsTriggerType, &pNode->triggerType);
105✔
5796
  if (TSDB_CODE_SUCCESS == code) {
105!
5797
    code = jsonToNodeObject(pJson, jkStreamOptionsDelay, &pNode->pDelay);
105✔
5798
  }
5799
  if (TSDB_CODE_SUCCESS == code) {
105!
5800
    code = jsonToNodeObject(pJson, jkStreamOptionsWatermark, &pNode->pWatermark);
105✔
5801
  }
5802
  if (TSDB_CODE_SUCCESS == code) {
105!
5803
    code = jsonToNodeObject(pJson, jkStreamOptionsDeleteMark, &pNode->pDeleteMark);
105✔
5804
  }
5805
  if (TSDB_CODE_SUCCESS == code) {
105!
5806
    code = tjsonGetTinyIntValue(pJson, jkStreamOptionsFillHistory, &pNode->fillHistory);
105✔
5807
  }
5808
  if (TSDB_CODE_SUCCESS == code) {
105!
5809
    code = tjsonGetTinyIntValue(pJson, jkStreamOptionsIgnoreExpired, &pNode->ignoreExpired);
105✔
5810
  }
5811

5812
  return code;
105✔
5813
}
5814

5815
static const char* jkWhenThenWhen = "When";
5816
static const char* jkWhenThenThen = "Then";
5817

5818
static int32_t whenThenNodeToJson(const void* pObj, SJson* pJson) {
156✔
5819
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
156✔
5820

5821
  int32_t code = exprNodeToJson(pObj, pJson);
156✔
5822
  if (TSDB_CODE_SUCCESS == code) {
156!
5823
    code = tjsonAddObject(pJson, jkWhenThenWhen, nodeToJson, pNode->pWhen);
156✔
5824
  }
5825
  if (TSDB_CODE_SUCCESS == code) {
156!
5826
    code = tjsonAddObject(pJson, jkWhenThenThen, nodeToJson, pNode->pThen);
156✔
5827
  }
5828

5829
  return code;
156✔
5830
}
5831

5832
static int32_t jsonToWhenThenNode(const SJson* pJson, void* pObj) {
150✔
5833
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
150✔
5834

5835
  int32_t code = jsonToExprNode(pJson, pObj);
150✔
5836
  if (TSDB_CODE_SUCCESS == code) {
150!
5837
    code = jsonToNodeObject(pJson, jkWhenThenWhen, &pNode->pWhen);
150✔
5838
  }
5839
  if (TSDB_CODE_SUCCESS == code) {
150!
5840
    code = jsonToNodeObject(pJson, jkWhenThenThen, &pNode->pThen);
150✔
5841
  }
5842

5843
  return code;
150✔
5844
}
5845

5846
static const char* jkCaseWhenCase = "Case";
5847
static const char* jkCaseWhenWhenThenList = "WhenThenList";
5848
static const char* jkCaseWhenElse = "Else";
5849

5850
static int32_t caseWhenNodeToJson(const void* pObj, SJson* pJson) {
136✔
5851
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
136✔
5852

5853
  int32_t code = exprNodeToJson(pObj, pJson);
136✔
5854
  if (TSDB_CODE_SUCCESS == code) {
136!
5855
    code = tjsonAddObject(pJson, jkCaseWhenCase, nodeToJson, pNode->pCase);
136✔
5856
  }
5857
  if (TSDB_CODE_SUCCESS == code) {
136!
5858
    code = nodeListToJson(pJson, jkCaseWhenWhenThenList, pNode->pWhenThenList);
136✔
5859
  }
5860
  if (TSDB_CODE_SUCCESS == code) {
136!
5861
    code = tjsonAddObject(pJson, jkCaseWhenElse, nodeToJson, pNode->pElse);
136✔
5862
  }
5863

5864
  return code;
136✔
5865
}
5866

5867
static int32_t jsonToCaseWhenNode(const SJson* pJson, void* pObj) {
134✔
5868
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
134✔
5869

5870
  int32_t code = jsonToExprNode(pJson, pObj);
134✔
5871
  if (TSDB_CODE_SUCCESS == code) {
134!
5872
    code = jsonToNodeObject(pJson, jkCaseWhenCase, &pNode->pCase);
134✔
5873
  }
5874
  if (TSDB_CODE_SUCCESS == code) {
134!
5875
    code = jsonToNodeList(pJson, jkCaseWhenWhenThenList, &pNode->pWhenThenList);
134✔
5876
  }
5877
  if (TSDB_CODE_SUCCESS == code) {
134!
5878
    code = jsonToNodeObject(pJson, jkCaseWhenElse, &pNode->pElse);
134✔
5879
  }
5880

5881
  return code;
134✔
5882
}
5883

5884
static const char* jkDataBlockDescDataBlockId = "DataBlockId";
5885
static const char* jkDataBlockDescSlots = "Slots";
5886
static const char* jkDataBlockTotalRowSize = "TotalRowSize";
5887
static const char* jkDataBlockOutputRowSize = "OutputRowSize";
5888
static const char* jkDataBlockPrecision = "Precision";
5889

5890
static int32_t dataBlockDescNodeToJson(const void* pObj, SJson* pJson) {
38,025✔
5891
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
38,025✔
5892

5893
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataBlockDescDataBlockId, pNode->dataBlockId);
38,025✔
5894
  if (TSDB_CODE_SUCCESS == code) {
38,025!
5895
    code = tjsonAddIntegerToObject(pJson, jkDataBlockTotalRowSize, pNode->totalRowSize);
38,025✔
5896
  }
5897
  if (TSDB_CODE_SUCCESS == code) {
38,024!
5898
    code = tjsonAddIntegerToObject(pJson, jkDataBlockOutputRowSize, pNode->outputRowSize);
38,024✔
5899
  }
5900
  if (TSDB_CODE_SUCCESS == code) {
38,025!
5901
    code = nodeListToJson(pJson, jkDataBlockDescSlots, pNode->pSlots);
38,025✔
5902
  }
5903
  if (TSDB_CODE_SUCCESS == code) {
38,019!
5904
    code = tjsonAddIntegerToObject(pJson, jkDataBlockPrecision, pNode->precision);
38,019✔
5905
  }
5906

5907
  return code;
38,024✔
5908
}
5909

5910
static int32_t jsonToDataBlockDescNode(const SJson* pJson, void* pObj) {
32,905✔
5911
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
32,905✔
5912

5913
  int32_t code = tjsonGetSmallIntValue(pJson, jkDataBlockDescDataBlockId, &pNode->dataBlockId);
32,905✔
5914
  if (TSDB_CODE_SUCCESS == code) {
32,905!
5915
    code = tjsonGetIntValue(pJson, jkDataBlockTotalRowSize, &pNode->totalRowSize);
32,905✔
5916
  }
5917
  if (TSDB_CODE_SUCCESS == code) {
32,906!
5918
    code = tjsonGetIntValue(pJson, jkDataBlockOutputRowSize, &pNode->outputRowSize);
32,906✔
5919
  }
5920
  if (TSDB_CODE_SUCCESS == code) {
32,902!
5921
    code = jsonToNodeList(pJson, jkDataBlockDescSlots, &pNode->pSlots);
32,902✔
5922
  }
5923
  if (TSDB_CODE_SUCCESS == code) {
32,902!
5924
    code = tjsonGetUTinyIntValue(pJson, jkDataBlockPrecision, &pNode->precision);
32,903✔
5925
  }
5926

5927
  return code;
32,901✔
5928
}
5929

5930
static const char* jkSetOperatorOpType = "OpType";
5931
static const char* jkSetOperatorProjections = "Projections";
5932
static const char* jkSetOperatorLeft = "Left";
5933
static const char* jkSetOperatorRight = "Right";
5934
static const char* jkSetOperatorOrderByList = "OrderByList";
5935
static const char* jkSetOperatorLimit = "Limit";
5936

5937
static int32_t setOperatorToJson(const void* pObj, SJson* pJson) {
64✔
5938
  const SSetOperator* pNode = (const SSetOperator*)pObj;
64✔
5939

5940
  int32_t code = tjsonAddIntegerToObject(pJson, jkSetOperatorOpType, pNode->opType);
64✔
5941
  if (TSDB_CODE_SUCCESS == code) {
64!
5942
    code = nodeListToJson(pJson, jkSetOperatorProjections, pNode->pProjectionList);
64✔
5943
  }
5944
  if (TSDB_CODE_SUCCESS == code) {
64!
5945
    code = tjsonAddObject(pJson, jkSetOperatorLeft, nodeToJson, pNode->pLeft);
64✔
5946
  }
5947
  if (TSDB_CODE_SUCCESS == code) {
64!
5948
    code = tjsonAddObject(pJson, jkSetOperatorRight, nodeToJson, pNode->pRight);
64✔
5949
  }
5950
  if (TSDB_CODE_SUCCESS == code) {
64!
5951
    code = nodeListToJson(pJson, jkSetOperatorOrderByList, pNode->pOrderByList);
64✔
5952
  }
5953
  if (TSDB_CODE_SUCCESS == code) {
64!
5954
    code = tjsonAddObject(pJson, jkSetOperatorLimit, nodeToJson, pNode->pLimit);
64✔
5955
  }
5956

5957
  return code;
64✔
5958
}
5959

5960
static int32_t jsonToSetOperator(const SJson* pJson, void* pObj) {
64✔
5961
  SSetOperator* pNode = (SSetOperator*)pObj;
64✔
5962

5963
  int32_t code = TSDB_CODE_SUCCESS;
64✔
5964
  tjsonGetNumberValue(pJson, jkSetOperatorOpType, pNode->opType, code);
64✔
5965
  if (TSDB_CODE_SUCCESS == code) {
64!
5966
    code = jsonToNodeList(pJson, jkSetOperatorProjections, &pNode->pProjectionList);
64✔
5967
  }
5968
  if (TSDB_CODE_SUCCESS == code) {
64!
5969
    code = jsonToNodeObject(pJson, jkSetOperatorLeft, &pNode->pLeft);
64✔
5970
  }
5971
  if (TSDB_CODE_SUCCESS == code) {
64!
5972
    code = jsonToNodeObject(pJson, jkSetOperatorRight, &pNode->pRight);
64✔
5973
  }
5974
  if (TSDB_CODE_SUCCESS == code) {
64!
5975
    code = jsonToNodeList(pJson, jkSetOperatorOrderByList, &pNode->pOrderByList);
64✔
5976
  }
5977
  if (TSDB_CODE_SUCCESS == code) {
64!
5978
    code = jsonToNodeObject(pJson, jkSetOperatorLimit, &pNode->pLimit);
64✔
5979
  }
5980

5981
  return code;
64✔
5982
}
5983

5984
static const char* jkSelectStmtDistinct = "Distinct";
5985
static const char* jkSelectStmtProjections = "Projections";
5986
static const char* jkSelectStmtFrom = "From";
5987
static const char* jkSelectStmtWhere = "Where";
5988
static const char* jkSelectStmtPartitionBy = "PartitionBy";
5989
static const char* jkSelectStmtTags = "Tags";
5990
static const char* jkSelectStmtSubtable = "Subtable";
5991
static const char* jkSelectStmtWindow = "Window";
5992
static const char* jkSelectStmtGroupBy = "GroupBy";
5993
static const char* jkSelectStmtHaving = "Having";
5994
static const char* jkSelectStmtOrderBy = "OrderBy";
5995
static const char* jkSelectStmtLimit = "Limit";
5996
static const char* jkSelectStmtSlimit = "Slimit";
5997
static const char* jkSelectStmtStmtName = "StmtName";
5998
static const char* jkSelectStmtHasAggFuncs = "HasAggFuncs";
5999
static const char* jkSelectStmtInterpFuncs = "HasInterpFuncs";
6000
static const char* jkSelectStmtInterpFill = "InterpFill";
6001
static const char* jkSelectStmtInterpEvery = "InterpEvery";
6002
static const char* jkSelectStmtTwaOrElapsedFuncs = "HasTwaOrElapsedFuncs";
6003

6004
static int32_t selectStmtToJson(const void* pObj, SJson* pJson) {
3,655✔
6005
  const SSelectStmt* pNode = (const SSelectStmt*)pObj;
3,655✔
6006

6007
  int32_t code = tjsonAddBoolToObject(pJson, jkSelectStmtDistinct, pNode->isDistinct);
3,655✔
6008
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6009
    code = nodeListToJson(pJson, jkSelectStmtProjections, pNode->pProjectionList);
3,655✔
6010
  }
6011
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6012
    code = tjsonAddObject(pJson, jkSelectStmtFrom, nodeToJson, pNode->pFromTable);
3,655✔
6013
  }
6014
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6015
    code = tjsonAddObject(pJson, jkSelectStmtWhere, nodeToJson, pNode->pWhere);
3,655✔
6016
  }
6017
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6018
    code = nodeListToJson(pJson, jkSelectStmtPartitionBy, pNode->pPartitionByList);
3,655✔
6019
  }
6020
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6021
    code = nodeListToJson(pJson, jkSelectStmtTags, pNode->pTags);
3,655✔
6022
  }
6023
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6024
    code = tjsonAddObject(pJson, jkSelectStmtSubtable, nodeToJson, pNode->pSubtable);
3,655✔
6025
  }
6026
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6027
    code = tjsonAddObject(pJson, jkSelectStmtWindow, nodeToJson, pNode->pWindow);
3,655✔
6028
  }
6029
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6030
    code = nodeListToJson(pJson, jkSelectStmtGroupBy, pNode->pGroupByList);
3,655✔
6031
  }
6032
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6033
    code = tjsonAddObject(pJson, jkSelectStmtHaving, nodeToJson, pNode->pHaving);
3,655✔
6034
  }
6035
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6036
    code = nodeListToJson(pJson, jkSelectStmtOrderBy, pNode->pOrderByList);
3,655✔
6037
  }
6038
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6039
    code = tjsonAddObject(pJson, jkSelectStmtLimit, nodeToJson, pNode->pLimit);
3,655✔
6040
  }
6041
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6042
    code = tjsonAddObject(pJson, jkSelectStmtSlimit, nodeToJson, pNode->pSlimit);
3,655✔
6043
  }
6044
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6045
    code = tjsonAddStringToObject(pJson, jkSelectStmtStmtName, pNode->stmtName);
3,655✔
6046
  }
6047
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6048
    code = tjsonAddBoolToObject(pJson, jkSelectStmtHasAggFuncs, pNode->hasAggFuncs);
3,655✔
6049
  }
6050
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6051
    code = tjsonAddBoolToObject(pJson, jkSelectStmtInterpFuncs, pNode->hasInterpFunc);
3,655✔
6052
  }
6053
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6054
    code = tjsonAddBoolToObject(pJson, jkSelectStmtTwaOrElapsedFuncs, pNode->hasTwaOrElapsedFunc);
3,655✔
6055
  }
6056
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6057
    code = tjsonAddObject(pJson, jkSelectStmtInterpFill, nodeToJson, pNode->pFill);
3,655✔
6058
  }
6059
  if (TSDB_CODE_SUCCESS == code) {
3,655!
6060
    code = tjsonAddObject(pJson, jkSelectStmtInterpEvery, nodeToJson, pNode->pEvery);
3,655✔
6061
  }
6062

6063
  return code;
3,655✔
6064
}
6065

6066
static int32_t jsonToSelectStmt(const SJson* pJson, void* pObj) {
7,512✔
6067
  SSelectStmt* pNode = (SSelectStmt*)pObj;
7,512✔
6068

6069
  int32_t code = tjsonGetBoolValue(pJson, jkSelectStmtDistinct, &pNode->isDistinct);
7,512✔
6070
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6071
    code = jsonToNodeList(pJson, jkSelectStmtProjections, &pNode->pProjectionList);
7,512✔
6072
  }
6073
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6074
    code = jsonToNodeObject(pJson, jkSelectStmtFrom, &pNode->pFromTable);
7,512✔
6075
  }
6076
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6077
    code = jsonToNodeObject(pJson, jkSelectStmtWhere, &pNode->pWhere);
7,512✔
6078
  }
6079
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6080
    code = jsonToNodeList(pJson, jkSelectStmtPartitionBy, &pNode->pPartitionByList);
7,512✔
6081
  }
6082
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6083
    code = jsonToNodeList(pJson, jkSelectStmtTags, &pNode->pTags);
7,512✔
6084
  }
6085
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6086
    code = jsonToNodeObject(pJson, jkSelectStmtSubtable, &pNode->pSubtable);
7,512✔
6087
  }
6088
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6089
    code = jsonToNodeObject(pJson, jkSelectStmtWindow, &pNode->pWindow);
7,512✔
6090
  }
6091
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6092
    code = jsonToNodeList(pJson, jkSelectStmtGroupBy, &pNode->pGroupByList);
7,512✔
6093
  }
6094
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6095
    code = jsonToNodeObject(pJson, jkSelectStmtHaving, &pNode->pHaving);
7,512✔
6096
  }
6097
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6098
    code = jsonToNodeList(pJson, jkSelectStmtOrderBy, &pNode->pOrderByList);
7,512✔
6099
  }
6100
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6101
    code = jsonToNodeObject(pJson, jkSelectStmtLimit, (SNode**)&pNode->pLimit);
7,512✔
6102
  }
6103
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6104
    code = jsonToNodeObject(pJson, jkSelectStmtSlimit, (SNode**)&pNode->pSlimit);
7,512✔
6105
  }
6106
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6107
    code = tjsonGetStringValue(pJson, jkSelectStmtStmtName, pNode->stmtName);
7,512✔
6108
  }
6109
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6110
    code = tjsonGetBoolValue(pJson, jkSelectStmtHasAggFuncs, &pNode->hasAggFuncs);
7,512✔
6111
  }
6112
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6113
    code = tjsonGetBoolValue(pJson, jkSelectStmtInterpFuncs, &pNode->hasInterpFunc);
7,512✔
6114
  }
6115
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6116
    code = tjsonGetBoolValue(pJson, jkSelectStmtTwaOrElapsedFuncs, &pNode->hasTwaOrElapsedFunc);
7,512✔
6117
  }
6118
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6119
    code = jsonToNodeObject(pJson, jkSelectStmtInterpFill, &pNode->pFill);
7,512✔
6120
  }
6121
  if (TSDB_CODE_SUCCESS == code) {
7,512!
6122
    code = jsonToNodeObject(pJson, jkSelectStmtInterpEvery, &pNode->pEvery);
7,512✔
6123
  }
6124

6125
  return code;
7,512✔
6126
}
6127

6128
static const char* jkVnodeModifyOpStmtSqlNodeType = "SqlNodeType";
6129
static const char* jkVnodeModifyOpStmtTotalRowsNum = "TotalRowsNum";
6130
static const char* jkVnodeModifyOpStmtTotalTbNum = "TotalTbNum";
6131

6132
static int32_t vnodeModifyStmtToJson(const void* pObj, SJson* pJson) {
120✔
6133
  const SVnodeModifyOpStmt* pNode = (const SVnodeModifyOpStmt*)pObj;
120✔
6134

6135
  int32_t code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType);
120✔
6136
  if (TSDB_CODE_SUCCESS == code) {
120!
6137
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalRowsNum, pNode->totalRowsNum);
120✔
6138
  }
6139
  if (TSDB_CODE_SUCCESS == code) {
120!
6140
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalTbNum, pNode->totalTbNum);
120✔
6141
  }
6142

6143
  return code;
120✔
6144
}
6145

6146
static int32_t jsonToVnodeModifyStmt(const SJson* pJson, void* pObj) {
120✔
6147
  SVnodeModifyOpStmt* pNode = (SVnodeModifyOpStmt*)pObj;
120✔
6148

6149
  int32_t code = TSDB_CODE_SUCCESS;
120✔
6150
  tjsonGetNumberValue(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType, code);
120✔
6151
  if (TSDB_CODE_SUCCESS == code) {
120!
6152
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalRowsNum, &pNode->totalRowsNum);
120✔
6153
  }
6154
  if (TSDB_CODE_SUCCESS == code) {
120!
6155
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalTbNum, &pNode->totalTbNum);
120✔
6156
  }
6157

6158
  return code;
120✔
6159
}
6160

6161
static const char* jkCreateDatabaseStmtDbName = "DbName";
6162
static const char* jkCreateDatabaseStmtIgnoreExists = "IgnoreExists";
6163
static const char* jkCreateDatabaseStmtOptions = "Options";
6164

6165
static int32_t createDatabaseStmtToJson(const void* pObj, SJson* pJson) {
54✔
6166
  const SCreateDatabaseStmt* pNode = (const SCreateDatabaseStmt*)pObj;
54✔
6167

6168
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
54✔
6169
  if (TSDB_CODE_SUCCESS == code) {
54!
6170
    code = tjsonAddBoolToObject(pJson, jkCreateDatabaseStmtIgnoreExists, pNode->ignoreExists);
54✔
6171
  }
6172
  if (TSDB_CODE_SUCCESS == code) {
54!
6173
    code = tjsonAddObject(pJson, jkCreateDatabaseStmtOptions, nodeToJson, pNode->pOptions);
54✔
6174
  }
6175

6176
  return code;
54✔
6177
}
6178

6179
static int32_t jsonToCreateDatabaseStmt(const SJson* pJson, void* pObj) {
54✔
6180
  SCreateDatabaseStmt* pNode = (SCreateDatabaseStmt*)pObj;
54✔
6181

6182
  int32_t code = tjsonGetStringValue(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
54✔
6183
  if (TSDB_CODE_SUCCESS == code) {
54!
6184
    code = tjsonGetBoolValue(pJson, jkCreateDatabaseStmtIgnoreExists, &pNode->ignoreExists);
54✔
6185
  }
6186
  if (TSDB_CODE_SUCCESS == code) {
54!
6187
    code = jsonToNodeObject(pJson, jkCreateDatabaseStmtOptions, (SNode**)&pNode->pOptions);
54✔
6188
  }
6189

6190
  return code;
54✔
6191
}
6192

6193
static const char* jkAlterDatabaseStmtDbName = "DbName";
6194
static const char* jkAlterDatabaseStmtOptions = "Options";
6195

6196
static int32_t alterDatabaseStmtToJson(const void* pObj, SJson* pJson) {
366✔
6197
  const SAlterDatabaseStmt* pNode = (const SAlterDatabaseStmt*)pObj;
366✔
6198

6199
  int32_t code = tjsonAddStringToObject(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
366✔
6200
  if (TSDB_CODE_SUCCESS == code) {
366!
6201
    code = tjsonAddObject(pJson, jkAlterDatabaseStmtOptions, nodeToJson, pNode->pOptions);
366✔
6202
  }
6203

6204
  return code;
366✔
6205
}
6206

6207
static int32_t jsonToAlterDatabaseStmt(const SJson* pJson, void* pObj) {
366✔
6208
  SAlterDatabaseStmt* pNode = (SAlterDatabaseStmt*)pObj;
366✔
6209

6210
  int32_t code = tjsonGetStringValue(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
366✔
6211
  if (TSDB_CODE_SUCCESS == code) {
366!
6212
    code = jsonToNodeObject(pJson, jkAlterDatabaseStmtOptions, (SNode**)&pNode->pOptions);
366✔
6213
  }
6214

6215
  return code;
366✔
6216
}
6217

6218
static const char* jkTrimDatabaseStmtDbName = "DbName";
6219
static const char* jkTrimDatabaseStmtMaxSpeed = "MaxSpeed";
6220

6221
static int32_t trimDatabaseStmtToJson(const void* pObj, SJson* pJson) {
18✔
6222
  const STrimDatabaseStmt* pNode = (const STrimDatabaseStmt*)pObj;
18✔
6223

6224
  int32_t code = tjsonAddStringToObject(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
18✔
6225
  if (TSDB_CODE_SUCCESS == code) {
18!
6226
    code = tjsonAddIntegerToObject(pJson, jkTrimDatabaseStmtMaxSpeed, pNode->maxSpeed);
18✔
6227
  }
6228

6229
  return code;
18✔
6230
}
6231

6232
static int32_t jsonToTrimDatabaseStmt(const SJson* pJson, void* pObj) {
18✔
6233
  STrimDatabaseStmt* pNode = (STrimDatabaseStmt*)pObj;
18✔
6234

6235
  int32_t code = tjsonGetStringValue(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
18✔
6236
  if (TSDB_CODE_SUCCESS == code) {
18!
6237
    code = tjsonGetIntValue(pJson, jkTrimDatabaseStmtMaxSpeed, &pNode->maxSpeed);
18✔
6238
  }
6239

6240
  return code;
18✔
6241
}
6242

6243
static const char* jkS3MigrateDatabaseStmtDbName = "DbName";
6244

6245
static int32_t s3migrateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6246
  const SS3MigrateDatabaseStmt* pNode = (const SS3MigrateDatabaseStmt*)pObj;
×
6247

6248
  int32_t code = tjsonAddStringToObject(pJson, jkS3MigrateDatabaseStmtDbName, pNode->dbName);
×
6249

6250
  return code;
×
6251
}
6252

6253
static int32_t jsonToS3MigrateDatabaseStmt(const SJson* pJson, void* pObj) {
×
6254
  SS3MigrateDatabaseStmt* pNode = (SS3MigrateDatabaseStmt*)pObj;
×
6255

6256
  int32_t code = tjsonGetStringValue(pJson, jkS3MigrateDatabaseStmtDbName, pNode->dbName);
×
6257

6258
  return code;
×
6259
}
6260

6261
static const char* jkCreateTableStmtDbName = "DbName";
6262
static const char* jkCreateTableStmtTableName = "TableName";
6263
static const char* jkCreateTableStmtIgnoreExists = "IgnoreExists";
6264
static const char* jkCreateTableStmtCols = "Cols";
6265
static const char* jkCreateTableStmtTags = "Tags";
6266
static const char* jkCreateTableStmtOptions = "Options";
6267

6268
static int32_t createTableStmtToJson(const void* pObj, SJson* pJson) {
45✔
6269
  const SCreateTableStmt* pNode = (const SCreateTableStmt*)pObj;
45✔
6270

6271
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTableStmtDbName, pNode->dbName);
45✔
6272
  if (TSDB_CODE_SUCCESS == code) {
45!
6273
    code = tjsonAddStringToObject(pJson, jkCreateTableStmtTableName, pNode->tableName);
45✔
6274
  }
6275
  if (TSDB_CODE_SUCCESS == code) {
45!
6276
    code = tjsonAddBoolToObject(pJson, jkCreateTableStmtIgnoreExists, pNode->ignoreExists);
45✔
6277
  }
6278
  if (TSDB_CODE_SUCCESS == code) {
45!
6279
    code = nodeListToJson(pJson, jkCreateTableStmtCols, pNode->pCols);
45✔
6280
  }
6281
  if (TSDB_CODE_SUCCESS == code) {
45!
6282
    code = nodeListToJson(pJson, jkCreateTableStmtTags, pNode->pTags);
45✔
6283
  }
6284
  if (TSDB_CODE_SUCCESS == code) {
45!
6285
    code = tjsonAddObject(pJson, jkCreateTableStmtOptions, nodeToJson, pNode->pOptions);
45✔
6286
  }
6287

6288
  return code;
45✔
6289
}
6290

6291
static int32_t jsonToCreateTableStmt(const SJson* pJson, void* pObj) {
45✔
6292
  SCreateTableStmt* pNode = (SCreateTableStmt*)pObj;
45✔
6293

6294
  int32_t code = tjsonGetStringValue(pJson, jkCreateTableStmtDbName, pNode->dbName);
45✔
6295
  if (TSDB_CODE_SUCCESS == code) {
45!
6296
    code = tjsonGetStringValue(pJson, jkCreateTableStmtTableName, pNode->tableName);
45✔
6297
  }
6298
  if (TSDB_CODE_SUCCESS == code) {
45!
6299
    code = tjsonGetBoolValue(pJson, jkCreateTableStmtIgnoreExists, &pNode->ignoreExists);
45✔
6300
  }
6301
  if (TSDB_CODE_SUCCESS == code) {
45!
6302
    code = jsonToNodeList(pJson, jkCreateTableStmtCols, &pNode->pCols);
45✔
6303
  }
6304
  if (TSDB_CODE_SUCCESS == code) {
45!
6305
    code = jsonToNodeList(pJson, jkCreateTableStmtTags, &pNode->pTags);
45✔
6306
  }
6307
  if (TSDB_CODE_SUCCESS == code) {
45!
6308
    code = jsonToNodeObject(pJson, jkCreateTableStmtOptions, (SNode**)&pNode->pOptions);
45✔
6309
  }
6310

6311
  return code;
45✔
6312
}
6313

6314
static const char* jkCreateSubTableClauseDbName = "DbName";
6315
static const char* jkCreateSubTableClauseTableName = "TableName";
6316
static const char* jkCreateSubTableClauseUseDbName = "UseDbName";
6317
static const char* jkCreateSubTableClauseUseTableName = "UseTableName";
6318
static const char* jkCreateSubTableClauseIgnoreExists = "IgnoreExists";
6319
static const char* jkCreateSubTableClauseSpecificTags = "SpecificTags";
6320
static const char* jkCreateSubTableClauseValsOfTags = "ValsOfTags";
6321
static const char* jkCreateSubTableClauseOptions = "Options";
6322

6323
static int32_t createSubTableClauseToJson(const void* pObj, SJson* pJson) {
15✔
6324
  const SCreateSubTableClause* pNode = (const SCreateSubTableClause*)pObj;
15✔
6325

6326
  int32_t code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
15✔
6327
  if (TSDB_CODE_SUCCESS == code) {
15!
6328
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
15✔
6329
  }
6330
  if (TSDB_CODE_SUCCESS == code) {
15!
6331
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
15✔
6332
  }
6333
  if (TSDB_CODE_SUCCESS == code) {
15!
6334
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
15✔
6335
  }
6336
  if (TSDB_CODE_SUCCESS == code) {
15!
6337
    code = tjsonAddBoolToObject(pJson, jkCreateSubTableClauseIgnoreExists, pNode->ignoreExists);
15✔
6338
  }
6339
  if (TSDB_CODE_SUCCESS == code) {
15!
6340
    code = nodeListToJson(pJson, jkCreateSubTableClauseSpecificTags, pNode->pSpecificTags);
15✔
6341
  }
6342
  if (TSDB_CODE_SUCCESS == code) {
15!
6343
    code = nodeListToJson(pJson, jkCreateSubTableClauseValsOfTags, pNode->pValsOfTags);
15✔
6344
  }
6345
  if (TSDB_CODE_SUCCESS == code) {
15!
6346
    code = tjsonAddObject(pJson, jkCreateSubTableClauseOptions, nodeToJson, pNode->pOptions);
15✔
6347
  }
6348

6349
  return code;
15✔
6350
}
6351

6352
static int32_t jsonToCreateSubTableClause(const SJson* pJson, void* pObj) {
15✔
6353
  SCreateSubTableClause* pNode = (SCreateSubTableClause*)pObj;
15✔
6354

6355
  int32_t code = tjsonGetStringValue(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
15✔
6356
  if (TSDB_CODE_SUCCESS == code) {
15!
6357
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
15✔
6358
  }
6359
  if (TSDB_CODE_SUCCESS == code) {
15!
6360
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
15✔
6361
  }
6362
  if (TSDB_CODE_SUCCESS == code) {
15!
6363
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
15✔
6364
  }
6365
  if (TSDB_CODE_SUCCESS == code) {
15!
6366
    code = tjsonGetBoolValue(pJson, jkCreateSubTableClauseIgnoreExists, &pNode->ignoreExists);
15✔
6367
  }
6368
  if (TSDB_CODE_SUCCESS == code) {
15!
6369
    code = jsonToNodeList(pJson, jkCreateSubTableClauseSpecificTags, &pNode->pSpecificTags);
15✔
6370
  }
6371
  if (TSDB_CODE_SUCCESS == code) {
15!
6372
    code = jsonToNodeList(pJson, jkCreateSubTableClauseValsOfTags, &pNode->pValsOfTags);
15✔
6373
  }
6374
  if (TSDB_CODE_SUCCESS == code) {
15!
6375
    code = jsonToNodeObject(pJson, jkCreateSubTableClauseOptions, (SNode**)&pNode->pOptions);
15✔
6376
  }
6377

6378
  return code;
15✔
6379
}
6380

6381
static const char* jkCreateMultiTablesStmtSubTables = "SubTables";
6382

6383
static int32_t createMultiTablesStmtToJson(const void* pObj, SJson* pJson) {
9✔
6384
  const SCreateMultiTablesStmt* pNode = (const SCreateMultiTablesStmt*)pObj;
9✔
6385
  return nodeListToJson(pJson, jkCreateMultiTablesStmtSubTables, pNode->pSubTables);
9✔
6386
}
6387

6388
static int32_t jsonToCreateMultiTablesStmt(const SJson* pJson, void* pObj) {
9✔
6389
  SCreateMultiTablesStmt* pNode = (SCreateMultiTablesStmt*)pObj;
9✔
6390
  return jsonToNodeList(pJson, jkCreateMultiTablesStmtSubTables, &pNode->pSubTables);
9✔
6391
}
6392

6393
static const char* jkDropTableClauseDbName = "DbName";
6394
static const char* jkDropTableClauseTableName = "TableName";
6395
static const char* jkDropTableClauseIgnoreNotExists = "IgnoreNotExists";
6396

6397
static int32_t dropTableClauseToJson(const void* pObj, SJson* pJson) {
12✔
6398
  const SDropTableClause* pNode = (const SDropTableClause*)pObj;
12✔
6399

6400
  int32_t code = tjsonAddStringToObject(pJson, jkDropTableClauseDbName, pNode->dbName);
12✔
6401
  if (TSDB_CODE_SUCCESS == code) {
12!
6402
    code = tjsonAddStringToObject(pJson, jkDropTableClauseTableName, pNode->tableName);
12✔
6403
  }
6404
  if (TSDB_CODE_SUCCESS == code) {
12!
6405
    code = tjsonAddBoolToObject(pJson, jkDropTableClauseIgnoreNotExists, pNode->ignoreNotExists);
12✔
6406
  }
6407

6408
  return code;
12✔
6409
}
6410

6411
static int32_t jsonToDropTableClause(const SJson* pJson, void* pObj) {
12✔
6412
  SDropTableClause* pNode = (SDropTableClause*)pObj;
12✔
6413

6414
  int32_t code = tjsonGetStringValue(pJson, jkDropTableClauseDbName, pNode->dbName);
12✔
6415
  if (TSDB_CODE_SUCCESS == code) {
12!
6416
    code = tjsonGetStringValue(pJson, jkDropTableClauseTableName, pNode->tableName);
12✔
6417
  }
6418
  if (TSDB_CODE_SUCCESS == code) {
12!
6419
    code = tjsonGetBoolValue(pJson, jkDropTableClauseIgnoreNotExists, &pNode->ignoreNotExists);
12✔
6420
  }
6421

6422
  return code;
12✔
6423
}
6424

6425
static const char* jkDropTableStmtTables = "Tables";
6426

6427
static int32_t dropTableStmtToJson(const void* pObj, SJson* pJson) {
6✔
6428
  const SDropTableStmt* pNode = (const SDropTableStmt*)pObj;
6✔
6429
  return nodeListToJson(pJson, jkDropTableStmtTables, pNode->pTables);
6✔
6430
}
6431

6432
static int32_t jsonToDropTableStmt(const SJson* pJson, void* pObj) {
6✔
6433
  SDropTableStmt* pNode = (SDropTableStmt*)pObj;
6✔
6434
  return jsonToNodeList(pJson, jkDropTableStmtTables, &pNode->pTables);
6✔
6435
}
6436

6437
static const char* jkDropSuperTableStmtDbName = "DbName";
6438
static const char* jkDropSuperTableStmtTableName = "TableName";
6439
static const char* jkDropSuperTableStmtIgnoreNotExists = "IgnoreNotExists";
6440
static const char* jkDropSuperTableStmtwithOpt = "withOpt";
6441

6442
static int32_t dropStableStmtToJson(const void* pObj, SJson* pJson) {
9✔
6443
  const SDropSuperTableStmt* pNode = (const SDropSuperTableStmt*)pObj;
9✔
6444

6445
  int32_t code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
9✔
6446
  if (TSDB_CODE_SUCCESS == code) {
9!
6447
    code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
9✔
6448
  }
6449
  if (TSDB_CODE_SUCCESS == code) {
9!
6450
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtIgnoreNotExists, pNode->ignoreNotExists);
9✔
6451
  }
6452
  if (TSDB_CODE_SUCCESS == code) {
9!
6453
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtwithOpt, pNode->withOpt);
9✔
6454
  }
6455

6456
  return code;
9✔
6457
}
6458

6459
static int32_t jsonToDropStableStmt(const SJson* pJson, void* pObj) {
9✔
6460
  SDropSuperTableStmt* pNode = (SDropSuperTableStmt*)pObj;
9✔
6461

6462
  int32_t code = tjsonGetStringValue(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
9✔
6463
  if (TSDB_CODE_SUCCESS == code) {
9!
6464
    code = tjsonGetStringValue(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
9✔
6465
  }
6466
  if (TSDB_CODE_SUCCESS == code) {
9!
6467
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtIgnoreNotExists, &pNode->ignoreNotExists);
9✔
6468
  }
6469
  if (TSDB_CODE_SUCCESS == code) {
9!
6470
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtwithOpt, &pNode->withOpt);
9✔
6471
  }
6472

6473
  return code;
9✔
6474
}
6475

6476
static const char* jkAlterTableStmtDbName = "DbName";
6477
static const char* jkAlterTableStmtTableName = "TableName";
6478
static const char* jkAlterTableStmtAlterType = "AlterType";
6479
static const char* jkAlterTableStmtColName = "ColName";
6480
static const char* jkAlterTableStmtNewColName = "NewColName";
6481
static const char* jkAlterTableStmtOptions = "Options";
6482
static const char* jkAlterTableStmtNewDataType = "NewDataType";
6483
static const char* jkAlterTableStmtNewTagVal = "NewTagVal";
6484

6485
static int32_t alterTableStmtToJson(const void* pObj, SJson* pJson) {
162✔
6486
  const SAlterTableStmt* pNode = (const SAlterTableStmt*)pObj;
162✔
6487

6488
  int32_t code = tjsonAddStringToObject(pJson, jkAlterTableStmtDbName, pNode->dbName);
162✔
6489
  if (TSDB_CODE_SUCCESS == code) {
162!
6490
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtTableName, pNode->tableName);
162✔
6491
  }
6492
  if (TSDB_CODE_SUCCESS == code) {
162!
6493
    code = tjsonAddIntegerToObject(pJson, jkAlterTableStmtAlterType, pNode->alterType);
162✔
6494
  }
6495
  if (TSDB_CODE_SUCCESS == code) {
162!
6496
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtColName, pNode->colName);
162✔
6497
  }
6498
  if (TSDB_CODE_SUCCESS == code) {
162!
6499
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtNewColName, pNode->newColName);
162✔
6500
  }
6501
  if (TSDB_CODE_SUCCESS == code) {
162!
6502
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pOptions);
162✔
6503
  }
6504
  if (TSDB_CODE_SUCCESS == code) {
162!
6505
    code = tjsonAddObject(pJson, jkAlterTableStmtNewDataType, dataTypeToJson, &pNode->dataType);
162✔
6506
  }
6507
  if (TSDB_CODE_SUCCESS == code) {
162!
6508
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pVal);
162✔
6509
  }
6510

6511
  return code;
162✔
6512
}
6513

6514
static int32_t jsonToAlterTableStmt(const SJson* pJson, void* pObj) {
162✔
6515
  SAlterTableStmt* pNode = (SAlterTableStmt*)pObj;
162✔
6516

6517
  int32_t code = tjsonGetStringValue(pJson, jkAlterTableStmtDbName, pNode->dbName);
162✔
6518
  if (TSDB_CODE_SUCCESS == code) {
162!
6519
    code = tjsonGetStringValue(pJson, jkAlterTableStmtTableName, pNode->tableName);
162✔
6520
  }
6521
  if (TSDB_CODE_SUCCESS == code) {
162!
6522
    code = tjsonGetTinyIntValue(pJson, jkAlterTableStmtAlterType, &pNode->alterType);
162✔
6523
  }
6524
  if (TSDB_CODE_SUCCESS == code) {
162!
6525
    code = tjsonGetStringValue(pJson, jkAlterTableStmtColName, pNode->colName);
162✔
6526
  }
6527
  if (TSDB_CODE_SUCCESS == code) {
162!
6528
    code = tjsonGetStringValue(pJson, jkAlterTableStmtNewColName, pNode->newColName);
162✔
6529
  }
6530
  if (TSDB_CODE_SUCCESS == code) {
162!
6531
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pOptions);
162✔
6532
  }
6533
  if (TSDB_CODE_SUCCESS == code) {
162!
6534
    code = tjsonToObject(pJson, jkAlterTableStmtNewDataType, jsonToDataType, &pNode->dataType);
162✔
6535
  }
6536
  if (TSDB_CODE_SUCCESS == code) {
162!
6537
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pVal);
162✔
6538
  }
6539

6540
  return code;
162✔
6541
}
6542

6543
static int32_t alterStableStmtToJson(const void* pObj, SJson* pJson) { return alterTableStmtToJson(pObj, pJson); }
87✔
6544

6545
static int32_t jsonToAlterStableStmt(const SJson* pJson, void* pObj) { return jsonToAlterTableStmt(pJson, pObj); }
87✔
6546

6547
static const char* jkCreateUserStmtUserName = "UserName";
6548
static const char* jkCreateUserStmtPassword = "Password";
6549
static const char* jkCreateUserStmtSysinfo = "Sysinfo";
6550

6551
static int32_t createUserStmtToJson(const void* pObj, SJson* pJson) {
18✔
6552
  const SCreateUserStmt* pNode = (const SCreateUserStmt*)pObj;
18✔
6553

6554
  int32_t code = tjsonAddStringToObject(pJson, jkCreateUserStmtUserName, pNode->userName);
18✔
6555
  if (TSDB_CODE_SUCCESS == code) {
18!
6556
    code = tjsonAddStringToObject(pJson, jkCreateUserStmtPassword, pNode->password);
18✔
6557
  }
6558
  if (TSDB_CODE_SUCCESS == code) {
18!
6559
    code = tjsonAddIntegerToObject(pJson, jkCreateUserStmtSysinfo, pNode->sysinfo);
18✔
6560
  }
6561

6562
  return code;
18✔
6563
}
6564

6565
static int32_t jsonToCreateUserStmt(const SJson* pJson, void* pObj) {
18✔
6566
  SCreateUserStmt* pNode = (SCreateUserStmt*)pObj;
18✔
6567

6568
  int32_t code = tjsonGetStringValue(pJson, jkCreateUserStmtUserName, pNode->userName);
18✔
6569
  if (TSDB_CODE_SUCCESS == code) {
18!
6570
    code = tjsonGetStringValue(pJson, jkCreateUserStmtPassword, pNode->password);
18✔
6571
  }
6572
  if (TSDB_CODE_SUCCESS == code) {
18!
6573
    code = tjsonGetTinyIntValue(pJson, jkCreateUserStmtSysinfo, &pNode->sysinfo);
18✔
6574
  }
6575

6576
  return code;
18✔
6577
}
6578

6579
static const char* jkAlterUserStmtUserName = "UserName";
6580
static const char* jkAlterUserStmtAlterType = "AlterType";
6581
static const char* jkAlterUserStmtPassword = "Password";
6582
static const char* jkAlterUserStmtEnable = "Enable";
6583
static const char* jkAlterUserStmtSysinfo = "Sysinfo";
6584
static const char* jkAlterUserStmtCreatedb = "Createdb";
6585

6586
static int32_t alterUserStmtToJson(const void* pObj, SJson* pJson) {
27✔
6587
  const SAlterUserStmt* pNode = (const SAlterUserStmt*)pObj;
27✔
6588

6589
  int32_t code = tjsonAddStringToObject(pJson, jkAlterUserStmtUserName, pNode->userName);
27✔
6590
  if (TSDB_CODE_SUCCESS == code) {
27!
6591
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtAlterType, pNode->alterType);
27✔
6592
  }
6593
  if (TSDB_CODE_SUCCESS == code) {
27!
6594
    code = tjsonAddStringToObject(pJson, jkAlterUserStmtPassword, pNode->password);
27✔
6595
  }
6596
  if (TSDB_CODE_SUCCESS == code) {
27!
6597
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtEnable, pNode->enable);
27✔
6598
  }
6599
  if (TSDB_CODE_SUCCESS == code) {
27!
6600
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtSysinfo, pNode->sysinfo);
27✔
6601
  }
6602
  if (TSDB_CODE_SUCCESS == code) {
27!
6603
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtCreatedb, pNode->createdb);
27✔
6604
  }
6605

6606
  return code;
27✔
6607
}
6608

6609
static int32_t jsonToAlterUserStmt(const SJson* pJson, void* pObj) {
27✔
6610
  SAlterUserStmt* pNode = (SAlterUserStmt*)pObj;
27✔
6611

6612
  int32_t code = tjsonGetStringValue(pJson, jkAlterUserStmtUserName, pNode->userName);
27✔
6613
  if (TSDB_CODE_SUCCESS == code) {
27!
6614
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtAlterType, &pNode->alterType);
27✔
6615
  }
6616
  if (TSDB_CODE_SUCCESS == code) {
27!
6617
    code = tjsonGetStringValue(pJson, jkAlterUserStmtPassword, pNode->password);
27✔
6618
  }
6619
  if (TSDB_CODE_SUCCESS == code) {
27!
6620
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtEnable, &pNode->enable);
27✔
6621
  }
6622
  if (TSDB_CODE_SUCCESS == code) {
27!
6623
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtSysinfo, &pNode->sysinfo);
27✔
6624
  }
6625
  if (TSDB_CODE_SUCCESS == code) {
27!
6626
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtCreatedb, &pNode->createdb);
27✔
6627
  }
6628

6629
  return code;
27✔
6630
}
6631

6632
static const char* jkDropUserStmtUserName = "UserName";
6633

6634
static int32_t dropUserStmtToJson(const void* pObj, SJson* pJson) {
9✔
6635
  const SDropUserStmt* pNode = (const SDropUserStmt*)pObj;
9✔
6636
  return tjsonAddStringToObject(pJson, jkDropUserStmtUserName, pNode->userName);
9✔
6637
}
6638

6639
static int32_t jsonToDropUserStmt(const SJson* pJson, void* pObj) {
9✔
6640
  SDropUserStmt* pNode = (SDropUserStmt*)pObj;
9✔
6641
  return tjsonGetStringValue(pJson, jkDropUserStmtUserName, pNode->userName);
9✔
6642
}
6643

6644
static const char* jkUseDatabaseStmtDbName = "DbName";
6645

6646
static int32_t useDatabaseStmtToJson(const void* pObj, SJson* pJson) {
9✔
6647
  const SUseDatabaseStmt* pNode = (const SUseDatabaseStmt*)pObj;
9✔
6648
  return tjsonAddStringToObject(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
9✔
6649
}
6650

6651
static int32_t jsonToUseDatabaseStmt(const SJson* pJson, void* pObj) {
9✔
6652
  SUseDatabaseStmt* pNode = (SUseDatabaseStmt*)pObj;
9✔
6653
  return tjsonGetStringValue(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
9✔
6654
}
6655

6656
static const char* jkCreateDnodeStmtFqdn = "Fqdn";
6657
static const char* jkCreateDnodeStmtPort = "Port";
6658

6659
static int32_t createDnodeStmtToJson(const void* pObj, SJson* pJson) {
54✔
6660
  const SCreateDnodeStmt* pNode = (const SCreateDnodeStmt*)pObj;
54✔
6661

6662
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
54✔
6663
  if (TSDB_CODE_SUCCESS == code) {
54!
6664
    code = tjsonAddIntegerToObject(pJson, jkCreateDnodeStmtPort, pNode->port);
54✔
6665
  }
6666

6667
  return code;
54✔
6668
}
6669

6670
static int32_t jsonToCreateDnodeStmt(const SJson* pJson, void* pObj) {
54✔
6671
  SCreateDnodeStmt* pNode = (SCreateDnodeStmt*)pObj;
54✔
6672

6673
  int32_t code = tjsonGetStringValue(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
54✔
6674
  if (TSDB_CODE_SUCCESS == code) {
54!
6675
    code = tjsonGetIntValue(pJson, jkCreateDnodeStmtPort, &pNode->port);
54✔
6676
  }
6677

6678
  return code;
54✔
6679
}
6680

6681
static const char* jkAlterDnodeStmtDnodeId = "DnodeId";
6682
static const char* jkAlterDnodeStmtConfig = "Config";
6683
static const char* jkAlterDnodeStmtValue = "Value";
6684

6685
static int32_t alterDnodeStmtToJson(const void* pObj, SJson* pJson) {
36✔
6686
  const SAlterDnodeStmt* pNode = (const SAlterDnodeStmt*)pObj;
36✔
6687

6688
  int32_t code = tjsonAddIntegerToObject(pJson, jkAlterDnodeStmtDnodeId, pNode->dnodeId);
36✔
6689
  if (TSDB_CODE_SUCCESS == code) {
36!
6690
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtConfig, pNode->config);
36✔
6691
  }
6692
  if (TSDB_CODE_SUCCESS == code) {
36!
6693
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtValue, pNode->value);
36✔
6694
  }
6695

6696
  return code;
36✔
6697
}
6698

6699
static int32_t jsonToAlterDnodeStmt(const SJson* pJson, void* pObj) {
36✔
6700
  SAlterDnodeStmt* pNode = (SAlterDnodeStmt*)pObj;
36✔
6701

6702
  int32_t code = tjsonGetIntValue(pJson, jkAlterDnodeStmtDnodeId, &pNode->dnodeId);
36✔
6703
  if (TSDB_CODE_SUCCESS == code) {
36!
6704
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtConfig, pNode->config);
36✔
6705
  }
6706
  if (TSDB_CODE_SUCCESS == code) {
36!
6707
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtValue, pNode->value);
36✔
6708
  }
6709

6710
  return code;
36✔
6711
}
6712

6713
static const char* jkCreateIndexStmtIndexType = "IndexType";
6714
static const char* jkCreateIndexStmtIgnoreExists = "IgnoreExists";
6715
static const char* jkCreateIndexStmtIndexDbName = "IndexDbName";
6716
static const char* jkCreateIndexStmtIndexName = "indexName";
6717
static const char* jkCreateIndexStmtDbName = "DbName";
6718
static const char* jkCreateIndexStmtTableName = "TableName";
6719
static const char* jkCreateIndexStmtCols = "Cols";
6720
static const char* jkCreateIndexStmtOptions = "Options";
6721

6722
static int32_t createIndexStmtToJson(const void* pObj, SJson* pJson) {
19✔
6723
  const SCreateIndexStmt* pNode = (const SCreateIndexStmt*)pObj;
19✔
6724

6725
  int32_t code = tjsonAddIntegerToObject(pJson, jkCreateIndexStmtIndexType, pNode->indexType);
19✔
6726
  if (TSDB_CODE_SUCCESS == code) {
19!
6727
    code = tjsonAddBoolToObject(pJson, jkCreateIndexStmtIgnoreExists, pNode->ignoreExists);
19✔
6728
  }
6729
  if (TSDB_CODE_SUCCESS == code) {
19!
6730
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
19✔
6731
  }
6732
  if (TSDB_CODE_SUCCESS == code) {
19!
6733
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
19✔
6734
  }
6735
  if (TSDB_CODE_SUCCESS == code) {
19!
6736
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtDbName, pNode->dbName);
19✔
6737
  }
6738
  if (TSDB_CODE_SUCCESS == code) {
19!
6739
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtTableName, pNode->tableName);
19✔
6740
  }
6741
  if (TSDB_CODE_SUCCESS == code) {
19!
6742
    code = nodeListToJson(pJson, jkCreateIndexStmtCols, pNode->pCols);
19✔
6743
  }
6744
  if (TSDB_CODE_SUCCESS == code) {
19!
6745
    code = tjsonAddObject(pJson, jkCreateIndexStmtOptions, nodeToJson, pNode->pOptions);
19✔
6746
  }
6747

6748
  return code;
19✔
6749
}
6750

6751
static int32_t jsonToCreateIndexStmt(const SJson* pJson, void* pObj) {
19✔
6752
  SCreateIndexStmt* pNode = (SCreateIndexStmt*)pObj;
19✔
6753

6754
  int32_t code = TSDB_CODE_SUCCESS;
19✔
6755
  tjsonGetNumberValue(pJson, jkCreateIndexStmtIndexType, pNode->indexType, code);
19✔
6756
  if (TSDB_CODE_SUCCESS == code) {
19!
6757
    code = tjsonGetBoolValue(pJson, jkCreateIndexStmtIgnoreExists, &pNode->ignoreExists);
19✔
6758
  }
6759
  if (TSDB_CODE_SUCCESS == code) {
19!
6760
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
19✔
6761
  }
6762
  if (TSDB_CODE_SUCCESS == code) {
19!
6763
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
19✔
6764
  }
6765
  if (TSDB_CODE_SUCCESS == code) {
19!
6766
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtDbName, pNode->dbName);
19✔
6767
  }
6768
  if (TSDB_CODE_SUCCESS == code) {
19!
6769
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtTableName, pNode->tableName);
19✔
6770
  }
6771
  if (TSDB_CODE_SUCCESS == code) {
19!
6772
    code = jsonToNodeList(pJson, jkCreateIndexStmtCols, &pNode->pCols);
19✔
6773
  }
6774
  if (TSDB_CODE_SUCCESS == code) {
19!
6775
    code = jsonToNodeObject(pJson, jkCreateIndexStmtOptions, (SNode**)&pNode->pOptions);
19✔
6776
  }
6777

6778
  return code;
19✔
6779
}
6780

6781
static const char* jkDropIndexStmtIgnoreNotExists = "IgnoreNotExists";
6782
static const char* jkDropIndexStmtIndexDbName = "IndexDbName";
6783
static const char* jkDropIndexStmtIndexName = "IndexName";
6784

6785
static int32_t dropIndexStmtToJson(const void* pObj, SJson* pJson) {
18✔
6786
  const SDropIndexStmt* pNode = (const SDropIndexStmt*)pObj;
18✔
6787

6788
  int32_t code = tjsonAddBoolToObject(pJson, jkDropIndexStmtIgnoreNotExists, pNode->ignoreNotExists);
18✔
6789
  if (TSDB_CODE_SUCCESS == code) {
18!
6790
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
18✔
6791
  }
6792
  if (TSDB_CODE_SUCCESS == code) {
18!
6793
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexName, pNode->indexName);
18✔
6794
  }
6795

6796
  return code;
18✔
6797
}
6798

6799
static int32_t jsonToDropIndexStmt(const SJson* pJson, void* pObj) {
18✔
6800
  SDropIndexStmt* pNode = (SDropIndexStmt*)pObj;
18✔
6801

6802
  int32_t code = tjsonGetBoolValue(pJson, jkDropIndexStmtIgnoreNotExists, &pNode->ignoreNotExists);
18✔
6803
  if (TSDB_CODE_SUCCESS == code) {
18!
6804
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
18✔
6805
  }
6806
  if (TSDB_CODE_SUCCESS == code) {
18!
6807
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexName, pNode->indexName);
18✔
6808
  }
6809

6810
  return code;
18✔
6811
}
6812

6813
static const char* jkCreateComponentNodeStmtDnodeId = "DnodeId";
6814

6815
static int32_t createComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
27✔
6816
  const SCreateComponentNodeStmt* pNode = (const SCreateComponentNodeStmt*)pObj;
27✔
6817
  return tjsonAddIntegerToObject(pJson, jkCreateComponentNodeStmtDnodeId, pNode->dnodeId);
27✔
6818
}
6819

6820
static int32_t jsonToCreateComponentNodeStmt(const SJson* pJson, void* pObj) {
27✔
6821
  SCreateComponentNodeStmt* pNode = (SCreateComponentNodeStmt*)pObj;
27✔
6822
  return tjsonGetIntValue(pJson, jkCreateComponentNodeStmtDnodeId, &pNode->dnodeId);
27✔
6823
}
6824

6825
static const char* jkDropComponentNodeStmtDnodeId = "DnodeId";
6826

6827
static int32_t dropComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
27✔
6828
  const SDropComponentNodeStmt* pNode = (const SDropComponentNodeStmt*)pObj;
27✔
6829
  return tjsonAddIntegerToObject(pJson, jkDropComponentNodeStmtDnodeId, pNode->dnodeId);
27✔
6830
}
6831

6832
static int32_t jsonToDropComponentNodeStmt(const SJson* pJson, void* pObj) {
27✔
6833
  SDropComponentNodeStmt* pNode = (SDropComponentNodeStmt*)pObj;
27✔
6834
  return tjsonGetIntValue(pJson, jkDropComponentNodeStmtDnodeId, &pNode->dnodeId);
27✔
6835
}
6836

6837
static int32_t createQnodeStmtToJson(const void* pObj, SJson* pJson) {
9✔
6838
  return createComponentNodeStmtToJson(pObj, pJson);
9✔
6839
}
6840

6841
static int32_t jsonToCreateQnodeStmt(const SJson* pJson, void* pObj) {
9✔
6842
  return jsonToCreateComponentNodeStmt(pJson, pObj);
9✔
6843
}
6844

6845
static int32_t dropQnodeStmtToJson(const void* pObj, SJson* pJson) { return dropComponentNodeStmtToJson(pObj, pJson); }
9✔
6846

6847
static int32_t jsonToDropQnodeStmt(const SJson* pJson, void* pObj) { return jsonToDropComponentNodeStmt(pJson, pObj); }
9✔
6848

6849
static const char* jkCreateAnodeStmtUrl = "Url";
6850
static const char* jkUpdateDropANodeStmtId = "AnodeId";
6851

6852
static int32_t createAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6853
  const SCreateAnodeStmt* pNode = (const SCreateAnodeStmt*)pObj;
×
6854
  return tjsonAddStringToObject(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
6855
}
6856

6857
static int32_t jsonToCreateAnodeStmt(const SJson* pJson, void* pObj) {
×
6858
  SCreateAnodeStmt* pNode = (SCreateAnodeStmt*)pObj;
×
6859
  return tjsonGetStringValue(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
6860
}
6861

6862
static int32_t updateAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6863
  const SUpdateAnodeStmt* pNode = (const SUpdateAnodeStmt*)pObj;
×
6864
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
6865
}
6866

6867
static int32_t jsonToUpdateAnodeStmt(const SJson* pJson, void* pObj) {
×
6868
  SUpdateAnodeStmt* pNode = (SUpdateAnodeStmt*)pObj;
×
6869
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
6870
}
6871

6872
static int32_t dropAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6873
  const SDropAnodeStmt* pNode = (const SDropAnodeStmt*)pObj;
×
6874
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
6875
}
6876

6877
static int32_t jsonToDropAnodeStmt(const SJson* pJson, void* pObj) {
×
6878
  SDropAnodeStmt* pNode = (SDropAnodeStmt*)pObj;
×
6879
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
6880
}
6881

6882
static int32_t createSnodeStmtToJson(const void* pObj, SJson* pJson) {
9✔
6883
  return createComponentNodeStmtToJson(pObj, pJson);
9✔
6884
}
6885

6886
static int32_t jsonToCreateSnodeStmt(const SJson* pJson, void* pObj) {
9✔
6887
  return jsonToCreateComponentNodeStmt(pJson, pObj);
9✔
6888
}
6889

6890
static int32_t dropSnodeStmtToJson(const void* pObj, SJson* pJson) { return dropComponentNodeStmtToJson(pObj, pJson); }
9✔
6891

6892
static int32_t jsonToDropSnodeStmt(const SJson* pJson, void* pObj) { return jsonToDropComponentNodeStmt(pJson, pObj); }
9✔
6893

6894
static int32_t createMnodeStmtToJson(const void* pObj, SJson* pJson) {
9✔
6895
  return createComponentNodeStmtToJson(pObj, pJson);
9✔
6896
}
6897

6898
static int32_t jsonToCreateMnodeStmt(const SJson* pJson, void* pObj) {
9✔
6899
  return jsonToCreateComponentNodeStmt(pJson, pObj);
9✔
6900
}
6901

6902
static int32_t dropMnodeStmtToJson(const void* pObj, SJson* pJson) { return dropComponentNodeStmtToJson(pObj, pJson); }
9✔
6903

6904
static int32_t jsonToDropMnodeStmt(const SJson* pJson, void* pObj) { return jsonToDropComponentNodeStmt(pJson, pObj); }
9✔
6905

6906
static const char* jkDropDnodeStmtDnodeId = "DnodeId";
6907
static const char* jkDropDnodeStmtFqdn = "Fqdn";
6908
static const char* jkDropDnodeStmtPort = "Port";
6909
static const char* jkDropDnodeStmtForce = "Force";
6910
static const char* jkDropDnodeStmtUnsafe = "Unsafe";
6911

6912
static int32_t dropDnodeStmtToJson(const void* pObj, SJson* pJson) {
81✔
6913
  const SDropDnodeStmt* pNode = (const SDropDnodeStmt*)pObj;
81✔
6914

6915
  int32_t code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtDnodeId, pNode->dnodeId);
81✔
6916
  if (TSDB_CODE_SUCCESS == code) {
81!
6917
    code = tjsonAddStringToObject(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
81✔
6918
  }
6919
  if (TSDB_CODE_SUCCESS == code) {
81!
6920
    code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtPort, pNode->port);
81✔
6921
  }
6922
  if (TSDB_CODE_SUCCESS == code) {
81!
6923
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtForce, pNode->force);
81✔
6924
  }
6925
  if (TSDB_CODE_SUCCESS == code) {
81!
6926
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtUnsafe, pNode->unsafe);
81✔
6927
  }
6928

6929
  return code;
81✔
6930
}
6931

6932
static int32_t jsonToDropDnodeStmt(const SJson* pJson, void* pObj) {
81✔
6933
  SDropDnodeStmt* pNode = (SDropDnodeStmt*)pObj;
81✔
6934

6935
  int32_t code = tjsonGetIntValue(pJson, jkDropDnodeStmtDnodeId, &pNode->dnodeId);
81✔
6936
  if (TSDB_CODE_SUCCESS == code) {
81!
6937
    code = tjsonGetStringValue(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
81✔
6938
  }
6939
  if (TSDB_CODE_SUCCESS == code) {
81!
6940
    code = tjsonGetIntValue(pJson, jkDropDnodeStmtPort, &pNode->port);
81✔
6941
  }
6942
  if (TSDB_CODE_SUCCESS == code) {
81!
6943
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtForce, &pNode->force);
81✔
6944
  }
6945
  if (TSDB_CODE_SUCCESS == code) {
81!
6946
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtUnsafe, &pNode->unsafe);
81✔
6947
  }
6948

6949
  return code;
81✔
6950
}
6951

6952
static const char* jkRestoreComponentNodeStmtDnodeId = "DnodeId";
6953

6954
static int32_t restoreComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
6955
  const SRestoreComponentNodeStmt* pNode = (const SRestoreComponentNodeStmt*)pObj;
×
6956
  return tjsonAddIntegerToObject(pJson, jkRestoreComponentNodeStmtDnodeId, pNode->dnodeId);
×
6957
}
6958

6959
static int32_t jsonToRestoreComponentNodeStmt(const SJson* pJson, void* pObj) {
36✔
6960
  SRestoreComponentNodeStmt* pNode = (SRestoreComponentNodeStmt*)pObj;
36✔
6961
  return tjsonGetIntValue(pJson, jkRestoreComponentNodeStmtDnodeId, &pNode->dnodeId);
36✔
6962
}
6963

6964
static int32_t jsonToRestoreDnodeStmt(const SJson* pJson, void* pObj) {
9✔
6965
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
9✔
6966
}
6967
static int32_t jsonToRestoreQnodeStmt(const SJson* pJson, void* pObj) {
9✔
6968
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
9✔
6969
}
6970
static int32_t jsonToRestoreMnodeStmt(const SJson* pJson, void* pObj) {
9✔
6971
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
9✔
6972
}
6973
static int32_t jsonToRestoreVnodeStmt(const SJson* pJson, void* pObj) {
9✔
6974
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
9✔
6975
}
6976

6977
static const char* jkCreateTopicStmtTopicName = "TopicName";
6978
static const char* jkCreateTopicStmtSubscribeDbName = "SubscribeDbName";
6979
static const char* jkCreateTopicStmtIgnoreExists = "IgnoreExists";
6980
static const char* jkCreateTopicStmtQuery = "Query";
6981

6982
static int32_t createTopicStmtToJson(const void* pObj, SJson* pJson) {
73✔
6983
  const SCreateTopicStmt* pNode = (const SCreateTopicStmt*)pObj;
73✔
6984

6985
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
73✔
6986
  if (TSDB_CODE_SUCCESS == code) {
73!
6987
    code = tjsonAddStringToObject(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
73✔
6988
  }
6989
  if (TSDB_CODE_SUCCESS == code) {
73!
6990
    code = tjsonAddBoolToObject(pJson, jkCreateTopicStmtIgnoreExists, pNode->ignoreExists);
73✔
6991
  }
6992
  if (TSDB_CODE_SUCCESS == code) {
73!
6993
    code = tjsonAddObject(pJson, jkCreateTopicStmtQuery, nodeToJson, pNode->pQuery);
73✔
6994
  }
6995

6996
  return code;
73✔
6997
}
6998

6999
static int32_t jsonToCreateTopicStmt(const SJson* pJson, void* pObj) {
73✔
7000
  SCreateTopicStmt* pNode = (SCreateTopicStmt*)pObj;
73✔
7001

7002
  int32_t code = tjsonGetStringValue(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
73✔
7003
  if (TSDB_CODE_SUCCESS == code) {
73!
7004
    code = tjsonGetStringValue(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
73✔
7005
  }
7006
  if (TSDB_CODE_SUCCESS == code) {
73!
7007
    code = tjsonGetBoolValue(pJson, jkCreateTopicStmtIgnoreExists, &pNode->ignoreExists);
73✔
7008
  }
7009
  if (TSDB_CODE_SUCCESS == code) {
73!
7010
    code = jsonToNodeObject(pJson, jkCreateTopicStmtQuery, &pNode->pQuery);
73✔
7011
  }
7012

7013
  return code;
73✔
7014
}
7015

7016
static const char* jkDropTopicStmtTopicName = "TopicName";
7017
static const char* jkDropTopicStmtIgnoreNotExists = "IgnoreNotExists";
7018

7019
static int32_t dropTopicStmtToJson(const void* pObj, SJson* pJson) {
18✔
7020
  const SDropTopicStmt* pNode = (const SDropTopicStmt*)pObj;
18✔
7021

7022
  int32_t code = tjsonAddStringToObject(pJson, jkDropTopicStmtTopicName, pNode->topicName);
18✔
7023
  if (TSDB_CODE_SUCCESS == code) {
18!
7024
    code = tjsonAddBoolToObject(pJson, jkDropTopicStmtIgnoreNotExists, pNode->ignoreNotExists);
18✔
7025
  }
7026

7027
  return code;
18✔
7028
}
7029

7030
static int32_t jsonToDropTopicStmt(const SJson* pJson, void* pObj) {
18✔
7031
  SDropTopicStmt* pNode = (SDropTopicStmt*)pObj;
18✔
7032

7033
  int32_t code = tjsonGetStringValue(pJson, jkDropTopicStmtTopicName, pNode->topicName);
18✔
7034
  if (TSDB_CODE_SUCCESS == code) {
18!
7035
    code = tjsonGetBoolValue(pJson, jkDropTopicStmtIgnoreNotExists, &pNode->ignoreNotExists);
18✔
7036
  }
7037

7038
  return code;
18✔
7039
}
7040

7041
static const char* jkDropCGroupStmtTopicName = "TopicName";
7042
static const char* jkDropCGroupStmtConsumerGroup = "ConsumerGroup";
7043
static const char* jkDropCGroupStmtIgnoreNotExists = "IgnoreNotExists";
7044

7045
static int32_t dropConsumerGroupStmtToJson(const void* pObj, SJson* pJson) {
18✔
7046
  const SDropCGroupStmt* pNode = (const SDropCGroupStmt*)pObj;
18✔
7047

7048
  int32_t code = tjsonAddStringToObject(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
18✔
7049
  if (TSDB_CODE_SUCCESS == code) {
18!
7050
    code = tjsonAddStringToObject(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
18✔
7051
  }
7052
  if (TSDB_CODE_SUCCESS == code) {
18!
7053
    code = tjsonAddBoolToObject(pJson, jkDropCGroupStmtIgnoreNotExists, pNode->ignoreNotExists);
18✔
7054
  }
7055

7056
  return code;
18✔
7057
}
7058

7059
static int32_t jsonToDropConsumerGroupStmt(const SJson* pJson, void* pObj) {
18✔
7060
  SDropCGroupStmt* pNode = (SDropCGroupStmt*)pObj;
18✔
7061

7062
  int32_t code = tjsonGetStringValue(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
18✔
7063
  if (TSDB_CODE_SUCCESS == code) {
18!
7064
    code = tjsonGetStringValue(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
18✔
7065
  }
7066
  if (TSDB_CODE_SUCCESS == code) {
18!
7067
    code = tjsonGetBoolValue(pJson, jkDropCGroupStmtIgnoreNotExists, &pNode->ignoreNotExists);
18✔
7068
  }
7069

7070
  return code;
18✔
7071
}
7072

7073
static const char* jkAlterClusterStmtConfig = "Config";
7074
static const char* jkAlterClusterStmtValue = "Value";
7075

7076
static int32_t alterClusterStmtToJson(const void* pObj, SJson* pJson) {
×
7077
  const SAlterClusterStmt* pNode = (const SAlterClusterStmt*)pObj;
×
7078

7079
  int32_t code = tjsonAddStringToObject(pJson, jkAlterClusterStmtConfig, pNode->config);
×
7080
  if (TSDB_CODE_SUCCESS == code) {
×
7081
    code = tjsonAddStringToObject(pJson, jkAlterClusterStmtValue, pNode->value);
×
7082
  }
7083

7084
  return code;
×
7085
}
7086

7087
static int32_t jsonToAlterClusterStmt(const SJson* pJson, void* pObj) {
×
7088
  SAlterClusterStmt* pNode = (SAlterClusterStmt*)pObj;
×
7089

7090
  int32_t code = tjsonGetStringValue(pJson, jkAlterClusterStmtConfig, pNode->config);
×
7091
  if (TSDB_CODE_SUCCESS == code) {
×
7092
    code = tjsonGetStringValue(pJson, jkAlterClusterStmtValue, pNode->value);
×
7093
  }
7094

7095
  return code;
×
7096
}
7097

7098
static const char* jkAlterLocalStmtConfig = "Config";
7099
static const char* jkAlterLocalStmtValue = "Value";
7100

7101
static int32_t alterLocalStmtToJson(const void* pObj, SJson* pJson) {
18✔
7102
  const SAlterLocalStmt* pNode = (const SAlterLocalStmt*)pObj;
18✔
7103

7104
  int32_t code = tjsonAddStringToObject(pJson, jkAlterLocalStmtConfig, pNode->config);
18✔
7105
  if (TSDB_CODE_SUCCESS == code) {
18!
7106
    code = tjsonAddStringToObject(pJson, jkAlterLocalStmtValue, pNode->value);
18✔
7107
  }
7108

7109
  return code;
18✔
7110
}
7111

7112
static int32_t jsonToAlterLocalStmt(const SJson* pJson, void* pObj) {
18✔
7113
  SAlterLocalStmt* pNode = (SAlterLocalStmt*)pObj;
18✔
7114

7115
  int32_t code = tjsonGetStringValue(pJson, jkAlterLocalStmtConfig, pNode->config);
18✔
7116
  if (TSDB_CODE_SUCCESS == code) {
18!
7117
    code = tjsonGetStringValue(pJson, jkAlterLocalStmtValue, pNode->value);
18✔
7118
  }
7119

7120
  return code;
18✔
7121
}
7122

7123
static const char* jkExplainStmtAnalyze = "Analyze";
7124
static const char* jkExplainStmtOptions = "Options";
7125
static const char* jkExplainStmtQuery = "Query";
7126

7127
static int32_t explainStmtToJson(const void* pObj, SJson* pJson) {
30✔
7128
  const SExplainStmt* pNode = (const SExplainStmt*)pObj;
30✔
7129

7130
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainStmtAnalyze, pNode->analyze);
30✔
7131
  if (TSDB_CODE_SUCCESS == code) {
30!
7132
    code = tjsonAddObject(pJson, jkExplainStmtOptions, nodeToJson, pNode->pOptions);
30✔
7133
  }
7134
  if (TSDB_CODE_SUCCESS == code) {
30!
7135
    code = tjsonAddObject(pJson, jkExplainStmtQuery, nodeToJson, pNode->pQuery);
30✔
7136
  }
7137

7138
  return code;
30✔
7139
}
7140

7141
static int32_t jsonToExplainStmt(const SJson* pJson, void* pObj) {
30✔
7142
  SExplainStmt* pNode = (SExplainStmt*)pObj;
30✔
7143

7144
  int32_t code = tjsonGetBoolValue(pJson, jkExplainStmtAnalyze, &pNode->analyze);
30✔
7145
  if (TSDB_CODE_SUCCESS == code) {
30!
7146
    code = jsonToNodeObject(pJson, jkExplainStmtOptions, (SNode**)&pNode->pOptions);
30✔
7147
  }
7148
  if (TSDB_CODE_SUCCESS == code) {
30!
7149
    code = jsonToNodeObject(pJson, jkExplainStmtQuery, &pNode->pQuery);
30✔
7150
  }
7151

7152
  return code;
30✔
7153
}
7154

7155
static const char* jkDescribeStmtDbName = "DbName";
7156
static const char* jkDescribeStmtTableName = "TableName";
7157

7158
static int32_t describeStmtToJson(const void* pObj, SJson* pJson) {
18✔
7159
  const SDescribeStmt* pNode = (const SDescribeStmt*)pObj;
18✔
7160

7161
  int32_t code = tjsonAddStringToObject(pJson, jkDescribeStmtDbName, pNode->dbName);
18✔
7162
  if (TSDB_CODE_SUCCESS == code) {
18!
7163
    code = tjsonAddStringToObject(pJson, jkDescribeStmtTableName, pNode->tableName);
18✔
7164
  }
7165

7166
  return code;
18✔
7167
}
7168

7169
static int32_t jsonToDescribeStmt(const SJson* pJson, void* pObj) {
18✔
7170
  SDescribeStmt* pNode = (SDescribeStmt*)pObj;
18✔
7171

7172
  int32_t code = tjsonGetStringValue(pJson, jkDescribeStmtDbName, pNode->dbName);
18✔
7173
  if (TSDB_CODE_SUCCESS == code) {
18!
7174
    code = tjsonGetStringValue(pJson, jkDescribeStmtTableName, pNode->tableName);
18✔
7175
  }
7176

7177
  return code;
18✔
7178
}
7179

7180
static const char* jkCompactDatabaseStmtDbName = "DbName";
7181

7182
static int32_t compactDatabaseStmtToJson(const void* pObj, SJson* pJson) {
36✔
7183
  const SCompactDatabaseStmt* pNode = (const SCompactDatabaseStmt*)pObj;
36✔
7184
  return tjsonAddStringToObject(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
36✔
7185
}
7186

7187
static int32_t jsonToCompactDatabaseStmt(const SJson* pJson, void* pObj) {
36✔
7188
  SCompactDatabaseStmt* pNode = (SCompactDatabaseStmt*)pObj;
36✔
7189
  return tjsonGetStringValue(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
36✔
7190
}
7191

7192
static int32_t compactVgroupsStmtToJson(const void* pObj, SJson* pJson) {
×
7193
  const SCompactVgroupsStmt* pNode = (const SCompactVgroupsStmt*)pObj;
×
7194
  return 0;
×
7195
}
7196

7197
static int32_t jsonToCompactVgroupsStmt(const SJson* pJson, void* pObj) {
×
7198
  SCompactVgroupsStmt* pNode = (SCompactVgroupsStmt*)pObj;
×
7199
  return 0;
×
7200
}
7201

7202
static const char* jkCreateStreamStmtStreamName = "StreamName";
7203
static const char* jkCreateStreamStmtTargetDbName = "TargetDbName";
7204
static const char* jkCreateStreamStmtTargetTabName = "TargetTabName";
7205
static const char* jkCreateStreamStmtIgnoreExists = "IgnoreExists";
7206
static const char* jkCreateStreamStmtOptions = "Options";
7207
static const char* jkCreateStreamStmtQuery = "Query";
7208
static const char* jkCreateStreamStmtTags = "Tags";
7209
static const char* jkCreateStreamStmtSubtable = "Subtable";
7210

7211
static int32_t createStreamStmtToJson(const void* pObj, SJson* pJson) {
86✔
7212
  const SCreateStreamStmt* pNode = (const SCreateStreamStmt*)pObj;
86✔
7213

7214
  int32_t code = tjsonAddStringToObject(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
86✔
7215
  if (TSDB_CODE_SUCCESS == code) {
86!
7216
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
86✔
7217
  }
7218
  if (TSDB_CODE_SUCCESS == code) {
86!
7219
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
86✔
7220
  }
7221
  if (TSDB_CODE_SUCCESS == code) {
86!
7222
    code = tjsonAddBoolToObject(pJson, jkCreateStreamStmtIgnoreExists, pNode->ignoreExists);
86✔
7223
  }
7224
  if (TSDB_CODE_SUCCESS == code) {
86!
7225
    code = tjsonAddObject(pJson, jkCreateStreamStmtOptions, nodeToJson, pNode->pOptions);
86✔
7226
  }
7227
  if (TSDB_CODE_SUCCESS == code) {
86!
7228
    code = tjsonAddObject(pJson, jkCreateStreamStmtQuery, nodeToJson, pNode->pQuery);
86✔
7229
  }
7230
  if (TSDB_CODE_SUCCESS == code) {
86!
7231
    code = nodeListToJson(pJson, jkCreateStreamStmtTags, pNode->pTags);
86✔
7232
  }
7233
  if (TSDB_CODE_SUCCESS == code) {
86!
7234
    code = tjsonAddObject(pJson, jkCreateStreamStmtSubtable, nodeToJson, pNode->pSubtable);
86✔
7235
  }
7236

7237
  return code;
86✔
7238
}
7239

7240
static int32_t jsonToCreateStreamStmt(const SJson* pJson, void* pObj) {
86✔
7241
  SCreateStreamStmt* pNode = (SCreateStreamStmt*)pObj;
86✔
7242

7243
  int32_t code = tjsonGetStringValue(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
86✔
7244
  if (TSDB_CODE_SUCCESS == code) {
86!
7245
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
86✔
7246
  }
7247
  if (TSDB_CODE_SUCCESS == code) {
86!
7248
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
86✔
7249
  }
7250
  if (TSDB_CODE_SUCCESS == code) {
86!
7251
    code = tjsonGetBoolValue(pJson, jkCreateStreamStmtIgnoreExists, &pNode->ignoreExists);
86✔
7252
  }
7253
  if (TSDB_CODE_SUCCESS == code) {
86!
7254
    code = jsonToNodeObject(pJson, jkCreateStreamStmtOptions, (SNode**)&pNode->pOptions);
86✔
7255
  }
7256
  if (TSDB_CODE_SUCCESS == code) {
86!
7257
    code = jsonToNodeObject(pJson, jkCreateStreamStmtQuery, &pNode->pQuery);
86✔
7258
  }
7259
  if (TSDB_CODE_SUCCESS == code) {
86!
7260
    code = jsonToNodeList(pJson, jkCreateStreamStmtTags, &pNode->pTags);
86✔
7261
  }
7262
  if (TSDB_CODE_SUCCESS == code) {
86!
7263
    code = jsonToNodeObject(pJson, jkCreateStreamStmtSubtable, &pNode->pSubtable);
86✔
7264
  }
7265

7266
  return code;
86✔
7267
}
7268

7269
static const char* jkDropStreamStmtStreamName = "StreamName";
7270
static const char* jkDropStreamStmtIgnoreNotExists = "IgnoreNotExists";
7271

7272
static int32_t dropStreamStmtToJson(const void* pObj, SJson* pJson) {
18✔
7273
  const SDropStreamStmt* pNode = (const SDropStreamStmt*)pObj;
18✔
7274

7275
  int32_t code = tjsonAddStringToObject(pJson, jkDropStreamStmtStreamName, pNode->streamName);
18✔
7276
  if (TSDB_CODE_SUCCESS == code) {
18!
7277
    code = tjsonAddBoolToObject(pJson, jkDropStreamStmtIgnoreNotExists, pNode->ignoreNotExists);
18✔
7278
  }
7279

7280
  return code;
18✔
7281
}
7282

7283
static int32_t jsonToDropStreamStmt(const SJson* pJson, void* pObj) {
18✔
7284
  SDropStreamStmt* pNode = (SDropStreamStmt*)pObj;
18✔
7285

7286
  int32_t code = tjsonGetStringValue(pJson, jkDropStreamStmtStreamName, pNode->streamName);
18✔
7287
  if (TSDB_CODE_SUCCESS == code) {
18!
7288
    code = tjsonGetBoolValue(pJson, jkDropStreamStmtIgnoreNotExists, &pNode->ignoreNotExists);
18✔
7289
  }
7290

7291
  return code;
18✔
7292
}
7293

7294
static const char* jkResetStreamStmtStreamName = "StreamName";
7295
static const char* jkResetStreamStmtIgnoreNotExists = "IgnoreNotExists";
7296

7297
static int32_t resetStreamStmtToJson(const void* pObj, SJson* pJson) {
×
7298
  const SResetStreamStmt* pNode = (const SResetStreamStmt*)pObj;
×
7299

7300
  int32_t code = tjsonAddStringToObject(pJson, jkResetStreamStmtStreamName, pNode->streamName);
×
7301
  if (TSDB_CODE_SUCCESS == code) {
×
7302
    code = tjsonAddBoolToObject(pJson, jkResetStreamStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7303
  }
7304

7305
  return code;
×
7306
}
7307

7308
static int32_t jsonToResetStreamStmt(const SJson* pJson, void* pObj) {
×
7309
  SResetStreamStmt* pNode = (SResetStreamStmt*)pObj;
×
7310

7311
  int32_t code = tjsonGetStringValue(pJson, jkResetStreamStmtStreamName, pNode->streamName);
×
7312
  if (TSDB_CODE_SUCCESS == code) {
×
7313
    code = tjsonGetBoolValue(pJson, jkResetStreamStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7314
  }
7315

7316
  return code;
×
7317
}
7318

7319

7320
static const char* jkMergeVgroupStmtVgroupId1 = "VgroupId1";
7321
static const char* jkMergeVgroupStmtVgroupId2 = "VgroupId2";
7322

7323
static int32_t mergeVgroupStmtToJson(const void* pObj, SJson* pJson) {
9✔
7324
  const SMergeVgroupStmt* pNode = (const SMergeVgroupStmt*)pObj;
9✔
7325

7326
  int32_t code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId1, pNode->vgId1);
9✔
7327
  if (TSDB_CODE_SUCCESS == code) {
9!
7328
    code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId2, pNode->vgId2);
9✔
7329
  }
7330

7331
  return code;
9✔
7332
}
7333

7334
static int32_t jsonToMergeVgroupStmt(const SJson* pJson, void* pObj) {
9✔
7335
  SMergeVgroupStmt* pNode = (SMergeVgroupStmt*)pObj;
9✔
7336

7337
  int32_t code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId1, &pNode->vgId1);
9✔
7338
  if (TSDB_CODE_SUCCESS == code) {
9!
7339
    code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId2, &pNode->vgId2);
9✔
7340
  }
7341

7342
  return code;
9✔
7343
}
7344

7345
static const char* jkRedistributeVgroupStmtVgroupId = "VgroupId";
7346
static const char* jkRedistributeVgroupStmtDnodeId1 = "DnodeId1";
7347
static const char* jkRedistributeVgroupStmtDnodeId2 = "DnodeId2";
7348
static const char* jkRedistributeVgroupStmtDnodeId3 = "DnodeId3";
7349
static const char* jkRedistributeVgroupStmtDnodes = "Dnodes";
7350

7351
static int32_t redistributeVgroupStmtToJson(const void* pObj, SJson* pJson) {
18✔
7352
  const SRedistributeVgroupStmt* pNode = (const SRedistributeVgroupStmt*)pObj;
18✔
7353

7354
  int32_t code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtVgroupId, pNode->vgId);
18✔
7355
  if (TSDB_CODE_SUCCESS == code) {
18!
7356
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId1, pNode->dnodeId1);
18✔
7357
  }
7358
  if (TSDB_CODE_SUCCESS == code) {
18!
7359
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId2, pNode->dnodeId2);
18✔
7360
  }
7361
  if (TSDB_CODE_SUCCESS == code) {
18!
7362
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId3, pNode->dnodeId3);
18✔
7363
  }
7364
  if (TSDB_CODE_SUCCESS == code) {
18!
7365
    code = nodeListToJson(pJson, jkRedistributeVgroupStmtDnodes, pNode->pDnodes);
18✔
7366
  }
7367

7368
  return code;
18✔
7369
}
7370

7371
static int32_t jsonToRedistributeVgroupStmt(const SJson* pJson, void* pObj) {
18✔
7372
  SRedistributeVgroupStmt* pNode = (SRedistributeVgroupStmt*)pObj;
18✔
7373

7374
  int32_t code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtVgroupId, &pNode->vgId);
18✔
7375
  if (TSDB_CODE_SUCCESS == code) {
18!
7376
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId1, &pNode->dnodeId1);
18✔
7377
  }
7378
  if (TSDB_CODE_SUCCESS == code) {
18!
7379
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId2, &pNode->dnodeId2);
18✔
7380
  }
7381
  if (TSDB_CODE_SUCCESS == code) {
18!
7382
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId3, &pNode->dnodeId3);
18✔
7383
  }
7384
  if (TSDB_CODE_SUCCESS == code) {
18!
7385
    code = jsonToNodeList(pJson, jkRedistributeVgroupStmtDnodes, &pNode->pDnodes);
18✔
7386
  }
7387

7388
  return code;
18✔
7389
}
7390

7391
static const char* jkSplitVgroupStmtVgroupId = "VgroupId";
7392

7393
static int32_t splitVgroupStmtToJson(const void* pObj, SJson* pJson) {
9✔
7394
  const SSplitVgroupStmt* pNode = (const SSplitVgroupStmt*)pObj;
9✔
7395
  return tjsonAddIntegerToObject(pJson, jkSplitVgroupStmtVgroupId, pNode->vgId);
9✔
7396
}
7397

7398
static int32_t jsonToSplitVgroupStmt(const SJson* pJson, void* pObj) {
9✔
7399
  SSplitVgroupStmt* pNode = (SSplitVgroupStmt*)pObj;
9✔
7400
  return tjsonGetIntValue(pJson, jkSplitVgroupStmtVgroupId, &pNode->vgId);
9✔
7401
}
7402

7403
static const char* jkGrantStmtUserName = "UserName";
7404
static const char* jkGrantStmtObjName = "ObjName";
7405
static const char* jkGrantStmtPrivileges = "Privileges";
7406

7407
static int32_t grantStmtToJson(const void* pObj, SJson* pJson) {
108✔
7408
  const SGrantStmt* pNode = (const SGrantStmt*)pObj;
108✔
7409

7410
  int32_t code = tjsonAddStringToObject(pJson, jkGrantStmtUserName, pNode->userName);
108✔
7411
  if (TSDB_CODE_SUCCESS == code) {
108!
7412
    code = tjsonAddStringToObject(pJson, jkGrantStmtObjName, pNode->objName);
108✔
7413
  }
7414
  if (TSDB_CODE_SUCCESS == code) {
108!
7415
    code = tjsonAddIntegerToObject(pJson, jkGrantStmtPrivileges, pNode->privileges);
108✔
7416
  }
7417

7418
  return code;
108✔
7419
}
7420

7421
static int32_t jsonToGrantStmt(const SJson* pJson, void* pObj) {
108✔
7422
  SGrantStmt* pNode = (SGrantStmt*)pObj;
108✔
7423

7424
  int32_t code = tjsonGetStringValue(pJson, jkGrantStmtUserName, pNode->userName);
108✔
7425
  if (TSDB_CODE_SUCCESS == code) {
108!
7426
    code = tjsonGetStringValue(pJson, jkGrantStmtObjName, pNode->objName);
108✔
7427
  }
7428
  if (TSDB_CODE_SUCCESS == code) {
108!
7429
    code = tjsonGetBigIntValue(pJson, jkGrantStmtPrivileges, &pNode->privileges);
108✔
7430
  }
7431

7432
  return code;
108✔
7433
}
7434

7435
static int32_t revokeStmtToJson(const void* pObj, SJson* pJson) { return grantStmtToJson(pObj, pJson); }
54✔
7436

7437
static int32_t jsonToRevokeStmt(const SJson* pJson, void* pObj) { return jsonToGrantStmt(pJson, pObj); }
54✔
7438

7439
static const char* jkShowStmtDbName = "DbName";
7440
static const char* jkShowStmtTbName = "TbName";
7441
static const char* jkShowStmtTableCondType = "TableCondType";
7442

7443
static int32_t showStmtToJson(const void* pObj, SJson* pJson) {
93✔
7444
  const SShowStmt* pNode = (const SShowStmt*)pObj;
93✔
7445

7446
  int32_t code = tjsonAddObject(pJson, jkShowStmtDbName, nodeToJson, pNode->pDbName);
93✔
7447
  if (TSDB_CODE_SUCCESS == code) {
93!
7448
    code = tjsonAddObject(pJson, jkShowStmtTbName, nodeToJson, pNode->pTbName);
93✔
7449
  }
7450
  if (TSDB_CODE_SUCCESS == code) {
93!
7451
    code = tjsonAddIntegerToObject(pJson, jkShowStmtTableCondType, pNode->tableCondType);
93✔
7452
  }
7453

7454
  return code;
93✔
7455
}
7456

7457
static int32_t jsonToShowStmt(const SJson* pJson, void* pObj) {
93✔
7458
  SShowStmt* pNode = (SShowStmt*)pObj;
93✔
7459

7460
  int32_t code = jsonToNodeObject(pJson, jkShowStmtDbName, &pNode->pDbName);
93✔
7461
  if (TSDB_CODE_SUCCESS == code) {
93!
7462
    code = jsonToNodeObject(pJson, jkShowStmtTbName, &pNode->pTbName);
93✔
7463
  }
7464
  if (TSDB_CODE_SUCCESS == code) {
93!
7465
    tjsonGetNumberValue(pJson, jkShowStmtTableCondType, pNode->tableCondType, code);
93✔
7466
  }
7467

7468
  return code;
93✔
7469
}
7470

7471
static int32_t showDnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
3✔
7472

7473
static int32_t jsonToShowDnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
3✔
7474

7475
static int32_t showMnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
3✔
7476

7477
static int32_t jsonToShowMnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
3✔
7478

7479
static int32_t showQnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
3✔
7480

7481
static int32_t jsonToShowQnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
3✔
7482

7483
static int32_t showAnodesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7484

7485
static int32_t jsonToShowAnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7486

7487
static int32_t showAnodesFullStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7488

7489
static int32_t jsonToShowAnodesFullStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7490

7491
static int32_t showArbGroupsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7492

7493
static int32_t jsonToShowArbGroupsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7494

7495
static int32_t showClusterStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
3✔
7496

7497
static int32_t jsonToShowClusterStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
3✔
7498

7499
static int32_t showDatabasesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
3✔
7500

7501
static int32_t jsonToShowDatabasesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
3✔
7502

7503
static int32_t showFunctionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
3✔
7504

7505
static int32_t jsonToShowFunctionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
3✔
7506

7507
static int32_t showIndexesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
6✔
7508

7509
static int32_t jsonToShowIndexesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
6✔
7510

7511
static int32_t showStablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
12✔
7512

7513
static int32_t jsonToShowStablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
12✔
7514

7515
static int32_t showStreamsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
3✔
7516

7517
static int32_t jsonToShowStreamsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
3✔
7518

7519
static int32_t showTablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
12✔
7520

7521
static int32_t jsonToShowTablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
12✔
7522

7523
static int32_t showTagsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
3✔
7524

7525
static int32_t jsonToShowTagsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
3✔
7526

7527
static int32_t showUsersStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
3✔
7528

7529
static int32_t jsonToShowUsersStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
3✔
7530

7531
static int32_t showVgroupsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
6✔
7532

7533
static int32_t jsonToShowVgroupsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
6✔
7534

7535
static int32_t showConsumersStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
3✔
7536

7537
static int32_t jsonToShowConsumersStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
3✔
7538

7539
static int32_t showVariablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
7540

7541
static int32_t jsonToShowVariablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
7542

7543
static int32_t showGrantsFullStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7544

7545
static int32_t jsonToShowGrantsFullStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7546

7547
static int32_t showGrantsLogsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7548

7549
static int32_t showClusterMachinesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7550

7551
static int32_t showEncryptionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7552

7553
static int32_t jsonToShowGrantsLogsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7554

7555
static int32_t jsonToShowClusterMachinesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7556

7557
static int32_t jsonToShowEncryptionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7558

7559
static int32_t showUsageStmtStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7560
static int32_t jsonToShowUsageStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7561

7562
static const char* jkShowDnodeVariablesStmtDnodeId = "DnodeId";
7563
static const char* jkShowDnodeVariablesStmtLikePattern = "LikePattern";
7564

7565
static int32_t showDnodeVariablesStmtToJson(const void* pObj, SJson* pJson) {
6✔
7566
  const SShowDnodeVariablesStmt* pNode = (const SShowDnodeVariablesStmt*)pObj;
6✔
7567

7568
  int32_t code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtDnodeId, nodeToJson, pNode->pDnodeId);
6✔
7569
  if (TSDB_CODE_SUCCESS == code) {
6!
7570
    code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtLikePattern, nodeToJson, pNode->pLikePattern);
6✔
7571
  }
7572

7573
  return code;
6✔
7574
}
7575

7576
static int32_t jsonToShowDnodeVariablesStmt(const SJson* pJson, void* pObj) {
6✔
7577
  SShowDnodeVariablesStmt* pNode = (SShowDnodeVariablesStmt*)pObj;
6✔
7578

7579
  int32_t code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtDnodeId, &pNode->pDnodeId);
6✔
7580
  if (TSDB_CODE_SUCCESS == code) {
6!
7581
    code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtLikePattern, &pNode->pLikePattern);
6✔
7582
  }
7583

7584
  return code;
6✔
7585
}
7586

7587
static int32_t showTransactionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
3✔
7588

7589
static int32_t jsonToShowTransactionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
3✔
7590

7591
static int32_t showSubscriptionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
3✔
7592

7593
static int32_t jsonToShowSubscriptionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
3✔
7594

7595
static const char* jkShowVnodesStmtDnodeId = "DnodeId";
7596
static const char* jkShowVnodesStmtDnodeEndpoint = "DnodeEndpoint";
7597

7598
static int32_t showVnodesStmtToJson(const void* pObj, SJson* pJson) {
6✔
7599
  const SShowVnodesStmt* pNode = (const SShowVnodesStmt*)pObj;
6✔
7600

7601
  int32_t code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeId, nodeToJson, pNode->pDnodeId);
6✔
7602
  if (TSDB_CODE_SUCCESS == code) {
6!
7603
    code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeEndpoint, nodeToJson, pNode->pDnodeEndpoint);
6✔
7604
  }
7605

7606
  return code;
6✔
7607
}
7608

7609
static int32_t jsonToShowVnodesStmt(const SJson* pJson, void* pObj) {
6✔
7610
  SShowVnodesStmt* pNode = (SShowVnodesStmt*)pObj;
6✔
7611

7612
  int32_t code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeId, &pNode->pDnodeId);
6✔
7613
  if (TSDB_CODE_SUCCESS == code) {
6!
7614
    code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeEndpoint, &pNode->pDnodeEndpoint);
6✔
7615
  }
7616

7617
  return code;
6✔
7618
}
7619

7620
static int32_t showUserPrivilegesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
3✔
7621

7622
static int32_t jsonToShowUserPrivilegesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
3✔
7623

7624
static const char* jkShowCreateDatabaseStmtDbName = "DbName";
7625

7626
static int32_t showCreateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
9✔
7627
  const SShowCreateDatabaseStmt* pNode = (const SShowCreateDatabaseStmt*)pObj;
9✔
7628
  return tjsonAddStringToObject(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
9✔
7629
}
7630

7631
static int32_t jsonToShowCreateDatabaseStmt(const SJson* pJson, void* pObj) {
9✔
7632
  SShowCreateDatabaseStmt* pNode = (SShowCreateDatabaseStmt*)pObj;
9✔
7633
  return tjsonGetStringValue(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
9✔
7634
}
7635

7636
static const char* jkShowCreateTableStmtDbName = "DbName";
7637
static const char* jkShowCreateTableStmtTableName = "TableName";
7638

7639
static int32_t showCreateTableStmtToJson(const void* pObj, SJson* pJson) {
18✔
7640
  const SShowCreateTableStmt* pNode = (const SShowCreateTableStmt*)pObj;
18✔
7641

7642
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
18✔
7643
  if (TSDB_CODE_SUCCESS == code) {
18!
7644
    code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
18✔
7645
  }
7646

7647
  return code;
18✔
7648
}
7649

7650
static int32_t jsonToShowCreateTableStmt(const SJson* pJson, void* pObj) {
18✔
7651
  SShowCreateTableStmt* pNode = (SShowCreateTableStmt*)pObj;
18✔
7652

7653
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
18✔
7654
  if (TSDB_CODE_SUCCESS == code) {
18!
7655
    code = tjsonGetStringValue(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
18✔
7656
  }
7657

7658
  return code;
18✔
7659
}
7660

7661
static int32_t showCreateStableStmtToJson(const void* pObj, SJson* pJson) {
9✔
7662
  return showCreateTableStmtToJson(pObj, pJson);
9✔
7663
}
7664

7665
static int32_t jsonToShowCreateStableStmt(const SJson* pJson, void* pObj) {
9✔
7666
  return jsonToShowCreateTableStmt(pJson, pObj);
9✔
7667
}
7668

7669
static const char* jkShowCreateViewStmtDbName = "DbName";
7670
static const char* jkShowCreateViewStmtViewName = "ViewName";
7671

7672
static int32_t showCreateViewStmtToJson(const void* pObj, SJson* pJson) {
×
7673
  const SShowCreateViewStmt* pNode = (const SShowCreateViewStmt*)pObj;
×
7674

7675
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
7676
  if (TSDB_CODE_SUCCESS == code) {
×
7677
    code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
7678
  }
7679

7680
  return code;
×
7681
}
7682

7683
static int32_t jsonToShowCreateViewStmt(const SJson* pJson, void* pObj) {
×
7684
  SShowCreateViewStmt* pNode = (SShowCreateViewStmt*)pObj;
×
7685

7686
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
7687
  if (TSDB_CODE_SUCCESS == code) {
×
7688
    code = tjsonGetStringValue(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
7689
  }
7690

7691
  return code;
×
7692
}
7693

7694
static const char* jkShowTableDistributedStmtDbName = "DbName";
7695
static const char* jkShowTableDistributedStmtTableName = "TableName";
7696

7697
static int32_t showTableDistributedStmtToJson(const void* pObj, SJson* pJson) {
3✔
7698
  const SShowTableDistributedStmt* pNode = (const SShowTableDistributedStmt*)pObj;
3✔
7699

7700
  int32_t code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
3✔
7701
  if (TSDB_CODE_SUCCESS == code) {
3!
7702
    code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
3✔
7703
  }
7704

7705
  return code;
3✔
7706
}
7707

7708
static int32_t jsonToShowTableDistributedStmt(const SJson* pJson, void* pObj) {
3✔
7709
  SShowTableDistributedStmt* pNode = (SShowTableDistributedStmt*)pObj;
3✔
7710

7711
  int32_t code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
3✔
7712
  if (TSDB_CODE_SUCCESS == code) {
3!
7713
    code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
3✔
7714
  }
7715

7716
  return code;
3✔
7717
}
7718

7719
static int32_t showLocalVariablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
7720

7721
static int32_t jsonToShowLocalVariablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
7722

7723
static const char* jkShowTableTagsStmtDbName = "DbName";
7724
static const char* jkShowTableTagsStmtTbName = "TbName";
7725
static const char* jkShowTableTagsStmtTags = "Tags";
7726

7727
static int32_t showTableTagsStmtToJson(const void* pObj, SJson* pJson) {
9✔
7728
  const SShowTableTagsStmt* pNode = (const SShowTableTagsStmt*)pObj;
9✔
7729

7730
  int32_t code = tjsonAddObject(pJson, jkShowTableTagsStmtDbName, nodeToJson, pNode->pDbName);
9✔
7731
  if (TSDB_CODE_SUCCESS == code) {
9!
7732
    code = tjsonAddObject(pJson, jkShowTableTagsStmtTbName, nodeToJson, pNode->pTbName);
9✔
7733
  }
7734
  if (TSDB_CODE_SUCCESS == code) {
9!
7735
    code = nodeListToJson(pJson, jkShowTableTagsStmtTags, pNode->pTags);
9✔
7736
  }
7737

7738
  return code;
9✔
7739
}
7740

7741
static int32_t jsonToShowTableTagsStmt(const SJson* pJson, void* pObj) {
9✔
7742
  SShowTableTagsStmt* pNode = (SShowTableTagsStmt*)pObj;
9✔
7743

7744
  int32_t code = jsonToNodeObject(pJson, jkShowTableTagsStmtDbName, &pNode->pDbName);
9✔
7745
  if (TSDB_CODE_SUCCESS == code) {
9!
7746
    code = jsonToNodeObject(pJson, jkShowTableTagsStmtTbName, &pNode->pTbName);
9✔
7747
  }
7748
  if (TSDB_CODE_SUCCESS == code) {
9!
7749
    code = jsonToNodeList(pJson, jkShowTableTagsStmtTags, &pNode->pTags);
9✔
7750
  }
7751

7752
  return code;
9✔
7753
}
7754

7755
static const char* jkDeleteStmtFromTable = "FromTable";
7756
static const char* jkDeleteStmtWhere = "Where";
7757
static const char* jkDeleteStmtCountFunc = "CountFunc";
7758
static const char* jkDeleteStmtTagIndexCond = "TagIndexCond";
7759
static const char* jkDeleteStmtTimeRangeStartKey = "TimeRangeStartKey";
7760
static const char* jkDeleteStmtTimeRangeEndKey = "TimeRangeEndKey";
7761
static const char* jkDeleteStmtPrecision = "Precision";
7762
static const char* jkDeleteStmtDeleteZeroRows = "DeleteZeroRows";
7763

7764
static int32_t deleteStmtToJson(const void* pObj, SJson* pJson) {
43✔
7765
  const SDeleteStmt* pNode = (const SDeleteStmt*)pObj;
43✔
7766

7767
  int32_t code = tjsonAddObject(pJson, jkDeleteStmtFromTable, nodeToJson, pNode->pFromTable);
43✔
7768
  if (TSDB_CODE_SUCCESS == code) {
43!
7769
    code = tjsonAddObject(pJson, jkDeleteStmtWhere, nodeToJson, pNode->pWhere);
43✔
7770
  }
7771
  if (TSDB_CODE_SUCCESS == code) {
43!
7772
    code = tjsonAddObject(pJson, jkDeleteStmtCountFunc, nodeToJson, pNode->pCountFunc);
43✔
7773
  }
7774
  if (TSDB_CODE_SUCCESS == code) {
43!
7775
    code = tjsonAddObject(pJson, jkDeleteStmtTagIndexCond, nodeToJson, pNode->pTagCond);
43✔
7776
  }
7777
  if (TSDB_CODE_SUCCESS == code) {
43!
7778
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeStartKey, pNode->timeRange.skey);
43✔
7779
  }
7780
  if (TSDB_CODE_SUCCESS == code) {
43!
7781
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeEndKey, pNode->timeRange.ekey);
43✔
7782
  }
7783
  if (TSDB_CODE_SUCCESS == code) {
43!
7784
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtPrecision, pNode->precision);
43✔
7785
  }
7786
  if (TSDB_CODE_SUCCESS == code) {
43!
7787
    code = tjsonAddBoolToObject(pJson, jkDeleteStmtDeleteZeroRows, pNode->deleteZeroRows);
43✔
7788
  }
7789

7790
  return code;
43✔
7791
}
7792

7793
static int32_t jsonToDeleteStmt(const SJson* pJson, void* pObj) {
43✔
7794
  SDeleteStmt* pNode = (SDeleteStmt*)pObj;
43✔
7795

7796
  int32_t code = jsonToNodeObject(pJson, jkDeleteStmtFromTable, &pNode->pFromTable);
43✔
7797
  if (TSDB_CODE_SUCCESS == code) {
43!
7798
    code = jsonToNodeObject(pJson, jkDeleteStmtWhere, &pNode->pWhere);
43✔
7799
  }
7800
  if (TSDB_CODE_SUCCESS == code) {
43!
7801
    code = jsonToNodeObject(pJson, jkDeleteStmtCountFunc, &pNode->pCountFunc);
43✔
7802
  }
7803
  if (TSDB_CODE_SUCCESS == code) {
43!
7804
    code = jsonToNodeObject(pJson, jkDeleteStmtTagIndexCond, &pNode->pTagCond);
43✔
7805
  }
7806
  if (TSDB_CODE_SUCCESS == code) {
43!
7807
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeStartKey, &pNode->timeRange.skey);
43✔
7808
  }
7809
  if (TSDB_CODE_SUCCESS == code) {
43!
7810
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeEndKey, &pNode->timeRange.ekey);
43✔
7811
  }
7812
  if (TSDB_CODE_SUCCESS == code) {
43!
7813
    code = tjsonGetUTinyIntValue(pJson, jkDeleteStmtPrecision, &pNode->precision);
43✔
7814
  }
7815
  if (TSDB_CODE_SUCCESS == code) {
43!
7816
    code = tjsonGetBoolValue(pJson, jkDeleteStmtDeleteZeroRows, &pNode->deleteZeroRows);
43✔
7817
  }
7818

7819
  return code;
43✔
7820
}
7821

7822
static const char* jkInsertStmtTable = "Table";
7823
static const char* jkInsertStmtCols = "Cols";
7824
static const char* jkInsertStmtQuery = "Query";
7825
static const char* jkInsertStmtPrecision = "Precision";
7826

7827
static int32_t insertStmtToJson(const void* pObj, SJson* pJson) {
12✔
7828
  const SInsertStmt* pNode = (const SInsertStmt*)pObj;
12✔
7829

7830
  int32_t code = tjsonAddObject(pJson, jkInsertStmtTable, nodeToJson, pNode->pTable);
12✔
7831
  if (TSDB_CODE_SUCCESS == code) {
12!
7832
    code = nodeListToJson(pJson, jkInsertStmtCols, pNode->pCols);
12✔
7833
  }
7834
  if (TSDB_CODE_SUCCESS == code) {
12!
7835
    code = tjsonAddObject(pJson, jkInsertStmtQuery, nodeToJson, pNode->pQuery);
12✔
7836
  }
7837
  if (TSDB_CODE_SUCCESS == code) {
12!
7838
    code = tjsonAddIntegerToObject(pJson, jkInsertStmtPrecision, pNode->precision);
12✔
7839
  }
7840

7841
  return code;
12✔
7842
}
7843

7844
static int32_t jsonToInsertStmt(const SJson* pJson, void* pObj) {
12✔
7845
  SInsertStmt* pNode = (SInsertStmt*)pObj;
12✔
7846

7847
  int32_t code = jsonToNodeObject(pJson, jkInsertStmtTable, &pNode->pTable);
12✔
7848
  if (TSDB_CODE_SUCCESS == code) {
12!
7849
    code = jsonToNodeList(pJson, jkInsertStmtCols, &pNode->pCols);
12✔
7850
  }
7851
  if (TSDB_CODE_SUCCESS == code) {
12!
7852
    code = jsonToNodeObject(pJson, jkInsertStmtQuery, &pNode->pQuery);
12✔
7853
  }
7854
  if (TSDB_CODE_SUCCESS == code) {
12!
7855
    code = tjsonGetUTinyIntValue(pJson, jkInsertStmtPrecision, &pNode->precision);
12✔
7856
  }
7857

7858
  return code;
12✔
7859
}
7860

7861
static const char* jkTSMAOptionFuncs = "Funcs";
7862
static const char* jkTSMAOptionCols = "Cols";
7863
static const char* jkTSMAOptionInterval = "Interval";
7864
static const char* jkTSMAOptionTsPrecision = "Precision";
7865

7866
static int32_t tsmaOptionToJson(const void* pObj, SJson* pJson) {
×
7867
  const STSMAOptions* pNode = (const STSMAOptions*)pObj;
×
7868
  int32_t             code = nodeListToJson(pJson, jkTSMAOptionFuncs, pNode->pFuncs);
×
7869
  if (TSDB_CODE_SUCCESS == code) {
×
7870
    code = tjsonAddObject(pJson, jkTSMAOptionInterval, nodeToJson, pNode->pInterval);
×
7871
  }
7872
  if (TSDB_CODE_SUCCESS == code) {
×
7873
    code = tjsonAddIntegerToObject(pJson, jkTSMAOptionTsPrecision, pNode->tsPrecision);
×
7874
  }
7875
  return code;
×
7876
}
7877

7878
static int32_t jsonToTSMAOption(const SJson* pJson, void* pObj) {
×
7879
  STSMAOptions* pNode = (STSMAOptions*)pObj;
×
7880
  int32_t       code = jsonToNodeList(pJson, jkTSMAOptionFuncs, &pNode->pFuncs);
×
7881
  if (TSDB_CODE_SUCCESS == code) {
×
7882
    code = jsonToNodeObject(pJson, jkTSMAOptionInterval, &pNode->pInterval);
×
7883
  }
7884
  if (TSDB_CODE_SUCCESS == code) {
×
7885
    code = tjsonGetUTinyIntValue(pJson, jkTSMAOptionTsPrecision, &pNode->tsPrecision);
×
7886
  }
7887
  return code;
×
7888
}
7889

7890
static const char* jkCreateTSMAStmtIgnoreExists = "IgnoreExists";
7891
static const char* jkCreateTSMAStmtTsmaName = "TSMAName";
7892
static const char* jkCreateTSMAStmtDbName = "DbName";
7893
static const char* jkCreateTSMAStmtTableName = "TableName";
7894
static const char* jkCreateTSMAStmtpOptions = "Options";
7895

7896
static int32_t createTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
7897
  const SCreateTSMAStmt* pNode = (const SCreateTSMAStmt*)pObj;
×
7898
  int32_t                code = tjsonAddBoolToObject(pJson, jkCreateTSMAStmtIgnoreExists, pNode->ignoreExists);
×
7899
  if (TSDB_CODE_SUCCESS == code) {
×
7900
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
7901
  }
7902
  if (TSDB_CODE_SUCCESS == code) {
×
7903
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
7904
  }
7905
  if (TSDB_CODE_SUCCESS == code) {
×
7906
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
7907
  }
7908
  if (TSDB_CODE_SUCCESS == code) {
×
7909
    code = tjsonAddObject(pJson, jkCreateTSMAStmtpOptions, nodeToJson, pNode->pOptions);
×
7910
  }
7911
  return code;
×
7912
}
7913

7914
static int32_t jsonToCreateTSMAStmt(const SJson* pJson, void* pObj) {
×
7915
  SCreateTSMAStmt* pNode = (SCreateTSMAStmt*)pObj;
×
7916
  int32_t          code = tjsonGetBoolValue(pJson, jkCreateTSMAStmtIgnoreExists, &pNode->ignoreExists);
×
7917
  if (TSDB_CODE_SUCCESS == code) {
×
7918
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
7919
  }
7920
  if (TSDB_CODE_SUCCESS == code) {
×
7921
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
7922
  }
7923
  if (TSDB_CODE_SUCCESS == code) {
×
7924
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
7925
  }
7926
  if (TSDB_CODE_SUCCESS == code) {
×
7927
    code = jsonToNodeObject(pJson, jkCreateTSMAStmtpOptions, (SNode**)&pNode->pOptions);
×
7928
  }
7929
  return code;
×
7930
}
7931

7932
static const char* jkDropTSMAStmtIgnoreNotExists = "IgnoreNotExists";
7933
static const char* jkDropTSMAStmtDbName = "DbName";
7934
static const char* jkDropTSMAStmtTsmaName = "TSMAName";
7935

7936
static int32_t dropTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
7937
  const SDropTSMAStmt* pNode = (const SDropTSMAStmt*)pObj;
×
7938
  int32_t              code = tjsonAddBoolToObject(pJson, jkDropTSMAStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7939
  if (TSDB_CODE_SUCCESS == code) {
×
7940
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
7941
  }
7942
  if (TSDB_CODE_SUCCESS == code) {
×
7943
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
7944
  }
7945
  return code;
×
7946
}
7947

7948
static int32_t jsonToDropTSMAStmt(const SJson* pJson, void* pObj) {
×
7949
  SDropTSMAStmt* pNode = (SDropTSMAStmt*)pObj;
×
7950
  int32_t        code = tjsonGetBoolValue(pJson, jkDropTSMAStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7951
  if (TSDB_CODE_SUCCESS == code) {
×
7952
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
7953
  }
7954
  if (TSDB_CODE_SUCCESS == code) {
×
7955
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
7956
  }
7957
  return code;
×
7958
}
7959

7960
static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
3,031,754✔
7961
  switch (nodeType(pObj)) {
3,031,754!
7962
    case QUERY_NODE_COLUMN:
914,247✔
7963
      return columnNodeToJson(pObj, pJson);
914,247✔
7964
    case QUERY_NODE_VALUE:
69,106✔
7965
      return valueNodeToJson(pObj, pJson);
69,106✔
7966
    case QUERY_NODE_OPERATOR:
12,918✔
7967
      return operatorNodeToJson(pObj, pJson);
12,918✔
7968
    case QUERY_NODE_LOGIC_CONDITION:
2,186✔
7969
      return logicConditionNodeToJson(pObj, pJson);
2,186✔
7970
    case QUERY_NODE_FUNCTION:
415,677✔
7971
      return functionNodeToJson(pObj, pJson);
415,677✔
7972
    case QUERY_NODE_REAL_TABLE:
3,534✔
7973
      return realTableNodeToJson(pObj, pJson);
3,534✔
7974
    case QUERY_NODE_TEMP_TABLE:
166✔
7975
      return tempTableNodeToJson(pObj, pJson);
166✔
7976
    case QUERY_NODE_JOIN_TABLE:
62✔
7977
      return joinTableNodeToJson(pObj, pJson);
62✔
7978
    case QUERY_NODE_GROUPING_SET:
657✔
7979
      return groupingSetNodeToJson(pObj, pJson);
657✔
7980
    case QUERY_NODE_ORDER_BY_EXPR:
907✔
7981
      return orderByExprNodeToJson(pObj, pJson);
907✔
7982
    case QUERY_NODE_LIMIT:
360✔
7983
      return limitNodeToJson(pObj, pJson);
360✔
7984
    case QUERY_NODE_STATE_WINDOW:
81✔
7985
      return stateWindowNodeToJson(pObj, pJson);
81✔
7986
    case QUERY_NODE_SESSION_WINDOW:
113✔
7987
      return sessionWindowNodeToJson(pObj, pJson);
113✔
7988
    case QUERY_NODE_INTERVAL_WINDOW:
1,099✔
7989
      return intervalWindowNodeToJson(pObj, pJson);
1,099✔
7990
    case QUERY_NODE_NODE_LIST:
4,307✔
7991
      return nodeListNodeToJson(pObj, pJson);
4,307✔
7992
    case QUERY_NODE_FILL:
305✔
7993
      return fillNodeToJson(pObj, pJson);
305✔
7994
    case QUERY_NODE_RAW_EXPR:
×
7995
      break;
×
7996
    case QUERY_NODE_TARGET:
720,372✔
7997
      return targetNodeToJson(pObj, pJson);
720,372✔
7998
    case QUERY_NODE_DATABLOCK_DESC:
38,026✔
7999
      return dataBlockDescNodeToJson(pObj, pJson);
38,026✔
8000
    case QUERY_NODE_SLOT_DESC:
741,600✔
8001
      return slotDescNodeToJson(pObj, pJson);
741,600✔
8002
    case QUERY_NODE_COLUMN_DEF:
13,000✔
8003
      return columnDefNodeToJson(pObj, pJson);
13,000✔
8004
    case QUERY_NODE_DOWNSTREAM_SOURCE:
948✔
8005
      return downstreamSourceNodeToJson(pObj, pJson);
948✔
8006
    case QUERY_NODE_DATABASE_OPTIONS:
420✔
8007
      return databaseOptionsToJson(pObj, pJson);
420✔
8008
    case QUERY_NODE_TABLE_OPTIONS:
78✔
8009
      return tableOptionsToJson(pObj, pJson);
78✔
8010
    case QUERY_NODE_COLUMN_OPTIONS:
12,663✔
8011
      return columnOptionsToJson(pObj, pJson);
12,663✔
8012
    case QUERY_NODE_INDEX_OPTIONS:
19✔
8013
      return indexOptionsToJson(pObj, pJson);
19✔
8014
    case QUERY_NODE_EXPLAIN_OPTIONS:
30✔
8015
      return explainOptionsToJson(pObj, pJson);
30✔
8016
    case QUERY_NODE_STREAM_OPTIONS:
105✔
8017
      return streamOptionsToJson(pObj, pJson);
105✔
8018
    case QUERY_NODE_LEFT_VALUE:
16✔
8019
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to serialize.
16✔
8020
    case QUERY_NODE_WHEN_THEN:
156✔
8021
      return whenThenNodeToJson(pObj, pJson);
156✔
8022
    case QUERY_NODE_CASE_WHEN:
136✔
8023
      return caseWhenNodeToJson(pObj, pJson);
136✔
8024
    case QUERY_NODE_EVENT_WINDOW:
13✔
8025
      return eventWindowNodeToJson(pObj, pJson);
13✔
8026
    case QUERY_NODE_WINDOW_OFFSET:
×
8027
      return windowOffsetNodeToJson(pObj, pJson);
×
8028
    case QUERY_NODE_COUNT_WINDOW:
15✔
8029
      return countWindowNodeToJson(pObj, pJson);
15✔
8030
    case QUERY_NODE_ANOMALY_WINDOW:
×
8031
      return anomalyWindowNodeToJson(pObj, pJson);
×
8032
    case QUERY_NODE_SET_OPERATOR:
64✔
8033
      return setOperatorToJson(pObj, pJson);
64✔
8034
    case QUERY_NODE_SELECT_STMT:
3,655✔
8035
      return selectStmtToJson(pObj, pJson);
3,655✔
8036
    case QUERY_NODE_VNODE_MODIFY_STMT:
120✔
8037
      return vnodeModifyStmtToJson(pObj, pJson);
120✔
8038
    case QUERY_NODE_CREATE_DATABASE_STMT:
54✔
8039
      return createDatabaseStmtToJson(pObj, pJson);
54✔
8040
    case QUERY_NODE_ALTER_DATABASE_STMT:
366✔
8041
      return alterDatabaseStmtToJson(pObj, pJson);
366✔
8042
    case QUERY_NODE_TRIM_DATABASE_STMT:
18✔
8043
      return trimDatabaseStmtToJson(pObj, pJson);
18✔
8044
    case QUERY_NODE_S3MIGRATE_DATABASE_STMT:
×
8045
      return s3migrateDatabaseStmtToJson(pObj, pJson);
×
8046
    case QUERY_NODE_CREATE_TABLE_STMT:
45✔
8047
      return createTableStmtToJson(pObj, pJson);
45✔
8048
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
15✔
8049
      return createSubTableClauseToJson(pObj, pJson);
15✔
8050
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
9✔
8051
      return createMultiTablesStmtToJson(pObj, pJson);
9✔
8052
    case QUERY_NODE_DROP_TABLE_CLAUSE:
12✔
8053
      return dropTableClauseToJson(pObj, pJson);
12✔
8054
    case QUERY_NODE_DROP_TABLE_STMT:
6✔
8055
      return dropTableStmtToJson(pObj, pJson);
6✔
8056
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
9✔
8057
      return dropStableStmtToJson(pObj, pJson);
9✔
8058
    case QUERY_NODE_ALTER_TABLE_STMT:
75✔
8059
      return alterTableStmtToJson(pObj, pJson);
75✔
8060
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
87✔
8061
      return alterStableStmtToJson(pObj, pJson);
87✔
8062
    case QUERY_NODE_CREATE_USER_STMT:
18✔
8063
      return createUserStmtToJson(pObj, pJson);
18✔
8064
    case QUERY_NODE_ALTER_USER_STMT:
27✔
8065
      return alterUserStmtToJson(pObj, pJson);
27✔
8066
    case QUERY_NODE_DROP_USER_STMT:
9✔
8067
      return dropUserStmtToJson(pObj, pJson);
9✔
8068
    case QUERY_NODE_USE_DATABASE_STMT:
9✔
8069
      return useDatabaseStmtToJson(pObj, pJson);
9✔
8070
    case QUERY_NODE_CREATE_DNODE_STMT:
54✔
8071
      return createDnodeStmtToJson(pObj, pJson);
54✔
8072
    case QUERY_NODE_DROP_DNODE_STMT:
81✔
8073
      return dropDnodeStmtToJson(pObj, pJson);
81✔
8074
    case QUERY_NODE_ALTER_DNODE_STMT:
36✔
8075
      return alterDnodeStmtToJson(pObj, pJson);
36✔
8076
    case QUERY_NODE_CREATE_INDEX_STMT:
19✔
8077
      return createIndexStmtToJson(pObj, pJson);
19✔
8078
    case QUERY_NODE_DROP_INDEX_STMT:
18✔
8079
      return dropIndexStmtToJson(pObj, pJson);
18✔
8080
    case QUERY_NODE_CREATE_QNODE_STMT:
9✔
8081
      return createQnodeStmtToJson(pObj, pJson);
9✔
8082
    case QUERY_NODE_DROP_QNODE_STMT:
9✔
8083
      return dropQnodeStmtToJson(pObj, pJson);
9✔
8084
    case QUERY_NODE_CREATE_ANODE_STMT:
×
8085
      return createAnodeStmtToJson(pObj, pJson);
×
8086
    case QUERY_NODE_DROP_ANODE_STMT:
×
8087
      return dropAnodeStmtToJson(pObj, pJson);
×
8088
    case QUERY_NODE_UPDATE_ANODE_STMT:
×
8089
      return updateAnodeStmtToJson(pObj, pJson);
×
8090
    case QUERY_NODE_CREATE_SNODE_STMT:
9✔
8091
      return createSnodeStmtToJson(pObj, pJson);
9✔
8092
    case QUERY_NODE_DROP_SNODE_STMT:
9✔
8093
      return dropSnodeStmtToJson(pObj, pJson);
9✔
8094
    case QUERY_NODE_CREATE_MNODE_STMT:
9✔
8095
      return createMnodeStmtToJson(pObj, pJson);
9✔
8096
    case QUERY_NODE_DROP_MNODE_STMT:
9✔
8097
      return dropMnodeStmtToJson(pObj, pJson);
9✔
8098
    case QUERY_NODE_CREATE_TOPIC_STMT:
73✔
8099
      return createTopicStmtToJson(pObj, pJson);
73✔
8100
    case QUERY_NODE_DROP_TOPIC_STMT:
18✔
8101
      return dropTopicStmtToJson(pObj, pJson);
18✔
8102
    case QUERY_NODE_DROP_CGROUP_STMT:
18✔
8103
      return dropConsumerGroupStmtToJson(pObj, pJson);
18✔
8104
    case QUERY_NODE_ALTER_LOCAL_STMT:
18✔
8105
      return alterLocalStmtToJson(pObj, pJson);
18✔
8106
    case QUERY_NODE_EXPLAIN_STMT:
30✔
8107
      return explainStmtToJson(pObj, pJson);
30✔
8108
    case QUERY_NODE_DESCRIBE_STMT:
18✔
8109
      return describeStmtToJson(pObj, pJson);
18✔
8110
    case QUERY_NODE_COMPACT_DATABASE_STMT:
36✔
8111
      return compactDatabaseStmtToJson(pObj, pJson);
36✔
8112
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
×
8113
      return compactVgroupsStmtToJson(pObj, pJson);
×
8114
    case QUERY_NODE_CREATE_STREAM_STMT:
86✔
8115
      return createStreamStmtToJson(pObj, pJson);
86✔
8116
    case QUERY_NODE_DROP_STREAM_STMT:
18✔
8117
      return dropStreamStmtToJson(pObj, pJson);
18✔
8118
    case QUERY_NODE_BALANCE_VGROUP_STMT:
9✔
8119
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to serialize.
9✔
8120
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
9✔
8121
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to serialize.
9✔
8122
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
8123
      return TSDB_CODE_SUCCESS;
×
8124
    case QUERY_NODE_MERGE_VGROUP_STMT:
9✔
8125
      return mergeVgroupStmtToJson(pObj, pJson);
9✔
8126
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
18✔
8127
      return redistributeVgroupStmtToJson(pObj, pJson);
18✔
8128
    case QUERY_NODE_SPLIT_VGROUP_STMT:
9✔
8129
      return splitVgroupStmtToJson(pObj, pJson);
9✔
8130
    case QUERY_NODE_GRANT_STMT:
54✔
8131
      return grantStmtToJson(pObj, pJson);
54✔
8132
    case QUERY_NODE_REVOKE_STMT:
54✔
8133
      return revokeStmtToJson(pObj, pJson);
54✔
8134
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
8135
      return alterClusterStmtToJson(pObj, pJson);
×
8136
    case QUERY_NODE_SHOW_DNODES_STMT:
3✔
8137
      return showDnodesStmtToJson(pObj, pJson);
3✔
8138
    case QUERY_NODE_SHOW_MNODES_STMT:
3✔
8139
      return showMnodesStmtToJson(pObj, pJson);
3✔
8140
    case QUERY_NODE_SHOW_QNODES_STMT:
3✔
8141
      return showQnodesStmtToJson(pObj, pJson);
3✔
8142
    case QUERY_NODE_SHOW_ANODES_STMT:
×
8143
      return showAnodesStmtToJson(pObj, pJson);
×
8144
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
8145
      return showAnodesFullStmtToJson(pObj, pJson);
×
8146
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
8147
      return showArbGroupsStmtToJson(pObj, pJson);
×
8148
    case QUERY_NODE_SHOW_CLUSTER_STMT:
3✔
8149
      return showClusterStmtToJson(pObj, pJson);
3✔
8150
    case QUERY_NODE_SHOW_DATABASES_STMT:
3✔
8151
      return showDatabasesStmtToJson(pObj, pJson);
3✔
8152
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
3✔
8153
      return showFunctionsStmtToJson(pObj, pJson);
3✔
8154
    case QUERY_NODE_SHOW_INDEXES_STMT:
6✔
8155
      return showIndexesStmtToJson(pObj, pJson);
6✔
8156
    case QUERY_NODE_SHOW_STABLES_STMT:
12✔
8157
      return showStablesStmtToJson(pObj, pJson);
12✔
8158
    case QUERY_NODE_SHOW_STREAMS_STMT:
3✔
8159
      return showStreamsStmtToJson(pObj, pJson);
3✔
8160
    case QUERY_NODE_SHOW_TABLES_STMT:
12✔
8161
      return showTablesStmtToJson(pObj, pJson);
12✔
8162
    case QUERY_NODE_SHOW_TAGS_STMT:
3✔
8163
      return showTagsStmtToJson(pObj, pJson);
3✔
8164
    case QUERY_NODE_SHOW_USERS_STMT:
3✔
8165
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
8166
      return showUsersStmtToJson(pObj, pJson);
3✔
8167
    case QUERY_NODE_SHOW_VGROUPS_STMT:
6✔
8168
      return showVgroupsStmtToJson(pObj, pJson);
6✔
8169
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
3✔
8170
      return showConsumersStmtToJson(pObj, pJson);
3✔
8171
    case QUERY_NODE_SHOW_VARIABLES_STMT:
9✔
8172
      return showVariablesStmtToJson(pObj, pJson);
9✔
8173
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
8174
      return showGrantsFullStmtToJson(pObj, pJson);
×
8175
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
8176
      return showGrantsLogsStmtToJson(pObj, pJson);
×
8177
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
8178
      return showClusterMachinesStmtToJson(pObj, pJson);
×
8179
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
8180
      return showEncryptionsStmtToJson(pObj, pJson);
×
8181
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
6✔
8182
      return showDnodeVariablesStmtToJson(pObj, pJson);
6✔
8183
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
3✔
8184
      return showTransactionsStmtToJson(pObj, pJson);
3✔
8185
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
3✔
8186
      return showSubscriptionsStmtToJson(pObj, pJson);
3✔
8187
    case QUERY_NODE_SHOW_VNODES_STMT:
6✔
8188
      return showVnodesStmtToJson(pObj, pJson);
6✔
8189
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
3✔
8190
      return showUserPrivilegesStmtToJson(pObj, pJson);
3✔
8191
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
9✔
8192
      return showCreateDatabaseStmtToJson(pObj, pJson);
9✔
8193
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
9✔
8194
      return showCreateTableStmtToJson(pObj, pJson);
9✔
8195
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
9✔
8196
      return showCreateStableStmtToJson(pObj, pJson);
9✔
8197
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
8198
      return showCreateViewStmtToJson(pObj, pJson);
×
8199
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
3✔
8200
      return showTableDistributedStmtToJson(pObj, pJson);
3✔
8201
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
9✔
8202
      return showLocalVariablesStmtToJson(pObj, pJson);
9✔
8203
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
9✔
8204
      return showTableTagsStmtToJson(pObj, pJson);
9✔
8205
    case QUERY_NODE_SHOW_USAGE_STMT:
×
8206
      return showUsageStmtStmtToJson(pObj, pJson);
×
8207
    case QUERY_NODE_DELETE_STMT:
43✔
8208
      return deleteStmtToJson(pObj, pJson);
43✔
8209
    case QUERY_NODE_INSERT_STMT:
12✔
8210
      return insertStmtToJson(pObj, pJson);
12✔
8211
    case QUERY_NODE_LOGIC_PLAN_SCAN:
4,620✔
8212
      return logicScanNodeToJson(pObj, pJson);
4,620✔
8213
    case QUERY_NODE_LOGIC_PLAN_JOIN:
125✔
8214
      return logicJoinNodeToJson(pObj, pJson);
125✔
8215
    case QUERY_NODE_LOGIC_PLAN_AGG:
1,174✔
8216
      return logicAggNodeToJson(pObj, pJson);
1,174✔
8217
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
2,674✔
8218
      return logicProjectNodeToJson(pObj, pJson);
2,674✔
8219
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
55✔
8220
      return logicVnodeModifyNodeToJson(pObj, pJson);
55✔
8221
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
633✔
8222
      return logicExchangeNodeToJson(pObj, pJson);
633✔
8223
    case QUERY_NODE_LOGIC_PLAN_MERGE:
113✔
8224
      return logicMergeNodeToJson(pObj, pJson);
113✔
8225
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
500✔
8226
      return logicWindowNodeToJson(pObj, pJson);
500✔
8227
    case QUERY_NODE_LOGIC_PLAN_FILL:
96✔
8228
      return logicFillNodeToJson(pObj, pJson);
96✔
8229
    case QUERY_NODE_LOGIC_PLAN_SORT:
342✔
8230
      return logicSortNodeToJson(pObj, pJson);
342✔
8231
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
221✔
8232
      return logicPartitionNodeToJson(pObj, pJson);
221✔
8233
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
143✔
8234
      return logicIndefRowsFuncNodeToJson(pObj, pJson);
143✔
8235
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
33✔
8236
      return logicInterpFuncNodeToJson(pObj, pJson);
33✔
8237
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
8238
      return logicForecastFuncNodeToJson(pObj, pJson);
×
8239
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
8240
      return logicGroupCacheNodeToJson(pObj, pJson);
×
8241
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
8242
      return logicDynQueryCtrlNodeToJson(pObj, pJson);
×
8243
    case QUERY_NODE_LOGIC_SUBPLAN:
5,051✔
8244
      return logicSubplanToJson(pObj, pJson);
5,051✔
8245
    case QUERY_NODE_LOGIC_PLAN:
284✔
8246
      return logicPlanToJson(pObj, pJson);
284✔
8247
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
7✔
8248
      return physiTagScanNodeToJson(pObj, pJson);
7✔
8249
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
6✔
8250
      return physiScanNodeToJson(pObj, pJson);
6✔
8251
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
16✔
8252
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
8253
      return physiLastRowScanNodeToJson(pObj, pJson);
16✔
8254
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
13,197✔
8255
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
8256
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
8257
      return physiTableScanNodeToJson(pObj, pJson);
13,197✔
8258
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
1,941✔
8259
      return physiSysTableScanNodeToJson(pObj, pJson);
1,941✔
8260
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
7,617✔
8261
      return physiProjectNodeToJson(pObj, pJson);
7,617✔
8262
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
22✔
8263
      return physiMergeJoinNodeToJson(pObj, pJson);
22✔
8264
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
8265
      return physiHashJoinNodeToJson(pObj, pJson);
×
8266
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
416✔
8267
      return physiAggNodeToJson(pObj, pJson);
416✔
8268
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
966✔
8269
      return physiExchangeNodeToJson(pObj, pJson);
966✔
8270
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
70✔
8271
      return physiMergeNodeToJson(pObj, pJson);
70✔
8272
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
78✔
8273
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
8274
      return physiSortNodeToJson(pObj, pJson);
78✔
8275
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
5,381✔
8276
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
8277
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
8278
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
8279
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
8280
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
8281
      return physiIntervalNodeToJson(pObj, pJson);
5,381✔
8282
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
681✔
8283
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
8284
      return physiFillNodeToJson(pObj, pJson);
681✔
8285
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
1,014✔
8286
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
8287
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
8288
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
8289
      return physiSessionWindowNodeToJson(pObj, pJson);
1,014✔
8290
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
451✔
8291
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
8292
      return physiStateWindowNodeToJson(pObj, pJson);
451✔
8293
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
251✔
8294
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
8295
      return physiEventWindowNodeToJson(pObj, pJson);
251✔
8296
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
376✔
8297
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
8298
      return physiCountWindowNodeToJson(pObj, pJson);
376✔
8299
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
8300
      return physiAnomalyWindowNodeToJson(pObj, pJson);
×
8301
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
34✔
8302
      return physiPartitionNodeToJson(pObj, pJson);
34✔
8303
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
1,527✔
8304
      return physiStreamPartitionNodeToJson(pObj, pJson);
1,527✔
8305
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
20✔
8306
      return physiIndefRowsFuncNodeToJson(pObj, pJson);
20✔
8307
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
349✔
8308
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
8309
      return physiInterpFuncNodeToJson(pObj, pJson);
349✔
8310
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
8311
      return physiForecastFuncNodeToJson(pObj, pJson);
×
8312
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
3,588✔
8313
      return physiDispatchNodeToJson(pObj, pJson);
3,588✔
8314
    case QUERY_NODE_PHYSICAL_PLAN_INSERT:
×
8315
      break;
×
8316
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
6✔
8317
      return physiQueryInsertNodeToJson(pObj, pJson);
6✔
8318
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
12✔
8319
      return physiDeleteNodeToJson(pObj, pJson);
12✔
8320
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
8321
      return physiGroupCacheNodeToJson(pObj, pJson);
×
8322
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
8323
      return physiDynQueryCtrlNodeToJson(pObj, pJson);
×
8324
    case QUERY_NODE_PHYSICAL_SUBPLAN:
16,040✔
8325
      return subplanToJson(pObj, pJson);
16,040✔
8326
    case QUERY_NODE_PHYSICAL_PLAN:
2,767✔
8327
      return planToJson(pObj, pJson);
2,767✔
8328
    default:
×
8329
      break;
×
8330
  }
8331
  nodesWarn("specificNodeToJson unknown node = %s", nodesNodeName(nodeType(pObj)));
×
8332
  return TSDB_CODE_SUCCESS;
90✔
8333
}
8334

8335
static int32_t jsonToSpecificNode(const SJson* pJson, void* pObj) {
3,719,916✔
8336
  switch (nodeType(pObj)) {
3,719,916!
8337
    case QUERY_NODE_COLUMN:
1,258,292✔
8338
      return jsonToColumnNode(pJson, pObj);
1,258,292✔
8339
    case QUERY_NODE_VALUE:
77,414✔
8340
      return jsonToValueNode(pJson, pObj);
77,414✔
8341
    case QUERY_NODE_OPERATOR:
10,610✔
8342
      return jsonToOperatorNode(pJson, pObj);
10,610✔
8343
    case QUERY_NODE_LOGIC_CONDITION:
2,727✔
8344
      return jsonToLogicConditionNode(pJson, pObj);
2,727✔
8345
    case QUERY_NODE_FUNCTION:
802,095✔
8346
      return jsonToFunctionNode(pJson, pObj);
802,095✔
8347
    case QUERY_NODE_REAL_TABLE:
7,392✔
8348
      return jsonToRealTableNode(pJson, pObj);
7,392✔
8349
    case QUERY_NODE_TEMP_TABLE:
165✔
8350
      return jsonToTempTableNode(pJson, pObj);
165✔
8351
    case QUERY_NODE_JOIN_TABLE:
62✔
8352
      return jsonToJoinTableNode(pJson, pObj);
62✔
8353
    case QUERY_NODE_GROUPING_SET:
413✔
8354
      return jsonToGroupingSetNode(pJson, pObj);
413✔
8355
    case QUERY_NODE_ORDER_BY_EXPR:
658✔
8356
      return jsonToOrderByExprNode(pJson, pObj);
658✔
8357
    case QUERY_NODE_LIMIT:
222✔
8358
      return jsonToLimitNode(pJson, pObj);
222✔
8359
    case QUERY_NODE_STATE_WINDOW:
120✔
8360
      return jsonToStateWindowNode(pJson, pObj);
120✔
8361
    case QUERY_NODE_SESSION_WINDOW:
219✔
8362
      return jsonToSessionWindowNode(pJson, pObj);
219✔
8363
    case QUERY_NODE_INTERVAL_WINDOW:
3,535✔
8364
      return jsonToIntervalWindowNode(pJson, pObj);
3,535✔
8365
    case QUERY_NODE_NODE_LIST:
3,838✔
8366
      return jsonToNodeListNode(pJson, pObj);
3,838✔
8367
    case QUERY_NODE_FILL:
368✔
8368
      return jsonToFillNode(pJson, pObj);
368✔
8369
    case QUERY_NODE_TARGET:
714,767✔
8370
      return jsonToTargetNode(pJson, pObj);
714,767✔
8371
    case QUERY_NODE_DATABLOCK_DESC:
32,908✔
8372
      return jsonToDataBlockDescNode(pJson, pObj);
32,908✔
8373
    case QUERY_NODE_SLOT_DESC:
717,082✔
8374
      return jsonToSlotDescNode(pJson, pObj);
717,082✔
8375
    case QUERY_NODE_COLUMN_DEF:
13,000✔
8376
      return jsonToColumnDefNode(pJson, pObj);
13,000✔
8377
    case QUERY_NODE_DOWNSTREAM_SOURCE:
×
8378
      return jsonToDownstreamSourceNode(pJson, pObj);
×
8379
    case QUERY_NODE_DATABASE_OPTIONS:
420✔
8380
      return jsonToDatabaseOptions(pJson, pObj);
420✔
8381
    case QUERY_NODE_TABLE_OPTIONS:
96✔
8382
      return jsonToTableOptions(pJson, pObj);
96✔
8383
    case QUERY_NODE_COLUMN_OPTIONS:
12,663✔
8384
      return jsonToColumnOptions(pJson, pObj);
12,663✔
8385
    case QUERY_NODE_INDEX_OPTIONS:
19✔
8386
      return jsonToIndexOptions(pJson, pObj);
19✔
8387
    case QUERY_NODE_EXPLAIN_OPTIONS:
30✔
8388
      return jsonToExplainOptions(pJson, pObj);
30✔
8389
    case QUERY_NODE_STREAM_OPTIONS:
105✔
8390
      return jsonToStreamOptions(pJson, pObj);
105✔
8391
    case QUERY_NODE_LEFT_VALUE:
16✔
8392
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to deserialize.
16✔
8393
    case QUERY_NODE_WHEN_THEN:
150✔
8394
      return jsonToWhenThenNode(pJson, pObj);
150✔
8395
    case QUERY_NODE_CASE_WHEN:
134✔
8396
      return jsonToCaseWhenNode(pJson, pObj);
134✔
8397
    case QUERY_NODE_EVENT_WINDOW:
48✔
8398
      return jsonToEventWindowNode(pJson, pObj);
48✔
8399
    case QUERY_NODE_WINDOW_OFFSET:
×
8400
      return jsonToWindowOffsetNode(pJson, pObj);
×
8401
    case QUERY_NODE_COUNT_WINDOW:
78✔
8402
      return jsonToCountWindowNode(pJson, pObj);
78✔
8403
    case QUERY_NODE_ANOMALY_WINDOW:
×
8404
      return jsonToAnomalyWindowNode(pJson, pObj);
×
8405
    case QUERY_NODE_SET_OPERATOR:
64✔
8406
      return jsonToSetOperator(pJson, pObj);
64✔
8407
    case QUERY_NODE_SELECT_STMT:
7,512✔
8408
      return jsonToSelectStmt(pJson, pObj);
7,512✔
8409
    case QUERY_NODE_VNODE_MODIFY_STMT:
120✔
8410
      return jsonToVnodeModifyStmt(pJson, pObj);
120✔
8411
    case QUERY_NODE_CREATE_DATABASE_STMT:
54✔
8412
      return jsonToCreateDatabaseStmt(pJson, pObj);
54✔
8413
    case QUERY_NODE_ALTER_DATABASE_STMT:
366✔
8414
      return jsonToAlterDatabaseStmt(pJson, pObj);
366✔
8415
    case QUERY_NODE_TRIM_DATABASE_STMT:
18✔
8416
      return jsonToTrimDatabaseStmt(pJson, pObj);
18✔
8417
    case QUERY_NODE_S3MIGRATE_DATABASE_STMT:
×
8418
      return jsonToS3MigrateDatabaseStmt(pJson, pObj);
×
8419
    case QUERY_NODE_CREATE_TABLE_STMT:
45✔
8420
      return jsonToCreateTableStmt(pJson, pObj);
45✔
8421
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
15✔
8422
      return jsonToCreateSubTableClause(pJson, pObj);
15✔
8423
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
9✔
8424
      return jsonToCreateMultiTablesStmt(pJson, pObj);
9✔
8425
    case QUERY_NODE_DROP_TABLE_CLAUSE:
12✔
8426
      return jsonToDropTableClause(pJson, pObj);
12✔
8427
    case QUERY_NODE_DROP_TABLE_STMT:
6✔
8428
      return jsonToDropTableStmt(pJson, pObj);
6✔
8429
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
9✔
8430
      return jsonToDropStableStmt(pJson, pObj);
9✔
8431
    case QUERY_NODE_ALTER_TABLE_STMT:
75✔
8432
      return jsonToAlterTableStmt(pJson, pObj);
75✔
8433
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
87✔
8434
      return jsonToAlterStableStmt(pJson, pObj);
87✔
8435
    case QUERY_NODE_CREATE_USER_STMT:
18✔
8436
      return jsonToCreateUserStmt(pJson, pObj);
18✔
8437
    case QUERY_NODE_ALTER_USER_STMT:
27✔
8438
      return jsonToAlterUserStmt(pJson, pObj);
27✔
8439
    case QUERY_NODE_DROP_USER_STMT:
9✔
8440
      return jsonToDropUserStmt(pJson, pObj);
9✔
8441
    case QUERY_NODE_USE_DATABASE_STMT:
9✔
8442
      return jsonToUseDatabaseStmt(pJson, pObj);
9✔
8443
    case QUERY_NODE_CREATE_DNODE_STMT:
54✔
8444
      return jsonToCreateDnodeStmt(pJson, pObj);
54✔
8445
    case QUERY_NODE_DROP_DNODE_STMT:
81✔
8446
      return jsonToDropDnodeStmt(pJson, pObj);
81✔
8447
    case QUERY_NODE_ALTER_DNODE_STMT:
36✔
8448
      return jsonToAlterDnodeStmt(pJson, pObj);
36✔
8449
    case QUERY_NODE_CREATE_INDEX_STMT:
19✔
8450
      return jsonToCreateIndexStmt(pJson, pObj);
19✔
8451
    case QUERY_NODE_DROP_INDEX_STMT:
18✔
8452
      return jsonToDropIndexStmt(pJson, pObj);
18✔
8453
    case QUERY_NODE_CREATE_QNODE_STMT:
9✔
8454
      return jsonToCreateQnodeStmt(pJson, pObj);
9✔
8455
    case QUERY_NODE_DROP_QNODE_STMT:
9✔
8456
      return jsonToDropQnodeStmt(pJson, pObj);
9✔
8457
    case QUERY_NODE_CREATE_SNODE_STMT:
9✔
8458
      return jsonToCreateSnodeStmt(pJson, pObj);
9✔
8459
    case QUERY_NODE_DROP_SNODE_STMT:
9✔
8460
      return jsonToDropSnodeStmt(pJson, pObj);
9✔
8461
    case QUERY_NODE_CREATE_MNODE_STMT:
9✔
8462
      return jsonToCreateMnodeStmt(pJson, pObj);
9✔
8463
    case QUERY_NODE_DROP_MNODE_STMT:
9✔
8464
      return jsonToDropMnodeStmt(pJson, pObj);
9✔
8465
    case QUERY_NODE_CREATE_TOPIC_STMT:
73✔
8466
      return jsonToCreateTopicStmt(pJson, pObj);
73✔
8467
    case QUERY_NODE_DROP_TOPIC_STMT:
18✔
8468
      return jsonToDropTopicStmt(pJson, pObj);
18✔
8469
    case QUERY_NODE_DROP_CGROUP_STMT:
18✔
8470
      return jsonToDropConsumerGroupStmt(pJson, pObj);
18✔
8471
    case QUERY_NODE_ALTER_LOCAL_STMT:
18✔
8472
      return jsonToAlterLocalStmt(pJson, pObj);
18✔
8473
    case QUERY_NODE_EXPLAIN_STMT:
30✔
8474
      return jsonToExplainStmt(pJson, pObj);
30✔
8475
    case QUERY_NODE_DESCRIBE_STMT:
18✔
8476
      return jsonToDescribeStmt(pJson, pObj);
18✔
8477
    case QUERY_NODE_COMPACT_DATABASE_STMT:
36✔
8478
      return jsonToCompactDatabaseStmt(pJson, pObj);
36✔
8479
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
×
8480
      return jsonToCompactVgroupsStmt(pJson, pObj);
×
8481
    case QUERY_NODE_CREATE_STREAM_STMT:
86✔
8482
      return jsonToCreateStreamStmt(pJson, pObj);
86✔
8483
    case QUERY_NODE_DROP_STREAM_STMT:
18✔
8484
      return jsonToDropStreamStmt(pJson, pObj);
18✔
8485
    case QUERY_NODE_BALANCE_VGROUP_STMT:
9✔
8486
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to deserialize.
9✔
8487
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
9✔
8488
      return TSDB_CODE_SUCCESS;
9✔
8489
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
8490
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to deserialize.
×
8491
    case QUERY_NODE_MERGE_VGROUP_STMT:
9✔
8492
      return jsonToMergeVgroupStmt(pJson, pObj);
9✔
8493
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
18✔
8494
      return jsonToRedistributeVgroupStmt(pJson, pObj);
18✔
8495
    case QUERY_NODE_SPLIT_VGROUP_STMT:
9✔
8496
      return jsonToSplitVgroupStmt(pJson, pObj);
9✔
8497
    case QUERY_NODE_GRANT_STMT:
54✔
8498
      return jsonToGrantStmt(pJson, pObj);
54✔
8499
    case QUERY_NODE_REVOKE_STMT:
54✔
8500
      return jsonToRevokeStmt(pJson, pObj);
54✔
8501
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
8502
      return jsonToAlterClusterStmt(pJson, pObj);
×
8503
    case QUERY_NODE_SHOW_DNODES_STMT:
3✔
8504
      return jsonToShowDnodesStmt(pJson, pObj);
3✔
8505
    case QUERY_NODE_SHOW_MNODES_STMT:
3✔
8506
      return jsonToShowMnodesStmt(pJson, pObj);
3✔
8507
    case QUERY_NODE_SHOW_QNODES_STMT:
3✔
8508
      return jsonToShowQnodesStmt(pJson, pObj);
3✔
8509
    case QUERY_NODE_SHOW_ANODES_STMT:
×
8510
      return jsonToShowAnodesStmt(pJson, pObj);
×
8511
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
8512
      return jsonToShowAnodesFullStmt(pJson, pObj);
×
8513
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
8514
      return jsonToShowArbGroupsStmt(pJson, pObj);
×
8515
    case QUERY_NODE_SHOW_CLUSTER_STMT:
3✔
8516
      return jsonToShowClusterStmt(pJson, pObj);
3✔
8517
    case QUERY_NODE_SHOW_DATABASES_STMT:
3✔
8518
      return jsonToShowDatabasesStmt(pJson, pObj);
3✔
8519
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
3✔
8520
      return jsonToShowFunctionsStmt(pJson, pObj);
3✔
8521
    case QUERY_NODE_SHOW_INDEXES_STMT:
6✔
8522
      return jsonToShowIndexesStmt(pJson, pObj);
6✔
8523
    case QUERY_NODE_SHOW_STABLES_STMT:
12✔
8524
      return jsonToShowStablesStmt(pJson, pObj);
12✔
8525
    case QUERY_NODE_SHOW_STREAMS_STMT:
3✔
8526
      return jsonToShowStreamsStmt(pJson, pObj);
3✔
8527
    case QUERY_NODE_SHOW_TABLES_STMT:
12✔
8528
      return jsonToShowTablesStmt(pJson, pObj);
12✔
8529
    case QUERY_NODE_SHOW_TAGS_STMT:
3✔
8530
      return jsonToShowTagsStmt(pJson, pObj);
3✔
8531
    case QUERY_NODE_SHOW_USERS_STMT:
3✔
8532
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
8533
      return jsonToShowUsersStmt(pJson, pObj);
3✔
8534
    case QUERY_NODE_SHOW_VGROUPS_STMT:
6✔
8535
      return jsonToShowVgroupsStmt(pJson, pObj);
6✔
8536
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
3✔
8537
      return jsonToShowConsumersStmt(pJson, pObj);
3✔
8538
    case QUERY_NODE_SHOW_VARIABLES_STMT:
9✔
8539
      return jsonToShowVariablesStmt(pJson, pObj);
9✔
8540
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
8541
      return jsonToShowGrantsFullStmt(pJson, pObj);
×
8542
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
8543
      return jsonToShowGrantsLogsStmt(pJson, pObj);
×
8544
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
8545
      return jsonToShowClusterMachinesStmt(pJson, pObj);
×
8546
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
8547
      return jsonToShowEncryptionsStmt(pJson, pObj);
×
8548
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
6✔
8549
      return jsonToShowDnodeVariablesStmt(pJson, pObj);
6✔
8550
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
3✔
8551
      return jsonToShowTransactionsStmt(pJson, pObj);
3✔
8552
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
3✔
8553
      return jsonToShowSubscriptionsStmt(pJson, pObj);
3✔
8554
    case QUERY_NODE_SHOW_VNODES_STMT:
6✔
8555
      return jsonToShowVnodesStmt(pJson, pObj);
6✔
8556
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
3✔
8557
      return jsonToShowUserPrivilegesStmt(pJson, pObj);
3✔
8558
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
9✔
8559
      return jsonToShowCreateDatabaseStmt(pJson, pObj);
9✔
8560
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
9✔
8561
      return jsonToShowCreateTableStmt(pJson, pObj);
9✔
8562
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
9✔
8563
      return jsonToShowCreateStableStmt(pJson, pObj);
9✔
8564
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
8565
      return jsonToShowCreateViewStmt(pJson, pObj);
×
8566
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
3✔
8567
      return jsonToShowTableDistributedStmt(pJson, pObj);
3✔
8568
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
9✔
8569
      return jsonToShowLocalVariablesStmt(pJson, pObj);
9✔
8570
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
9✔
8571
      return jsonToShowTableTagsStmt(pJson, pObj);
9✔
8572
    case QUERY_NODE_SHOW_USAGE_STMT:
×
8573
      return jsonToShowUsageStmt(pJson, pObj);
×
8574
    case QUERY_NODE_DELETE_STMT:
43✔
8575
      return jsonToDeleteStmt(pJson, pObj);
43✔
8576
    case QUERY_NODE_INSERT_STMT:
12✔
8577
      return jsonToInsertStmt(pJson, pObj);
12✔
8578
    case QUERY_NODE_RESTORE_DNODE_STMT:
9✔
8579
      return jsonToRestoreDnodeStmt(pJson, pObj);
9✔
8580
    case QUERY_NODE_RESTORE_QNODE_STMT:
9✔
8581
      return jsonToRestoreQnodeStmt(pJson, pObj);
9✔
8582
    case QUERY_NODE_RESTORE_MNODE_STMT:
9✔
8583
      return jsonToRestoreMnodeStmt(pJson, pObj);
9✔
8584
    case QUERY_NODE_RESTORE_VNODE_STMT:
9✔
8585
      return jsonToRestoreVnodeStmt(pJson, pObj);
9✔
8586
    case QUERY_NODE_LOGIC_PLAN_SCAN:
1,373✔
8587
      return jsonToLogicScanNode(pJson, pObj);
1,373✔
8588
    case QUERY_NODE_LOGIC_PLAN_JOIN:
44✔
8589
      return jsonToLogicJoinNode(pJson, pObj);
44✔
8590
    case QUERY_NODE_LOGIC_PLAN_AGG:
556✔
8591
      return jsonToLogicAggNode(pJson, pObj);
556✔
8592
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
723✔
8593
      return jsonToLogicProjectNode(pJson, pObj);
723✔
8594
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
28✔
8595
      return jsonToLogicVnodeModifyNode(pJson, pObj);
28✔
8596
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
202✔
8597
      return jsonToLogicExchangeNode(pJson, pObj);
202✔
8598
    case QUERY_NODE_LOGIC_PLAN_MERGE:
71✔
8599
      return jsonToLogicMergeNode(pJson, pObj);
71✔
8600
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
237✔
8601
      return jsonToLogicWindowNode(pJson, pObj);
237✔
8602
    case QUERY_NODE_LOGIC_PLAN_FILL:
41✔
8603
      return jsonToLogicFillNode(pJson, pObj);
41✔
8604
    case QUERY_NODE_LOGIC_PLAN_SORT:
144✔
8605
      return jsonToLogicSortNode(pJson, pObj);
144✔
8606
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
89✔
8607
      return jsonToLogicPartitionNode(pJson, pObj);
89✔
8608
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
56✔
8609
      return jsonToLogicIndefRowsFuncNode(pJson, pObj);
56✔
8610
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
16✔
8611
      return jsonToLogicInterpFuncNode(pJson, pObj);
16✔
8612
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
8613
      return jsonToLogicForecastFuncNode(pJson, pObj);
×
8614
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
8615
      return jsonToLogicGroupCacheNode(pJson, pObj);
×
8616
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
8617
      return jsonToLogicDynQueryCtrlNode(pJson, pObj);
×
8618
    case QUERY_NODE_LOGIC_SUBPLAN:
1,558✔
8619
      return jsonToLogicSubplan(pJson, pObj);
1,558✔
8620
    case QUERY_NODE_LOGIC_PLAN:
284✔
8621
      return jsonToLogicPlan(pJson, pObj);
284✔
8622
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
7✔
8623
      return jsonToPhysiTagScanNode(pJson, pObj);
7✔
8624
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
6✔
8625
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
8626
      return jsonToPhysiScanNode(pJson, pObj);
6✔
8627
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
16✔
8628
      return jsonToPhysiLastRowScanNode(pJson, pObj);
16✔
8629
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
13,151✔
8630
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
8631
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
8632
      return jsonToPhysiTableScanNode(pJson, pObj);
13,151✔
8633
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
46✔
8634
      return jsonToPhysiSysTableScanNode(pJson, pObj);
46✔
8635
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
7,442✔
8636
      return jsonToPhysiProjectNode(pJson, pObj);
7,442✔
8637
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
22✔
8638
      return jsonToPhysiMergeJoinNode(pJson, pObj);
22✔
8639
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
8640
      return jsonToPhysiHashJoinNode(pJson, pObj);
×
8641
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
401✔
8642
      return jsonToPhysiAggNode(pJson, pObj);
401✔
8643
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
334✔
8644
      return jsonToPhysiExchangeNode(pJson, pObj);
334✔
8645
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
70✔
8646
      return jsonToPhysiMergeNode(pJson, pObj);
70✔
8647
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
78✔
8648
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
8649
      return jsonToPhysiSortNode(pJson, pObj);
78✔
8650
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
5,517✔
8651
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
8652
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
8653
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
8654
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
8655
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
8656
      return jsonToPhysiIntervalNode(pJson, pObj);
5,517✔
8657
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
682✔
8658
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
8659
      return jsonToPhysiFillNode(pJson, pObj);
682✔
8660
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
1,019✔
8661
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
8662
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
8663
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
8664
      return jsonToPhysiSessionWindowNode(pJson, pObj);
1,019✔
8665
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
456✔
8666
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
8667
      return jsonToPhysiStateWindowNode(pJson, pObj);
456✔
8668
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
255✔
8669
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
8670
      return jsonToPhysiEventWindowNode(pJson, pObj);
255✔
8671
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
398✔
8672
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
8673
      return jsonToPhysiCountWindowNode(pJson, pObj);
398✔
8674
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
8675
      return jsonToPhysiAnomalyWindowNode(pJson, pObj);
×
8676
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
34✔
8677
      return jsonToPhysiPartitionNode(pJson, pObj);
34✔
8678
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
1,524✔
8679
      return jsonToPhysiStreamPartitionNode(pJson, pObj);
1,524✔
8680
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
20✔
8681
      return jsonToPhysiIndefRowsFuncNode(pJson, pObj);
20✔
8682
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
350✔
8683
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
8684
      return jsonToPhysiInterpFuncNode(pJson, pObj);
350✔
8685
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
8686
      return jsonToPhysiForecastFuncNode(pJson, pObj);
×
8687
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
1,060✔
8688
      return jsonToPhysiDispatchNode(pJson, pObj);
1,060✔
8689
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
6✔
8690
      return jsonToPhysiQueryInsertNode(pJson, pObj);
6✔
8691
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
12✔
8692
      return jsonToPhysiDeleteNode(pJson, pObj);
12✔
8693
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
8694
      return jsonToPhysiGroupCacheNode(pJson, pObj);
×
8695
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
8696
      return jsonToPhysiDynQueryCtrlNode(pJson, pObj);
×
8697
    case QUERY_NODE_PHYSICAL_SUBPLAN:
13,475✔
8698
      return jsonToSubplan(pJson, pObj);
13,475✔
8699
    case QUERY_NODE_PHYSICAL_PLAN:
2,453✔
8700
      return jsonToPlan(pJson, pObj);
2,453✔
8701
    default:
×
8702
      break;
×
8703
  }
8704
  nodesWarn("jsonToSpecificNode unknown node = %s", nodesNodeName(nodeType(pObj)));
×
8705
  return TSDB_CODE_SUCCESS;
54✔
8706
}
8707

8708
static const char* jkNodeType = "NodeType";
8709
static const char* jkNodeName = "Name";
8710

8711
static int32_t nodeToJson(const void* pObj, SJson* pJson) {
3,031,767✔
8712
  const SNode* pNode = (const SNode*)pObj;
3,031,767✔
8713

8714
  int32_t code = tjsonAddIntegerToObject(pJson, jkNodeType, pNode->type);
3,031,767✔
8715
  if (TSDB_CODE_SUCCESS == code) {
3,031,692!
8716
    code = tjsonAddStringToObject(pJson, jkNodeName, nodesNodeName(pNode->type));
3,031,695✔
8717
  }
8718
  if (TSDB_CODE_SUCCESS == code) {
3,031,666!
8719
    code = tjsonAddObject(pJson, nodesNodeName(pNode->type), specificNodeToJson, pNode);
3,031,666✔
8720
    if (TSDB_CODE_SUCCESS != code) {
3,031,681!
8721
      nodesError("%s ToJson error", nodesNodeName(pNode->type));
×
8722
    }
8723
  }
8724

8725
  return code;
3,031,682✔
8726
}
8727

8728
static int32_t jsonToNode(const SJson* pJson, void* pObj) {
3,719,423✔
8729
  SNode* pNode = (SNode*)pObj;
3,719,423✔
8730

8731
  int32_t code;
8732
  tjsonGetNumberValue(pJson, jkNodeType, pNode->type, code);
3,719,423✔
8733
  if (TSDB_CODE_SUCCESS == code) {
3,719,055!
8734
    code = tjsonToObject(pJson, nodesNodeName(pNode->type), jsonToSpecificNode, pNode);
3,719,087✔
8735
    if (TSDB_CODE_SUCCESS != code) {
3,718,961!
8736
      nodesError("%s toNode error", nodesNodeName(pNode->type));
×
8737
    }
8738
  }
8739

8740
  return code;
3,718,953✔
8741
}
8742

8743
static int32_t makeNodeByJson(const SJson* pJson, SNode** pNode) {
3,719,910✔
8744
  int32_t val = 0;
3,719,910✔
8745
  int32_t code = tjsonGetIntValue(pJson, jkNodeType, &val);
3,719,910✔
8746
  if (TSDB_CODE_SUCCESS == code) {
3,719,040!
8747
    code = nodesMakeNode(val, pNode);
3,719,066✔
8748
    if (NULL == *pNode) {
3,719,454!
8749
      return code;
×
8750
    }
8751
    code = jsonToNode(pJson, *pNode);
3,719,454✔
8752
  }
8753

8754
  return code;
3,718,942✔
8755
}
8756

8757
static int32_t jsonToNodeObject(const SJson* pJson, const char* pName, SNode** pNode) {
1,071,055✔
8758
  SJson* pJsonNode = tjsonGetObjectItem(pJson, pName);
1,071,055✔
8759
  if (NULL == pJsonNode) {
1,070,968✔
8760
    return TSDB_CODE_SUCCESS;
229,067✔
8761
  }
8762
  return makeNodeByJson(pJsonNode, pNode);
841,901✔
8763
}
8764

8765
int32_t nodesNodeToString(const SNode* pNode, bool format, char** pStr, int32_t* pLen) {
23,753✔
8766
  if (NULL == pNode || NULL == pStr) {
23,753!
8767
    terrno = TSDB_CODE_FAILED;
×
8768
    return TSDB_CODE_FAILED;
×
8769
  }
8770

8771
  SJson* pJson = tjsonCreateObject();
23,753✔
8772
  if (NULL == pJson) {
23,751!
8773
    return terrno;
×
8774
  }
8775

8776
  int32_t code = nodeToJson(pNode, pJson);
23,751✔
8777
  if (TSDB_CODE_SUCCESS != code) {
23,751!
8778
    terrno = code;
×
8779
    return code;
×
8780
  }
8781

8782
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
23,752!
8783
  tjsonDelete(pJson);
23,751✔
8784

8785
  if (NULL != pLen) {
23,752✔
8786
    *pLen = strlen(*pStr) + 1;
16,891✔
8787
  }
8788

8789
  return TSDB_CODE_SUCCESS;
23,752✔
8790
}
8791

8792
int32_t nodesStringToNode(const char* pStr, SNode** pNode) {
22,991✔
8793
  if (NULL == pStr || NULL == pNode) {
22,991!
8794
    return TSDB_CODE_SUCCESS;
×
8795
  }
8796
  SJson* pJson = tjsonParse(pStr);
22,992✔
8797
  if (NULL == pJson) {
22,991!
8798
    return TSDB_CODE_FAILED;
×
8799
  }
8800
  int32_t code = makeNodeByJson(pJson, pNode);
22,991✔
8801
  tjsonDelete(pJson);
22,991✔
8802
  if (TSDB_CODE_SUCCESS != code) {
22,992!
8803
    nodesDestroyNode(*pNode);
×
8804
    *pNode = NULL;
×
8805
    terrno = code;
×
8806
    return code;
×
8807
  }
8808
  return TSDB_CODE_SUCCESS;
22,992✔
8809
}
8810

8811
int32_t nodesListToString(const SNodeList* pList, bool format, char** pStr, int32_t* pLen) {
279✔
8812
  if (NULL == pList || NULL == pStr || NULL == pLen) {
279!
8813
    terrno = TSDB_CODE_FAILED;
×
8814
    return TSDB_CODE_FAILED;
×
8815
  }
8816

8817
  if (0 == LIST_LENGTH(pList)) {
279!
8818
    return TSDB_CODE_SUCCESS;
×
8819
  }
8820

8821
  SJson* pJson = tjsonCreateArray();
279✔
8822
  if (NULL == pJson) {
279!
8823
    return terrno;
×
8824
  }
8825

8826
  SNode* pNode;
8827
  FOREACH(pNode, pList) {
34,693!
8828
    int32_t code = tjsonAddItem(pJson, nodeToJson, pNode);
34,414✔
8829
    if (TSDB_CODE_SUCCESS != code) {
34,414!
8830
      terrno = code;
×
8831
      return code;
×
8832
    }
8833
  }
8834

8835
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
279!
8836
  tjsonDelete(pJson);
279✔
8837

8838
  *pLen = strlen(*pStr) + 1;
279✔
8839
  return TSDB_CODE_SUCCESS;
279✔
8840
}
8841

8842
int32_t nodesStringToList(const char* pStr, SNodeList** pList) {
259✔
8843
  if (NULL == pStr || NULL == pList) {
259!
8844
    return TSDB_CODE_SUCCESS;
×
8845
  }
8846
  SJson* pJson = tjsonParse(pStr);
259✔
8847
  if (NULL == pJson) {
259!
8848
    return TSDB_CODE_FAILED;
×
8849
  }
8850
  int32_t code = jsonToNodeListImpl(pJson, pList);
259✔
8851
  tjsonDelete(pJson);
259✔
8852
  if (TSDB_CODE_SUCCESS != code) {
259!
8853
    nodesDestroyList(*pList);
×
8854
    *pList = NULL;
×
8855
    terrno = code;
×
8856
    return code;
×
8857
  }
8858
  return TSDB_CODE_SUCCESS;
259✔
8859
}
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