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

taosdata / TDengine / #3589

24 Jan 2025 08:57AM UTC coverage: 63.191% (-0.4%) from 63.555%
#3589

push

travis-ci

web-flow
Merge pull request #29638 from taosdata/docs/TS-5846-3.0

enh: TDengine modify taosBenchmark new query rule cases and add doc

140478 of 285630 branches covered (49.18%)

Branch coverage included in aggregate %.

218744 of 282844 relevant lines covered (77.34%)

19421325.38 hits per line

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

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

471
static int32_t nodeListToJson(SJson* pJson, const char* pName, const SNodeList* pList) {
669,594✔
472
  if (LIST_LENGTH(pList) > 0) {
669,594!
473
    SJson* jList = tjsonAddArrayToObject(pJson, pName);
535,092✔
474
    if (NULL == jList) {
535,097✔
475
      return terrno;
2✔
476
    }
477
    SNode* pNode;
478
    FOREACH(pNode, pList) {
2,652,517!
479
      int32_t code = tjsonAddItem(jList, nodeToJson, pNode);
2,117,426✔
480
      if (TSDB_CODE_SUCCESS != code) {
2,117,422!
481
        return code;
×
482
      }
483
    }
484
  }
485
  return TSDB_CODE_SUCCESS;
669,593✔
486
}
487

488
static int32_t jsonToNodeListImpl(const SJson* pJsonArray, SNodeList** pList) {
1,024,567✔
489
  int32_t size = (NULL == pJsonArray ? 0 : tjsonGetArraySize(pJsonArray));
1,024,567✔
490
  if (size > 0) {
1,024,551✔
491
    int32_t code = nodesMakeList(pList);
881,682✔
492
    if (NULL == *pList) {
881,837!
493
      return code;
×
494
    }
495
  }
496

497
  int32_t code = TSDB_CODE_SUCCESS;
1,024,706✔
498
  for (int32_t i = 0; i < size; ++i) {
3,867,076✔
499
    SJson* pJsonItem = tjsonGetArrayItem(pJsonArray, i);
2,842,083✔
500
    SNode* pNode = NULL;
2,839,297✔
501
    code = makeNodeByJson(pJsonItem, &pNode);
2,839,297✔
502
    if (TSDB_CODE_SUCCESS == code) {
2,839,245!
503
      code = nodesListAppend(*pList, pNode);
2,839,248✔
504
    }
505
    if (TSDB_CODE_SUCCESS != code) {
2,842,370!
506
      break;
×
507
    }
508
  }
509
  return code;
1,024,993✔
510
}
511

512
static int32_t jsonToNodeList(const SJson* pJson, const char* pName, SNodeList** pList) {
1,024,086✔
513
  return jsonToNodeListImpl(tjsonGetObjectItem(pJson, pName), pList);
1,024,086✔
514
}
515

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

521
static int32_t tableComInfoToJson(const void* pObj, SJson* pJson) {
2,957✔
522
  const STableComInfo* pNode = (const STableComInfo*)pObj;
2,957✔
523

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

535
  return code;
2,957✔
536
}
537

538
static int32_t jsonToTableComInfo(const SJson* pJson, void* pObj) {
6,767✔
539
  STableComInfo* pNode = (STableComInfo*)pObj;
6,767✔
540

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

553
  return code;
6,767✔
554
}
555

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

562
static int32_t schemaToJson(const void* pObj, SJson* pJson) {
58,787✔
563
  const SSchema* pNode = (const SSchema*)pObj;
58,787✔
564

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

579
  return code;
58,787✔
580
}
581

582
static int32_t jsonToSchema(const SJson* pJson, void* pObj) {
446,077✔
583
  SSchema* pNode = (SSchema*)pObj;
446,077✔
584

585
  int32_t code;
586
  tjsonGetNumberValue(pJson, jkSchemaType, pNode->type, code);
446,077✔
587
  if (TSDB_CODE_SUCCESS == code) {
446,077!
588
    tjsonGetNumberValue(pJson, jkSchemaColId, pNode->colId, code);
446,077✔
589
  }
590
  if (TSDB_CODE_SUCCESS == code) {
446,077!
591
    tjsonGetNumberValue(pJson, jkSchemaBytes, pNode->bytes, code);
446,077✔
592
  }
593
  if (TSDB_CODE_SUCCESS == code) {
446,077!
594
    code = tjsonGetStringValue(pJson, jkSchemaName, pNode->name);
446,077✔
595
  }
596
  if (TSDB_CODE_SUCCESS == code) {
446,077!
597
    tjsonGetNumberValue(pJson, jkSchemaFlags, pNode->flags, code);
446,077✔
598
  }
599

600
  return code;
446,077✔
601
}
602

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

612
static int32_t tableMetaToJson(const void* pObj, SJson* pJson) {
2,957✔
613
  const STableMeta* pNode = (const STableMeta*)pObj;
2,957✔
614

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

639
  return code;
2,957✔
640
}
641

642
static int32_t jsonToTableMeta(const SJson* pJson, void* pObj) {
6,767✔
643
  STableMeta* pNode = (STableMeta*)pObj;
6,767✔
644

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

669
  return code;
6,767✔
670
}
671

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

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

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

707
  return code;
10,729✔
708
}
709

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

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

736
  return code;
3,580✔
737
}
738

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

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

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

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

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

867
static const char* jkProjectLogicPlanProjections = "Projections";
868
static const char* jkProjectLogicPlanIgnoreGroupId = "IgnoreGroupId";
869
static const char* jkProjectLogicPlanInputIgnoreGroup = "InputIgnoreGroup";
870

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

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

885
  return code;
2,674✔
886
}
887

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

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

904
static const char* jkVnodeModifyLogicPlanModifyType = "ModifyType";
905
static const char* jkVnodeModifyLogicPlanMsgType = "MsgType";
906
static const char* jkVnodeModifyLogicPlanAffectedRows = "AffectedRows";
907

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

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

922
  return code;
55✔
923
}
924

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

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

939
  return code;
28✔
940
}
941

942
static const char* jkExchangeLogicPlanSrcStartGroupId = "SrcStartGroupId";
943
static const char* jkExchangeLogicPlanSrcEndGroupId = "SrcEndGroupId";
944

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

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

956
  return code;
633✔
957
}
958

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

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

970
  return code;
202✔
971
}
972

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

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

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

995
  return code;
113✔
996
}
997

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

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

1015
  return code;
71✔
1016
}
1017

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

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

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

1084
  return code;
500✔
1085
}
1086

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

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

1137
  return code;
237✔
1138
}
1139

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

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

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

1166
  return code;
96✔
1167
}
1168

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

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

1189
  return code;
41✔
1190
}
1191

1192
static const char* jkSortLogicPlanSortKeys = "SortKeys";
1193

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

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

1202
  return code;
342✔
1203
}
1204

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

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

1213
  return code;
144✔
1214
}
1215

1216
static const char* jkPartitionLogicPlanPartitionKeys = "PartitionKeys";
1217

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

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

1226
  return code;
221✔
1227
}
1228

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

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

1237
  return code;
89✔
1238
}
1239

1240
static const char* jkIndefRowsFuncLogicPlanFuncs = "Funcs";
1241

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

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

1250
  return code;
143✔
1251
}
1252

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

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

1261
  return code;
56✔
1262
}
1263

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

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

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

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

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

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

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

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

1370
  return code;
33✔
1371
}
1372

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

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

1415
  return code;
16✔
1416
}
1417

1418
static const char* jkForecastFuncLogicPlanFuncs = "Funcs";
1419

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

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

1428
  return code;
×
1429
}
1430

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

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

1439
  return code;
×
1440
}
1441

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

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

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

1464
  return code;
×
1465
}
1466

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

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

1484
  return code;
×
1485
}
1486

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

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

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

1509
  return code;
×
1510
}
1511

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

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

1529
  return code;
×
1530
}
1531

1532
static const char* jkSubplanIdQueryId = "QueryId";
1533
static const char* jkSubplanIdGroupId = "GroupId";
1534
static const char* jkSubplanIdSubplanId = "SubplanId";
1535

1536
static int32_t subplanIdToJson(const void* pObj, SJson* pJson) {
21,109✔
1537
  const SSubplanId* pNode = (const SSubplanId*)pObj;
21,109✔
1538

1539
  int32_t code = tjsonAddIntegerToObject(pJson, jkSubplanIdQueryId, pNode->queryId);
21,109✔
1540
  if (TSDB_CODE_SUCCESS == code) {
21,109!
1541
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdGroupId, pNode->groupId);
21,109✔
1542
  }
1543
  if (TSDB_CODE_SUCCESS == code) {
21,110✔
1544
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdSubplanId, pNode->subplanId);
21,109✔
1545
  }
1546

1547
  return code;
21,110✔
1548
}
1549

1550
static int32_t jsonToSubplanId(const SJson* pJson, void* pObj) {
15,099✔
1551
  SSubplanId* pNode = (SSubplanId*)pObj;
15,099✔
1552

1553
  int32_t code = tjsonGetUBigIntValue(pJson, jkSubplanIdQueryId, &pNode->queryId);
15,099✔
1554
  if (TSDB_CODE_SUCCESS == code) {
15,100!
1555
    code = tjsonGetIntValue(pJson, jkSubplanIdGroupId, &pNode->groupId);
15,100✔
1556
  }
1557
  if (TSDB_CODE_SUCCESS == code) {
15,101!
1558
    code = tjsonGetIntValue(pJson, jkSubplanIdSubplanId, &pNode->subplanId);
15,101✔
1559
  }
1560

1561
  return code;
15,100✔
1562
}
1563

1564
static const char* jkEndPointFqdn = "Fqdn";
1565
static const char* jkEndPointPort = "Port";
1566

1567
static int32_t epToJson(const void* pObj, SJson* pJson) {
25,920✔
1568
  const SEp* pNode = (const SEp*)pObj;
25,920✔
1569

1570
  int32_t code = tjsonAddStringToObject(pJson, jkEndPointFqdn, pNode->fqdn);
25,920✔
1571
  if (TSDB_CODE_SUCCESS == code) {
25,919!
1572
    code = tjsonAddIntegerToObject(pJson, jkEndPointPort, pNode->port);
25,919✔
1573
  }
1574

1575
  return code;
25,915✔
1576
}
1577

1578
static int32_t jsonToEp(const SJson* pJson, void* pObj) {
25,618✔
1579
  SEp* pNode = (SEp*)pObj;
25,618✔
1580

1581
  int32_t code = tjsonGetStringValue(pJson, jkEndPointFqdn, pNode->fqdn);
25,618✔
1582
  if (TSDB_CODE_SUCCESS == code) {
25,619!
1583
    code = tjsonGetSmallIntValue(pJson, jkEndPointPort, &pNode->port);
25,619✔
1584
  }
1585

1586
  return code;
25,617✔
1587
}
1588

1589
static const char* jkEpSetInUse = "InUse";
1590
static const char* jkEpSetNumOfEps = "NumOfEps";
1591
static const char* jkEpSetEps = "Eps";
1592

1593
static int32_t epSetToJson(const void* pObj, SJson* pJson) {
7,160✔
1594
  const SEpSet* pNode = (const SEpSet*)pObj;
7,160✔
1595

1596
  int32_t code = tjsonAddIntegerToObject(pJson, jkEpSetInUse, pNode->inUse);
7,160✔
1597
  if (TSDB_CODE_SUCCESS == code) {
7,161!
1598
    code = tjsonAddIntegerToObject(pJson, jkEpSetNumOfEps, pNode->numOfEps);
7,161✔
1599
  }
1600
  if (TSDB_CODE_SUCCESS == code) {
7,161!
1601
    code = tjsonAddArray(pJson, jkEpSetEps, epToJson, pNode->eps, sizeof(SEp), pNode->numOfEps);
7,161✔
1602
  }
1603

1604
  return code;
7,159✔
1605
}
1606

1607
static int32_t jsonToEpSet(const SJson* pJson, void* pObj) {
13,282✔
1608
  SEpSet* pNode = (SEpSet*)pObj;
13,282✔
1609

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

1618
  return code;
13,282✔
1619
}
1620

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

1627
static int32_t vgroupInfoToJson(const void* pObj, SJson* pJson) {
5,214✔
1628
  const SVgroupInfo* pNode = (const SVgroupInfo*)pObj;
5,214✔
1629

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

1644
  return code;
5,214✔
1645
}
1646

1647
static int32_t jsonToVgroupInfo(const SJson* pJson, void* pObj) {
13,230✔
1648
  SVgroupInfo* pNode = (SVgroupInfo*)pObj;
13,230✔
1649

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

1664
  return code;
13,230✔
1665
}
1666

1667
static const char* jkVgroupsInfoNum = "Num";
1668
static const char* jkVgroupsInfoVgroups = "Vgroups";
1669

1670
static int32_t vgroupsInfoToJson(const void* pObj, SJson* pJson) {
2,909✔
1671
  const SVgroupsInfo* pNode = (const SVgroupsInfo*)pObj;
2,909✔
1672

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

1679
  return code;
2,909✔
1680
}
1681

1682
static int32_t jsonToVgroupsInfo(const SJson* pJson, void* pObj) {
5,263✔
1683
  SVgroupsInfo* pNode = (SVgroupsInfo*)pObj;
5,263✔
1684

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

1690
  return code;
5,263✔
1691
}
1692

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

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

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

1732
  return code;
5,051✔
1733
}
1734

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

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

1765
  return code;
1,558✔
1766
}
1767

1768
static const char* jkLogicPlanSubplans = "Subplans";
1769

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

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

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

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

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

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

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

1840
  return code;
44✔
1841
}
1842

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

1849
static int32_t physicPlanNodeToJson(const void* pObj, SJson* pJson) {
34,443✔
1850
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
34,443✔
1851

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

1866
  return code;
34,446✔
1867
}
1868

1869
static int32_t jsonToPhysicPlanNode(const SJson* pJson, void* pObj) {
31,969✔
1870
  SPhysiNode* pNode = (SPhysiNode*)pObj;
31,969✔
1871

1872
  int32_t code = jsonToNodeObject(pJson, jkPhysiPlanOutputDataBlockDesc, (SNode**)&pNode->pOutputDataBlockDesc);
31,969✔
1873
  if (TSDB_CODE_SUCCESS == code) {
31,973!
1874
    code = jsonToNodeObject(pJson, jkPhysiPlanConditions, &pNode->pConditions);
31,973✔
1875
  }
1876
  if (TSDB_CODE_SUCCESS == code) {
31,957!
1877
    code = jsonToNodeList(pJson, jkPhysiPlanChildren, &pNode->pChildren);
31,957✔
1878
  }
1879
  if (TSDB_CODE_SUCCESS == code) {
31,972!
1880
    code = jsonToNodeObject(pJson, jkPhysiPlanLimit, &pNode->pLimit);
31,972✔
1881
  }
1882
  if (TSDB_CODE_SUCCESS == code) {
31,965!
1883
    code = jsonToNodeObject(pJson, jkPhysiPlanSlimit, &pNode->pSlimit);
31,965✔
1884
  }
1885

1886
  return code;
31,964✔
1887
}
1888

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

1894
static int32_t nameToJson(const void* pObj, SJson* pJson) {
15,181✔
1895
  const SName* pNode = (const SName*)pObj;
15,181✔
1896

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

1908
  return code;
15,180✔
1909
}
1910

1911
static int32_t jsonToName(const SJson* pJson, void* pObj) {
13,294✔
1912
  SName* pNode = (SName*)pObj;
13,294✔
1913

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

1925
  return code;
13,295✔
1926
}
1927

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

1936
static int32_t physiScanNodeToJson(const void* pObj, SJson* pJson) {
15,177✔
1937
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
15,177✔
1938

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

1962
  return code;
15,181✔
1963
}
1964

1965
static int32_t jsonToPhysiScanNode(const SJson* pJson, void* pObj) {
13,292✔
1966
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
13,292✔
1967

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

1991
  return code;
13,294✔
1992
}
1993

1994
static const char* jkTagScanPhysiOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
1995

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

1999
  int32_t code = physiScanNodeToJson(pObj, pJson);
7✔
2000

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

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

2010
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
7✔
2011

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

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

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

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

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

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

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

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

2055
  return code;
16✔
2056
}
2057

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

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

2075
  return code;
16✔
2076
}
2077

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

2104
static int32_t physiTableScanNodeToJson(const void* pObj, SJson* pJson) {
13,211✔
2105
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
13,211✔
2106

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

2186
static int32_t jsonToPhysiTableScanNode(const SJson* pJson, void* pObj) {
13,217✔
2187
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
13,217✔
2188

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

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

2273
static int32_t physiSysTableScanNodeToJson(const void* pObj, SJson* pJson) {
1,937✔
2274
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
1,937✔
2275

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

2290
  return code;
1,939✔
2291
}
2292

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

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

2310
  return code;
46✔
2311
}
2312

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

2318
static int32_t physiProjectNodeToJson(const void* pObj, SJson* pJson) {
7,636✔
2319
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
7,636✔
2320

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

2337
static int32_t jsonToPhysiProjectNode(const SJson* pJson, void* pObj) {
7,476✔
2338
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
7,476✔
2339

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

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

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

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

2451
  return code;
22✔
2452
}
2453

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

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

2519
  return code;
22✔
2520
}
2521

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

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

2584
  return code;
×
2585
}
2586

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

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

2649
  return code;
×
2650
}
2651

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

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

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

2682
  return code;
416✔
2683
}
2684

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

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

2708
  return code;
401✔
2709
}
2710

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

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

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

2733
  return code;
966✔
2734
}
2735

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

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

2753
  return code;
334✔
2754
}
2755

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

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

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

2794
  return code;
70✔
2795
}
2796

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

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

2823
  return code;
70✔
2824
}
2825

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

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

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

2852
  return code;
78✔
2853
}
2854

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

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

2875
  return code;
78✔
2876
}
2877

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

2890
static int32_t physiWindowNodeToJson(const void* pObj, SJson* pJson) {
7,468✔
2891
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
7,468✔
2892

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

2925
  return code;
7,468✔
2926
}
2927

2928
static int32_t jsonToPhysiWindowNode(const SJson* pJson, void* pObj) {
7,687✔
2929
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
7,687✔
2930

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

2963
  return code;
7,687✔
2964
}
2965

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

2974
static int32_t physiIntervalNodeToJson(const void* pObj, SJson* pJson) {
5,376✔
2975
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
5,376✔
2976

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

3000
  return code;
5,376✔
3001
}
3002

3003
static int32_t jsonToPhysiIntervalNode(const SJson* pJson, void* pObj) {
5,559✔
3004
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
5,559✔
3005

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

3029
  return code;
5,559✔
3030
}
3031

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

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

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

3070
  return code;
681✔
3071
}
3072

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

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

3102
  return code;
682✔
3103
}
3104

3105
static const char* jkSessionWindowPhysiPlanGap = "Gap";
3106

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

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

3115
  return code;
1,014✔
3116
}
3117

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

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

3126
  return code;
1,019✔
3127
}
3128

3129
static const char* jkStateWindowPhysiPlanStateKey = "StateKey";
3130

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

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

3139
  return code;
451✔
3140
}
3141

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

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

3150
  return code;
456✔
3151
}
3152

3153
static const char* jkEventWindowPhysiPlanStartCond = "StartCond";
3154
static const char* jkEventWindowPhysiPlanEndCond = "EndCond";
3155

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

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

3167
  return code;
251✔
3168
}
3169

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

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

3181
  return code;
255✔
3182
}
3183

3184
static const char* jkCountWindowPhysiPlanWindowCount = "WindowCount";
3185
static const char* jkCountWindowPhysiPlanWindowSliding = "WindowSliding";
3186

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

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

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

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

3211
  return code;
398✔
3212
}
3213

3214
static const char* jkAnomalyWindowPhysiPlanAnomalyKey = "AnomalyKey";
3215
static const char* jkAnomalyWindowPhysiPlanAnomalyOption = "AnomalyOpt";
3216

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

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

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

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

3241
  return code;
×
3242
}
3243

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

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

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

3270
  return code;
1,561✔
3271
}
3272

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

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

3293
  return code;
1,558✔
3294
}
3295

3296
static const char* jkStreamPartitionPhysiPlanTags = "Tags";
3297
static const char* jkStreamPartitionPhysiPlanSubtable = "Subtable";
3298

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

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

3310
  return code;
1,527✔
3311
}
3312

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

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

3324
  return code;
1,524✔
3325
}
3326

3327
static const char* jkIndefRowsFuncPhysiPlanExprs = "Exprs";
3328
static const char* jkIndefRowsFuncPhysiPlanFuncs = "Funcs";
3329

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

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

3341
  return code;
20✔
3342
}
3343

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

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

3355
  return code;
20✔
3356
}
3357

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

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

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

3417
  return code;
349✔
3418
}
3419

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

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

3465
  return code;
350✔
3466
}
3467

3468
static const char* jkForecastFuncPhysiPlanExprs = "Exprs";
3469
static const char* jkForecastFuncPhysiPlanFuncs = "Funcs";
3470

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

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

3482
  return code;
×
3483
}
3484

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

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

3496
  return code;
×
3497
}
3498

3499
static const char* jkDataSinkInputDataBlockDesc = "InputDataBlockDesc";
3500

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

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

3511
static int32_t physiDispatchNodeToJson(const void* pObj, SJson* pJson) { return physicDataSinkNodeToJson(pObj, pJson); }
3,583✔
3512

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

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

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

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

3553
  return code;
6✔
3554
}
3555

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

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

3585
  return code;
6✔
3586
}
3587

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

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

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

3630
  return code;
12✔
3631
}
3632

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

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

3665
  return code;
12✔
3666
}
3667

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

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

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

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

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

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

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

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

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

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

3804
  return code;
×
3805
}
3806

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

3812
static int32_t queryNodeAddrToJson(const void* pObj, SJson* pJson) {
17,010✔
3813
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
17,010✔
3814

3815
  int32_t code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrId, pNode->nodeId);
17,010✔
3816
  if (TSDB_CODE_SUCCESS == code) {
17,009!
3817
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrInUse, pNode->epSet.inUse);
17,009✔
3818
  }
3819
  if (TSDB_CODE_SUCCESS == code) {
17,007!
3820
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrNumOfEps, pNode->epSet.numOfEps);
17,007✔
3821
  }
3822
  if (TSDB_CODE_SUCCESS == code) {
17,009!
3823
    code = tjsonAddArray(pJson, jkQueryNodeAddrEps, epToJson, pNode->epSet.eps, sizeof(SEp), pNode->epSet.numOfEps);
17,009✔
3824
  }
3825

3826
  return code;
17,006✔
3827
}
3828

3829
static int32_t jsonToQueryNodeAddr(const SJson* pJson, void* pObj) {
13,543✔
3830
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
13,543✔
3831

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

3843
  return code;
13,540✔
3844
}
3845

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

3863
static int32_t subplanToJson(const void* pObj, SJson* pJson) {
16,058✔
3864
  const SSubplan* pNode = (const SSubplan*)pObj;
16,058✔
3865

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

3913
  return code;
16,061✔
3914
}
3915

3916
static int32_t jsonToSubplan(const SJson* pJson, void* pObj) {
13,539✔
3917
  SSubplan* pNode = (SSubplan*)pObj;
13,539✔
3918

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

3966
  return code;
13,543✔
3967
}
3968

3969
static const char* jkPlanQueryId = "QueryId";
3970
static const char* jkPlanNumOfSubplans = "NumOfSubplans";
3971
static const char* jkPlanSubplans = "Subplans";
3972

3973
static int32_t planToJson(const void* pObj, SJson* pJson) {
2,768✔
3974
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
2,768✔
3975

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

3984
  return code;
2,768✔
3985
}
3986

3987
static int32_t jsonToPlan(const SJson* pJson, void* pObj) {
2,454✔
3988
  SQueryPlan* pNode = (SQueryPlan*)pObj;
2,454✔
3989

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

3998
  return code;
2,454✔
3999
}
4000

4001
static const char* jkAggLogicPlanGroupKeys = "GroupKeys";
4002
static const char* jkAggLogicPlanAggFuncs = "AggFuncs";
4003

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

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

4015
  return code;
1,174✔
4016
}
4017

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

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

4029
  return code;
556✔
4030
}
4031

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

4037
static int32_t dataTypeToJson(const void* pObj, SJson* pJson) {
2,177,047✔
4038
  const SDataType* pNode = (const SDataType*)pObj;
2,177,047✔
4039

4040
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataTypeType, pNode->type);
2,177,047✔
4041
  if (TSDB_CODE_SUCCESS == code) {
2,177,026!
4042
    code = tjsonAddIntegerToObject(pJson, jkDataTypePrecision, pNode->precision);
2,177,028✔
4043
  }
4044
  if (TSDB_CODE_SUCCESS == code) {
2,176,994!
4045
    code = tjsonAddIntegerToObject(pJson, jkDataTypeScale, pNode->scale);
2,176,997✔
4046
  }
4047
  if (TSDB_CODE_SUCCESS == code) {
2,177,015!
4048
    code = tjsonAddIntegerToObject(pJson, jkDataTypeDataBytes, pNode->bytes);
2,177,021✔
4049
  }
4050

4051
  return code;
2,177,002✔
4052
}
4053

4054
static int32_t jsonToDataType(const SJson* pJson, void* pObj) {
2,876,796✔
4055
  SDataType* pNode = (SDataType*)pObj;
2,876,796✔
4056

4057
  int32_t code = tjsonGetUTinyIntValue(pJson, jkDataTypeType, &pNode->type);
2,876,796✔
4058
  if (TSDB_CODE_SUCCESS == code) {
2,874,940!
4059
    code = tjsonGetUTinyIntValue(pJson, jkDataTypePrecision, &pNode->precision);
2,874,942✔
4060
  }
4061
  if (TSDB_CODE_SUCCESS == code) {
2,874,949!
4062
    code = tjsonGetUTinyIntValue(pJson, jkDataTypeScale, &pNode->scale);
2,874,955✔
4063
  }
4064
  if (TSDB_CODE_SUCCESS == code) {
2,872,849!
4065
    code = tjsonGetIntValue(pJson, jkDataTypeDataBytes, &pNode->bytes);
2,872,860✔
4066
  }
4067

4068
  return TSDB_CODE_SUCCESS;
2,872,532✔
4069
}
4070

4071
static const char* jkExprDataType = "DataType";
4072
static const char* jkExprAliasName = "AliasName";
4073
static const char* jkExprUserAlias = "UserAlias";
4074

4075
static int32_t exprNodeToJson(const void* pObj, SJson* pJson) {
1,418,030✔
4076
  const SExprNode* pNode = (const SExprNode*)pObj;
1,418,030✔
4077

4078
  int32_t code = tjsonAddObject(pJson, jkExprDataType, dataTypeToJson, &pNode->resType);
1,418,030✔
4079
  if (TSDB_CODE_SUCCESS == code) {
1,418,046✔
4080
    code = tjsonAddStringToObject(pJson, jkExprAliasName, pNode->aliasName);
1,418,045✔
4081
  }
4082
  if (TSDB_CODE_SUCCESS == code) {
1,418,033✔
4083
    code = tjsonAddStringToObject(pJson, jkExprUserAlias, pNode->userAlias);
1,418,032✔
4084
  }
4085

4086
  return code;
1,418,037✔
4087
}
4088

4089
static int32_t jsonToExprNode(const SJson* pJson, void* pObj) {
2,141,536✔
4090
  SExprNode* pNode = (SExprNode*)pObj;
2,141,536✔
4091

4092
  int32_t code = tjsonToObject(pJson, jkExprDataType, jsonToDataType, &pNode->resType);
2,141,536✔
4093
  if (TSDB_CODE_SUCCESS == code) {
2,140,146!
4094
    code = tjsonGetStringValue(pJson, jkExprAliasName, pNode->aliasName);
2,140,147✔
4095
  }
4096
  if (TSDB_CODE_SUCCESS == code) {
2,141,720!
4097
    code = tjsonGetStringValue(pJson, jkExprUserAlias, pNode->userAlias);
2,141,721✔
4098
  }
4099

4100
  return code;
2,141,785✔
4101
}
4102

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

4118
static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
914,227✔
4119
  const SColumnNode* pNode = (const SColumnNode*)pObj;
914,227✔
4120

4121
  int32_t code = exprNodeToJson(pObj, pJson);
914,227✔
4122
  if (TSDB_CODE_SUCCESS == code) {
914,228!
4123
    code = tjsonAddIntegerToObject(pJson, jkColumnTableId, pNode->tableId);
914,228✔
4124
  }
4125
  if (TSDB_CODE_SUCCESS == code) {
914,225!
4126
    code = tjsonAddIntegerToObject(pJson, jkColumnTableType, pNode->tableType);
914,225✔
4127
  }
4128
  if (TSDB_CODE_SUCCESS == code) {
914,235!
4129
    code = tjsonAddIntegerToObject(pJson, jkColumnColId, pNode->colId);
914,235✔
4130
  }
4131
  if (TSDB_CODE_SUCCESS == code) {
914,232!
4132
    code = tjsonAddIntegerToObject(pJson, jkColumnProjId, pNode->projIdx);
914,232✔
4133
  }
4134
  if (TSDB_CODE_SUCCESS == code) {
914,233!
4135
    code = tjsonAddIntegerToObject(pJson, jkColumnColType, pNode->colType);
914,233✔
4136
  }
4137
  if (TSDB_CODE_SUCCESS == code) {
914,216!
4138
    code = tjsonAddStringToObject(pJson, jkColumnDbName, pNode->dbName);
914,216✔
4139
  }
4140
  if (TSDB_CODE_SUCCESS == code) {
914,222!
4141
    code = tjsonAddStringToObject(pJson, jkColumnTableName, pNode->tableName);
914,222✔
4142
  }
4143
  if (TSDB_CODE_SUCCESS == code) {
914,226!
4144
    code = tjsonAddStringToObject(pJson, jkColumnTableAlias, pNode->tableAlias);
914,226✔
4145
  }
4146
  if (TSDB_CODE_SUCCESS == code) {
914,225!
4147
    code = tjsonAddStringToObject(pJson, jkColumnColName, pNode->colName);
914,225✔
4148
  }
4149
  if (TSDB_CODE_SUCCESS == code) {
914,223!
4150
    code = tjsonAddIntegerToObject(pJson, jkColumnDataBlockId, pNode->dataBlockId);
914,223✔
4151
  }
4152
  if (TSDB_CODE_SUCCESS == code) {
914,229!
4153
    code = tjsonAddIntegerToObject(pJson, jkColumnSlotId, pNode->slotId);
914,229✔
4154
  }
4155
  if (TSDB_CODE_SUCCESS == code) {
914,215✔
4156
    code = tjsonAddBoolToObject(pJson, jkColumnTableHasPk, pNode->tableHasPk);
914,214✔
4157
  }
4158
  if (TSDB_CODE_SUCCESS == code) {
914,205✔
4159
    code = tjsonAddBoolToObject(pJson, jkColumnIsPk, pNode->isPk);
914,204✔
4160
  }
4161
  if (TSDB_CODE_SUCCESS == code) {
914,221✔
4162
    code = tjsonAddIntegerToObject(pJson, jkColumnNumOfPKs, pNode->numOfPKs);
914,220✔
4163
  }
4164
  return code;
914,215✔
4165
}
4166

4167
static int32_t jsonToColumnNode(const SJson* pJson, void* pObj) {
1,250,226✔
4168
  SColumnNode* pNode = (SColumnNode*)pObj;
1,250,226✔
4169

4170
  int32_t code = jsonToExprNode(pJson, pObj);
1,250,226✔
4171
  if (TSDB_CODE_SUCCESS == code) {
1,250,321!
4172
    code = tjsonGetUBigIntValue(pJson, jkColumnTableId, &pNode->tableId);
1,250,321✔
4173
  }
4174
  if (TSDB_CODE_SUCCESS == code) {
1,250,366!
4175
    code = tjsonGetTinyIntValue(pJson, jkColumnTableType, &pNode->tableType);
1,250,366✔
4176
  }
4177
  if (TSDB_CODE_SUCCESS == code) {
1,250,276!
4178
    code = tjsonGetSmallIntValue(pJson, jkColumnColId, &pNode->colId);
1,250,277✔
4179
  }
4180
  if (TSDB_CODE_SUCCESS == code) {
1,249,921✔
4181
    code = tjsonGetSmallIntValue(pJson, jkColumnProjId, &pNode->projIdx);
1,249,913✔
4182
  }
4183
  if (TSDB_CODE_SUCCESS == code) {
1,250,199✔
4184
    tjsonGetNumberValue(pJson, jkColumnColType, pNode->colType, code);
1,250,191✔
4185
  }
4186
  if (TSDB_CODE_SUCCESS == code) {
1,250,406✔
4187
    code = tjsonGetStringValue(pJson, jkColumnDbName, pNode->dbName);
1,250,400✔
4188
  }
4189
  if (TSDB_CODE_SUCCESS == code) {
1,250,364✔
4190
    code = tjsonGetStringValue(pJson, jkColumnTableName, pNode->tableName);
1,250,359✔
4191
  }
4192
  if (TSDB_CODE_SUCCESS == code) {
1,250,494✔
4193
    code = tjsonGetStringValue(pJson, jkColumnTableAlias, pNode->tableAlias);
1,250,486✔
4194
  }
4195
  if (TSDB_CODE_SUCCESS == code) {
1,250,484✔
4196
    code = tjsonGetStringValue(pJson, jkColumnColName, pNode->colName);
1,250,476✔
4197
  }
4198
  if (TSDB_CODE_SUCCESS == code) {
1,250,478✔
4199
    code = tjsonGetSmallIntValue(pJson, jkColumnDataBlockId, &pNode->dataBlockId);
1,250,470✔
4200
  }
4201
  if (TSDB_CODE_SUCCESS == code) {
1,250,447✔
4202
    code = tjsonGetSmallIntValue(pJson, jkColumnSlotId, &pNode->slotId);
1,250,442✔
4203
  }
4204
  if (TSDB_CODE_SUCCESS == code) {
1,250,380✔
4205
    code = tjsonGetBoolValue(pJson, jkColumnTableHasPk, &pNode->tableHasPk);
1,250,369✔
4206
  }
4207
  if (TSDB_CODE_SUCCESS == code) {
1,250,550✔
4208
    code = tjsonGetBoolValue(pJson, jkColumnIsPk, &pNode->isPk);
1,250,540✔
4209
  }
4210
  if (TSDB_CODE_SUCCESS == code) {
1,250,137✔
4211
    code = tjsonGetSmallIntValue(pJson, jkColumnNumOfPKs, &pNode->numOfPKs);
1,250,130✔
4212
  }
4213
  return code;
1,250,560✔
4214
}
4215

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

4225
static int32_t datumToJson(const void* pObj, SJson* pJson) {
61,640✔
4226
  const SValueNode* pNode = (const SValueNode*)pObj;
61,640✔
4227

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

4292
  return code;
61,641✔
4293
}
4294

4295
static int32_t valueNodeToJson(const void* pObj, SJson* pJson) {
69,115✔
4296
  const SValueNode* pNode = (const SValueNode*)pObj;
69,115✔
4297

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

4324
  return code;
69,119✔
4325
}
4326

4327
static int32_t jsonToDatum(const SJson* pJson, void* pObj) {
69,371✔
4328
  SValueNode* pNode = (SValueNode*)pObj;
69,371✔
4329

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

4445
  return code;
69,376✔
4446
}
4447

4448
static int32_t jsonToValueNode(const SJson* pJson, void* pObj) {
77,388✔
4449
  SValueNode* pNode = (SValueNode*)pObj;
77,388✔
4450

4451
  int32_t code = jsonToExprNode(pJson, pObj);
77,388✔
4452
  int32_t literalSize = 0;
77,393✔
4453
  if (TSDB_CODE_SUCCESS == code) {
77,393!
4454
    code = tjsonGetIntValue(pJson, jkValueLiteralSize, &literalSize);
77,393✔
4455
  }
4456
  if (TSDB_CODE_SUCCESS == code && literalSize > 0) {
77,386!
4457
    code = tjsonDupStringValue(pJson, jkValueLiteral, &pNode->literal);
54,131✔
4458
  }
4459
  if (TSDB_CODE_SUCCESS == code) {
77,390✔
4460
    code = tjsonGetIntValue(pJson, jkValueFlag, &pNode->flag);
77,389✔
4461
  }
4462
  if (TSDB_CODE_SUCCESS == code) {
77,383✔
4463
    code = tjsonGetBoolValue(pJson, jkValueTranslate, &pNode->translate);
77,382✔
4464
  }
4465
  if (TSDB_CODE_SUCCESS == code) {
77,392✔
4466
    code = tjsonGetBoolValue(pJson, jkValueNotReserved, &pNode->notReserved);
77,391✔
4467
  }
4468
  if (TSDB_CODE_SUCCESS == code) {
77,393✔
4469
    code = tjsonGetBoolValue(pJson, jkValueIsNull, &pNode->isNull);
77,392✔
4470
  }
4471
  if (TSDB_CODE_SUCCESS == code) {
77,384✔
4472
    code = tjsonGetTinyIntValue(pJson, jkValueUnit, &pNode->unit);
77,383✔
4473
  }
4474
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
77,370!
4475
    code = jsonToDatum(pJson, pNode);
69,371✔
4476
  }
4477

4478
  return code;
77,382✔
4479
}
4480

4481
static const char* jkOperatorType = "OpType";
4482
static const char* jkOperatorLeft = "Left";
4483
static const char* jkOperatorRight = "Right";
4484

4485
static int32_t operatorNodeToJson(const void* pObj, SJson* pJson) {
12,879✔
4486
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
12,879✔
4487

4488
  int32_t code = exprNodeToJson(pObj, pJson);
12,879✔
4489
  if (TSDB_CODE_SUCCESS == code) {
12,880!
4490
    code = tjsonAddIntegerToObject(pJson, jkOperatorType, pNode->opType);
12,880✔
4491
  }
4492
  if (TSDB_CODE_SUCCESS == code) {
12,880!
4493
    code = tjsonAddObject(pJson, jkOperatorLeft, nodeToJson, pNode->pLeft);
12,880✔
4494
  }
4495
  if (TSDB_CODE_SUCCESS == code) {
12,880!
4496
    code = tjsonAddObject(pJson, jkOperatorRight, nodeToJson, pNode->pRight);
12,880✔
4497
  }
4498

4499
  return code;
12,877✔
4500
}
4501

4502
static int32_t jsonToOperatorNode(const SJson* pJson, void* pObj) {
10,622✔
4503
  SOperatorNode* pNode = (SOperatorNode*)pObj;
10,622✔
4504

4505
  int32_t code = jsonToExprNode(pJson, pObj);
10,622✔
4506
  if (TSDB_CODE_SUCCESS == code) {
10,621!
4507
    tjsonGetNumberValue(pJson, jkOperatorType, pNode->opType, code);
10,621✔
4508
  }
4509
  if (TSDB_CODE_SUCCESS == code) {
10,618!
4510
    code = jsonToNodeObject(pJson, jkOperatorLeft, &pNode->pLeft);
10,618✔
4511
  }
4512
  if (TSDB_CODE_SUCCESS == code) {
10,619!
4513
    code = jsonToNodeObject(pJson, jkOperatorRight, &pNode->pRight);
10,619✔
4514
  }
4515

4516
  return code;
10,619✔
4517
}
4518

4519
static const char* jkLogicCondType = "CondType";
4520
static const char* jkLogicCondParameters = "Parameters";
4521

4522
static int32_t logicConditionNodeToJson(const void* pObj, SJson* pJson) {
2,147✔
4523
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
2,147✔
4524

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

4533
  return code;
2,147✔
4534
}
4535

4536
static int32_t jsonToLogicConditionNode(const SJson* pJson, void* pObj) {
2,679✔
4537
  SLogicConditionNode* pNode = (SLogicConditionNode*)pObj;
2,679✔
4538

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

4547
  return code;
2,680✔
4548
}
4549

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

4561
static int32_t functionNodeToJson(const void* pObj, SJson* pJson) {
415,617✔
4562
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
415,617✔
4563

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

4598
static int32_t jsonToFunctionNode(const SJson* pJson, void* pObj) {
793,646✔
4599
  SFunctionNode* pNode = (SFunctionNode*)pObj;
793,646✔
4600

4601
  int32_t code = jsonToExprNode(pJson, pObj);
793,646✔
4602
  if (TSDB_CODE_SUCCESS == code) {
793,556!
4603
    code = tjsonGetStringValue(pJson, jkFunctionName, pNode->functionName);
793,556✔
4604
  }
4605
  if (TSDB_CODE_SUCCESS == code) {
793,334✔
4606
    code = tjsonGetIntValue(pJson, jkFunctionId, &pNode->funcId);
793,331✔
4607
  }
4608
  if (TSDB_CODE_SUCCESS == code) {
793,147✔
4609
    code = tjsonGetIntValue(pJson, jkFunctionType, &pNode->funcType);
793,144✔
4610
  }
4611
  if (TSDB_CODE_SUCCESS == code) {
793,347✔
4612
    code = jsonToNodeList(pJson, jkFunctionParameter, &pNode->pParameterList);
793,344✔
4613
  }
4614
  if (TSDB_CODE_SUCCESS == code) {
793,723✔
4615
    code = tjsonGetIntValue(pJson, jkFunctionUdfBufSize, &pNode->udfBufSize);
793,721✔
4616
  }
4617
  if (TSDB_CODE_SUCCESS == code) {
793,681✔
4618
    code = tjsonGetBoolValue(pJson, jkFunctionHasPk, &pNode->hasPk);
793,675✔
4619
  }
4620
  if (TSDB_CODE_SUCCESS == code) {
793,632✔
4621
    code = tjsonGetIntValue(pJson, jkFunctionPkBytes, &pNode->pkBytes);
793,626✔
4622
  }
4623
  if (TSDB_CODE_SUCCESS == code) {
793,672✔
4624
    code = tjsonGetBoolValue(pJson, jkFunctionIsMergeFunc, &pNode->hasOriginalFunc);
793,667✔
4625
  }
4626
  if (TSDB_CODE_SUCCESS == code) {
793,708✔
4627
    code = tjsonGetIntValue(pJson, jkFunctionMergeFuncOf, &pNode->originalFuncId);
793,703✔
4628
  }
4629
  if (TSDB_CODE_SUCCESS == code) {
793,686!
4630
    tjsonGetNumberValue(pJson, jkFunctionTrimType, pNode->trimType, code);
793,686✔
4631
  }
4632

4633
  return code;
793,690✔
4634
}
4635

4636
static const char* jkTableDbName = "DbName";
4637
static const char* jkTableTableName = "tableName";
4638
static const char* jkTableTableAlias = "tableAlias";
4639

4640
static int32_t tableNodeToJson(const void* pObj, SJson* pJson) {
3,765✔
4641
  const STableNode* pNode = (const STableNode*)pObj;
3,765✔
4642

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

4654
  return code;
3,765✔
4655
}
4656

4657
static int32_t jsonToTableNode(const SJson* pJson, void* pObj) {
7,574✔
4658
  STableNode* pNode = (STableNode*)pObj;
7,574✔
4659

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

4671
  return code;
7,574✔
4672
}
4673

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

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

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

4713
  return code;
×
4714
}
4715

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

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

4745
  return code;
×
4746
}
4747

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

4754
static int32_t realTableNodeToJson(const void* pObj, SJson* pJson) {
3,537✔
4755
  const SRealTableNode* pNode = (const SRealTableNode*)pObj;
3,537✔
4756

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

4774
  return code;
3,537✔
4775
}
4776

4777
static int32_t jsonToRealTableNode(const SJson* pJson, void* pObj) {
7,347✔
4778
  SRealTableNode* pNode = (SRealTableNode*)pObj;
7,347✔
4779

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

4799
  return code;
7,347✔
4800
}
4801

4802
static const char* jkTempTableSubquery = "Subquery";
4803

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

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

4812
  return code;
166✔
4813
}
4814

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

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

4823
  return code;
165✔
4824
}
4825

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

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

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

4852
  return code;
62✔
4853
}
4854

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

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

4875
  return code;
62✔
4876
}
4877

4878
static const char* jkGroupingSetType = "GroupingSetType";
4879
static const char* jkGroupingSetParameter = "Parameters";
4880

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

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

4889
  return code;
657✔
4890
}
4891

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

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

4901
  return code;
413✔
4902
}
4903

4904
static const char* jkOrderByExprExpr = "Expr";
4905
static const char* jkOrderByExprOrder = "Order";
4906
static const char* jkOrderByExprNullOrder = "NullOrder";
4907

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

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

4919
  return code;
907✔
4920
}
4921

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

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

4933
  return code;
658✔
4934
}
4935

4936
static const char* jkLimitLimit = "Limit";
4937
static const char* jkLimitOffset = "Offset";
4938

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

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

4947
  return code;
360✔
4948
}
4949

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

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

4958
  return code;
222✔
4959
}
4960

4961
static const char* jkStateWindowCol = "StateWindowCol";
4962
static const char* jkStateWindowExpr = "StateWindowExpr";
4963

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

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

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

4983
static const char* jkSessionWindowTsPrimaryKey = "TsPrimaryKey";
4984
static const char* jkSessionWindowGap = "Gap";
4985

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

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

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

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

5006
static const char* jkEventWindowTsPrimaryKey = "TsPrimaryKey";
5007
static const char* jkEventWindowStartCond = "StartCond";
5008
static const char* jkEventWindowEndCond = "EndCond";
5009

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

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

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

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

5036
static const char* jkCountWindowTsPrimaryKey = "CountTsPrimaryKey";
5037
static const char* jkCountWindowCount = "CountWindowCount";
5038
static const char* jkCountWindowSliding = "CountWindowSliding";
5039

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

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

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

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

5066
static const char* jkAnomalyWindowTsPrimaryKey = "AnomalyTsPrimaryKey";
5067
static const char* jkAnomalyWindowExpr = "AnomalyWindowExpr";
5068
static const char* jkAnomalyWindowOption = "AnomalyWindowOpt";
5069

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

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

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

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

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

5104
static int32_t intervalWindowNodeToJson(const void* pObj, SJson* pJson) {
1,098✔
5105
  const SIntervalWindowNode* pNode = (const SIntervalWindowNode*)pObj;
1,098✔
5106

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

5127
  return code;
1,098✔
5128
}
5129

5130
static int32_t jsonToIntervalWindowNode(const SJson* pJson, void* pObj) {
3,486✔
5131
  SIntervalWindowNode* pNode = (SIntervalWindowNode*)pObj;
3,486✔
5132

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

5153
  return code;
3,486✔
5154
}
5155

5156
static const char* jkNodeListDataType = "DataType";
5157
static const char* jkNodeListNodeList = "NodeList";
5158

5159
static int32_t nodeListNodeToJson(const void* pObj, SJson* pJson) {
4,310✔
5160
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
4,310✔
5161

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

5167
  return code;
4,310✔
5168
}
5169

5170
static int32_t jsonToNodeListNode(const SJson* pJson, void* pObj) {
3,841✔
5171
  SNodeListNode* pNode = (SNodeListNode*)pObj;
3,841✔
5172

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

5178
  return code;
3,841✔
5179
}
5180

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

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

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

5204
  return code;
305✔
5205
}
5206

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

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

5225
  return code;
368✔
5226
}
5227

5228
static const char* jkTargetDataBlockId = "DataBlockId";
5229
static const char* jkTargetSlotId = "SlotId";
5230
static const char* jkTargetExpr = "Expr";
5231

5232
static int32_t targetNodeToJson(const void* pObj, SJson* pJson) {
720,321✔
5233
  const STargetNode* pNode = (const STargetNode*)pObj;
720,321✔
5234

5235
  int32_t code = tjsonAddIntegerToObject(pJson, jkTargetDataBlockId, pNode->dataBlockId);
720,321✔
5236
  if (TSDB_CODE_SUCCESS == code) {
720,315!
5237
    code = tjsonAddIntegerToObject(pJson, jkTargetSlotId, pNode->slotId);
720,316✔
5238
  }
5239
  if (TSDB_CODE_SUCCESS == code) {
720,318!
5240
    code = tjsonAddObject(pJson, jkTargetExpr, nodeToJson, pNode->pExpr);
720,320✔
5241
  }
5242

5243
  return code;
720,305✔
5244
}
5245

5246
static int32_t jsonToTargetNode(const SJson* pJson, void* pObj) {
715,373✔
5247
  STargetNode* pNode = (STargetNode*)pObj;
715,373✔
5248

5249
  int32_t code = tjsonGetSmallIntValue(pJson, jkTargetDataBlockId, &pNode->dataBlockId);
715,373✔
5250
  if (TSDB_CODE_SUCCESS == code) {
715,321!
5251
    code = tjsonGetSmallIntValue(pJson, jkTargetSlotId, &pNode->slotId);
715,322✔
5252
  }
5253
  if (TSDB_CODE_SUCCESS == code) {
715,224!
5254
    code = jsonToNodeObject(pJson, jkTargetExpr, &pNode->pExpr);
715,224✔
5255
  }
5256

5257
  return code;
715,582✔
5258
}
5259

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

5266
static int32_t slotDescNodeToJson(const void* pObj, SJson* pJson) {
741,556✔
5267
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
741,556✔
5268

5269
  int32_t code = tjsonAddIntegerToObject(pJson, jkSlotDescSlotId, pNode->slotId);
741,556✔
5270
  if (TSDB_CODE_SUCCESS == code) {
741,538!
5271
    code = tjsonAddObject(pJson, jkSlotDescDataType, dataTypeToJson, &pNode->dataType);
741,540✔
5272
  }
5273
  if (TSDB_CODE_SUCCESS == code) {
741,542✔
5274
    code = tjsonAddBoolToObject(pJson, jkSlotDescReserve, pNode->reserve);
741,541✔
5275
  }
5276
  if (TSDB_CODE_SUCCESS == code) {
741,546✔
5277
    code = tjsonAddBoolToObject(pJson, jkSlotDescOutput, pNode->output);
741,545✔
5278
  }
5279
  if (TSDB_CODE_SUCCESS == code) {
741,547✔
5280
    code = tjsonAddStringToObject(pJson, jkSlotDescName, pNode->name);
741,546✔
5281
  }
5282

5283
  return code;
741,534✔
5284
}
5285

5286
static int32_t jsonToSlotDescNode(const SJson* pJson, void* pObj) {
717,521✔
5287
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
717,521✔
5288

5289
  int32_t code = tjsonGetSmallIntValue(pJson, jkSlotDescSlotId, &pNode->slotId);
717,521✔
5290
  if (TSDB_CODE_SUCCESS == code) {
717,324!
5291
    code = tjsonToObject(pJson, jkSlotDescDataType, jsonToDataType, &pNode->dataType);
717,325✔
5292
  }
5293
  if (TSDB_CODE_SUCCESS == code) {
716,522!
5294
    code = tjsonGetBoolValue(pJson, jkSlotDescReserve, &pNode->reserve);
716,527✔
5295
  }
5296
  if (TSDB_CODE_SUCCESS == code) {
717,244!
5297
    code = tjsonGetBoolValue(pJson, jkSlotDescOutput, &pNode->output);
717,249✔
5298
  }
5299
  if (TSDB_CODE_SUCCESS == code) {
717,273!
5300
    code = tjsonGetStringValue(pJson, jkSlotDescName, pNode->name);
717,278✔
5301
  }
5302

5303
  return code;
716,675✔
5304
}
5305

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

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

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

5326
  return code;
13,000✔
5327
}
5328

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

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

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

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

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

5372
  return code;
948✔
5373
}
5374

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

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

5395
  return code;
×
5396
}
5397

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

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

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

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

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

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

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

5527
  return code;
420✔
5528
}
5529

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

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

5610
  return code;
420✔
5611
}
5612

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

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

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

5644
  return code;
78✔
5645
}
5646

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

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

5670
  return code;
96✔
5671
}
5672

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

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

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

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

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

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

5716
  return code;
19✔
5717
}
5718

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

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

5736
  return code;
19✔
5737
}
5738

5739
static const char* jkExplainOptionsVerbose = "Verbose";
5740
static const char* jkExplainOptionsRatio = "Ratio";
5741

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

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

5750
  return code;
30✔
5751
}
5752

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

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

5761
  return code;
30✔
5762
}
5763

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

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

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

5791
  return code;
105✔
5792
}
5793

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

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

5814
  return code;
105✔
5815
}
5816

5817
static const char* jkStreamNotifyOptionsAddrUrls = "AddrUrls";
5818
static const char* jkStreamNotifyOptionsEventType = "EventType";
5819
static const char* jkStreamNotifyOptionsErrorHandle = "ErrorHandle";
5820
static const char* jkStreamNotifyOptionsNotifyHistory = "NotifyHistory";
5821

5822
static int32_t streamNotifyOptionsToJson(const void* pObj, SJson* pJson) {
×
5823
  const SStreamNotifyOptions* pNotifyOption = (const SStreamNotifyOptions*)pObj;
×
5824
  int32_t                     code = nodeListToJson(pJson, jkStreamNotifyOptionsAddrUrls, pNotifyOption->pAddrUrls);
×
5825
  if (code == TSDB_CODE_SUCCESS) {
×
5826
    code = tjsonAddIntegerToObject(pJson, jkStreamNotifyOptionsEventType, pNotifyOption->eventTypes);
×
5827
  }
5828
  if (code == TSDB_CODE_SUCCESS) {
×
5829
    code = tjsonAddIntegerToObject(pJson, jkStreamNotifyOptionsErrorHandle, pNotifyOption->errorHandle);
×
5830
  }
5831
  if (code == TSDB_CODE_SUCCESS) {
×
5832
    code = tjsonAddBoolToObject(pJson, jkStreamNotifyOptionsNotifyHistory, pNotifyOption->notifyHistory);
×
5833
  }
5834

5835
  return code;
×
5836
}
5837

5838
static int32_t jsonToStreamNotifyOptions(const SJson* pJson, void* pObj) {
×
5839
  SStreamNotifyOptions* pNotifyOption = (SStreamNotifyOptions*)pObj;
×
5840
  int32_t               code = jsonToNodeList(pJson, jkStreamNotifyOptionsAddrUrls, &pNotifyOption->pAddrUrls);
×
5841
  int32_t               val = 0;
×
5842
  if (code == TSDB_CODE_SUCCESS) {
×
5843
    code = tjsonGetIntValue(pJson, jkStreamNotifyOptionsEventType, &val);
×
5844
    pNotifyOption->eventTypes = val;
×
5845
  }
5846
  if (code == TSDB_CODE_SUCCESS) {
×
5847
    code = tjsonGetIntValue(pJson, jkStreamNotifyOptionsErrorHandle, &val);
×
5848
    pNotifyOption->errorHandle = val;
×
5849
  }
5850
  if (code == TSDB_CODE_SUCCESS) {
×
5851
    code = tjsonGetBoolValue(pJson, jkStreamNotifyOptionsNotifyHistory, &pNotifyOption->notifyHistory);
×
5852
  }
5853
  return code;
×
5854
}
5855

5856
static const char* jkWhenThenWhen = "When";
5857
static const char* jkWhenThenThen = "Then";
5858

5859
static int32_t whenThenNodeToJson(const void* pObj, SJson* pJson) {
156✔
5860
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
156✔
5861

5862
  int32_t code = exprNodeToJson(pObj, pJson);
156✔
5863
  if (TSDB_CODE_SUCCESS == code) {
156!
5864
    code = tjsonAddObject(pJson, jkWhenThenWhen, nodeToJson, pNode->pWhen);
156✔
5865
  }
5866
  if (TSDB_CODE_SUCCESS == code) {
156!
5867
    code = tjsonAddObject(pJson, jkWhenThenThen, nodeToJson, pNode->pThen);
156✔
5868
  }
5869

5870
  return code;
156✔
5871
}
5872

5873
static int32_t jsonToWhenThenNode(const SJson* pJson, void* pObj) {
150✔
5874
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
150✔
5875

5876
  int32_t code = jsonToExprNode(pJson, pObj);
150✔
5877
  if (TSDB_CODE_SUCCESS == code) {
150!
5878
    code = jsonToNodeObject(pJson, jkWhenThenWhen, &pNode->pWhen);
150✔
5879
  }
5880
  if (TSDB_CODE_SUCCESS == code) {
150!
5881
    code = jsonToNodeObject(pJson, jkWhenThenThen, &pNode->pThen);
150✔
5882
  }
5883

5884
  return code;
150✔
5885
}
5886

5887
static const char* jkCaseWhenCase = "Case";
5888
static const char* jkCaseWhenWhenThenList = "WhenThenList";
5889
static const char* jkCaseWhenElse = "Else";
5890

5891
static int32_t caseWhenNodeToJson(const void* pObj, SJson* pJson) {
136✔
5892
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
136✔
5893

5894
  int32_t code = exprNodeToJson(pObj, pJson);
136✔
5895
  if (TSDB_CODE_SUCCESS == code) {
136!
5896
    code = tjsonAddObject(pJson, jkCaseWhenCase, nodeToJson, pNode->pCase);
136✔
5897
  }
5898
  if (TSDB_CODE_SUCCESS == code) {
136!
5899
    code = nodeListToJson(pJson, jkCaseWhenWhenThenList, pNode->pWhenThenList);
136✔
5900
  }
5901
  if (TSDB_CODE_SUCCESS == code) {
136!
5902
    code = tjsonAddObject(pJson, jkCaseWhenElse, nodeToJson, pNode->pElse);
136✔
5903
  }
5904

5905
  return code;
136✔
5906
}
5907

5908
static int32_t jsonToCaseWhenNode(const SJson* pJson, void* pObj) {
134✔
5909
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
134✔
5910

5911
  int32_t code = jsonToExprNode(pJson, pObj);
134✔
5912
  if (TSDB_CODE_SUCCESS == code) {
134!
5913
    code = jsonToNodeObject(pJson, jkCaseWhenCase, &pNode->pCase);
134✔
5914
  }
5915
  if (TSDB_CODE_SUCCESS == code) {
134!
5916
    code = jsonToNodeList(pJson, jkCaseWhenWhenThenList, &pNode->pWhenThenList);
134✔
5917
  }
5918
  if (TSDB_CODE_SUCCESS == code) {
134!
5919
    code = jsonToNodeObject(pJson, jkCaseWhenElse, &pNode->pElse);
134✔
5920
  }
5921

5922
  return code;
134✔
5923
}
5924

5925
static const char* jkDataBlockDescDataBlockId = "DataBlockId";
5926
static const char* jkDataBlockDescSlots = "Slots";
5927
static const char* jkDataBlockTotalRowSize = "TotalRowSize";
5928
static const char* jkDataBlockOutputRowSize = "OutputRowSize";
5929
static const char* jkDataBlockPrecision = "Precision";
5930

5931
static int32_t dataBlockDescNodeToJson(const void* pObj, SJson* pJson) {
38,048✔
5932
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
38,048✔
5933

5934
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataBlockDescDataBlockId, pNode->dataBlockId);
38,048✔
5935
  if (TSDB_CODE_SUCCESS == code) {
38,051!
5936
    code = tjsonAddIntegerToObject(pJson, jkDataBlockTotalRowSize, pNode->totalRowSize);
38,051✔
5937
  }
5938
  if (TSDB_CODE_SUCCESS == code) {
38,053✔
5939
    code = tjsonAddIntegerToObject(pJson, jkDataBlockOutputRowSize, pNode->outputRowSize);
38,052✔
5940
  }
5941
  if (TSDB_CODE_SUCCESS == code) {
38,053✔
5942
    code = nodeListToJson(pJson, jkDataBlockDescSlots, pNode->pSlots);
38,052✔
5943
  }
5944
  if (TSDB_CODE_SUCCESS == code) {
38,048✔
5945
    code = tjsonAddIntegerToObject(pJson, jkDataBlockPrecision, pNode->precision);
38,047✔
5946
  }
5947

5948
  return code;
38,050✔
5949
}
5950

5951
static int32_t jsonToDataBlockDescNode(const SJson* pJson, void* pObj) {
33,049✔
5952
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
33,049✔
5953

5954
  int32_t code = tjsonGetSmallIntValue(pJson, jkDataBlockDescDataBlockId, &pNode->dataBlockId);
33,049✔
5955
  if (TSDB_CODE_SUCCESS == code) {
33,047!
5956
    code = tjsonGetIntValue(pJson, jkDataBlockTotalRowSize, &pNode->totalRowSize);
33,047✔
5957
  }
5958
  if (TSDB_CODE_SUCCESS == code) {
33,047!
5959
    code = tjsonGetIntValue(pJson, jkDataBlockOutputRowSize, &pNode->outputRowSize);
33,047✔
5960
  }
5961
  if (TSDB_CODE_SUCCESS == code) {
33,046!
5962
    code = jsonToNodeList(pJson, jkDataBlockDescSlots, &pNode->pSlots);
33,046✔
5963
  }
5964
  if (TSDB_CODE_SUCCESS == code) {
33,050✔
5965
    code = tjsonGetUTinyIntValue(pJson, jkDataBlockPrecision, &pNode->precision);
33,049✔
5966
  }
5967

5968
  return code;
33,051✔
5969
}
5970

5971
static const char* jkSetOperatorOpType = "OpType";
5972
static const char* jkSetOperatorProjections = "Projections";
5973
static const char* jkSetOperatorLeft = "Left";
5974
static const char* jkSetOperatorRight = "Right";
5975
static const char* jkSetOperatorOrderByList = "OrderByList";
5976
static const char* jkSetOperatorLimit = "Limit";
5977

5978
static int32_t setOperatorToJson(const void* pObj, SJson* pJson) {
64✔
5979
  const SSetOperator* pNode = (const SSetOperator*)pObj;
64✔
5980

5981
  int32_t code = tjsonAddIntegerToObject(pJson, jkSetOperatorOpType, pNode->opType);
64✔
5982
  if (TSDB_CODE_SUCCESS == code) {
64!
5983
    code = nodeListToJson(pJson, jkSetOperatorProjections, pNode->pProjectionList);
64✔
5984
  }
5985
  if (TSDB_CODE_SUCCESS == code) {
64!
5986
    code = tjsonAddObject(pJson, jkSetOperatorLeft, nodeToJson, pNode->pLeft);
64✔
5987
  }
5988
  if (TSDB_CODE_SUCCESS == code) {
64!
5989
    code = tjsonAddObject(pJson, jkSetOperatorRight, nodeToJson, pNode->pRight);
64✔
5990
  }
5991
  if (TSDB_CODE_SUCCESS == code) {
64!
5992
    code = nodeListToJson(pJson, jkSetOperatorOrderByList, pNode->pOrderByList);
64✔
5993
  }
5994
  if (TSDB_CODE_SUCCESS == code) {
64!
5995
    code = tjsonAddObject(pJson, jkSetOperatorLimit, nodeToJson, pNode->pLimit);
64✔
5996
  }
5997

5998
  return code;
64✔
5999
}
6000

6001
static int32_t jsonToSetOperator(const SJson* pJson, void* pObj) {
64✔
6002
  SSetOperator* pNode = (SSetOperator*)pObj;
64✔
6003

6004
  int32_t code = TSDB_CODE_SUCCESS;
64✔
6005
  tjsonGetNumberValue(pJson, jkSetOperatorOpType, pNode->opType, code);
64✔
6006
  if (TSDB_CODE_SUCCESS == code) {
64!
6007
    code = jsonToNodeList(pJson, jkSetOperatorProjections, &pNode->pProjectionList);
64✔
6008
  }
6009
  if (TSDB_CODE_SUCCESS == code) {
64!
6010
    code = jsonToNodeObject(pJson, jkSetOperatorLeft, &pNode->pLeft);
64✔
6011
  }
6012
  if (TSDB_CODE_SUCCESS == code) {
64!
6013
    code = jsonToNodeObject(pJson, jkSetOperatorRight, &pNode->pRight);
64✔
6014
  }
6015
  if (TSDB_CODE_SUCCESS == code) {
64!
6016
    code = jsonToNodeList(pJson, jkSetOperatorOrderByList, &pNode->pOrderByList);
64✔
6017
  }
6018
  if (TSDB_CODE_SUCCESS == code) {
64!
6019
    code = jsonToNodeObject(pJson, jkSetOperatorLimit, &pNode->pLimit);
64✔
6020
  }
6021

6022
  return code;
64✔
6023
}
6024

6025
static const char* jkSelectStmtDistinct = "Distinct";
6026
static const char* jkSelectStmtProjections = "Projections";
6027
static const char* jkSelectStmtFrom = "From";
6028
static const char* jkSelectStmtWhere = "Where";
6029
static const char* jkSelectStmtPartitionBy = "PartitionBy";
6030
static const char* jkSelectStmtTags = "Tags";
6031
static const char* jkSelectStmtSubtable = "Subtable";
6032
static const char* jkSelectStmtWindow = "Window";
6033
static const char* jkSelectStmtGroupBy = "GroupBy";
6034
static const char* jkSelectStmtHaving = "Having";
6035
static const char* jkSelectStmtOrderBy = "OrderBy";
6036
static const char* jkSelectStmtLimit = "Limit";
6037
static const char* jkSelectStmtSlimit = "Slimit";
6038
static const char* jkSelectStmtStmtName = "StmtName";
6039
static const char* jkSelectStmtHasAggFuncs = "HasAggFuncs";
6040
static const char* jkSelectStmtInterpFuncs = "HasInterpFuncs";
6041
static const char* jkSelectStmtInterpFill = "InterpFill";
6042
static const char* jkSelectStmtInterpEvery = "InterpEvery";
6043
static const char* jkSelectStmtTwaOrElapsedFuncs = "HasTwaOrElapsedFuncs";
6044

6045
static int32_t selectStmtToJson(const void* pObj, SJson* pJson) {
3,658✔
6046
  const SSelectStmt* pNode = (const SSelectStmt*)pObj;
3,658✔
6047

6048
  int32_t code = tjsonAddBoolToObject(pJson, jkSelectStmtDistinct, pNode->isDistinct);
3,658✔
6049
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6050
    code = nodeListToJson(pJson, jkSelectStmtProjections, pNode->pProjectionList);
3,658✔
6051
  }
6052
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6053
    code = tjsonAddObject(pJson, jkSelectStmtFrom, nodeToJson, pNode->pFromTable);
3,658✔
6054
  }
6055
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6056
    code = tjsonAddObject(pJson, jkSelectStmtWhere, nodeToJson, pNode->pWhere);
3,658✔
6057
  }
6058
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6059
    code = nodeListToJson(pJson, jkSelectStmtPartitionBy, pNode->pPartitionByList);
3,658✔
6060
  }
6061
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6062
    code = nodeListToJson(pJson, jkSelectStmtTags, pNode->pTags);
3,658✔
6063
  }
6064
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6065
    code = tjsonAddObject(pJson, jkSelectStmtSubtable, nodeToJson, pNode->pSubtable);
3,658✔
6066
  }
6067
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6068
    code = tjsonAddObject(pJson, jkSelectStmtWindow, nodeToJson, pNode->pWindow);
3,658✔
6069
  }
6070
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6071
    code = nodeListToJson(pJson, jkSelectStmtGroupBy, pNode->pGroupByList);
3,658✔
6072
  }
6073
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6074
    code = tjsonAddObject(pJson, jkSelectStmtHaving, nodeToJson, pNode->pHaving);
3,658✔
6075
  }
6076
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6077
    code = nodeListToJson(pJson, jkSelectStmtOrderBy, pNode->pOrderByList);
3,658✔
6078
  }
6079
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6080
    code = tjsonAddObject(pJson, jkSelectStmtLimit, nodeToJson, pNode->pLimit);
3,658✔
6081
  }
6082
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6083
    code = tjsonAddObject(pJson, jkSelectStmtSlimit, nodeToJson, pNode->pSlimit);
3,658✔
6084
  }
6085
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6086
    code = tjsonAddStringToObject(pJson, jkSelectStmtStmtName, pNode->stmtName);
3,658✔
6087
  }
6088
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6089
    code = tjsonAddBoolToObject(pJson, jkSelectStmtHasAggFuncs, pNode->hasAggFuncs);
3,658✔
6090
  }
6091
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6092
    code = tjsonAddBoolToObject(pJson, jkSelectStmtInterpFuncs, pNode->hasInterpFunc);
3,658✔
6093
  }
6094
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6095
    code = tjsonAddBoolToObject(pJson, jkSelectStmtTwaOrElapsedFuncs, pNode->hasTwaOrElapsedFunc);
3,658✔
6096
  }
6097
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6098
    code = tjsonAddObject(pJson, jkSelectStmtInterpFill, nodeToJson, pNode->pFill);
3,658✔
6099
  }
6100
  if (TSDB_CODE_SUCCESS == code) {
3,658!
6101
    code = tjsonAddObject(pJson, jkSelectStmtInterpEvery, nodeToJson, pNode->pEvery);
3,658✔
6102
  }
6103

6104
  return code;
3,658✔
6105
}
6106

6107
static int32_t jsonToSelectStmt(const SJson* pJson, void* pObj) {
7,467✔
6108
  SSelectStmt* pNode = (SSelectStmt*)pObj;
7,467✔
6109

6110
  int32_t code = tjsonGetBoolValue(pJson, jkSelectStmtDistinct, &pNode->isDistinct);
7,467✔
6111
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6112
    code = jsonToNodeList(pJson, jkSelectStmtProjections, &pNode->pProjectionList);
7,467✔
6113
  }
6114
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6115
    code = jsonToNodeObject(pJson, jkSelectStmtFrom, &pNode->pFromTable);
7,467✔
6116
  }
6117
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6118
    code = jsonToNodeObject(pJson, jkSelectStmtWhere, &pNode->pWhere);
7,467✔
6119
  }
6120
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6121
    code = jsonToNodeList(pJson, jkSelectStmtPartitionBy, &pNode->pPartitionByList);
7,467✔
6122
  }
6123
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6124
    code = jsonToNodeList(pJson, jkSelectStmtTags, &pNode->pTags);
7,467✔
6125
  }
6126
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6127
    code = jsonToNodeObject(pJson, jkSelectStmtSubtable, &pNode->pSubtable);
7,467✔
6128
  }
6129
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6130
    code = jsonToNodeObject(pJson, jkSelectStmtWindow, &pNode->pWindow);
7,467✔
6131
  }
6132
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6133
    code = jsonToNodeList(pJson, jkSelectStmtGroupBy, &pNode->pGroupByList);
7,467✔
6134
  }
6135
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6136
    code = jsonToNodeObject(pJson, jkSelectStmtHaving, &pNode->pHaving);
7,467✔
6137
  }
6138
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6139
    code = jsonToNodeList(pJson, jkSelectStmtOrderBy, &pNode->pOrderByList);
7,467✔
6140
  }
6141
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6142
    code = jsonToNodeObject(pJson, jkSelectStmtLimit, (SNode**)&pNode->pLimit);
7,467✔
6143
  }
6144
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6145
    code = jsonToNodeObject(pJson, jkSelectStmtSlimit, (SNode**)&pNode->pSlimit);
7,467✔
6146
  }
6147
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6148
    code = tjsonGetStringValue(pJson, jkSelectStmtStmtName, pNode->stmtName);
7,467✔
6149
  }
6150
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6151
    code = tjsonGetBoolValue(pJson, jkSelectStmtHasAggFuncs, &pNode->hasAggFuncs);
7,467✔
6152
  }
6153
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6154
    code = tjsonGetBoolValue(pJson, jkSelectStmtInterpFuncs, &pNode->hasInterpFunc);
7,467✔
6155
  }
6156
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6157
    code = tjsonGetBoolValue(pJson, jkSelectStmtTwaOrElapsedFuncs, &pNode->hasTwaOrElapsedFunc);
7,467✔
6158
  }
6159
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6160
    code = jsonToNodeObject(pJson, jkSelectStmtInterpFill, &pNode->pFill);
7,467✔
6161
  }
6162
  if (TSDB_CODE_SUCCESS == code) {
7,467!
6163
    code = jsonToNodeObject(pJson, jkSelectStmtInterpEvery, &pNode->pEvery);
7,467✔
6164
  }
6165

6166
  return code;
7,467✔
6167
}
6168

6169
static const char* jkVnodeModifyOpStmtSqlNodeType = "SqlNodeType";
6170
static const char* jkVnodeModifyOpStmtTotalRowsNum = "TotalRowsNum";
6171
static const char* jkVnodeModifyOpStmtTotalTbNum = "TotalTbNum";
6172

6173
static int32_t vnodeModifyStmtToJson(const void* pObj, SJson* pJson) {
120✔
6174
  const SVnodeModifyOpStmt* pNode = (const SVnodeModifyOpStmt*)pObj;
120✔
6175

6176
  int32_t code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType);
120✔
6177
  if (TSDB_CODE_SUCCESS == code) {
120!
6178
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalRowsNum, pNode->totalRowsNum);
120✔
6179
  }
6180
  if (TSDB_CODE_SUCCESS == code) {
120!
6181
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalTbNum, pNode->totalTbNum);
120✔
6182
  }
6183

6184
  return code;
120✔
6185
}
6186

6187
static int32_t jsonToVnodeModifyStmt(const SJson* pJson, void* pObj) {
120✔
6188
  SVnodeModifyOpStmt* pNode = (SVnodeModifyOpStmt*)pObj;
120✔
6189

6190
  int32_t code = TSDB_CODE_SUCCESS;
120✔
6191
  tjsonGetNumberValue(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType, code);
120✔
6192
  if (TSDB_CODE_SUCCESS == code) {
120!
6193
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalRowsNum, &pNode->totalRowsNum);
120✔
6194
  }
6195
  if (TSDB_CODE_SUCCESS == code) {
120!
6196
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalTbNum, &pNode->totalTbNum);
120✔
6197
  }
6198

6199
  return code;
120✔
6200
}
6201

6202
static const char* jkCreateDatabaseStmtDbName = "DbName";
6203
static const char* jkCreateDatabaseStmtIgnoreExists = "IgnoreExists";
6204
static const char* jkCreateDatabaseStmtOptions = "Options";
6205

6206
static int32_t createDatabaseStmtToJson(const void* pObj, SJson* pJson) {
54✔
6207
  const SCreateDatabaseStmt* pNode = (const SCreateDatabaseStmt*)pObj;
54✔
6208

6209
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
54✔
6210
  if (TSDB_CODE_SUCCESS == code) {
54!
6211
    code = tjsonAddBoolToObject(pJson, jkCreateDatabaseStmtIgnoreExists, pNode->ignoreExists);
54✔
6212
  }
6213
  if (TSDB_CODE_SUCCESS == code) {
54!
6214
    code = tjsonAddObject(pJson, jkCreateDatabaseStmtOptions, nodeToJson, pNode->pOptions);
54✔
6215
  }
6216

6217
  return code;
54✔
6218
}
6219

6220
static int32_t jsonToCreateDatabaseStmt(const SJson* pJson, void* pObj) {
54✔
6221
  SCreateDatabaseStmt* pNode = (SCreateDatabaseStmt*)pObj;
54✔
6222

6223
  int32_t code = tjsonGetStringValue(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
54✔
6224
  if (TSDB_CODE_SUCCESS == code) {
54!
6225
    code = tjsonGetBoolValue(pJson, jkCreateDatabaseStmtIgnoreExists, &pNode->ignoreExists);
54✔
6226
  }
6227
  if (TSDB_CODE_SUCCESS == code) {
54!
6228
    code = jsonToNodeObject(pJson, jkCreateDatabaseStmtOptions, (SNode**)&pNode->pOptions);
54✔
6229
  }
6230

6231
  return code;
54✔
6232
}
6233

6234
static const char* jkAlterDatabaseStmtDbName = "DbName";
6235
static const char* jkAlterDatabaseStmtOptions = "Options";
6236

6237
static int32_t alterDatabaseStmtToJson(const void* pObj, SJson* pJson) {
366✔
6238
  const SAlterDatabaseStmt* pNode = (const SAlterDatabaseStmt*)pObj;
366✔
6239

6240
  int32_t code = tjsonAddStringToObject(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
366✔
6241
  if (TSDB_CODE_SUCCESS == code) {
366!
6242
    code = tjsonAddObject(pJson, jkAlterDatabaseStmtOptions, nodeToJson, pNode->pOptions);
366✔
6243
  }
6244

6245
  return code;
366✔
6246
}
6247

6248
static int32_t jsonToAlterDatabaseStmt(const SJson* pJson, void* pObj) {
366✔
6249
  SAlterDatabaseStmt* pNode = (SAlterDatabaseStmt*)pObj;
366✔
6250

6251
  int32_t code = tjsonGetStringValue(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
366✔
6252
  if (TSDB_CODE_SUCCESS == code) {
366!
6253
    code = jsonToNodeObject(pJson, jkAlterDatabaseStmtOptions, (SNode**)&pNode->pOptions);
366✔
6254
  }
6255

6256
  return code;
366✔
6257
}
6258

6259
static const char* jkTrimDatabaseStmtDbName = "DbName";
6260
static const char* jkTrimDatabaseStmtMaxSpeed = "MaxSpeed";
6261

6262
static int32_t trimDatabaseStmtToJson(const void* pObj, SJson* pJson) {
18✔
6263
  const STrimDatabaseStmt* pNode = (const STrimDatabaseStmt*)pObj;
18✔
6264

6265
  int32_t code = tjsonAddStringToObject(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
18✔
6266
  if (TSDB_CODE_SUCCESS == code) {
18!
6267
    code = tjsonAddIntegerToObject(pJson, jkTrimDatabaseStmtMaxSpeed, pNode->maxSpeed);
18✔
6268
  }
6269

6270
  return code;
18✔
6271
}
6272

6273
static int32_t jsonToTrimDatabaseStmt(const SJson* pJson, void* pObj) {
18✔
6274
  STrimDatabaseStmt* pNode = (STrimDatabaseStmt*)pObj;
18✔
6275

6276
  int32_t code = tjsonGetStringValue(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
18✔
6277
  if (TSDB_CODE_SUCCESS == code) {
18!
6278
    code = tjsonGetIntValue(pJson, jkTrimDatabaseStmtMaxSpeed, &pNode->maxSpeed);
18✔
6279
  }
6280

6281
  return code;
18✔
6282
}
6283

6284
static const char* jkS3MigrateDatabaseStmtDbName = "DbName";
6285

6286
static int32_t s3migrateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6287
  const SS3MigrateDatabaseStmt* pNode = (const SS3MigrateDatabaseStmt*)pObj;
×
6288

6289
  int32_t code = tjsonAddStringToObject(pJson, jkS3MigrateDatabaseStmtDbName, pNode->dbName);
×
6290

6291
  return code;
×
6292
}
6293

6294
static int32_t jsonToS3MigrateDatabaseStmt(const SJson* pJson, void* pObj) {
×
6295
  SS3MigrateDatabaseStmt* pNode = (SS3MigrateDatabaseStmt*)pObj;
×
6296

6297
  int32_t code = tjsonGetStringValue(pJson, jkS3MigrateDatabaseStmtDbName, pNode->dbName);
×
6298

6299
  return code;
×
6300
}
6301

6302
static const char* jkCreateTableStmtDbName = "DbName";
6303
static const char* jkCreateTableStmtTableName = "TableName";
6304
static const char* jkCreateTableStmtIgnoreExists = "IgnoreExists";
6305
static const char* jkCreateTableStmtCols = "Cols";
6306
static const char* jkCreateTableStmtTags = "Tags";
6307
static const char* jkCreateTableStmtOptions = "Options";
6308

6309
static int32_t createTableStmtToJson(const void* pObj, SJson* pJson) {
45✔
6310
  const SCreateTableStmt* pNode = (const SCreateTableStmt*)pObj;
45✔
6311

6312
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTableStmtDbName, pNode->dbName);
45✔
6313
  if (TSDB_CODE_SUCCESS == code) {
45!
6314
    code = tjsonAddStringToObject(pJson, jkCreateTableStmtTableName, pNode->tableName);
45✔
6315
  }
6316
  if (TSDB_CODE_SUCCESS == code) {
45!
6317
    code = tjsonAddBoolToObject(pJson, jkCreateTableStmtIgnoreExists, pNode->ignoreExists);
45✔
6318
  }
6319
  if (TSDB_CODE_SUCCESS == code) {
45!
6320
    code = nodeListToJson(pJson, jkCreateTableStmtCols, pNode->pCols);
45✔
6321
  }
6322
  if (TSDB_CODE_SUCCESS == code) {
45!
6323
    code = nodeListToJson(pJson, jkCreateTableStmtTags, pNode->pTags);
45✔
6324
  }
6325
  if (TSDB_CODE_SUCCESS == code) {
45!
6326
    code = tjsonAddObject(pJson, jkCreateTableStmtOptions, nodeToJson, pNode->pOptions);
45✔
6327
  }
6328

6329
  return code;
45✔
6330
}
6331

6332
static int32_t jsonToCreateTableStmt(const SJson* pJson, void* pObj) {
45✔
6333
  SCreateTableStmt* pNode = (SCreateTableStmt*)pObj;
45✔
6334

6335
  int32_t code = tjsonGetStringValue(pJson, jkCreateTableStmtDbName, pNode->dbName);
45✔
6336
  if (TSDB_CODE_SUCCESS == code) {
45!
6337
    code = tjsonGetStringValue(pJson, jkCreateTableStmtTableName, pNode->tableName);
45✔
6338
  }
6339
  if (TSDB_CODE_SUCCESS == code) {
45!
6340
    code = tjsonGetBoolValue(pJson, jkCreateTableStmtIgnoreExists, &pNode->ignoreExists);
45✔
6341
  }
6342
  if (TSDB_CODE_SUCCESS == code) {
45!
6343
    code = jsonToNodeList(pJson, jkCreateTableStmtCols, &pNode->pCols);
45✔
6344
  }
6345
  if (TSDB_CODE_SUCCESS == code) {
45!
6346
    code = jsonToNodeList(pJson, jkCreateTableStmtTags, &pNode->pTags);
45✔
6347
  }
6348
  if (TSDB_CODE_SUCCESS == code) {
45!
6349
    code = jsonToNodeObject(pJson, jkCreateTableStmtOptions, (SNode**)&pNode->pOptions);
45✔
6350
  }
6351

6352
  return code;
45✔
6353
}
6354

6355
static const char* jkCreateSubTableClauseDbName = "DbName";
6356
static const char* jkCreateSubTableClauseTableName = "TableName";
6357
static const char* jkCreateSubTableClauseUseDbName = "UseDbName";
6358
static const char* jkCreateSubTableClauseUseTableName = "UseTableName";
6359
static const char* jkCreateSubTableClauseIgnoreExists = "IgnoreExists";
6360
static const char* jkCreateSubTableClauseSpecificTags = "SpecificTags";
6361
static const char* jkCreateSubTableClauseValsOfTags = "ValsOfTags";
6362
static const char* jkCreateSubTableClauseOptions = "Options";
6363

6364
static int32_t createSubTableClauseToJson(const void* pObj, SJson* pJson) {
15✔
6365
  const SCreateSubTableClause* pNode = (const SCreateSubTableClause*)pObj;
15✔
6366

6367
  int32_t code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
15✔
6368
  if (TSDB_CODE_SUCCESS == code) {
15!
6369
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
15✔
6370
  }
6371
  if (TSDB_CODE_SUCCESS == code) {
15!
6372
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
15✔
6373
  }
6374
  if (TSDB_CODE_SUCCESS == code) {
15!
6375
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
15✔
6376
  }
6377
  if (TSDB_CODE_SUCCESS == code) {
15!
6378
    code = tjsonAddBoolToObject(pJson, jkCreateSubTableClauseIgnoreExists, pNode->ignoreExists);
15✔
6379
  }
6380
  if (TSDB_CODE_SUCCESS == code) {
15!
6381
    code = nodeListToJson(pJson, jkCreateSubTableClauseSpecificTags, pNode->pSpecificTags);
15✔
6382
  }
6383
  if (TSDB_CODE_SUCCESS == code) {
15!
6384
    code = nodeListToJson(pJson, jkCreateSubTableClauseValsOfTags, pNode->pValsOfTags);
15✔
6385
  }
6386
  if (TSDB_CODE_SUCCESS == code) {
15!
6387
    code = tjsonAddObject(pJson, jkCreateSubTableClauseOptions, nodeToJson, pNode->pOptions);
15✔
6388
  }
6389

6390
  return code;
15✔
6391
}
6392

6393
static int32_t jsonToCreateSubTableClause(const SJson* pJson, void* pObj) {
15✔
6394
  SCreateSubTableClause* pNode = (SCreateSubTableClause*)pObj;
15✔
6395

6396
  int32_t code = tjsonGetStringValue(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
15✔
6397
  if (TSDB_CODE_SUCCESS == code) {
15!
6398
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
15✔
6399
  }
6400
  if (TSDB_CODE_SUCCESS == code) {
15!
6401
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
15✔
6402
  }
6403
  if (TSDB_CODE_SUCCESS == code) {
15!
6404
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
15✔
6405
  }
6406
  if (TSDB_CODE_SUCCESS == code) {
15!
6407
    code = tjsonGetBoolValue(pJson, jkCreateSubTableClauseIgnoreExists, &pNode->ignoreExists);
15✔
6408
  }
6409
  if (TSDB_CODE_SUCCESS == code) {
15!
6410
    code = jsonToNodeList(pJson, jkCreateSubTableClauseSpecificTags, &pNode->pSpecificTags);
15✔
6411
  }
6412
  if (TSDB_CODE_SUCCESS == code) {
15!
6413
    code = jsonToNodeList(pJson, jkCreateSubTableClauseValsOfTags, &pNode->pValsOfTags);
15✔
6414
  }
6415
  if (TSDB_CODE_SUCCESS == code) {
15!
6416
    code = jsonToNodeObject(pJson, jkCreateSubTableClauseOptions, (SNode**)&pNode->pOptions);
15✔
6417
  }
6418

6419
  return code;
15✔
6420
}
6421

6422
static const char* jkCreateMultiTablesStmtSubTables = "SubTables";
6423

6424
static int32_t createMultiTablesStmtToJson(const void* pObj, SJson* pJson) {
9✔
6425
  const SCreateMultiTablesStmt* pNode = (const SCreateMultiTablesStmt*)pObj;
9✔
6426
  return nodeListToJson(pJson, jkCreateMultiTablesStmtSubTables, pNode->pSubTables);
9✔
6427
}
6428

6429
static int32_t jsonToCreateMultiTablesStmt(const SJson* pJson, void* pObj) {
9✔
6430
  SCreateMultiTablesStmt* pNode = (SCreateMultiTablesStmt*)pObj;
9✔
6431
  return jsonToNodeList(pJson, jkCreateMultiTablesStmtSubTables, &pNode->pSubTables);
9✔
6432
}
6433

6434
static const char* jkDropTableClauseDbName = "DbName";
6435
static const char* jkDropTableClauseTableName = "TableName";
6436
static const char* jkDropTableClauseIgnoreNotExists = "IgnoreNotExists";
6437

6438
static int32_t dropTableClauseToJson(const void* pObj, SJson* pJson) {
12✔
6439
  const SDropTableClause* pNode = (const SDropTableClause*)pObj;
12✔
6440

6441
  int32_t code = tjsonAddStringToObject(pJson, jkDropTableClauseDbName, pNode->dbName);
12✔
6442
  if (TSDB_CODE_SUCCESS == code) {
12!
6443
    code = tjsonAddStringToObject(pJson, jkDropTableClauseTableName, pNode->tableName);
12✔
6444
  }
6445
  if (TSDB_CODE_SUCCESS == code) {
12!
6446
    code = tjsonAddBoolToObject(pJson, jkDropTableClauseIgnoreNotExists, pNode->ignoreNotExists);
12✔
6447
  }
6448

6449
  return code;
12✔
6450
}
6451

6452
static int32_t jsonToDropTableClause(const SJson* pJson, void* pObj) {
12✔
6453
  SDropTableClause* pNode = (SDropTableClause*)pObj;
12✔
6454

6455
  int32_t code = tjsonGetStringValue(pJson, jkDropTableClauseDbName, pNode->dbName);
12✔
6456
  if (TSDB_CODE_SUCCESS == code) {
12!
6457
    code = tjsonGetStringValue(pJson, jkDropTableClauseTableName, pNode->tableName);
12✔
6458
  }
6459
  if (TSDB_CODE_SUCCESS == code) {
12!
6460
    code = tjsonGetBoolValue(pJson, jkDropTableClauseIgnoreNotExists, &pNode->ignoreNotExists);
12✔
6461
  }
6462

6463
  return code;
12✔
6464
}
6465

6466
static const char* jkDropTableStmtTables = "Tables";
6467

6468
static int32_t dropTableStmtToJson(const void* pObj, SJson* pJson) {
6✔
6469
  const SDropTableStmt* pNode = (const SDropTableStmt*)pObj;
6✔
6470
  return nodeListToJson(pJson, jkDropTableStmtTables, pNode->pTables);
6✔
6471
}
6472

6473
static int32_t jsonToDropTableStmt(const SJson* pJson, void* pObj) {
6✔
6474
  SDropTableStmt* pNode = (SDropTableStmt*)pObj;
6✔
6475
  return jsonToNodeList(pJson, jkDropTableStmtTables, &pNode->pTables);
6✔
6476
}
6477

6478
static const char* jkDropSuperTableStmtDbName = "DbName";
6479
static const char* jkDropSuperTableStmtTableName = "TableName";
6480
static const char* jkDropSuperTableStmtIgnoreNotExists = "IgnoreNotExists";
6481
static const char* jkDropSuperTableStmtwithOpt = "withOpt";
6482

6483
static int32_t dropStableStmtToJson(const void* pObj, SJson* pJson) {
9✔
6484
  const SDropSuperTableStmt* pNode = (const SDropSuperTableStmt*)pObj;
9✔
6485

6486
  int32_t code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
9✔
6487
  if (TSDB_CODE_SUCCESS == code) {
9!
6488
    code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
9✔
6489
  }
6490
  if (TSDB_CODE_SUCCESS == code) {
9!
6491
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtIgnoreNotExists, pNode->ignoreNotExists);
9✔
6492
  }
6493
  if (TSDB_CODE_SUCCESS == code) {
9!
6494
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtwithOpt, pNode->withOpt);
9✔
6495
  }
6496

6497
  return code;
9✔
6498
}
6499

6500
static int32_t jsonToDropStableStmt(const SJson* pJson, void* pObj) {
9✔
6501
  SDropSuperTableStmt* pNode = (SDropSuperTableStmt*)pObj;
9✔
6502

6503
  int32_t code = tjsonGetStringValue(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
9✔
6504
  if (TSDB_CODE_SUCCESS == code) {
9!
6505
    code = tjsonGetStringValue(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
9✔
6506
  }
6507
  if (TSDB_CODE_SUCCESS == code) {
9!
6508
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtIgnoreNotExists, &pNode->ignoreNotExists);
9✔
6509
  }
6510
  if (TSDB_CODE_SUCCESS == code) {
9!
6511
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtwithOpt, &pNode->withOpt);
9✔
6512
  }
6513

6514
  return code;
9✔
6515
}
6516

6517
static const char* jkAlterTableStmtDbName = "DbName";
6518
static const char* jkAlterTableStmtTableName = "TableName";
6519
static const char* jkAlterTableStmtAlterType = "AlterType";
6520
static const char* jkAlterTableStmtColName = "ColName";
6521
static const char* jkAlterTableStmtNewColName = "NewColName";
6522
static const char* jkAlterTableStmtOptions = "Options";
6523
static const char* jkAlterTableStmtNewDataType = "NewDataType";
6524
static const char* jkAlterTableStmtNewTagVal = "NewTagVal";
6525

6526
static int32_t alterTableStmtToJson(const void* pObj, SJson* pJson) {
162✔
6527
  const SAlterTableStmt* pNode = (const SAlterTableStmt*)pObj;
162✔
6528

6529
  int32_t code = tjsonAddStringToObject(pJson, jkAlterTableStmtDbName, pNode->dbName);
162✔
6530
  if (TSDB_CODE_SUCCESS == code) {
162!
6531
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtTableName, pNode->tableName);
162✔
6532
  }
6533
  if (TSDB_CODE_SUCCESS == code) {
162!
6534
    code = tjsonAddIntegerToObject(pJson, jkAlterTableStmtAlterType, pNode->alterType);
162✔
6535
  }
6536
  if (TSDB_CODE_SUCCESS == code) {
162!
6537
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtColName, pNode->colName);
162✔
6538
  }
6539
  if (TSDB_CODE_SUCCESS == code) {
162!
6540
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtNewColName, pNode->newColName);
162✔
6541
  }
6542
  if (TSDB_CODE_SUCCESS == code) {
162!
6543
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pOptions);
162✔
6544
  }
6545
  if (TSDB_CODE_SUCCESS == code) {
162!
6546
    code = tjsonAddObject(pJson, jkAlterTableStmtNewDataType, dataTypeToJson, &pNode->dataType);
162✔
6547
  }
6548
  if (TSDB_CODE_SUCCESS == code) {
162!
6549
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pVal);
162✔
6550
  }
6551

6552
  return code;
162✔
6553
}
6554

6555
static int32_t jsonToAlterTableStmt(const SJson* pJson, void* pObj) {
162✔
6556
  SAlterTableStmt* pNode = (SAlterTableStmt*)pObj;
162✔
6557

6558
  int32_t code = tjsonGetStringValue(pJson, jkAlterTableStmtDbName, pNode->dbName);
162✔
6559
  if (TSDB_CODE_SUCCESS == code) {
162!
6560
    code = tjsonGetStringValue(pJson, jkAlterTableStmtTableName, pNode->tableName);
162✔
6561
  }
6562
  if (TSDB_CODE_SUCCESS == code) {
162!
6563
    code = tjsonGetTinyIntValue(pJson, jkAlterTableStmtAlterType, &pNode->alterType);
162✔
6564
  }
6565
  if (TSDB_CODE_SUCCESS == code) {
162!
6566
    code = tjsonGetStringValue(pJson, jkAlterTableStmtColName, pNode->colName);
162✔
6567
  }
6568
  if (TSDB_CODE_SUCCESS == code) {
162!
6569
    code = tjsonGetStringValue(pJson, jkAlterTableStmtNewColName, pNode->newColName);
162✔
6570
  }
6571
  if (TSDB_CODE_SUCCESS == code) {
162!
6572
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pOptions);
162✔
6573
  }
6574
  if (TSDB_CODE_SUCCESS == code) {
162!
6575
    code = tjsonToObject(pJson, jkAlterTableStmtNewDataType, jsonToDataType, &pNode->dataType);
162✔
6576
  }
6577
  if (TSDB_CODE_SUCCESS == code) {
162!
6578
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pVal);
162✔
6579
  }
6580

6581
  return code;
162✔
6582
}
6583

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

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

6588
static const char* jkCreateUserStmtUserName = "UserName";
6589
static const char* jkCreateUserStmtPassword = "Password";
6590
static const char* jkCreateUserStmtSysinfo = "Sysinfo";
6591

6592
static int32_t createUserStmtToJson(const void* pObj, SJson* pJson) {
18✔
6593
  const SCreateUserStmt* pNode = (const SCreateUserStmt*)pObj;
18✔
6594

6595
  int32_t code = tjsonAddStringToObject(pJson, jkCreateUserStmtUserName, pNode->userName);
18✔
6596
  if (TSDB_CODE_SUCCESS == code) {
18!
6597
    code = tjsonAddStringToObject(pJson, jkCreateUserStmtPassword, pNode->password);
18✔
6598
  }
6599
  if (TSDB_CODE_SUCCESS == code) {
18!
6600
    code = tjsonAddIntegerToObject(pJson, jkCreateUserStmtSysinfo, pNode->sysinfo);
18✔
6601
  }
6602

6603
  return code;
18✔
6604
}
6605

6606
static int32_t jsonToCreateUserStmt(const SJson* pJson, void* pObj) {
18✔
6607
  SCreateUserStmt* pNode = (SCreateUserStmt*)pObj;
18✔
6608

6609
  int32_t code = tjsonGetStringValue(pJson, jkCreateUserStmtUserName, pNode->userName);
18✔
6610
  if (TSDB_CODE_SUCCESS == code) {
18!
6611
    code = tjsonGetStringValue(pJson, jkCreateUserStmtPassword, pNode->password);
18✔
6612
  }
6613
  if (TSDB_CODE_SUCCESS == code) {
18!
6614
    code = tjsonGetTinyIntValue(pJson, jkCreateUserStmtSysinfo, &pNode->sysinfo);
18✔
6615
  }
6616

6617
  return code;
18✔
6618
}
6619

6620
static const char* jkAlterUserStmtUserName = "UserName";
6621
static const char* jkAlterUserStmtAlterType = "AlterType";
6622
static const char* jkAlterUserStmtPassword = "Password";
6623
static const char* jkAlterUserStmtEnable = "Enable";
6624
static const char* jkAlterUserStmtSysinfo = "Sysinfo";
6625
static const char* jkAlterUserStmtCreatedb = "Createdb";
6626

6627
static int32_t alterUserStmtToJson(const void* pObj, SJson* pJson) {
27✔
6628
  const SAlterUserStmt* pNode = (const SAlterUserStmt*)pObj;
27✔
6629

6630
  int32_t code = tjsonAddStringToObject(pJson, jkAlterUserStmtUserName, pNode->userName);
27✔
6631
  if (TSDB_CODE_SUCCESS == code) {
27!
6632
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtAlterType, pNode->alterType);
27✔
6633
  }
6634
  if (TSDB_CODE_SUCCESS == code) {
27!
6635
    code = tjsonAddStringToObject(pJson, jkAlterUserStmtPassword, pNode->password);
27✔
6636
  }
6637
  if (TSDB_CODE_SUCCESS == code) {
27!
6638
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtEnable, pNode->enable);
27✔
6639
  }
6640
  if (TSDB_CODE_SUCCESS == code) {
27!
6641
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtSysinfo, pNode->sysinfo);
27✔
6642
  }
6643
  if (TSDB_CODE_SUCCESS == code) {
27!
6644
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtCreatedb, pNode->createdb);
27✔
6645
  }
6646

6647
  return code;
27✔
6648
}
6649

6650
static int32_t jsonToAlterUserStmt(const SJson* pJson, void* pObj) {
27✔
6651
  SAlterUserStmt* pNode = (SAlterUserStmt*)pObj;
27✔
6652

6653
  int32_t code = tjsonGetStringValue(pJson, jkAlterUserStmtUserName, pNode->userName);
27✔
6654
  if (TSDB_CODE_SUCCESS == code) {
27!
6655
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtAlterType, &pNode->alterType);
27✔
6656
  }
6657
  if (TSDB_CODE_SUCCESS == code) {
27!
6658
    code = tjsonGetStringValue(pJson, jkAlterUserStmtPassword, pNode->password);
27✔
6659
  }
6660
  if (TSDB_CODE_SUCCESS == code) {
27!
6661
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtEnable, &pNode->enable);
27✔
6662
  }
6663
  if (TSDB_CODE_SUCCESS == code) {
27!
6664
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtSysinfo, &pNode->sysinfo);
27✔
6665
  }
6666
  if (TSDB_CODE_SUCCESS == code) {
27!
6667
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtCreatedb, &pNode->createdb);
27✔
6668
  }
6669

6670
  return code;
27✔
6671
}
6672

6673
static const char* jkDropUserStmtUserName = "UserName";
6674

6675
static int32_t dropUserStmtToJson(const void* pObj, SJson* pJson) {
9✔
6676
  const SDropUserStmt* pNode = (const SDropUserStmt*)pObj;
9✔
6677
  return tjsonAddStringToObject(pJson, jkDropUserStmtUserName, pNode->userName);
9✔
6678
}
6679

6680
static int32_t jsonToDropUserStmt(const SJson* pJson, void* pObj) {
9✔
6681
  SDropUserStmt* pNode = (SDropUserStmt*)pObj;
9✔
6682
  return tjsonGetStringValue(pJson, jkDropUserStmtUserName, pNode->userName);
9✔
6683
}
6684

6685
static const char* jkUseDatabaseStmtDbName = "DbName";
6686

6687
static int32_t useDatabaseStmtToJson(const void* pObj, SJson* pJson) {
9✔
6688
  const SUseDatabaseStmt* pNode = (const SUseDatabaseStmt*)pObj;
9✔
6689
  return tjsonAddStringToObject(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
9✔
6690
}
6691

6692
static int32_t jsonToUseDatabaseStmt(const SJson* pJson, void* pObj) {
9✔
6693
  SUseDatabaseStmt* pNode = (SUseDatabaseStmt*)pObj;
9✔
6694
  return tjsonGetStringValue(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
9✔
6695
}
6696

6697
static const char* jkCreateDnodeStmtFqdn = "Fqdn";
6698
static const char* jkCreateDnodeStmtPort = "Port";
6699

6700
static int32_t createDnodeStmtToJson(const void* pObj, SJson* pJson) {
54✔
6701
  const SCreateDnodeStmt* pNode = (const SCreateDnodeStmt*)pObj;
54✔
6702

6703
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
54✔
6704
  if (TSDB_CODE_SUCCESS == code) {
54!
6705
    code = tjsonAddIntegerToObject(pJson, jkCreateDnodeStmtPort, pNode->port);
54✔
6706
  }
6707

6708
  return code;
54✔
6709
}
6710

6711
static int32_t jsonToCreateDnodeStmt(const SJson* pJson, void* pObj) {
54✔
6712
  SCreateDnodeStmt* pNode = (SCreateDnodeStmt*)pObj;
54✔
6713

6714
  int32_t code = tjsonGetStringValue(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
54✔
6715
  if (TSDB_CODE_SUCCESS == code) {
54!
6716
    code = tjsonGetIntValue(pJson, jkCreateDnodeStmtPort, &pNode->port);
54✔
6717
  }
6718

6719
  return code;
54✔
6720
}
6721

6722
static const char* jkAlterDnodeStmtDnodeId = "DnodeId";
6723
static const char* jkAlterDnodeStmtConfig = "Config";
6724
static const char* jkAlterDnodeStmtValue = "Value";
6725

6726
static int32_t alterDnodeStmtToJson(const void* pObj, SJson* pJson) {
36✔
6727
  const SAlterDnodeStmt* pNode = (const SAlterDnodeStmt*)pObj;
36✔
6728

6729
  int32_t code = tjsonAddIntegerToObject(pJson, jkAlterDnodeStmtDnodeId, pNode->dnodeId);
36✔
6730
  if (TSDB_CODE_SUCCESS == code) {
36!
6731
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtConfig, pNode->config);
36✔
6732
  }
6733
  if (TSDB_CODE_SUCCESS == code) {
36!
6734
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtValue, pNode->value);
36✔
6735
  }
6736

6737
  return code;
36✔
6738
}
6739

6740
static int32_t jsonToAlterDnodeStmt(const SJson* pJson, void* pObj) {
36✔
6741
  SAlterDnodeStmt* pNode = (SAlterDnodeStmt*)pObj;
36✔
6742

6743
  int32_t code = tjsonGetIntValue(pJson, jkAlterDnodeStmtDnodeId, &pNode->dnodeId);
36✔
6744
  if (TSDB_CODE_SUCCESS == code) {
36!
6745
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtConfig, pNode->config);
36✔
6746
  }
6747
  if (TSDB_CODE_SUCCESS == code) {
36!
6748
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtValue, pNode->value);
36✔
6749
  }
6750

6751
  return code;
36✔
6752
}
6753

6754
static const char* jkCreateIndexStmtIndexType = "IndexType";
6755
static const char* jkCreateIndexStmtIgnoreExists = "IgnoreExists";
6756
static const char* jkCreateIndexStmtIndexDbName = "IndexDbName";
6757
static const char* jkCreateIndexStmtIndexName = "indexName";
6758
static const char* jkCreateIndexStmtDbName = "DbName";
6759
static const char* jkCreateIndexStmtTableName = "TableName";
6760
static const char* jkCreateIndexStmtCols = "Cols";
6761
static const char* jkCreateIndexStmtOptions = "Options";
6762

6763
static int32_t createIndexStmtToJson(const void* pObj, SJson* pJson) {
19✔
6764
  const SCreateIndexStmt* pNode = (const SCreateIndexStmt*)pObj;
19✔
6765

6766
  int32_t code = tjsonAddIntegerToObject(pJson, jkCreateIndexStmtIndexType, pNode->indexType);
19✔
6767
  if (TSDB_CODE_SUCCESS == code) {
19!
6768
    code = tjsonAddBoolToObject(pJson, jkCreateIndexStmtIgnoreExists, pNode->ignoreExists);
19✔
6769
  }
6770
  if (TSDB_CODE_SUCCESS == code) {
19!
6771
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
19✔
6772
  }
6773
  if (TSDB_CODE_SUCCESS == code) {
19!
6774
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
19✔
6775
  }
6776
  if (TSDB_CODE_SUCCESS == code) {
19!
6777
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtDbName, pNode->dbName);
19✔
6778
  }
6779
  if (TSDB_CODE_SUCCESS == code) {
19!
6780
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtTableName, pNode->tableName);
19✔
6781
  }
6782
  if (TSDB_CODE_SUCCESS == code) {
19!
6783
    code = nodeListToJson(pJson, jkCreateIndexStmtCols, pNode->pCols);
19✔
6784
  }
6785
  if (TSDB_CODE_SUCCESS == code) {
19!
6786
    code = tjsonAddObject(pJson, jkCreateIndexStmtOptions, nodeToJson, pNode->pOptions);
19✔
6787
  }
6788

6789
  return code;
19✔
6790
}
6791

6792
static int32_t jsonToCreateIndexStmt(const SJson* pJson, void* pObj) {
19✔
6793
  SCreateIndexStmt* pNode = (SCreateIndexStmt*)pObj;
19✔
6794

6795
  int32_t code = TSDB_CODE_SUCCESS;
19✔
6796
  tjsonGetNumberValue(pJson, jkCreateIndexStmtIndexType, pNode->indexType, code);
19✔
6797
  if (TSDB_CODE_SUCCESS == code) {
19!
6798
    code = tjsonGetBoolValue(pJson, jkCreateIndexStmtIgnoreExists, &pNode->ignoreExists);
19✔
6799
  }
6800
  if (TSDB_CODE_SUCCESS == code) {
19!
6801
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
19✔
6802
  }
6803
  if (TSDB_CODE_SUCCESS == code) {
19!
6804
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
19✔
6805
  }
6806
  if (TSDB_CODE_SUCCESS == code) {
19!
6807
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtDbName, pNode->dbName);
19✔
6808
  }
6809
  if (TSDB_CODE_SUCCESS == code) {
19!
6810
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtTableName, pNode->tableName);
19✔
6811
  }
6812
  if (TSDB_CODE_SUCCESS == code) {
19!
6813
    code = jsonToNodeList(pJson, jkCreateIndexStmtCols, &pNode->pCols);
19✔
6814
  }
6815
  if (TSDB_CODE_SUCCESS == code) {
19!
6816
    code = jsonToNodeObject(pJson, jkCreateIndexStmtOptions, (SNode**)&pNode->pOptions);
19✔
6817
  }
6818

6819
  return code;
19✔
6820
}
6821

6822
static const char* jkDropIndexStmtIgnoreNotExists = "IgnoreNotExists";
6823
static const char* jkDropIndexStmtIndexDbName = "IndexDbName";
6824
static const char* jkDropIndexStmtIndexName = "IndexName";
6825

6826
static int32_t dropIndexStmtToJson(const void* pObj, SJson* pJson) {
18✔
6827
  const SDropIndexStmt* pNode = (const SDropIndexStmt*)pObj;
18✔
6828

6829
  int32_t code = tjsonAddBoolToObject(pJson, jkDropIndexStmtIgnoreNotExists, pNode->ignoreNotExists);
18✔
6830
  if (TSDB_CODE_SUCCESS == code) {
18!
6831
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
18✔
6832
  }
6833
  if (TSDB_CODE_SUCCESS == code) {
18!
6834
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexName, pNode->indexName);
18✔
6835
  }
6836

6837
  return code;
18✔
6838
}
6839

6840
static int32_t jsonToDropIndexStmt(const SJson* pJson, void* pObj) {
18✔
6841
  SDropIndexStmt* pNode = (SDropIndexStmt*)pObj;
18✔
6842

6843
  int32_t code = tjsonGetBoolValue(pJson, jkDropIndexStmtIgnoreNotExists, &pNode->ignoreNotExists);
18✔
6844
  if (TSDB_CODE_SUCCESS == code) {
18!
6845
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
18✔
6846
  }
6847
  if (TSDB_CODE_SUCCESS == code) {
18!
6848
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexName, pNode->indexName);
18✔
6849
  }
6850

6851
  return code;
18✔
6852
}
6853

6854
static const char* jkCreateComponentNodeStmtDnodeId = "DnodeId";
6855

6856
static int32_t createComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
27✔
6857
  const SCreateComponentNodeStmt* pNode = (const SCreateComponentNodeStmt*)pObj;
27✔
6858
  return tjsonAddIntegerToObject(pJson, jkCreateComponentNodeStmtDnodeId, pNode->dnodeId);
27✔
6859
}
6860

6861
static int32_t jsonToCreateComponentNodeStmt(const SJson* pJson, void* pObj) {
27✔
6862
  SCreateComponentNodeStmt* pNode = (SCreateComponentNodeStmt*)pObj;
27✔
6863
  return tjsonGetIntValue(pJson, jkCreateComponentNodeStmtDnodeId, &pNode->dnodeId);
27✔
6864
}
6865

6866
static const char* jkDropComponentNodeStmtDnodeId = "DnodeId";
6867

6868
static int32_t dropComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
27✔
6869
  const SDropComponentNodeStmt* pNode = (const SDropComponentNodeStmt*)pObj;
27✔
6870
  return tjsonAddIntegerToObject(pJson, jkDropComponentNodeStmtDnodeId, pNode->dnodeId);
27✔
6871
}
6872

6873
static int32_t jsonToDropComponentNodeStmt(const SJson* pJson, void* pObj) {
27✔
6874
  SDropComponentNodeStmt* pNode = (SDropComponentNodeStmt*)pObj;
27✔
6875
  return tjsonGetIntValue(pJson, jkDropComponentNodeStmtDnodeId, &pNode->dnodeId);
27✔
6876
}
6877

6878
static int32_t createQnodeStmtToJson(const void* pObj, SJson* pJson) {
9✔
6879
  return createComponentNodeStmtToJson(pObj, pJson);
9✔
6880
}
6881

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

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

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

6890
static const char* jkCreateAnodeStmtUrl = "Url";
6891
static const char* jkUpdateDropANodeStmtId = "AnodeId";
6892

6893
static int32_t createAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6894
  const SCreateAnodeStmt* pNode = (const SCreateAnodeStmt*)pObj;
×
6895
  return tjsonAddStringToObject(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
6896
}
6897

6898
static int32_t jsonToCreateAnodeStmt(const SJson* pJson, void* pObj) {
×
6899
  SCreateAnodeStmt* pNode = (SCreateAnodeStmt*)pObj;
×
6900
  return tjsonGetStringValue(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
6901
}
6902

6903
static int32_t updateAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6904
  const SUpdateAnodeStmt* pNode = (const SUpdateAnodeStmt*)pObj;
×
6905
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
6906
}
6907

6908
static int32_t jsonToUpdateAnodeStmt(const SJson* pJson, void* pObj) {
×
6909
  SUpdateAnodeStmt* pNode = (SUpdateAnodeStmt*)pObj;
×
6910
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
6911
}
6912

6913
static int32_t dropAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6914
  const SDropAnodeStmt* pNode = (const SDropAnodeStmt*)pObj;
×
6915
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
6916
}
6917

6918
static int32_t jsonToDropAnodeStmt(const SJson* pJson, void* pObj) {
×
6919
  SDropAnodeStmt* pNode = (SDropAnodeStmt*)pObj;
×
6920
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
6921
}
6922

6923
static int32_t createSnodeStmtToJson(const void* pObj, SJson* pJson) {
9✔
6924
  return createComponentNodeStmtToJson(pObj, pJson);
9✔
6925
}
6926

6927
static int32_t jsonToCreateSnodeStmt(const SJson* pJson, void* pObj) {
9✔
6928
  return jsonToCreateComponentNodeStmt(pJson, pObj);
9✔
6929
}
6930

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

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

6935
static int32_t createMnodeStmtToJson(const void* pObj, SJson* pJson) {
9✔
6936
  return createComponentNodeStmtToJson(pObj, pJson);
9✔
6937
}
6938

6939
static int32_t jsonToCreateMnodeStmt(const SJson* pJson, void* pObj) {
9✔
6940
  return jsonToCreateComponentNodeStmt(pJson, pObj);
9✔
6941
}
6942

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

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

6947
static const char* jkDropDnodeStmtDnodeId = "DnodeId";
6948
static const char* jkDropDnodeStmtFqdn = "Fqdn";
6949
static const char* jkDropDnodeStmtPort = "Port";
6950
static const char* jkDropDnodeStmtForce = "Force";
6951
static const char* jkDropDnodeStmtUnsafe = "Unsafe";
6952

6953
static int32_t dropDnodeStmtToJson(const void* pObj, SJson* pJson) {
81✔
6954
  const SDropDnodeStmt* pNode = (const SDropDnodeStmt*)pObj;
81✔
6955

6956
  int32_t code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtDnodeId, pNode->dnodeId);
81✔
6957
  if (TSDB_CODE_SUCCESS == code) {
81!
6958
    code = tjsonAddStringToObject(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
81✔
6959
  }
6960
  if (TSDB_CODE_SUCCESS == code) {
81!
6961
    code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtPort, pNode->port);
81✔
6962
  }
6963
  if (TSDB_CODE_SUCCESS == code) {
81!
6964
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtForce, pNode->force);
81✔
6965
  }
6966
  if (TSDB_CODE_SUCCESS == code) {
81!
6967
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtUnsafe, pNode->unsafe);
81✔
6968
  }
6969

6970
  return code;
81✔
6971
}
6972

6973
static int32_t jsonToDropDnodeStmt(const SJson* pJson, void* pObj) {
81✔
6974
  SDropDnodeStmt* pNode = (SDropDnodeStmt*)pObj;
81✔
6975

6976
  int32_t code = tjsonGetIntValue(pJson, jkDropDnodeStmtDnodeId, &pNode->dnodeId);
81✔
6977
  if (TSDB_CODE_SUCCESS == code) {
81!
6978
    code = tjsonGetStringValue(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
81✔
6979
  }
6980
  if (TSDB_CODE_SUCCESS == code) {
81!
6981
    code = tjsonGetIntValue(pJson, jkDropDnodeStmtPort, &pNode->port);
81✔
6982
  }
6983
  if (TSDB_CODE_SUCCESS == code) {
81!
6984
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtForce, &pNode->force);
81✔
6985
  }
6986
  if (TSDB_CODE_SUCCESS == code) {
81!
6987
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtUnsafe, &pNode->unsafe);
81✔
6988
  }
6989

6990
  return code;
81✔
6991
}
6992

6993
static const char* jkRestoreComponentNodeStmtDnodeId = "DnodeId";
6994

6995
static int32_t restoreComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
6996
  const SRestoreComponentNodeStmt* pNode = (const SRestoreComponentNodeStmt*)pObj;
×
6997
  return tjsonAddIntegerToObject(pJson, jkRestoreComponentNodeStmtDnodeId, pNode->dnodeId);
×
6998
}
6999

7000
static int32_t jsonToRestoreComponentNodeStmt(const SJson* pJson, void* pObj) {
36✔
7001
  SRestoreComponentNodeStmt* pNode = (SRestoreComponentNodeStmt*)pObj;
36✔
7002
  return tjsonGetIntValue(pJson, jkRestoreComponentNodeStmtDnodeId, &pNode->dnodeId);
36✔
7003
}
7004

7005
static int32_t jsonToRestoreDnodeStmt(const SJson* pJson, void* pObj) {
9✔
7006
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
9✔
7007
}
7008
static int32_t jsonToRestoreQnodeStmt(const SJson* pJson, void* pObj) {
9✔
7009
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
9✔
7010
}
7011
static int32_t jsonToRestoreMnodeStmt(const SJson* pJson, void* pObj) {
9✔
7012
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
9✔
7013
}
7014
static int32_t jsonToRestoreVnodeStmt(const SJson* pJson, void* pObj) {
9✔
7015
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
9✔
7016
}
7017

7018
static const char* jkCreateTopicStmtTopicName = "TopicName";
7019
static const char* jkCreateTopicStmtSubscribeDbName = "SubscribeDbName";
7020
static const char* jkCreateTopicStmtIgnoreExists = "IgnoreExists";
7021
static const char* jkCreateTopicStmtQuery = "Query";
7022

7023
static int32_t createTopicStmtToJson(const void* pObj, SJson* pJson) {
73✔
7024
  const SCreateTopicStmt* pNode = (const SCreateTopicStmt*)pObj;
73✔
7025

7026
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
73✔
7027
  if (TSDB_CODE_SUCCESS == code) {
73!
7028
    code = tjsonAddStringToObject(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
73✔
7029
  }
7030
  if (TSDB_CODE_SUCCESS == code) {
73!
7031
    code = tjsonAddBoolToObject(pJson, jkCreateTopicStmtIgnoreExists, pNode->ignoreExists);
73✔
7032
  }
7033
  if (TSDB_CODE_SUCCESS == code) {
73!
7034
    code = tjsonAddObject(pJson, jkCreateTopicStmtQuery, nodeToJson, pNode->pQuery);
73✔
7035
  }
7036

7037
  return code;
73✔
7038
}
7039

7040
static int32_t jsonToCreateTopicStmt(const SJson* pJson, void* pObj) {
73✔
7041
  SCreateTopicStmt* pNode = (SCreateTopicStmt*)pObj;
73✔
7042

7043
  int32_t code = tjsonGetStringValue(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
73✔
7044
  if (TSDB_CODE_SUCCESS == code) {
73!
7045
    code = tjsonGetStringValue(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
73✔
7046
  }
7047
  if (TSDB_CODE_SUCCESS == code) {
73!
7048
    code = tjsonGetBoolValue(pJson, jkCreateTopicStmtIgnoreExists, &pNode->ignoreExists);
73✔
7049
  }
7050
  if (TSDB_CODE_SUCCESS == code) {
73!
7051
    code = jsonToNodeObject(pJson, jkCreateTopicStmtQuery, &pNode->pQuery);
73✔
7052
  }
7053

7054
  return code;
73✔
7055
}
7056

7057
static const char* jkDropTopicStmtTopicName = "TopicName";
7058
static const char* jkDropTopicStmtIgnoreNotExists = "IgnoreNotExists";
7059

7060
static int32_t dropTopicStmtToJson(const void* pObj, SJson* pJson) {
18✔
7061
  const SDropTopicStmt* pNode = (const SDropTopicStmt*)pObj;
18✔
7062

7063
  int32_t code = tjsonAddStringToObject(pJson, jkDropTopicStmtTopicName, pNode->topicName);
18✔
7064
  if (TSDB_CODE_SUCCESS == code) {
18!
7065
    code = tjsonAddBoolToObject(pJson, jkDropTopicStmtIgnoreNotExists, pNode->ignoreNotExists);
18✔
7066
  }
7067

7068
  return code;
18✔
7069
}
7070

7071
static int32_t jsonToDropTopicStmt(const SJson* pJson, void* pObj) {
18✔
7072
  SDropTopicStmt* pNode = (SDropTopicStmt*)pObj;
18✔
7073

7074
  int32_t code = tjsonGetStringValue(pJson, jkDropTopicStmtTopicName, pNode->topicName);
18✔
7075
  if (TSDB_CODE_SUCCESS == code) {
18!
7076
    code = tjsonGetBoolValue(pJson, jkDropTopicStmtIgnoreNotExists, &pNode->ignoreNotExists);
18✔
7077
  }
7078

7079
  return code;
18✔
7080
}
7081

7082
static const char* jkDropCGroupStmtTopicName = "TopicName";
7083
static const char* jkDropCGroupStmtConsumerGroup = "ConsumerGroup";
7084
static const char* jkDropCGroupStmtIgnoreNotExists = "IgnoreNotExists";
7085

7086
static int32_t dropConsumerGroupStmtToJson(const void* pObj, SJson* pJson) {
18✔
7087
  const SDropCGroupStmt* pNode = (const SDropCGroupStmt*)pObj;
18✔
7088

7089
  int32_t code = tjsonAddStringToObject(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
18✔
7090
  if (TSDB_CODE_SUCCESS == code) {
18!
7091
    code = tjsonAddStringToObject(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
18✔
7092
  }
7093
  if (TSDB_CODE_SUCCESS == code) {
18!
7094
    code = tjsonAddBoolToObject(pJson, jkDropCGroupStmtIgnoreNotExists, pNode->ignoreNotExists);
18✔
7095
  }
7096

7097
  return code;
18✔
7098
}
7099

7100
static int32_t jsonToDropConsumerGroupStmt(const SJson* pJson, void* pObj) {
18✔
7101
  SDropCGroupStmt* pNode = (SDropCGroupStmt*)pObj;
18✔
7102

7103
  int32_t code = tjsonGetStringValue(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
18✔
7104
  if (TSDB_CODE_SUCCESS == code) {
18!
7105
    code = tjsonGetStringValue(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
18✔
7106
  }
7107
  if (TSDB_CODE_SUCCESS == code) {
18!
7108
    code = tjsonGetBoolValue(pJson, jkDropCGroupStmtIgnoreNotExists, &pNode->ignoreNotExists);
18✔
7109
  }
7110

7111
  return code;
18✔
7112
}
7113

7114
static const char* jkAlterClusterStmtConfig = "Config";
7115
static const char* jkAlterClusterStmtValue = "Value";
7116

7117
static int32_t alterClusterStmtToJson(const void* pObj, SJson* pJson) {
×
7118
  const SAlterClusterStmt* pNode = (const SAlterClusterStmt*)pObj;
×
7119

7120
  int32_t code = tjsonAddStringToObject(pJson, jkAlterClusterStmtConfig, pNode->config);
×
7121
  if (TSDB_CODE_SUCCESS == code) {
×
7122
    code = tjsonAddStringToObject(pJson, jkAlterClusterStmtValue, pNode->value);
×
7123
  }
7124

7125
  return code;
×
7126
}
7127

7128
static int32_t jsonToAlterClusterStmt(const SJson* pJson, void* pObj) {
×
7129
  SAlterClusterStmt* pNode = (SAlterClusterStmt*)pObj;
×
7130

7131
  int32_t code = tjsonGetStringValue(pJson, jkAlterClusterStmtConfig, pNode->config);
×
7132
  if (TSDB_CODE_SUCCESS == code) {
×
7133
    code = tjsonGetStringValue(pJson, jkAlterClusterStmtValue, pNode->value);
×
7134
  }
7135

7136
  return code;
×
7137
}
7138

7139
static const char* jkAlterLocalStmtConfig = "Config";
7140
static const char* jkAlterLocalStmtValue = "Value";
7141

7142
static int32_t alterLocalStmtToJson(const void* pObj, SJson* pJson) {
18✔
7143
  const SAlterLocalStmt* pNode = (const SAlterLocalStmt*)pObj;
18✔
7144

7145
  int32_t code = tjsonAddStringToObject(pJson, jkAlterLocalStmtConfig, pNode->config);
18✔
7146
  if (TSDB_CODE_SUCCESS == code) {
18!
7147
    code = tjsonAddStringToObject(pJson, jkAlterLocalStmtValue, pNode->value);
18✔
7148
  }
7149

7150
  return code;
18✔
7151
}
7152

7153
static int32_t jsonToAlterLocalStmt(const SJson* pJson, void* pObj) {
18✔
7154
  SAlterLocalStmt* pNode = (SAlterLocalStmt*)pObj;
18✔
7155

7156
  int32_t code = tjsonGetStringValue(pJson, jkAlterLocalStmtConfig, pNode->config);
18✔
7157
  if (TSDB_CODE_SUCCESS == code) {
18!
7158
    code = tjsonGetStringValue(pJson, jkAlterLocalStmtValue, pNode->value);
18✔
7159
  }
7160

7161
  return code;
18✔
7162
}
7163

7164
static const char* jkExplainStmtAnalyze = "Analyze";
7165
static const char* jkExplainStmtOptions = "Options";
7166
static const char* jkExplainStmtQuery = "Query";
7167

7168
static int32_t explainStmtToJson(const void* pObj, SJson* pJson) {
30✔
7169
  const SExplainStmt* pNode = (const SExplainStmt*)pObj;
30✔
7170

7171
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainStmtAnalyze, pNode->analyze);
30✔
7172
  if (TSDB_CODE_SUCCESS == code) {
30!
7173
    code = tjsonAddObject(pJson, jkExplainStmtOptions, nodeToJson, pNode->pOptions);
30✔
7174
  }
7175
  if (TSDB_CODE_SUCCESS == code) {
30!
7176
    code = tjsonAddObject(pJson, jkExplainStmtQuery, nodeToJson, pNode->pQuery);
30✔
7177
  }
7178

7179
  return code;
30✔
7180
}
7181

7182
static int32_t jsonToExplainStmt(const SJson* pJson, void* pObj) {
30✔
7183
  SExplainStmt* pNode = (SExplainStmt*)pObj;
30✔
7184

7185
  int32_t code = tjsonGetBoolValue(pJson, jkExplainStmtAnalyze, &pNode->analyze);
30✔
7186
  if (TSDB_CODE_SUCCESS == code) {
30!
7187
    code = jsonToNodeObject(pJson, jkExplainStmtOptions, (SNode**)&pNode->pOptions);
30✔
7188
  }
7189
  if (TSDB_CODE_SUCCESS == code) {
30!
7190
    code = jsonToNodeObject(pJson, jkExplainStmtQuery, &pNode->pQuery);
30✔
7191
  }
7192

7193
  return code;
30✔
7194
}
7195

7196
static const char* jkDescribeStmtDbName = "DbName";
7197
static const char* jkDescribeStmtTableName = "TableName";
7198

7199
static int32_t describeStmtToJson(const void* pObj, SJson* pJson) {
18✔
7200
  const SDescribeStmt* pNode = (const SDescribeStmt*)pObj;
18✔
7201

7202
  int32_t code = tjsonAddStringToObject(pJson, jkDescribeStmtDbName, pNode->dbName);
18✔
7203
  if (TSDB_CODE_SUCCESS == code) {
18!
7204
    code = tjsonAddStringToObject(pJson, jkDescribeStmtTableName, pNode->tableName);
18✔
7205
  }
7206

7207
  return code;
18✔
7208
}
7209

7210
static int32_t jsonToDescribeStmt(const SJson* pJson, void* pObj) {
18✔
7211
  SDescribeStmt* pNode = (SDescribeStmt*)pObj;
18✔
7212

7213
  int32_t code = tjsonGetStringValue(pJson, jkDescribeStmtDbName, pNode->dbName);
18✔
7214
  if (TSDB_CODE_SUCCESS == code) {
18!
7215
    code = tjsonGetStringValue(pJson, jkDescribeStmtTableName, pNode->tableName);
18✔
7216
  }
7217

7218
  return code;
18✔
7219
}
7220

7221
static const char* jkCompactDatabaseStmtDbName = "DbName";
7222

7223
static int32_t compactDatabaseStmtToJson(const void* pObj, SJson* pJson) {
36✔
7224
  const SCompactDatabaseStmt* pNode = (const SCompactDatabaseStmt*)pObj;
36✔
7225
  return tjsonAddStringToObject(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
36✔
7226
}
7227

7228
static int32_t jsonToCompactDatabaseStmt(const SJson* pJson, void* pObj) {
36✔
7229
  SCompactDatabaseStmt* pNode = (SCompactDatabaseStmt*)pObj;
36✔
7230
  return tjsonGetStringValue(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
36✔
7231
}
7232

7233
static int32_t compactVgroupsStmtToJson(const void* pObj, SJson* pJson) {
×
7234
  const SCompactVgroupsStmt* pNode = (const SCompactVgroupsStmt*)pObj;
×
7235
  return 0;
×
7236
}
7237

7238
static int32_t jsonToCompactVgroupsStmt(const SJson* pJson, void* pObj) {
×
7239
  SCompactVgroupsStmt* pNode = (SCompactVgroupsStmt*)pObj;
×
7240
  return 0;
×
7241
}
7242

7243
static const char* jkCreateStreamStmtStreamName = "StreamName";
7244
static const char* jkCreateStreamStmtTargetDbName = "TargetDbName";
7245
static const char* jkCreateStreamStmtTargetTabName = "TargetTabName";
7246
static const char* jkCreateStreamStmtIgnoreExists = "IgnoreExists";
7247
static const char* jkCreateStreamStmtOptions = "Options";
7248
static const char* jkCreateStreamStmtQuery = "Query";
7249
static const char* jkCreateStreamStmtTags = "Tags";
7250
static const char* jkCreateStreamStmtSubtable = "Subtable";
7251
static const char* jkCreateStreamStmtNotifyOptions = "NotifyOptions";
7252

7253
static int32_t createStreamStmtToJson(const void* pObj, SJson* pJson) {
86✔
7254
  const SCreateStreamStmt* pNode = (const SCreateStreamStmt*)pObj;
86✔
7255

7256
  int32_t code = tjsonAddStringToObject(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
86✔
7257
  if (TSDB_CODE_SUCCESS == code) {
86!
7258
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
86✔
7259
  }
7260
  if (TSDB_CODE_SUCCESS == code) {
86!
7261
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
86✔
7262
  }
7263
  if (TSDB_CODE_SUCCESS == code) {
86!
7264
    code = tjsonAddBoolToObject(pJson, jkCreateStreamStmtIgnoreExists, pNode->ignoreExists);
86✔
7265
  }
7266
  if (TSDB_CODE_SUCCESS == code) {
86!
7267
    code = tjsonAddObject(pJson, jkCreateStreamStmtOptions, nodeToJson, pNode->pOptions);
86✔
7268
  }
7269
  if (TSDB_CODE_SUCCESS == code) {
86!
7270
    code = tjsonAddObject(pJson, jkCreateStreamStmtQuery, nodeToJson, pNode->pQuery);
86✔
7271
  }
7272
  if (TSDB_CODE_SUCCESS == code) {
86!
7273
    code = nodeListToJson(pJson, jkCreateStreamStmtTags, pNode->pTags);
86✔
7274
  }
7275
  if (TSDB_CODE_SUCCESS == code) {
86!
7276
    code = tjsonAddObject(pJson, jkCreateStreamStmtSubtable, nodeToJson, pNode->pSubtable);
86✔
7277
  }
7278
  if (TSDB_CODE_SUCCESS == code) {
86!
7279
    code = tjsonAddObject(pJson, jkCreateStreamStmtNotifyOptions, nodeToJson, pNode->pNotifyOptions);
86✔
7280
  }
7281

7282
  return code;
86✔
7283
}
7284

7285
static int32_t jsonToCreateStreamStmt(const SJson* pJson, void* pObj) {
86✔
7286
  SCreateStreamStmt* pNode = (SCreateStreamStmt*)pObj;
86✔
7287

7288
  int32_t code = tjsonGetStringValue(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
86✔
7289
  if (TSDB_CODE_SUCCESS == code) {
86!
7290
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
86✔
7291
  }
7292
  if (TSDB_CODE_SUCCESS == code) {
86!
7293
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
86✔
7294
  }
7295
  if (TSDB_CODE_SUCCESS == code) {
86!
7296
    code = tjsonGetBoolValue(pJson, jkCreateStreamStmtIgnoreExists, &pNode->ignoreExists);
86✔
7297
  }
7298
  if (TSDB_CODE_SUCCESS == code) {
86!
7299
    code = jsonToNodeObject(pJson, jkCreateStreamStmtOptions, (SNode**)&pNode->pOptions);
86✔
7300
  }
7301
  if (TSDB_CODE_SUCCESS == code) {
86!
7302
    code = jsonToNodeObject(pJson, jkCreateStreamStmtQuery, &pNode->pQuery);
86✔
7303
  }
7304
  if (TSDB_CODE_SUCCESS == code) {
86!
7305
    code = jsonToNodeList(pJson, jkCreateStreamStmtTags, &pNode->pTags);
86✔
7306
  }
7307
  if (TSDB_CODE_SUCCESS == code) {
86!
7308
    code = jsonToNodeObject(pJson, jkCreateStreamStmtSubtable, &pNode->pSubtable);
86✔
7309
  }
7310
  if (TSDB_CODE_SUCCESS == code) {
86!
7311
    code = jsonToNodeObject(pJson, jkCreateStreamStmtNotifyOptions, (SNode**)&pNode->pNotifyOptions);
86✔
7312
  }
7313

7314
  return code;
86✔
7315
}
7316

7317
static const char* jkDropStreamStmtStreamName = "StreamName";
7318
static const char* jkDropStreamStmtIgnoreNotExists = "IgnoreNotExists";
7319

7320
static int32_t dropStreamStmtToJson(const void* pObj, SJson* pJson) {
18✔
7321
  const SDropStreamStmt* pNode = (const SDropStreamStmt*)pObj;
18✔
7322

7323
  int32_t code = tjsonAddStringToObject(pJson, jkDropStreamStmtStreamName, pNode->streamName);
18✔
7324
  if (TSDB_CODE_SUCCESS == code) {
18!
7325
    code = tjsonAddBoolToObject(pJson, jkDropStreamStmtIgnoreNotExists, pNode->ignoreNotExists);
18✔
7326
  }
7327

7328
  return code;
18✔
7329
}
7330

7331
static int32_t jsonToDropStreamStmt(const SJson* pJson, void* pObj) {
18✔
7332
  SDropStreamStmt* pNode = (SDropStreamStmt*)pObj;
18✔
7333

7334
  int32_t code = tjsonGetStringValue(pJson, jkDropStreamStmtStreamName, pNode->streamName);
18✔
7335
  if (TSDB_CODE_SUCCESS == code) {
18!
7336
    code = tjsonGetBoolValue(pJson, jkDropStreamStmtIgnoreNotExists, &pNode->ignoreNotExists);
18✔
7337
  }
7338

7339
  return code;
18✔
7340
}
7341

7342
static const char* jkResetStreamStmtStreamName = "StreamName";
7343
static const char* jkResetStreamStmtIgnoreNotExists = "IgnoreNotExists";
7344

7345
static int32_t resetStreamStmtToJson(const void* pObj, SJson* pJson) {
×
7346
  const SResetStreamStmt* pNode = (const SResetStreamStmt*)pObj;
×
7347

7348
  int32_t code = tjsonAddStringToObject(pJson, jkResetStreamStmtStreamName, pNode->streamName);
×
7349
  if (TSDB_CODE_SUCCESS == code) {
×
7350
    code = tjsonAddBoolToObject(pJson, jkResetStreamStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7351
  }
7352

7353
  return code;
×
7354
}
7355

7356
static int32_t jsonToResetStreamStmt(const SJson* pJson, void* pObj) {
×
7357
  SResetStreamStmt* pNode = (SResetStreamStmt*)pObj;
×
7358

7359
  int32_t code = tjsonGetStringValue(pJson, jkResetStreamStmtStreamName, pNode->streamName);
×
7360
  if (TSDB_CODE_SUCCESS == code) {
×
7361
    code = tjsonGetBoolValue(pJson, jkResetStreamStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7362
  }
7363

7364
  return code;
×
7365
}
7366

7367

7368
static const char* jkMergeVgroupStmtVgroupId1 = "VgroupId1";
7369
static const char* jkMergeVgroupStmtVgroupId2 = "VgroupId2";
7370

7371
static int32_t mergeVgroupStmtToJson(const void* pObj, SJson* pJson) {
9✔
7372
  const SMergeVgroupStmt* pNode = (const SMergeVgroupStmt*)pObj;
9✔
7373

7374
  int32_t code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId1, pNode->vgId1);
9✔
7375
  if (TSDB_CODE_SUCCESS == code) {
9!
7376
    code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId2, pNode->vgId2);
9✔
7377
  }
7378

7379
  return code;
9✔
7380
}
7381

7382
static int32_t jsonToMergeVgroupStmt(const SJson* pJson, void* pObj) {
9✔
7383
  SMergeVgroupStmt* pNode = (SMergeVgroupStmt*)pObj;
9✔
7384

7385
  int32_t code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId1, &pNode->vgId1);
9✔
7386
  if (TSDB_CODE_SUCCESS == code) {
9!
7387
    code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId2, &pNode->vgId2);
9✔
7388
  }
7389

7390
  return code;
9✔
7391
}
7392

7393
static const char* jkRedistributeVgroupStmtVgroupId = "VgroupId";
7394
static const char* jkRedistributeVgroupStmtDnodeId1 = "DnodeId1";
7395
static const char* jkRedistributeVgroupStmtDnodeId2 = "DnodeId2";
7396
static const char* jkRedistributeVgroupStmtDnodeId3 = "DnodeId3";
7397
static const char* jkRedistributeVgroupStmtDnodes = "Dnodes";
7398

7399
static int32_t redistributeVgroupStmtToJson(const void* pObj, SJson* pJson) {
18✔
7400
  const SRedistributeVgroupStmt* pNode = (const SRedistributeVgroupStmt*)pObj;
18✔
7401

7402
  int32_t code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtVgroupId, pNode->vgId);
18✔
7403
  if (TSDB_CODE_SUCCESS == code) {
18!
7404
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId1, pNode->dnodeId1);
18✔
7405
  }
7406
  if (TSDB_CODE_SUCCESS == code) {
18!
7407
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId2, pNode->dnodeId2);
18✔
7408
  }
7409
  if (TSDB_CODE_SUCCESS == code) {
18!
7410
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId3, pNode->dnodeId3);
18✔
7411
  }
7412
  if (TSDB_CODE_SUCCESS == code) {
18!
7413
    code = nodeListToJson(pJson, jkRedistributeVgroupStmtDnodes, pNode->pDnodes);
18✔
7414
  }
7415

7416
  return code;
18✔
7417
}
7418

7419
static int32_t jsonToRedistributeVgroupStmt(const SJson* pJson, void* pObj) {
18✔
7420
  SRedistributeVgroupStmt* pNode = (SRedistributeVgroupStmt*)pObj;
18✔
7421

7422
  int32_t code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtVgroupId, &pNode->vgId);
18✔
7423
  if (TSDB_CODE_SUCCESS == code) {
18!
7424
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId1, &pNode->dnodeId1);
18✔
7425
  }
7426
  if (TSDB_CODE_SUCCESS == code) {
18!
7427
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId2, &pNode->dnodeId2);
18✔
7428
  }
7429
  if (TSDB_CODE_SUCCESS == code) {
18!
7430
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId3, &pNode->dnodeId3);
18✔
7431
  }
7432
  if (TSDB_CODE_SUCCESS == code) {
18!
7433
    code = jsonToNodeList(pJson, jkRedistributeVgroupStmtDnodes, &pNode->pDnodes);
18✔
7434
  }
7435

7436
  return code;
18✔
7437
}
7438

7439
static const char* jkSplitVgroupStmtVgroupId = "VgroupId";
7440

7441
static int32_t splitVgroupStmtToJson(const void* pObj, SJson* pJson) {
9✔
7442
  const SSplitVgroupStmt* pNode = (const SSplitVgroupStmt*)pObj;
9✔
7443
  return tjsonAddIntegerToObject(pJson, jkSplitVgroupStmtVgroupId, pNode->vgId);
9✔
7444
}
7445

7446
static int32_t jsonToSplitVgroupStmt(const SJson* pJson, void* pObj) {
9✔
7447
  SSplitVgroupStmt* pNode = (SSplitVgroupStmt*)pObj;
9✔
7448
  return tjsonGetIntValue(pJson, jkSplitVgroupStmtVgroupId, &pNode->vgId);
9✔
7449
}
7450

7451
static const char* jkGrantStmtUserName = "UserName";
7452
static const char* jkGrantStmtObjName = "ObjName";
7453
static const char* jkGrantStmtPrivileges = "Privileges";
7454

7455
static int32_t grantStmtToJson(const void* pObj, SJson* pJson) {
108✔
7456
  const SGrantStmt* pNode = (const SGrantStmt*)pObj;
108✔
7457

7458
  int32_t code = tjsonAddStringToObject(pJson, jkGrantStmtUserName, pNode->userName);
108✔
7459
  if (TSDB_CODE_SUCCESS == code) {
108!
7460
    code = tjsonAddStringToObject(pJson, jkGrantStmtObjName, pNode->objName);
108✔
7461
  }
7462
  if (TSDB_CODE_SUCCESS == code) {
108!
7463
    code = tjsonAddIntegerToObject(pJson, jkGrantStmtPrivileges, pNode->privileges);
108✔
7464
  }
7465

7466
  return code;
108✔
7467
}
7468

7469
static int32_t jsonToGrantStmt(const SJson* pJson, void* pObj) {
108✔
7470
  SGrantStmt* pNode = (SGrantStmt*)pObj;
108✔
7471

7472
  int32_t code = tjsonGetStringValue(pJson, jkGrantStmtUserName, pNode->userName);
108✔
7473
  if (TSDB_CODE_SUCCESS == code) {
108!
7474
    code = tjsonGetStringValue(pJson, jkGrantStmtObjName, pNode->objName);
108✔
7475
  }
7476
  if (TSDB_CODE_SUCCESS == code) {
108!
7477
    code = tjsonGetBigIntValue(pJson, jkGrantStmtPrivileges, &pNode->privileges);
108✔
7478
  }
7479

7480
  return code;
108✔
7481
}
7482

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

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

7487
static const char* jkShowStmtDbName = "DbName";
7488
static const char* jkShowStmtTbName = "TbName";
7489
static const char* jkShowStmtTableCondType = "TableCondType";
7490

7491
static int32_t showStmtToJson(const void* pObj, SJson* pJson) {
93✔
7492
  const SShowStmt* pNode = (const SShowStmt*)pObj;
93✔
7493

7494
  int32_t code = tjsonAddObject(pJson, jkShowStmtDbName, nodeToJson, pNode->pDbName);
93✔
7495
  if (TSDB_CODE_SUCCESS == code) {
93!
7496
    code = tjsonAddObject(pJson, jkShowStmtTbName, nodeToJson, pNode->pTbName);
93✔
7497
  }
7498
  if (TSDB_CODE_SUCCESS == code) {
93!
7499
    code = tjsonAddIntegerToObject(pJson, jkShowStmtTableCondType, pNode->tableCondType);
93✔
7500
  }
7501

7502
  return code;
93✔
7503
}
7504

7505
static int32_t jsonToShowStmt(const SJson* pJson, void* pObj) {
93✔
7506
  SShowStmt* pNode = (SShowStmt*)pObj;
93✔
7507

7508
  int32_t code = jsonToNodeObject(pJson, jkShowStmtDbName, &pNode->pDbName);
93✔
7509
  if (TSDB_CODE_SUCCESS == code) {
93!
7510
    code = jsonToNodeObject(pJson, jkShowStmtTbName, &pNode->pTbName);
93✔
7511
  }
7512
  if (TSDB_CODE_SUCCESS == code) {
93!
7513
    tjsonGetNumberValue(pJson, jkShowStmtTableCondType, pNode->tableCondType, code);
93✔
7514
  }
7515

7516
  return code;
93✔
7517
}
7518

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7607
static int32_t showUsageStmtStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7608
static int32_t jsonToShowUsageStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7609

7610
static const char* jkShowDnodeVariablesStmtDnodeId = "DnodeId";
7611
static const char* jkShowDnodeVariablesStmtLikePattern = "LikePattern";
7612

7613
static int32_t showDnodeVariablesStmtToJson(const void* pObj, SJson* pJson) {
6✔
7614
  const SShowDnodeVariablesStmt* pNode = (const SShowDnodeVariablesStmt*)pObj;
6✔
7615

7616
  int32_t code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtDnodeId, nodeToJson, pNode->pDnodeId);
6✔
7617
  if (TSDB_CODE_SUCCESS == code) {
6!
7618
    code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtLikePattern, nodeToJson, pNode->pLikePattern);
6✔
7619
  }
7620

7621
  return code;
6✔
7622
}
7623

7624
static int32_t jsonToShowDnodeVariablesStmt(const SJson* pJson, void* pObj) {
6✔
7625
  SShowDnodeVariablesStmt* pNode = (SShowDnodeVariablesStmt*)pObj;
6✔
7626

7627
  int32_t code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtDnodeId, &pNode->pDnodeId);
6✔
7628
  if (TSDB_CODE_SUCCESS == code) {
6!
7629
    code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtLikePattern, &pNode->pLikePattern);
6✔
7630
  }
7631

7632
  return code;
6✔
7633
}
7634

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

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

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

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

7643
static const char* jkShowVnodesStmtDnodeId = "DnodeId";
7644
static const char* jkShowVnodesStmtDnodeEndpoint = "DnodeEndpoint";
7645

7646
static int32_t showVnodesStmtToJson(const void* pObj, SJson* pJson) {
6✔
7647
  const SShowVnodesStmt* pNode = (const SShowVnodesStmt*)pObj;
6✔
7648

7649
  int32_t code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeId, nodeToJson, pNode->pDnodeId);
6✔
7650
  if (TSDB_CODE_SUCCESS == code) {
6!
7651
    code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeEndpoint, nodeToJson, pNode->pDnodeEndpoint);
6✔
7652
  }
7653

7654
  return code;
6✔
7655
}
7656

7657
static int32_t jsonToShowVnodesStmt(const SJson* pJson, void* pObj) {
6✔
7658
  SShowVnodesStmt* pNode = (SShowVnodesStmt*)pObj;
6✔
7659

7660
  int32_t code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeId, &pNode->pDnodeId);
6✔
7661
  if (TSDB_CODE_SUCCESS == code) {
6!
7662
    code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeEndpoint, &pNode->pDnodeEndpoint);
6✔
7663
  }
7664

7665
  return code;
6✔
7666
}
7667

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

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

7672
static const char* jkShowCreateDatabaseStmtDbName = "DbName";
7673

7674
static int32_t showCreateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
9✔
7675
  const SShowCreateDatabaseStmt* pNode = (const SShowCreateDatabaseStmt*)pObj;
9✔
7676
  return tjsonAddStringToObject(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
9✔
7677
}
7678

7679
static int32_t jsonToShowCreateDatabaseStmt(const SJson* pJson, void* pObj) {
9✔
7680
  SShowCreateDatabaseStmt* pNode = (SShowCreateDatabaseStmt*)pObj;
9✔
7681
  return tjsonGetStringValue(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
9✔
7682
}
7683

7684
static const char* jkShowCreateTableStmtDbName = "DbName";
7685
static const char* jkShowCreateTableStmtTableName = "TableName";
7686

7687
static int32_t showCreateTableStmtToJson(const void* pObj, SJson* pJson) {
18✔
7688
  const SShowCreateTableStmt* pNode = (const SShowCreateTableStmt*)pObj;
18✔
7689

7690
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
18✔
7691
  if (TSDB_CODE_SUCCESS == code) {
18!
7692
    code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
18✔
7693
  }
7694

7695
  return code;
18✔
7696
}
7697

7698
static int32_t jsonToShowCreateTableStmt(const SJson* pJson, void* pObj) {
18✔
7699
  SShowCreateTableStmt* pNode = (SShowCreateTableStmt*)pObj;
18✔
7700

7701
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
18✔
7702
  if (TSDB_CODE_SUCCESS == code) {
18!
7703
    code = tjsonGetStringValue(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
18✔
7704
  }
7705

7706
  return code;
18✔
7707
}
7708

7709
static int32_t showCreateStableStmtToJson(const void* pObj, SJson* pJson) {
9✔
7710
  return showCreateTableStmtToJson(pObj, pJson);
9✔
7711
}
7712

7713
static int32_t jsonToShowCreateStableStmt(const SJson* pJson, void* pObj) {
9✔
7714
  return jsonToShowCreateTableStmt(pJson, pObj);
9✔
7715
}
7716

7717
static const char* jkShowCreateViewStmtDbName = "DbName";
7718
static const char* jkShowCreateViewStmtViewName = "ViewName";
7719

7720
static int32_t showCreateViewStmtToJson(const void* pObj, SJson* pJson) {
×
7721
  const SShowCreateViewStmt* pNode = (const SShowCreateViewStmt*)pObj;
×
7722

7723
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
7724
  if (TSDB_CODE_SUCCESS == code) {
×
7725
    code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
7726
  }
7727

7728
  return code;
×
7729
}
7730

7731
static int32_t jsonToShowCreateViewStmt(const SJson* pJson, void* pObj) {
×
7732
  SShowCreateViewStmt* pNode = (SShowCreateViewStmt*)pObj;
×
7733

7734
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
7735
  if (TSDB_CODE_SUCCESS == code) {
×
7736
    code = tjsonGetStringValue(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
7737
  }
7738

7739
  return code;
×
7740
}
7741

7742
static const char* jkShowTableDistributedStmtDbName = "DbName";
7743
static const char* jkShowTableDistributedStmtTableName = "TableName";
7744

7745
static int32_t showTableDistributedStmtToJson(const void* pObj, SJson* pJson) {
3✔
7746
  const SShowTableDistributedStmt* pNode = (const SShowTableDistributedStmt*)pObj;
3✔
7747

7748
  int32_t code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
3✔
7749
  if (TSDB_CODE_SUCCESS == code) {
3!
7750
    code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
3✔
7751
  }
7752

7753
  return code;
3✔
7754
}
7755

7756
static int32_t jsonToShowTableDistributedStmt(const SJson* pJson, void* pObj) {
3✔
7757
  SShowTableDistributedStmt* pNode = (SShowTableDistributedStmt*)pObj;
3✔
7758

7759
  int32_t code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
3✔
7760
  if (TSDB_CODE_SUCCESS == code) {
3!
7761
    code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
3✔
7762
  }
7763

7764
  return code;
3✔
7765
}
7766

7767
static int32_t showLocalVariablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
9✔
7768

7769
static int32_t jsonToShowLocalVariablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
9✔
7770

7771
static const char* jkShowTableTagsStmtDbName = "DbName";
7772
static const char* jkShowTableTagsStmtTbName = "TbName";
7773
static const char* jkShowTableTagsStmtTags = "Tags";
7774

7775
static int32_t showTableTagsStmtToJson(const void* pObj, SJson* pJson) {
9✔
7776
  const SShowTableTagsStmt* pNode = (const SShowTableTagsStmt*)pObj;
9✔
7777

7778
  int32_t code = tjsonAddObject(pJson, jkShowTableTagsStmtDbName, nodeToJson, pNode->pDbName);
9✔
7779
  if (TSDB_CODE_SUCCESS == code) {
9!
7780
    code = tjsonAddObject(pJson, jkShowTableTagsStmtTbName, nodeToJson, pNode->pTbName);
9✔
7781
  }
7782
  if (TSDB_CODE_SUCCESS == code) {
9!
7783
    code = nodeListToJson(pJson, jkShowTableTagsStmtTags, pNode->pTags);
9✔
7784
  }
7785

7786
  return code;
9✔
7787
}
7788

7789
static int32_t jsonToShowTableTagsStmt(const SJson* pJson, void* pObj) {
9✔
7790
  SShowTableTagsStmt* pNode = (SShowTableTagsStmt*)pObj;
9✔
7791

7792
  int32_t code = jsonToNodeObject(pJson, jkShowTableTagsStmtDbName, &pNode->pDbName);
9✔
7793
  if (TSDB_CODE_SUCCESS == code) {
9!
7794
    code = jsonToNodeObject(pJson, jkShowTableTagsStmtTbName, &pNode->pTbName);
9✔
7795
  }
7796
  if (TSDB_CODE_SUCCESS == code) {
9!
7797
    code = jsonToNodeList(pJson, jkShowTableTagsStmtTags, &pNode->pTags);
9✔
7798
  }
7799

7800
  return code;
9✔
7801
}
7802

7803
static const char* jkDeleteStmtFromTable = "FromTable";
7804
static const char* jkDeleteStmtWhere = "Where";
7805
static const char* jkDeleteStmtCountFunc = "CountFunc";
7806
static const char* jkDeleteStmtTagIndexCond = "TagIndexCond";
7807
static const char* jkDeleteStmtTimeRangeStartKey = "TimeRangeStartKey";
7808
static const char* jkDeleteStmtTimeRangeEndKey = "TimeRangeEndKey";
7809
static const char* jkDeleteStmtPrecision = "Precision";
7810
static const char* jkDeleteStmtDeleteZeroRows = "DeleteZeroRows";
7811

7812
static int32_t deleteStmtToJson(const void* pObj, SJson* pJson) {
43✔
7813
  const SDeleteStmt* pNode = (const SDeleteStmt*)pObj;
43✔
7814

7815
  int32_t code = tjsonAddObject(pJson, jkDeleteStmtFromTable, nodeToJson, pNode->pFromTable);
43✔
7816
  if (TSDB_CODE_SUCCESS == code) {
43!
7817
    code = tjsonAddObject(pJson, jkDeleteStmtWhere, nodeToJson, pNode->pWhere);
43✔
7818
  }
7819
  if (TSDB_CODE_SUCCESS == code) {
43!
7820
    code = tjsonAddObject(pJson, jkDeleteStmtCountFunc, nodeToJson, pNode->pCountFunc);
43✔
7821
  }
7822
  if (TSDB_CODE_SUCCESS == code) {
43!
7823
    code = tjsonAddObject(pJson, jkDeleteStmtTagIndexCond, nodeToJson, pNode->pTagCond);
43✔
7824
  }
7825
  if (TSDB_CODE_SUCCESS == code) {
43!
7826
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeStartKey, pNode->timeRange.skey);
43✔
7827
  }
7828
  if (TSDB_CODE_SUCCESS == code) {
43!
7829
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeEndKey, pNode->timeRange.ekey);
43✔
7830
  }
7831
  if (TSDB_CODE_SUCCESS == code) {
43!
7832
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtPrecision, pNode->precision);
43✔
7833
  }
7834
  if (TSDB_CODE_SUCCESS == code) {
43!
7835
    code = tjsonAddBoolToObject(pJson, jkDeleteStmtDeleteZeroRows, pNode->deleteZeroRows);
43✔
7836
  }
7837

7838
  return code;
43✔
7839
}
7840

7841
static int32_t jsonToDeleteStmt(const SJson* pJson, void* pObj) {
43✔
7842
  SDeleteStmt* pNode = (SDeleteStmt*)pObj;
43✔
7843

7844
  int32_t code = jsonToNodeObject(pJson, jkDeleteStmtFromTable, &pNode->pFromTable);
43✔
7845
  if (TSDB_CODE_SUCCESS == code) {
43!
7846
    code = jsonToNodeObject(pJson, jkDeleteStmtWhere, &pNode->pWhere);
43✔
7847
  }
7848
  if (TSDB_CODE_SUCCESS == code) {
43!
7849
    code = jsonToNodeObject(pJson, jkDeleteStmtCountFunc, &pNode->pCountFunc);
43✔
7850
  }
7851
  if (TSDB_CODE_SUCCESS == code) {
43!
7852
    code = jsonToNodeObject(pJson, jkDeleteStmtTagIndexCond, &pNode->pTagCond);
43✔
7853
  }
7854
  if (TSDB_CODE_SUCCESS == code) {
43!
7855
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeStartKey, &pNode->timeRange.skey);
43✔
7856
  }
7857
  if (TSDB_CODE_SUCCESS == code) {
43!
7858
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeEndKey, &pNode->timeRange.ekey);
43✔
7859
  }
7860
  if (TSDB_CODE_SUCCESS == code) {
43!
7861
    code = tjsonGetUTinyIntValue(pJson, jkDeleteStmtPrecision, &pNode->precision);
43✔
7862
  }
7863
  if (TSDB_CODE_SUCCESS == code) {
43!
7864
    code = tjsonGetBoolValue(pJson, jkDeleteStmtDeleteZeroRows, &pNode->deleteZeroRows);
43✔
7865
  }
7866

7867
  return code;
43✔
7868
}
7869

7870
static const char* jkInsertStmtTable = "Table";
7871
static const char* jkInsertStmtCols = "Cols";
7872
static const char* jkInsertStmtQuery = "Query";
7873
static const char* jkInsertStmtPrecision = "Precision";
7874

7875
static int32_t insertStmtToJson(const void* pObj, SJson* pJson) {
12✔
7876
  const SInsertStmt* pNode = (const SInsertStmt*)pObj;
12✔
7877

7878
  int32_t code = tjsonAddObject(pJson, jkInsertStmtTable, nodeToJson, pNode->pTable);
12✔
7879
  if (TSDB_CODE_SUCCESS == code) {
12!
7880
    code = nodeListToJson(pJson, jkInsertStmtCols, pNode->pCols);
12✔
7881
  }
7882
  if (TSDB_CODE_SUCCESS == code) {
12!
7883
    code = tjsonAddObject(pJson, jkInsertStmtQuery, nodeToJson, pNode->pQuery);
12✔
7884
  }
7885
  if (TSDB_CODE_SUCCESS == code) {
12!
7886
    code = tjsonAddIntegerToObject(pJson, jkInsertStmtPrecision, pNode->precision);
12✔
7887
  }
7888

7889
  return code;
12✔
7890
}
7891

7892
static int32_t jsonToInsertStmt(const SJson* pJson, void* pObj) {
12✔
7893
  SInsertStmt* pNode = (SInsertStmt*)pObj;
12✔
7894

7895
  int32_t code = jsonToNodeObject(pJson, jkInsertStmtTable, &pNode->pTable);
12✔
7896
  if (TSDB_CODE_SUCCESS == code) {
12!
7897
    code = jsonToNodeList(pJson, jkInsertStmtCols, &pNode->pCols);
12✔
7898
  }
7899
  if (TSDB_CODE_SUCCESS == code) {
12!
7900
    code = jsonToNodeObject(pJson, jkInsertStmtQuery, &pNode->pQuery);
12✔
7901
  }
7902
  if (TSDB_CODE_SUCCESS == code) {
12!
7903
    code = tjsonGetUTinyIntValue(pJson, jkInsertStmtPrecision, &pNode->precision);
12✔
7904
  }
7905

7906
  return code;
12✔
7907
}
7908

7909
static const char* jkTSMAOptionFuncs = "Funcs";
7910
static const char* jkTSMAOptionCols = "Cols";
7911
static const char* jkTSMAOptionInterval = "Interval";
7912
static const char* jkTSMAOptionTsPrecision = "Precision";
7913

7914
static int32_t tsmaOptionToJson(const void* pObj, SJson* pJson) {
×
7915
  const STSMAOptions* pNode = (const STSMAOptions*)pObj;
×
7916
  int32_t             code = nodeListToJson(pJson, jkTSMAOptionFuncs, pNode->pFuncs);
×
7917
  if (TSDB_CODE_SUCCESS == code) {
×
7918
    code = tjsonAddObject(pJson, jkTSMAOptionInterval, nodeToJson, pNode->pInterval);
×
7919
  }
7920
  if (TSDB_CODE_SUCCESS == code) {
×
7921
    code = tjsonAddIntegerToObject(pJson, jkTSMAOptionTsPrecision, pNode->tsPrecision);
×
7922
  }
7923
  return code;
×
7924
}
7925

7926
static int32_t jsonToTSMAOption(const SJson* pJson, void* pObj) {
×
7927
  STSMAOptions* pNode = (STSMAOptions*)pObj;
×
7928
  int32_t       code = jsonToNodeList(pJson, jkTSMAOptionFuncs, &pNode->pFuncs);
×
7929
  if (TSDB_CODE_SUCCESS == code) {
×
7930
    code = jsonToNodeObject(pJson, jkTSMAOptionInterval, &pNode->pInterval);
×
7931
  }
7932
  if (TSDB_CODE_SUCCESS == code) {
×
7933
    code = tjsonGetUTinyIntValue(pJson, jkTSMAOptionTsPrecision, &pNode->tsPrecision);
×
7934
  }
7935
  return code;
×
7936
}
7937

7938
static const char* jkCreateTSMAStmtIgnoreExists = "IgnoreExists";
7939
static const char* jkCreateTSMAStmtTsmaName = "TSMAName";
7940
static const char* jkCreateTSMAStmtDbName = "DbName";
7941
static const char* jkCreateTSMAStmtTableName = "TableName";
7942
static const char* jkCreateTSMAStmtpOptions = "Options";
7943

7944
static int32_t createTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
7945
  const SCreateTSMAStmt* pNode = (const SCreateTSMAStmt*)pObj;
×
7946
  int32_t                code = tjsonAddBoolToObject(pJson, jkCreateTSMAStmtIgnoreExists, pNode->ignoreExists);
×
7947
  if (TSDB_CODE_SUCCESS == code) {
×
7948
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
7949
  }
7950
  if (TSDB_CODE_SUCCESS == code) {
×
7951
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
7952
  }
7953
  if (TSDB_CODE_SUCCESS == code) {
×
7954
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
7955
  }
7956
  if (TSDB_CODE_SUCCESS == code) {
×
7957
    code = tjsonAddObject(pJson, jkCreateTSMAStmtpOptions, nodeToJson, pNode->pOptions);
×
7958
  }
7959
  return code;
×
7960
}
7961

7962
static int32_t jsonToCreateTSMAStmt(const SJson* pJson, void* pObj) {
×
7963
  SCreateTSMAStmt* pNode = (SCreateTSMAStmt*)pObj;
×
7964
  int32_t          code = tjsonGetBoolValue(pJson, jkCreateTSMAStmtIgnoreExists, &pNode->ignoreExists);
×
7965
  if (TSDB_CODE_SUCCESS == code) {
×
7966
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
7967
  }
7968
  if (TSDB_CODE_SUCCESS == code) {
×
7969
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
7970
  }
7971
  if (TSDB_CODE_SUCCESS == code) {
×
7972
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
7973
  }
7974
  if (TSDB_CODE_SUCCESS == code) {
×
7975
    code = jsonToNodeObject(pJson, jkCreateTSMAStmtpOptions, (SNode**)&pNode->pOptions);
×
7976
  }
7977
  return code;
×
7978
}
7979

7980
static const char* jkDropTSMAStmtIgnoreNotExists = "IgnoreNotExists";
7981
static const char* jkDropTSMAStmtDbName = "DbName";
7982
static const char* jkDropTSMAStmtTsmaName = "TSMAName";
7983

7984
static int32_t dropTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
7985
  const SDropTSMAStmt* pNode = (const SDropTSMAStmt*)pObj;
×
7986
  int32_t              code = tjsonAddBoolToObject(pJson, jkDropTSMAStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7987
  if (TSDB_CODE_SUCCESS == code) {
×
7988
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
7989
  }
7990
  if (TSDB_CODE_SUCCESS == code) {
×
7991
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
7992
  }
7993
  return code;
×
7994
}
7995

7996
static int32_t jsonToDropTSMAStmt(const SJson* pJson, void* pObj) {
×
7997
  SDropTSMAStmt* pNode = (SDropTSMAStmt*)pObj;
×
7998
  int32_t        code = tjsonGetBoolValue(pJson, jkDropTSMAStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7999
  if (TSDB_CODE_SUCCESS == code) {
×
8000
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
8001
  }
8002
  if (TSDB_CODE_SUCCESS == code) {
×
8003
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
8004
  }
8005
  return code;
×
8006
}
8007

8008
static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
3,031,557✔
8009
  switch (nodeType(pObj)) {
3,031,557!
8010
    case QUERY_NODE_COLUMN:
914,232✔
8011
      return columnNodeToJson(pObj, pJson);
914,232✔
8012
    case QUERY_NODE_VALUE:
69,117✔
8013
      return valueNodeToJson(pObj, pJson);
69,117✔
8014
    case QUERY_NODE_OPERATOR:
12,879✔
8015
      return operatorNodeToJson(pObj, pJson);
12,879✔
8016
    case QUERY_NODE_LOGIC_CONDITION:
2,147✔
8017
      return logicConditionNodeToJson(pObj, pJson);
2,147✔
8018
    case QUERY_NODE_FUNCTION:
415,617✔
8019
      return functionNodeToJson(pObj, pJson);
415,617✔
8020
    case QUERY_NODE_REAL_TABLE:
3,537✔
8021
      return realTableNodeToJson(pObj, pJson);
3,537✔
8022
    case QUERY_NODE_TEMP_TABLE:
166✔
8023
      return tempTableNodeToJson(pObj, pJson);
166✔
8024
    case QUERY_NODE_JOIN_TABLE:
62✔
8025
      return joinTableNodeToJson(pObj, pJson);
62✔
8026
    case QUERY_NODE_GROUPING_SET:
657✔
8027
      return groupingSetNodeToJson(pObj, pJson);
657✔
8028
    case QUERY_NODE_ORDER_BY_EXPR:
907✔
8029
      return orderByExprNodeToJson(pObj, pJson);
907✔
8030
    case QUERY_NODE_LIMIT:
360✔
8031
      return limitNodeToJson(pObj, pJson);
360✔
8032
    case QUERY_NODE_STATE_WINDOW:
81✔
8033
      return stateWindowNodeToJson(pObj, pJson);
81✔
8034
    case QUERY_NODE_SESSION_WINDOW:
113✔
8035
      return sessionWindowNodeToJson(pObj, pJson);
113✔
8036
    case QUERY_NODE_INTERVAL_WINDOW:
1,098✔
8037
      return intervalWindowNodeToJson(pObj, pJson);
1,098✔
8038
    case QUERY_NODE_NODE_LIST:
4,310✔
8039
      return nodeListNodeToJson(pObj, pJson);
4,310✔
8040
    case QUERY_NODE_FILL:
305✔
8041
      return fillNodeToJson(pObj, pJson);
305✔
8042
    case QUERY_NODE_RAW_EXPR:
×
8043
      break;
×
8044
    case QUERY_NODE_TARGET:
720,319✔
8045
      return targetNodeToJson(pObj, pJson);
720,319✔
8046
    case QUERY_NODE_DATABLOCK_DESC:
38,053✔
8047
      return dataBlockDescNodeToJson(pObj, pJson);
38,053✔
8048
    case QUERY_NODE_SLOT_DESC:
741,560✔
8049
      return slotDescNodeToJson(pObj, pJson);
741,560✔
8050
    case QUERY_NODE_COLUMN_DEF:
13,000✔
8051
      return columnDefNodeToJson(pObj, pJson);
13,000✔
8052
    case QUERY_NODE_DOWNSTREAM_SOURCE:
948✔
8053
      return downstreamSourceNodeToJson(pObj, pJson);
948✔
8054
    case QUERY_NODE_DATABASE_OPTIONS:
420✔
8055
      return databaseOptionsToJson(pObj, pJson);
420✔
8056
    case QUERY_NODE_TABLE_OPTIONS:
78✔
8057
      return tableOptionsToJson(pObj, pJson);
78✔
8058
    case QUERY_NODE_COLUMN_OPTIONS:
12,663✔
8059
      return columnOptionsToJson(pObj, pJson);
12,663✔
8060
    case QUERY_NODE_INDEX_OPTIONS:
19✔
8061
      return indexOptionsToJson(pObj, pJson);
19✔
8062
    case QUERY_NODE_EXPLAIN_OPTIONS:
30✔
8063
      return explainOptionsToJson(pObj, pJson);
30✔
8064
    case QUERY_NODE_STREAM_OPTIONS:
105✔
8065
      return streamOptionsToJson(pObj, pJson);
105✔
8066
    case QUERY_NODE_LEFT_VALUE:
16✔
8067
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to serialize.
16✔
8068
    case QUERY_NODE_WHEN_THEN:
156✔
8069
      return whenThenNodeToJson(pObj, pJson);
156✔
8070
    case QUERY_NODE_CASE_WHEN:
136✔
8071
      return caseWhenNodeToJson(pObj, pJson);
136✔
8072
    case QUERY_NODE_EVENT_WINDOW:
13✔
8073
      return eventWindowNodeToJson(pObj, pJson);
13✔
8074
    case QUERY_NODE_WINDOW_OFFSET:
×
8075
      return windowOffsetNodeToJson(pObj, pJson);
×
8076
    case QUERY_NODE_COUNT_WINDOW:
15✔
8077
      return countWindowNodeToJson(pObj, pJson);
15✔
8078
    case QUERY_NODE_ANOMALY_WINDOW:
×
8079
      return anomalyWindowNodeToJson(pObj, pJson);
×
8080
    case QUERY_NODE_STREAM_NOTIFY_OPTIONS:
×
8081
      return streamNotifyOptionsToJson(pObj, pJson);
×
8082
    case QUERY_NODE_SET_OPERATOR:
64✔
8083
      return setOperatorToJson(pObj, pJson);
64✔
8084
    case QUERY_NODE_SELECT_STMT:
3,658✔
8085
      return selectStmtToJson(pObj, pJson);
3,658✔
8086
    case QUERY_NODE_VNODE_MODIFY_STMT:
120✔
8087
      return vnodeModifyStmtToJson(pObj, pJson);
120✔
8088
    case QUERY_NODE_CREATE_DATABASE_STMT:
54✔
8089
      return createDatabaseStmtToJson(pObj, pJson);
54✔
8090
    case QUERY_NODE_ALTER_DATABASE_STMT:
366✔
8091
      return alterDatabaseStmtToJson(pObj, pJson);
366✔
8092
    case QUERY_NODE_TRIM_DATABASE_STMT:
18✔
8093
      return trimDatabaseStmtToJson(pObj, pJson);
18✔
8094
    case QUERY_NODE_S3MIGRATE_DATABASE_STMT:
×
8095
      return s3migrateDatabaseStmtToJson(pObj, pJson);
×
8096
    case QUERY_NODE_CREATE_TABLE_STMT:
45✔
8097
      return createTableStmtToJson(pObj, pJson);
45✔
8098
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
15✔
8099
      return createSubTableClauseToJson(pObj, pJson);
15✔
8100
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
9✔
8101
      return createMultiTablesStmtToJson(pObj, pJson);
9✔
8102
    case QUERY_NODE_DROP_TABLE_CLAUSE:
12✔
8103
      return dropTableClauseToJson(pObj, pJson);
12✔
8104
    case QUERY_NODE_DROP_TABLE_STMT:
6✔
8105
      return dropTableStmtToJson(pObj, pJson);
6✔
8106
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
9✔
8107
      return dropStableStmtToJson(pObj, pJson);
9✔
8108
    case QUERY_NODE_ALTER_TABLE_STMT:
75✔
8109
      return alterTableStmtToJson(pObj, pJson);
75✔
8110
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
87✔
8111
      return alterStableStmtToJson(pObj, pJson);
87✔
8112
    case QUERY_NODE_CREATE_USER_STMT:
18✔
8113
      return createUserStmtToJson(pObj, pJson);
18✔
8114
    case QUERY_NODE_ALTER_USER_STMT:
27✔
8115
      return alterUserStmtToJson(pObj, pJson);
27✔
8116
    case QUERY_NODE_DROP_USER_STMT:
9✔
8117
      return dropUserStmtToJson(pObj, pJson);
9✔
8118
    case QUERY_NODE_USE_DATABASE_STMT:
9✔
8119
      return useDatabaseStmtToJson(pObj, pJson);
9✔
8120
    case QUERY_NODE_CREATE_DNODE_STMT:
54✔
8121
      return createDnodeStmtToJson(pObj, pJson);
54✔
8122
    case QUERY_NODE_DROP_DNODE_STMT:
81✔
8123
      return dropDnodeStmtToJson(pObj, pJson);
81✔
8124
    case QUERY_NODE_ALTER_DNODE_STMT:
36✔
8125
      return alterDnodeStmtToJson(pObj, pJson);
36✔
8126
    case QUERY_NODE_CREATE_INDEX_STMT:
19✔
8127
      return createIndexStmtToJson(pObj, pJson);
19✔
8128
    case QUERY_NODE_DROP_INDEX_STMT:
18✔
8129
      return dropIndexStmtToJson(pObj, pJson);
18✔
8130
    case QUERY_NODE_CREATE_QNODE_STMT:
9✔
8131
      return createQnodeStmtToJson(pObj, pJson);
9✔
8132
    case QUERY_NODE_DROP_QNODE_STMT:
9✔
8133
      return dropQnodeStmtToJson(pObj, pJson);
9✔
8134
    case QUERY_NODE_CREATE_ANODE_STMT:
×
8135
      return createAnodeStmtToJson(pObj, pJson);
×
8136
    case QUERY_NODE_DROP_ANODE_STMT:
×
8137
      return dropAnodeStmtToJson(pObj, pJson);
×
8138
    case QUERY_NODE_UPDATE_ANODE_STMT:
×
8139
      return updateAnodeStmtToJson(pObj, pJson);
×
8140
    case QUERY_NODE_CREATE_SNODE_STMT:
9✔
8141
      return createSnodeStmtToJson(pObj, pJson);
9✔
8142
    case QUERY_NODE_DROP_SNODE_STMT:
9✔
8143
      return dropSnodeStmtToJson(pObj, pJson);
9✔
8144
    case QUERY_NODE_CREATE_MNODE_STMT:
9✔
8145
      return createMnodeStmtToJson(pObj, pJson);
9✔
8146
    case QUERY_NODE_DROP_MNODE_STMT:
9✔
8147
      return dropMnodeStmtToJson(pObj, pJson);
9✔
8148
    case QUERY_NODE_CREATE_TOPIC_STMT:
73✔
8149
      return createTopicStmtToJson(pObj, pJson);
73✔
8150
    case QUERY_NODE_DROP_TOPIC_STMT:
18✔
8151
      return dropTopicStmtToJson(pObj, pJson);
18✔
8152
    case QUERY_NODE_DROP_CGROUP_STMT:
18✔
8153
      return dropConsumerGroupStmtToJson(pObj, pJson);
18✔
8154
    case QUERY_NODE_ALTER_LOCAL_STMT:
18✔
8155
      return alterLocalStmtToJson(pObj, pJson);
18✔
8156
    case QUERY_NODE_EXPLAIN_STMT:
30✔
8157
      return explainStmtToJson(pObj, pJson);
30✔
8158
    case QUERY_NODE_DESCRIBE_STMT:
18✔
8159
      return describeStmtToJson(pObj, pJson);
18✔
8160
    case QUERY_NODE_COMPACT_DATABASE_STMT:
36✔
8161
      return compactDatabaseStmtToJson(pObj, pJson);
36✔
8162
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
×
8163
      return compactVgroupsStmtToJson(pObj, pJson);
×
8164
    case QUERY_NODE_CREATE_STREAM_STMT:
86✔
8165
      return createStreamStmtToJson(pObj, pJson);
86✔
8166
    case QUERY_NODE_DROP_STREAM_STMT:
18✔
8167
      return dropStreamStmtToJson(pObj, pJson);
18✔
8168
    case QUERY_NODE_BALANCE_VGROUP_STMT:
9✔
8169
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to serialize.
9✔
8170
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
9✔
8171
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to serialize.
9✔
8172
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
8173
      return TSDB_CODE_SUCCESS;
×
8174
    case QUERY_NODE_MERGE_VGROUP_STMT:
9✔
8175
      return mergeVgroupStmtToJson(pObj, pJson);
9✔
8176
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
18✔
8177
      return redistributeVgroupStmtToJson(pObj, pJson);
18✔
8178
    case QUERY_NODE_SPLIT_VGROUP_STMT:
9✔
8179
      return splitVgroupStmtToJson(pObj, pJson);
9✔
8180
    case QUERY_NODE_GRANT_STMT:
54✔
8181
      return grantStmtToJson(pObj, pJson);
54✔
8182
    case QUERY_NODE_REVOKE_STMT:
54✔
8183
      return revokeStmtToJson(pObj, pJson);
54✔
8184
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
8185
      return alterClusterStmtToJson(pObj, pJson);
×
8186
    case QUERY_NODE_SHOW_DNODES_STMT:
3✔
8187
      return showDnodesStmtToJson(pObj, pJson);
3✔
8188
    case QUERY_NODE_SHOW_MNODES_STMT:
3✔
8189
      return showMnodesStmtToJson(pObj, pJson);
3✔
8190
    case QUERY_NODE_SHOW_QNODES_STMT:
3✔
8191
      return showQnodesStmtToJson(pObj, pJson);
3✔
8192
    case QUERY_NODE_SHOW_ANODES_STMT:
×
8193
      return showAnodesStmtToJson(pObj, pJson);
×
8194
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
8195
      return showAnodesFullStmtToJson(pObj, pJson);
×
8196
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
8197
      return showArbGroupsStmtToJson(pObj, pJson);
×
8198
    case QUERY_NODE_SHOW_CLUSTER_STMT:
3✔
8199
      return showClusterStmtToJson(pObj, pJson);
3✔
8200
    case QUERY_NODE_SHOW_DATABASES_STMT:
3✔
8201
      return showDatabasesStmtToJson(pObj, pJson);
3✔
8202
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
3✔
8203
      return showFunctionsStmtToJson(pObj, pJson);
3✔
8204
    case QUERY_NODE_SHOW_INDEXES_STMT:
6✔
8205
      return showIndexesStmtToJson(pObj, pJson);
6✔
8206
    case QUERY_NODE_SHOW_STABLES_STMT:
12✔
8207
      return showStablesStmtToJson(pObj, pJson);
12✔
8208
    case QUERY_NODE_SHOW_STREAMS_STMT:
3✔
8209
      return showStreamsStmtToJson(pObj, pJson);
3✔
8210
    case QUERY_NODE_SHOW_TABLES_STMT:
12✔
8211
      return showTablesStmtToJson(pObj, pJson);
12✔
8212
    case QUERY_NODE_SHOW_TAGS_STMT:
3✔
8213
      return showTagsStmtToJson(pObj, pJson);
3✔
8214
    case QUERY_NODE_SHOW_USERS_STMT:
3✔
8215
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
8216
      return showUsersStmtToJson(pObj, pJson);
3✔
8217
    case QUERY_NODE_SHOW_VGROUPS_STMT:
6✔
8218
      return showVgroupsStmtToJson(pObj, pJson);
6✔
8219
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
3✔
8220
      return showConsumersStmtToJson(pObj, pJson);
3✔
8221
    case QUERY_NODE_SHOW_VARIABLES_STMT:
9✔
8222
      return showVariablesStmtToJson(pObj, pJson);
9✔
8223
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
8224
      return showGrantsFullStmtToJson(pObj, pJson);
×
8225
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
8226
      return showGrantsLogsStmtToJson(pObj, pJson);
×
8227
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
8228
      return showClusterMachinesStmtToJson(pObj, pJson);
×
8229
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
8230
      return showEncryptionsStmtToJson(pObj, pJson);
×
8231
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
6✔
8232
      return showDnodeVariablesStmtToJson(pObj, pJson);
6✔
8233
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
3✔
8234
      return showTransactionsStmtToJson(pObj, pJson);
3✔
8235
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
3✔
8236
      return showSubscriptionsStmtToJson(pObj, pJson);
3✔
8237
    case QUERY_NODE_SHOW_VNODES_STMT:
6✔
8238
      return showVnodesStmtToJson(pObj, pJson);
6✔
8239
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
3✔
8240
      return showUserPrivilegesStmtToJson(pObj, pJson);
3✔
8241
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
9✔
8242
      return showCreateDatabaseStmtToJson(pObj, pJson);
9✔
8243
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
9✔
8244
      return showCreateTableStmtToJson(pObj, pJson);
9✔
8245
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
9✔
8246
      return showCreateStableStmtToJson(pObj, pJson);
9✔
8247
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
8248
      return showCreateViewStmtToJson(pObj, pJson);
×
8249
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
3✔
8250
      return showTableDistributedStmtToJson(pObj, pJson);
3✔
8251
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
9✔
8252
      return showLocalVariablesStmtToJson(pObj, pJson);
9✔
8253
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
9✔
8254
      return showTableTagsStmtToJson(pObj, pJson);
9✔
8255
    case QUERY_NODE_SHOW_USAGE_STMT:
×
8256
      return showUsageStmtStmtToJson(pObj, pJson);
×
8257
    case QUERY_NODE_DELETE_STMT:
43✔
8258
      return deleteStmtToJson(pObj, pJson);
43✔
8259
    case QUERY_NODE_INSERT_STMT:
12✔
8260
      return insertStmtToJson(pObj, pJson);
12✔
8261
    case QUERY_NODE_LOGIC_PLAN_SCAN:
4,620✔
8262
      return logicScanNodeToJson(pObj, pJson);
4,620✔
8263
    case QUERY_NODE_LOGIC_PLAN_JOIN:
125✔
8264
      return logicJoinNodeToJson(pObj, pJson);
125✔
8265
    case QUERY_NODE_LOGIC_PLAN_AGG:
1,174✔
8266
      return logicAggNodeToJson(pObj, pJson);
1,174✔
8267
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
2,674✔
8268
      return logicProjectNodeToJson(pObj, pJson);
2,674✔
8269
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
55✔
8270
      return logicVnodeModifyNodeToJson(pObj, pJson);
55✔
8271
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
633✔
8272
      return logicExchangeNodeToJson(pObj, pJson);
633✔
8273
    case QUERY_NODE_LOGIC_PLAN_MERGE:
113✔
8274
      return logicMergeNodeToJson(pObj, pJson);
113✔
8275
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
500✔
8276
      return logicWindowNodeToJson(pObj, pJson);
500✔
8277
    case QUERY_NODE_LOGIC_PLAN_FILL:
96✔
8278
      return logicFillNodeToJson(pObj, pJson);
96✔
8279
    case QUERY_NODE_LOGIC_PLAN_SORT:
342✔
8280
      return logicSortNodeToJson(pObj, pJson);
342✔
8281
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
221✔
8282
      return logicPartitionNodeToJson(pObj, pJson);
221✔
8283
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
143✔
8284
      return logicIndefRowsFuncNodeToJson(pObj, pJson);
143✔
8285
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
33✔
8286
      return logicInterpFuncNodeToJson(pObj, pJson);
33✔
8287
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
8288
      return logicForecastFuncNodeToJson(pObj, pJson);
×
8289
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
8290
      return logicGroupCacheNodeToJson(pObj, pJson);
×
8291
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
8292
      return logicDynQueryCtrlNodeToJson(pObj, pJson);
×
8293
    case QUERY_NODE_LOGIC_SUBPLAN:
5,051✔
8294
      return logicSubplanToJson(pObj, pJson);
5,051✔
8295
    case QUERY_NODE_LOGIC_PLAN:
284✔
8296
      return logicPlanToJson(pObj, pJson);
284✔
8297
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
7✔
8298
      return physiTagScanNodeToJson(pObj, pJson);
7✔
8299
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
6✔
8300
      return physiScanNodeToJson(pObj, pJson);
6✔
8301
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
16✔
8302
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
8303
      return physiLastRowScanNodeToJson(pObj, pJson);
16✔
8304
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
13,211✔
8305
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
8306
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
8307
      return physiTableScanNodeToJson(pObj, pJson);
13,211✔
8308
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
1,937✔
8309
      return physiSysTableScanNodeToJson(pObj, pJson);
1,937✔
8310
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
7,636✔
8311
      return physiProjectNodeToJson(pObj, pJson);
7,636✔
8312
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
22✔
8313
      return physiMergeJoinNodeToJson(pObj, pJson);
22✔
8314
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
8315
      return physiHashJoinNodeToJson(pObj, pJson);
×
8316
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
416✔
8317
      return physiAggNodeToJson(pObj, pJson);
416✔
8318
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
966✔
8319
      return physiExchangeNodeToJson(pObj, pJson);
966✔
8320
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
70✔
8321
      return physiMergeNodeToJson(pObj, pJson);
70✔
8322
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
78✔
8323
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
8324
      return physiSortNodeToJson(pObj, pJson);
78✔
8325
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
5,376✔
8326
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
8327
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
8328
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
8329
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
8330
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
8331
      return physiIntervalNodeToJson(pObj, pJson);
5,376✔
8332
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
681✔
8333
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
8334
      return physiFillNodeToJson(pObj, pJson);
681✔
8335
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
1,014✔
8336
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
8337
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
8338
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
8339
      return physiSessionWindowNodeToJson(pObj, pJson);
1,014✔
8340
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
451✔
8341
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
8342
      return physiStateWindowNodeToJson(pObj, pJson);
451✔
8343
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
251✔
8344
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
8345
      return physiEventWindowNodeToJson(pObj, pJson);
251✔
8346
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
376✔
8347
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
8348
      return physiCountWindowNodeToJson(pObj, pJson);
376✔
8349
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
8350
      return physiAnomalyWindowNodeToJson(pObj, pJson);
×
8351
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
34✔
8352
      return physiPartitionNodeToJson(pObj, pJson);
34✔
8353
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
1,527✔
8354
      return physiStreamPartitionNodeToJson(pObj, pJson);
1,527✔
8355
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
20✔
8356
      return physiIndefRowsFuncNodeToJson(pObj, pJson);
20✔
8357
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
349✔
8358
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
8359
      return physiInterpFuncNodeToJson(pObj, pJson);
349✔
8360
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
8361
      return physiForecastFuncNodeToJson(pObj, pJson);
×
8362
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
3,583✔
8363
      return physiDispatchNodeToJson(pObj, pJson);
3,583✔
8364
    case QUERY_NODE_PHYSICAL_PLAN_INSERT:
×
8365
      break;
×
8366
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
6✔
8367
      return physiQueryInsertNodeToJson(pObj, pJson);
6✔
8368
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
12✔
8369
      return physiDeleteNodeToJson(pObj, pJson);
12✔
8370
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
8371
      return physiGroupCacheNodeToJson(pObj, pJson);
×
8372
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
8373
      return physiDynQueryCtrlNodeToJson(pObj, pJson);
×
8374
    case QUERY_NODE_PHYSICAL_SUBPLAN:
16,058✔
8375
      return subplanToJson(pObj, pJson);
16,058✔
8376
    case QUERY_NODE_PHYSICAL_PLAN:
2,768✔
8377
      return planToJson(pObj, pJson);
2,768✔
8378
    default:
×
8379
      break;
×
8380
  }
8381
  nodesWarn("specificNodeToJson unknown node = %s", nodesNodeName(nodeType(pObj)));
×
8382
  return TSDB_CODE_SUCCESS;
90✔
8383
}
8384

8385
static int32_t jsonToSpecificNode(const SJson* pJson, void* pObj) {
3,704,717✔
8386
  switch (nodeType(pObj)) {
3,704,717!
8387
    case QUERY_NODE_COLUMN:
1,250,229✔
8388
      return jsonToColumnNode(pJson, pObj);
1,250,229✔
8389
    case QUERY_NODE_VALUE:
77,388✔
8390
      return jsonToValueNode(pJson, pObj);
77,388✔
8391
    case QUERY_NODE_OPERATOR:
10,622✔
8392
      return jsonToOperatorNode(pJson, pObj);
10,622✔
8393
    case QUERY_NODE_LOGIC_CONDITION:
2,679✔
8394
      return jsonToLogicConditionNode(pJson, pObj);
2,679✔
8395
    case QUERY_NODE_FUNCTION:
793,652✔
8396
      return jsonToFunctionNode(pJson, pObj);
793,652✔
8397
    case QUERY_NODE_REAL_TABLE:
7,347✔
8398
      return jsonToRealTableNode(pJson, pObj);
7,347✔
8399
    case QUERY_NODE_TEMP_TABLE:
165✔
8400
      return jsonToTempTableNode(pJson, pObj);
165✔
8401
    case QUERY_NODE_JOIN_TABLE:
62✔
8402
      return jsonToJoinTableNode(pJson, pObj);
62✔
8403
    case QUERY_NODE_GROUPING_SET:
413✔
8404
      return jsonToGroupingSetNode(pJson, pObj);
413✔
8405
    case QUERY_NODE_ORDER_BY_EXPR:
658✔
8406
      return jsonToOrderByExprNode(pJson, pObj);
658✔
8407
    case QUERY_NODE_LIMIT:
222✔
8408
      return jsonToLimitNode(pJson, pObj);
222✔
8409
    case QUERY_NODE_STATE_WINDOW:
120✔
8410
      return jsonToStateWindowNode(pJson, pObj);
120✔
8411
    case QUERY_NODE_SESSION_WINDOW:
219✔
8412
      return jsonToSessionWindowNode(pJson, pObj);
219✔
8413
    case QUERY_NODE_INTERVAL_WINDOW:
3,486✔
8414
      return jsonToIntervalWindowNode(pJson, pObj);
3,486✔
8415
    case QUERY_NODE_NODE_LIST:
3,841✔
8416
      return jsonToNodeListNode(pJson, pObj);
3,841✔
8417
    case QUERY_NODE_FILL:
368✔
8418
      return jsonToFillNode(pJson, pObj);
368✔
8419
    case QUERY_NODE_TARGET:
715,372✔
8420
      return jsonToTargetNode(pJson, pObj);
715,372✔
8421
    case QUERY_NODE_DATABLOCK_DESC:
33,051✔
8422
      return jsonToDataBlockDescNode(pJson, pObj);
33,051✔
8423
    case QUERY_NODE_SLOT_DESC:
717,530✔
8424
      return jsonToSlotDescNode(pJson, pObj);
717,530✔
8425
    case QUERY_NODE_COLUMN_DEF:
13,000✔
8426
      return jsonToColumnDefNode(pJson, pObj);
13,000✔
8427
    case QUERY_NODE_DOWNSTREAM_SOURCE:
×
8428
      return jsonToDownstreamSourceNode(pJson, pObj);
×
8429
    case QUERY_NODE_DATABASE_OPTIONS:
420✔
8430
      return jsonToDatabaseOptions(pJson, pObj);
420✔
8431
    case QUERY_NODE_TABLE_OPTIONS:
96✔
8432
      return jsonToTableOptions(pJson, pObj);
96✔
8433
    case QUERY_NODE_COLUMN_OPTIONS:
12,663✔
8434
      return jsonToColumnOptions(pJson, pObj);
12,663✔
8435
    case QUERY_NODE_INDEX_OPTIONS:
19✔
8436
      return jsonToIndexOptions(pJson, pObj);
19✔
8437
    case QUERY_NODE_EXPLAIN_OPTIONS:
30✔
8438
      return jsonToExplainOptions(pJson, pObj);
30✔
8439
    case QUERY_NODE_STREAM_OPTIONS:
105✔
8440
      return jsonToStreamOptions(pJson, pObj);
105✔
8441
    case QUERY_NODE_LEFT_VALUE:
16✔
8442
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to deserialize.
16✔
8443
    case QUERY_NODE_WHEN_THEN:
150✔
8444
      return jsonToWhenThenNode(pJson, pObj);
150✔
8445
    case QUERY_NODE_CASE_WHEN:
134✔
8446
      return jsonToCaseWhenNode(pJson, pObj);
134✔
8447
    case QUERY_NODE_EVENT_WINDOW:
48✔
8448
      return jsonToEventWindowNode(pJson, pObj);
48✔
8449
    case QUERY_NODE_WINDOW_OFFSET:
×
8450
      return jsonToWindowOffsetNode(pJson, pObj);
×
8451
    case QUERY_NODE_COUNT_WINDOW:
78✔
8452
      return jsonToCountWindowNode(pJson, pObj);
78✔
8453
    case QUERY_NODE_ANOMALY_WINDOW:
×
8454
      return jsonToAnomalyWindowNode(pJson, pObj);
×
8455
    case QUERY_NODE_STREAM_NOTIFY_OPTIONS:
×
8456
      return jsonToStreamNotifyOptions(pJson, pObj);
×
8457
    case QUERY_NODE_SET_OPERATOR:
64✔
8458
      return jsonToSetOperator(pJson, pObj);
64✔
8459
    case QUERY_NODE_SELECT_STMT:
7,467✔
8460
      return jsonToSelectStmt(pJson, pObj);
7,467✔
8461
    case QUERY_NODE_VNODE_MODIFY_STMT:
120✔
8462
      return jsonToVnodeModifyStmt(pJson, pObj);
120✔
8463
    case QUERY_NODE_CREATE_DATABASE_STMT:
54✔
8464
      return jsonToCreateDatabaseStmt(pJson, pObj);
54✔
8465
    case QUERY_NODE_ALTER_DATABASE_STMT:
366✔
8466
      return jsonToAlterDatabaseStmt(pJson, pObj);
366✔
8467
    case QUERY_NODE_TRIM_DATABASE_STMT:
18✔
8468
      return jsonToTrimDatabaseStmt(pJson, pObj);
18✔
8469
    case QUERY_NODE_S3MIGRATE_DATABASE_STMT:
×
8470
      return jsonToS3MigrateDatabaseStmt(pJson, pObj);
×
8471
    case QUERY_NODE_CREATE_TABLE_STMT:
45✔
8472
      return jsonToCreateTableStmt(pJson, pObj);
45✔
8473
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
15✔
8474
      return jsonToCreateSubTableClause(pJson, pObj);
15✔
8475
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
9✔
8476
      return jsonToCreateMultiTablesStmt(pJson, pObj);
9✔
8477
    case QUERY_NODE_DROP_TABLE_CLAUSE:
12✔
8478
      return jsonToDropTableClause(pJson, pObj);
12✔
8479
    case QUERY_NODE_DROP_TABLE_STMT:
6✔
8480
      return jsonToDropTableStmt(pJson, pObj);
6✔
8481
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
9✔
8482
      return jsonToDropStableStmt(pJson, pObj);
9✔
8483
    case QUERY_NODE_ALTER_TABLE_STMT:
75✔
8484
      return jsonToAlterTableStmt(pJson, pObj);
75✔
8485
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
87✔
8486
      return jsonToAlterStableStmt(pJson, pObj);
87✔
8487
    case QUERY_NODE_CREATE_USER_STMT:
18✔
8488
      return jsonToCreateUserStmt(pJson, pObj);
18✔
8489
    case QUERY_NODE_ALTER_USER_STMT:
27✔
8490
      return jsonToAlterUserStmt(pJson, pObj);
27✔
8491
    case QUERY_NODE_DROP_USER_STMT:
9✔
8492
      return jsonToDropUserStmt(pJson, pObj);
9✔
8493
    case QUERY_NODE_USE_DATABASE_STMT:
9✔
8494
      return jsonToUseDatabaseStmt(pJson, pObj);
9✔
8495
    case QUERY_NODE_CREATE_DNODE_STMT:
54✔
8496
      return jsonToCreateDnodeStmt(pJson, pObj);
54✔
8497
    case QUERY_NODE_DROP_DNODE_STMT:
81✔
8498
      return jsonToDropDnodeStmt(pJson, pObj);
81✔
8499
    case QUERY_NODE_ALTER_DNODE_STMT:
36✔
8500
      return jsonToAlterDnodeStmt(pJson, pObj);
36✔
8501
    case QUERY_NODE_CREATE_INDEX_STMT:
19✔
8502
      return jsonToCreateIndexStmt(pJson, pObj);
19✔
8503
    case QUERY_NODE_DROP_INDEX_STMT:
18✔
8504
      return jsonToDropIndexStmt(pJson, pObj);
18✔
8505
    case QUERY_NODE_CREATE_QNODE_STMT:
9✔
8506
      return jsonToCreateQnodeStmt(pJson, pObj);
9✔
8507
    case QUERY_NODE_DROP_QNODE_STMT:
9✔
8508
      return jsonToDropQnodeStmt(pJson, pObj);
9✔
8509
    case QUERY_NODE_CREATE_SNODE_STMT:
9✔
8510
      return jsonToCreateSnodeStmt(pJson, pObj);
9✔
8511
    case QUERY_NODE_DROP_SNODE_STMT:
9✔
8512
      return jsonToDropSnodeStmt(pJson, pObj);
9✔
8513
    case QUERY_NODE_CREATE_MNODE_STMT:
9✔
8514
      return jsonToCreateMnodeStmt(pJson, pObj);
9✔
8515
    case QUERY_NODE_DROP_MNODE_STMT:
9✔
8516
      return jsonToDropMnodeStmt(pJson, pObj);
9✔
8517
    case QUERY_NODE_CREATE_TOPIC_STMT:
73✔
8518
      return jsonToCreateTopicStmt(pJson, pObj);
73✔
8519
    case QUERY_NODE_DROP_TOPIC_STMT:
18✔
8520
      return jsonToDropTopicStmt(pJson, pObj);
18✔
8521
    case QUERY_NODE_DROP_CGROUP_STMT:
18✔
8522
      return jsonToDropConsumerGroupStmt(pJson, pObj);
18✔
8523
    case QUERY_NODE_ALTER_LOCAL_STMT:
18✔
8524
      return jsonToAlterLocalStmt(pJson, pObj);
18✔
8525
    case QUERY_NODE_EXPLAIN_STMT:
30✔
8526
      return jsonToExplainStmt(pJson, pObj);
30✔
8527
    case QUERY_NODE_DESCRIBE_STMT:
18✔
8528
      return jsonToDescribeStmt(pJson, pObj);
18✔
8529
    case QUERY_NODE_COMPACT_DATABASE_STMT:
36✔
8530
      return jsonToCompactDatabaseStmt(pJson, pObj);
36✔
8531
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
×
8532
      return jsonToCompactVgroupsStmt(pJson, pObj);
×
8533
    case QUERY_NODE_CREATE_STREAM_STMT:
86✔
8534
      return jsonToCreateStreamStmt(pJson, pObj);
86✔
8535
    case QUERY_NODE_DROP_STREAM_STMT:
18✔
8536
      return jsonToDropStreamStmt(pJson, pObj);
18✔
8537
    case QUERY_NODE_BALANCE_VGROUP_STMT:
9✔
8538
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to deserialize.
9✔
8539
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
9✔
8540
      return TSDB_CODE_SUCCESS;
9✔
8541
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
8542
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to deserialize.
×
8543
    case QUERY_NODE_MERGE_VGROUP_STMT:
9✔
8544
      return jsonToMergeVgroupStmt(pJson, pObj);
9✔
8545
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
18✔
8546
      return jsonToRedistributeVgroupStmt(pJson, pObj);
18✔
8547
    case QUERY_NODE_SPLIT_VGROUP_STMT:
9✔
8548
      return jsonToSplitVgroupStmt(pJson, pObj);
9✔
8549
    case QUERY_NODE_GRANT_STMT:
54✔
8550
      return jsonToGrantStmt(pJson, pObj);
54✔
8551
    case QUERY_NODE_REVOKE_STMT:
54✔
8552
      return jsonToRevokeStmt(pJson, pObj);
54✔
8553
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
8554
      return jsonToAlterClusterStmt(pJson, pObj);
×
8555
    case QUERY_NODE_SHOW_DNODES_STMT:
3✔
8556
      return jsonToShowDnodesStmt(pJson, pObj);
3✔
8557
    case QUERY_NODE_SHOW_MNODES_STMT:
3✔
8558
      return jsonToShowMnodesStmt(pJson, pObj);
3✔
8559
    case QUERY_NODE_SHOW_QNODES_STMT:
3✔
8560
      return jsonToShowQnodesStmt(pJson, pObj);
3✔
8561
    case QUERY_NODE_SHOW_ANODES_STMT:
×
8562
      return jsonToShowAnodesStmt(pJson, pObj);
×
8563
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
8564
      return jsonToShowAnodesFullStmt(pJson, pObj);
×
8565
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
8566
      return jsonToShowArbGroupsStmt(pJson, pObj);
×
8567
    case QUERY_NODE_SHOW_CLUSTER_STMT:
3✔
8568
      return jsonToShowClusterStmt(pJson, pObj);
3✔
8569
    case QUERY_NODE_SHOW_DATABASES_STMT:
3✔
8570
      return jsonToShowDatabasesStmt(pJson, pObj);
3✔
8571
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
3✔
8572
      return jsonToShowFunctionsStmt(pJson, pObj);
3✔
8573
    case QUERY_NODE_SHOW_INDEXES_STMT:
6✔
8574
      return jsonToShowIndexesStmt(pJson, pObj);
6✔
8575
    case QUERY_NODE_SHOW_STABLES_STMT:
12✔
8576
      return jsonToShowStablesStmt(pJson, pObj);
12✔
8577
    case QUERY_NODE_SHOW_STREAMS_STMT:
3✔
8578
      return jsonToShowStreamsStmt(pJson, pObj);
3✔
8579
    case QUERY_NODE_SHOW_TABLES_STMT:
12✔
8580
      return jsonToShowTablesStmt(pJson, pObj);
12✔
8581
    case QUERY_NODE_SHOW_TAGS_STMT:
3✔
8582
      return jsonToShowTagsStmt(pJson, pObj);
3✔
8583
    case QUERY_NODE_SHOW_USERS_STMT:
3✔
8584
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
8585
      return jsonToShowUsersStmt(pJson, pObj);
3✔
8586
    case QUERY_NODE_SHOW_VGROUPS_STMT:
6✔
8587
      return jsonToShowVgroupsStmt(pJson, pObj);
6✔
8588
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
3✔
8589
      return jsonToShowConsumersStmt(pJson, pObj);
3✔
8590
    case QUERY_NODE_SHOW_VARIABLES_STMT:
9✔
8591
      return jsonToShowVariablesStmt(pJson, pObj);
9✔
8592
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
8593
      return jsonToShowGrantsFullStmt(pJson, pObj);
×
8594
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
8595
      return jsonToShowGrantsLogsStmt(pJson, pObj);
×
8596
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
8597
      return jsonToShowClusterMachinesStmt(pJson, pObj);
×
8598
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
8599
      return jsonToShowEncryptionsStmt(pJson, pObj);
×
8600
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
6✔
8601
      return jsonToShowDnodeVariablesStmt(pJson, pObj);
6✔
8602
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
3✔
8603
      return jsonToShowTransactionsStmt(pJson, pObj);
3✔
8604
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
3✔
8605
      return jsonToShowSubscriptionsStmt(pJson, pObj);
3✔
8606
    case QUERY_NODE_SHOW_VNODES_STMT:
6✔
8607
      return jsonToShowVnodesStmt(pJson, pObj);
6✔
8608
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
3✔
8609
      return jsonToShowUserPrivilegesStmt(pJson, pObj);
3✔
8610
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
9✔
8611
      return jsonToShowCreateDatabaseStmt(pJson, pObj);
9✔
8612
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
9✔
8613
      return jsonToShowCreateTableStmt(pJson, pObj);
9✔
8614
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
9✔
8615
      return jsonToShowCreateStableStmt(pJson, pObj);
9✔
8616
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
8617
      return jsonToShowCreateViewStmt(pJson, pObj);
×
8618
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
3✔
8619
      return jsonToShowTableDistributedStmt(pJson, pObj);
3✔
8620
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
9✔
8621
      return jsonToShowLocalVariablesStmt(pJson, pObj);
9✔
8622
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
9✔
8623
      return jsonToShowTableTagsStmt(pJson, pObj);
9✔
8624
    case QUERY_NODE_SHOW_USAGE_STMT:
×
8625
      return jsonToShowUsageStmt(pJson, pObj);
×
8626
    case QUERY_NODE_DELETE_STMT:
43✔
8627
      return jsonToDeleteStmt(pJson, pObj);
43✔
8628
    case QUERY_NODE_INSERT_STMT:
12✔
8629
      return jsonToInsertStmt(pJson, pObj);
12✔
8630
    case QUERY_NODE_RESTORE_DNODE_STMT:
9✔
8631
      return jsonToRestoreDnodeStmt(pJson, pObj);
9✔
8632
    case QUERY_NODE_RESTORE_QNODE_STMT:
9✔
8633
      return jsonToRestoreQnodeStmt(pJson, pObj);
9✔
8634
    case QUERY_NODE_RESTORE_MNODE_STMT:
9✔
8635
      return jsonToRestoreMnodeStmt(pJson, pObj);
9✔
8636
    case QUERY_NODE_RESTORE_VNODE_STMT:
9✔
8637
      return jsonToRestoreVnodeStmt(pJson, pObj);
9✔
8638
    case QUERY_NODE_LOGIC_PLAN_SCAN:
1,373✔
8639
      return jsonToLogicScanNode(pJson, pObj);
1,373✔
8640
    case QUERY_NODE_LOGIC_PLAN_JOIN:
44✔
8641
      return jsonToLogicJoinNode(pJson, pObj);
44✔
8642
    case QUERY_NODE_LOGIC_PLAN_AGG:
556✔
8643
      return jsonToLogicAggNode(pJson, pObj);
556✔
8644
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
723✔
8645
      return jsonToLogicProjectNode(pJson, pObj);
723✔
8646
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
28✔
8647
      return jsonToLogicVnodeModifyNode(pJson, pObj);
28✔
8648
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
202✔
8649
      return jsonToLogicExchangeNode(pJson, pObj);
202✔
8650
    case QUERY_NODE_LOGIC_PLAN_MERGE:
71✔
8651
      return jsonToLogicMergeNode(pJson, pObj);
71✔
8652
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
237✔
8653
      return jsonToLogicWindowNode(pJson, pObj);
237✔
8654
    case QUERY_NODE_LOGIC_PLAN_FILL:
41✔
8655
      return jsonToLogicFillNode(pJson, pObj);
41✔
8656
    case QUERY_NODE_LOGIC_PLAN_SORT:
144✔
8657
      return jsonToLogicSortNode(pJson, pObj);
144✔
8658
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
89✔
8659
      return jsonToLogicPartitionNode(pJson, pObj);
89✔
8660
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
56✔
8661
      return jsonToLogicIndefRowsFuncNode(pJson, pObj);
56✔
8662
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
16✔
8663
      return jsonToLogicInterpFuncNode(pJson, pObj);
16✔
8664
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
8665
      return jsonToLogicForecastFuncNode(pJson, pObj);
×
8666
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
8667
      return jsonToLogicGroupCacheNode(pJson, pObj);
×
8668
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
8669
      return jsonToLogicDynQueryCtrlNode(pJson, pObj);
×
8670
    case QUERY_NODE_LOGIC_SUBPLAN:
1,558✔
8671
      return jsonToLogicSubplan(pJson, pObj);
1,558✔
8672
    case QUERY_NODE_LOGIC_PLAN:
284✔
8673
      return jsonToLogicPlan(pJson, pObj);
284✔
8674
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
7✔
8675
      return jsonToPhysiTagScanNode(pJson, pObj);
7✔
8676
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
6✔
8677
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
8678
      return jsonToPhysiScanNode(pJson, pObj);
6✔
8679
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
16✔
8680
      return jsonToPhysiLastRowScanNode(pJson, pObj);
16✔
8681
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
13,217✔
8682
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
8683
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
8684
      return jsonToPhysiTableScanNode(pJson, pObj);
13,217✔
8685
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
46✔
8686
      return jsonToPhysiSysTableScanNode(pJson, pObj);
46✔
8687
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
7,478✔
8688
      return jsonToPhysiProjectNode(pJson, pObj);
7,478✔
8689
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
22✔
8690
      return jsonToPhysiMergeJoinNode(pJson, pObj);
22✔
8691
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
8692
      return jsonToPhysiHashJoinNode(pJson, pObj);
×
8693
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
401✔
8694
      return jsonToPhysiAggNode(pJson, pObj);
401✔
8695
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
334✔
8696
      return jsonToPhysiExchangeNode(pJson, pObj);
334✔
8697
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
70✔
8698
      return jsonToPhysiMergeNode(pJson, pObj);
70✔
8699
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
78✔
8700
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
8701
      return jsonToPhysiSortNode(pJson, pObj);
78✔
8702
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
5,559✔
8703
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
8704
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
8705
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
8706
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
8707
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
8708
      return jsonToPhysiIntervalNode(pJson, pObj);
5,559✔
8709
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
682✔
8710
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
8711
      return jsonToPhysiFillNode(pJson, pObj);
682✔
8712
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
1,019✔
8713
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
8714
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
8715
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
8716
      return jsonToPhysiSessionWindowNode(pJson, pObj);
1,019✔
8717
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
456✔
8718
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
8719
      return jsonToPhysiStateWindowNode(pJson, pObj);
456✔
8720
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
255✔
8721
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
8722
      return jsonToPhysiEventWindowNode(pJson, pObj);
255✔
8723
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
398✔
8724
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
8725
      return jsonToPhysiCountWindowNode(pJson, pObj);
398✔
8726
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
8727
      return jsonToPhysiAnomalyWindowNode(pJson, pObj);
×
8728
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
34✔
8729
      return jsonToPhysiPartitionNode(pJson, pObj);
34✔
8730
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
1,524✔
8731
      return jsonToPhysiStreamPartitionNode(pJson, pObj);
1,524✔
8732
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
20✔
8733
      return jsonToPhysiIndefRowsFuncNode(pJson, pObj);
20✔
8734
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
350✔
8735
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
8736
      return jsonToPhysiInterpFuncNode(pJson, pObj);
350✔
8737
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
8738
      return jsonToPhysiForecastFuncNode(pJson, pObj);
×
8739
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
1,060✔
8740
      return jsonToPhysiDispatchNode(pJson, pObj);
1,060✔
8741
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
6✔
8742
      return jsonToPhysiQueryInsertNode(pJson, pObj);
6✔
8743
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
12✔
8744
      return jsonToPhysiDeleteNode(pJson, pObj);
12✔
8745
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
8746
      return jsonToPhysiGroupCacheNode(pJson, pObj);
×
8747
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
8748
      return jsonToPhysiDynQueryCtrlNode(pJson, pObj);
×
8749
    case QUERY_NODE_PHYSICAL_SUBPLAN:
13,542✔
8750
      return jsonToSubplan(pJson, pObj);
13,542✔
8751
    case QUERY_NODE_PHYSICAL_PLAN:
2,454✔
8752
      return jsonToPlan(pJson, pObj);
2,454✔
8753
    default:
×
8754
      break;
×
8755
  }
8756
  nodesWarn("jsonToSpecificNode unknown node = %s", nodesNodeName(nodeType(pObj)));
×
8757
  return TSDB_CODE_SUCCESS;
54✔
8758
}
8759

8760
static const char* jkNodeType = "NodeType";
8761
static const char* jkNodeName = "Name";
8762

8763
static int32_t nodeToJson(const void* pObj, SJson* pJson) {
3,031,599✔
8764
  const SNode* pNode = (const SNode*)pObj;
3,031,599✔
8765

8766
  int32_t code = tjsonAddIntegerToObject(pJson, jkNodeType, pNode->type);
3,031,599✔
8767
  if (TSDB_CODE_SUCCESS == code) {
3,031,526!
8768
    code = tjsonAddStringToObject(pJson, jkNodeName, nodesNodeName(pNode->type));
3,031,529✔
8769
  }
8770
  if (TSDB_CODE_SUCCESS == code) {
3,031,494!
8771
    code = tjsonAddObject(pJson, nodesNodeName(pNode->type), specificNodeToJson, pNode);
3,031,494✔
8772
    if (TSDB_CODE_SUCCESS != code) {
3,031,500!
8773
      nodesError("%s ToJson error", nodesNodeName(pNode->type));
×
8774
    }
8775
  }
8776

8777
  return code;
3,031,497✔
8778
}
8779

8780
static int32_t jsonToNode(const SJson* pJson, void* pObj) {
3,703,698✔
8781
  SNode* pNode = (SNode*)pObj;
3,703,698✔
8782

8783
  int32_t code;
8784
  tjsonGetNumberValue(pJson, jkNodeType, pNode->type, code);
3,703,698✔
8785
  if (TSDB_CODE_SUCCESS == code) {
3,704,131✔
8786
    code = tjsonToObject(pJson, nodesNodeName(pNode->type), jsonToSpecificNode, pNode);
3,704,128✔
8787
    if (TSDB_CODE_SUCCESS != code) {
3,704,481!
8788
      nodesError("%s toNode error", nodesNodeName(pNode->type));
×
8789
    }
8790
  }
8791

8792
  return code;
3,704,487✔
8793
}
8794

8795
static int32_t makeNodeByJson(const SJson* pJson, SNode** pNode) {
3,702,584✔
8796
  int32_t val = 0;
3,702,584✔
8797
  int32_t code = tjsonGetIntValue(pJson, jkNodeType, &val);
3,702,584✔
8798
  if (TSDB_CODE_SUCCESS == code) {
3,704,313!
8799
    code = nodesMakeNode(val, pNode);
3,704,320✔
8800
    if (NULL == *pNode) {
3,703,813!
8801
      return code;
×
8802
    }
8803
    code = jsonToNode(pJson, *pNode);
3,703,813✔
8804
  }
8805

8806
  return code;
3,704,486✔
8807
}
8808

8809
static int32_t jsonToNodeObject(const SJson* pJson, const char* pName, SNode** pNode) {
1,072,092✔
8810
  SJson* pJsonNode = tjsonGetObjectItem(pJson, pName);
1,072,092✔
8811
  if (NULL == pJsonNode) {
1,071,646✔
8812
    return TSDB_CODE_SUCCESS;
229,306✔
8813
  }
8814
  return makeNodeByJson(pJsonNode, pNode);
842,340✔
8815
}
8816

8817
int32_t nodesNodeToString(const SNode* pNode, bool format, char** pStr, int32_t* pLen) {
23,760✔
8818
  if (NULL == pNode || NULL == pStr) {
23,760!
8819
    terrno = TSDB_CODE_FAILED;
×
8820
    return TSDB_CODE_FAILED;
×
8821
  }
8822

8823
  SJson* pJson = tjsonCreateObject();
23,761✔
8824
  if (NULL == pJson) {
23,761!
8825
    return terrno;
×
8826
  }
8827

8828
  int32_t code = nodeToJson(pNode, pJson);
23,761✔
8829
  if (TSDB_CODE_SUCCESS != code) {
23,759!
8830
    terrno = code;
×
8831
    return code;
×
8832
  }
8833

8834
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
23,759!
8835
  tjsonDelete(pJson);
23,759✔
8836

8837
  if (NULL != pLen) {
23,761✔
8838
    *pLen = strlen(*pStr) + 1;
16,895✔
8839
  }
8840

8841
  return TSDB_CODE_SUCCESS;
23,761✔
8842
}
8843

8844
int32_t nodesStringToNode(const char* pStr, SNode** pNode) {
23,009✔
8845
  if (NULL == pStr || NULL == pNode) {
23,009!
8846
    return TSDB_CODE_SUCCESS;
×
8847
  }
8848
  SJson* pJson = tjsonParse(pStr);
23,010✔
8849
  if (NULL == pJson) {
23,008!
8850
    return TSDB_CODE_FAILED;
×
8851
  }
8852
  int32_t code = makeNodeByJson(pJson, pNode);
23,008✔
8853
  tjsonDelete(pJson);
23,010✔
8854
  if (TSDB_CODE_SUCCESS != code) {
23,009!
8855
    nodesDestroyNode(*pNode);
×
8856
    *pNode = NULL;
×
8857
    terrno = code;
×
8858
    return code;
×
8859
  }
8860
  return TSDB_CODE_SUCCESS;
23,009✔
8861
}
8862

8863
int32_t nodesListToString(const SNodeList* pList, bool format, char** pStr, int32_t* pLen) {
278✔
8864
  if (NULL == pList || NULL == pStr || NULL == pLen) {
278!
8865
    terrno = TSDB_CODE_FAILED;
×
8866
    return TSDB_CODE_FAILED;
×
8867
  }
8868

8869
  if (0 == LIST_LENGTH(pList)) {
278!
8870
    return TSDB_CODE_SUCCESS;
×
8871
  }
8872

8873
  SJson* pJson = tjsonCreateArray();
278✔
8874
  if (NULL == pJson) {
278!
8875
    return terrno;
×
8876
  }
8877

8878
  SNode* pNode;
8879
  FOREACH(pNode, pList) {
34,692!
8880
    int32_t code = tjsonAddItem(pJson, nodeToJson, pNode);
34,414✔
8881
    if (TSDB_CODE_SUCCESS != code) {
34,414!
8882
      terrno = code;
×
8883
      return code;
×
8884
    }
8885
  }
8886

8887
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
278!
8888
  tjsonDelete(pJson);
278✔
8889

8890
  *pLen = strlen(*pStr) + 1;
278✔
8891
  return TSDB_CODE_SUCCESS;
278✔
8892
}
8893

8894
int32_t nodesStringToList(const char* pStr, SNodeList** pList) {
259✔
8895
  if (NULL == pStr || NULL == pList) {
259!
8896
    return TSDB_CODE_SUCCESS;
×
8897
  }
8898
  SJson* pJson = tjsonParse(pStr);
259✔
8899
  if (NULL == pJson) {
259!
8900
    return TSDB_CODE_FAILED;
×
8901
  }
8902
  int32_t code = jsonToNodeListImpl(pJson, pList);
259✔
8903
  tjsonDelete(pJson);
259✔
8904
  if (TSDB_CODE_SUCCESS != code) {
259!
8905
    nodesDestroyList(*pList);
×
8906
    *pList = NULL;
×
8907
    terrno = code;
×
8908
    return code;
×
8909
  }
8910
  return TSDB_CODE_SUCCESS;
259✔
8911
}
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