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

taosdata / TDengine / #3631

07 Mar 2025 03:18PM UTC coverage: 60.671% (-3.0%) from 63.629%
#3631

push

travis-ci

web-flow
Merge pull request #30074 from taosdata/ciup30

ci: update ci workflow to fix path issue

141481 of 300084 branches covered (47.15%)

Branch coverage included in aggregate %.

223132 of 300884 relevant lines covered (74.16%)

7878557.0 hits per line

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

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

473
static int32_t nodeListToJson(SJson* pJson, const char* pName, const SNodeList* pList) {
529,882✔
474
  if (LIST_LENGTH(pList) > 0) {
529,882!
475
    SJson* jList = tjsonAddArrayToObject(pJson, pName);
439,562✔
476
    if (NULL == jList) {
439,563!
477
      return terrno;
×
478
    }
479
    SNode* pNode;
480
    FOREACH(pNode, pList) {
2,216,344!
481
      int32_t code = tjsonAddItem(jList, nodeToJson, pNode);
1,776,770✔
482
      if (TSDB_CODE_SUCCESS != code) {
1,776,781!
483
        return code;
×
484
      }
485
    }
486
  }
487
  return TSDB_CODE_SUCCESS;
529,894✔
488
}
489

490
static int32_t jsonToNodeListImpl(const SJson* pJsonArray, SNodeList** pList) {
956,080✔
491
  int32_t size = (NULL == pJsonArray ? 0 : tjsonGetArraySize(pJsonArray));
956,080✔
492
  if (size > 0) {
956,053✔
493
    int32_t code = nodesMakeList(pList);
855,319✔
494
    if (NULL == *pList) {
855,446!
495
      return code;
×
496
    }
497
  }
498

499
  int32_t code = TSDB_CODE_SUCCESS;
956,180✔
500
  for (int32_t i = 0; i < size; ++i) {
3,585,490✔
501
    SJson* pJsonItem = tjsonGetArrayItem(pJsonArray, i);
2,629,210✔
502
    SNode* pNode = NULL;
2,627,961✔
503
    code = makeNodeByJson(pJsonItem, &pNode);
2,627,961✔
504
    if (TSDB_CODE_SUCCESS == code) {
2,627,444!
505
      code = nodesListAppend(*pList, pNode);
2,627,457✔
506
    }
507
    if (TSDB_CODE_SUCCESS != code) {
2,629,310!
508
      break;
×
509
    }
510
  }
511
  return code;
956,280✔
512
}
513

514
static int32_t jsonToNodeList(const SJson* pJson, const char* pName, SNodeList** pList) {
955,685✔
515
  return jsonToNodeListImpl(tjsonGetObjectItem(pJson, pName), pList);
955,685✔
516
}
517

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

523
static int32_t tableComInfoToJson(const void* pObj, SJson* pJson) {
1,607✔
524
  const STableComInfo* pNode = (const STableComInfo*)pObj;
1,607✔
525

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

537
  return code;
1,607✔
538
}
539

540
static int32_t jsonToTableComInfo(const SJson* pJson, void* pObj) {
5,053✔
541
  STableComInfo* pNode = (STableComInfo*)pObj;
5,053✔
542

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

555
  return code;
5,053✔
556
}
557

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

564
static int32_t schemaToJson(const void* pObj, SJson* pJson) {
50,997✔
565
  const SSchema* pNode = (const SSchema*)pObj;
50,997✔
566

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

581
  return code;
50,997✔
582
}
583

584
static int32_t jsonToSchema(const SJson* pJson, void* pObj) {
494,914✔
585
  SSchema* pNode = (SSchema*)pObj;
494,914✔
586

587
  int32_t code;
588
  tjsonGetNumberValue(pJson, jkSchemaType, pNode->type, code);
494,914✔
589
  if (TSDB_CODE_SUCCESS == code) {
494,901✔
590
    tjsonGetNumberValue(pJson, jkSchemaColId, pNode->colId, code);
494,900✔
591
  }
592
  if (TSDB_CODE_SUCCESS == code) {
494,916✔
593
    tjsonGetNumberValue(pJson, jkSchemaBytes, pNode->bytes, code);
494,915✔
594
  }
595
  if (TSDB_CODE_SUCCESS == code) {
494,916✔
596
    code = tjsonGetStringValue(pJson, jkSchemaName, pNode->name);
494,913✔
597
  }
598
  if (TSDB_CODE_SUCCESS == code) {
494,896!
599
    tjsonGetNumberValue(pJson, jkSchemaFlags, pNode->flags, code);
494,896✔
600
  }
601

602
  return code;
494,909✔
603
}
604

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

614
static int32_t tableMetaToJson(const void* pObj, SJson* pJson) {
1,607✔
615
  const STableMeta* pNode = (const STableMeta*)pObj;
1,607✔
616

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

641
  return code;
1,607✔
642
}
643

644
static int32_t jsonToTableMeta(const SJson* pJson, void* pObj) {
5,053✔
645
  STableMeta* pNode = (STableMeta*)pObj;
5,053✔
646

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

671
  return code;
5,053✔
672
}
673

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

683
static int32_t logicPlanNodeToJson(const void* pObj, SJson* pJson) {
2,528✔
684
  const SLogicNode* pNode = (const SLogicNode*)pObj;
2,528✔
685

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

709
  return code;
2,528✔
710
}
711

712
static int32_t jsonToLogicPlanNode(const SJson* pJson, void* pObj) {
×
713
  SLogicNode* pNode = (SLogicNode*)pObj;
×
714

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

738
  return code;
×
739
}
740

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

758
static int32_t logicScanNodeToJson(const void* pObj, SJson* pJson) {
1,580✔
759
  const SScanLogicNode* pNode = (const SScanLogicNode*)pObj;
1,580✔
760

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

813
static int32_t jsonToLogicScanNode(const SJson* pJson, void* pObj) {
×
814
  SScanLogicNode* pNode = (SScanLogicNode*)pObj;
×
815

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

869
static const char* jkProjectLogicPlanProjections = "Projections";
870
static const char* jkProjectLogicPlanIgnoreGroupId = "IgnoreGroupId";
871
static const char* jkProjectLogicPlanInputIgnoreGroup = "InputIgnoreGroup";
872

873
static int32_t logicProjectNodeToJson(const void* pObj, SJson* pJson) {
632✔
874
  const SProjectLogicNode* pNode = (const SProjectLogicNode*)pObj;
632✔
875

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

887
  return code;
632✔
888
}
889

890
static int32_t jsonToLogicProjectNode(const SJson* pJson, void* pObj) {
×
891
  SProjectLogicNode* pNode = (SProjectLogicNode*)pObj;
×
892

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

906
static const char* jkVnodeModifyLogicPlanModifyType = "ModifyType";
907
static const char* jkVnodeModifyLogicPlanMsgType = "MsgType";
908
static const char* jkVnodeModifyLogicPlanAffectedRows = "AffectedRows";
909

910
static int32_t logicVnodeModifyNodeToJson(const void* pObj, SJson* pJson) {
×
911
  const SVnodeModifyLogicNode* pNode = (const SVnodeModifyLogicNode*)pObj;
×
912

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

924
  return code;
×
925
}
926

927
static int32_t jsonToLogicVnodeModifyNode(const SJson* pJson, void* pObj) {
×
928
  SVnodeModifyLogicNode* pNode = (SVnodeModifyLogicNode*)pObj;
×
929

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

941
  return code;
×
942
}
943

944
static const char* jkExchangeLogicPlanSrcStartGroupId = "SrcStartGroupId";
945
static const char* jkExchangeLogicPlanSrcEndGroupId = "SrcEndGroupId";
946

947
static int32_t logicExchangeNodeToJson(const void* pObj, SJson* pJson) {
316✔
948
  const SExchangeLogicNode* pNode = (const SExchangeLogicNode*)pObj;
316✔
949

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

958
  return code;
316✔
959
}
960

961
static int32_t jsonToLogicExchangeNode(const SJson* pJson, void* pObj) {
×
962
  SExchangeLogicNode* pNode = (SExchangeLogicNode*)pObj;
×
963

964
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
965
  if (TSDB_CODE_SUCCESS == code) {
×
966
    code = tjsonGetIntValue(pJson, jkExchangeLogicPlanSrcStartGroupId, &pNode->srcStartGroupId);
×
967
  }
968
  if (TSDB_CODE_SUCCESS == code) {
×
969
    code = tjsonGetIntValue(pJson, jkExchangeLogicPlanSrcEndGroupId, &pNode->srcEndGroupId);
×
970
  }
971

972
  return code;
×
973
}
974

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

980
static int32_t logicMergeNodeToJson(const void* pObj, SJson* pJson) {
×
981
  const SMergeLogicNode* pNode = (const SMergeLogicNode*)pObj;
×
982

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

997
  return code;
×
998
}
999

1000
static int32_t jsonToLogicMergeNode(const SJson* pJson, void* pObj) {
×
1001
  SMergeLogicNode* pNode = (SMergeLogicNode*)pObj;
×
1002

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

1017
  return code;
×
1018
}
1019

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

1036
static int32_t logicWindowNodeToJson(const void* pObj, SJson* pJson) {
×
1037
  const SWindowLogicNode* pNode = (const SWindowLogicNode*)pObj;
×
1038

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

1086
  return code;
×
1087
}
1088

1089
static int32_t jsonToLogicWindowNode(const SJson* pJson, void* pObj) {
×
1090
  SWindowLogicNode* pNode = (SWindowLogicNode*)pObj;
×
1091

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

1139
  return code;
×
1140
}
1141

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

1148
static int32_t logicFillNodeToJson(const void* pObj, SJson* pJson) {
×
1149
  const SFillLogicNode* pNode = (const SFillLogicNode*)pObj;
×
1150

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

1168
  return code;
×
1169
}
1170

1171
static int32_t jsonToLogicFillNode(const SJson* pJson, void* pObj) {
×
1172
  SFillLogicNode* pNode = (SFillLogicNode*)pObj;
×
1173

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

1191
  return code;
×
1192
}
1193

1194
static const char* jkSortLogicPlanSortKeys = "SortKeys";
1195

1196
static int32_t logicSortNodeToJson(const void* pObj, SJson* pJson) {
×
1197
  const SSortLogicNode* pNode = (const SSortLogicNode*)pObj;
×
1198

1199
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1200
  if (TSDB_CODE_SUCCESS == code) {
×
1201
    code = nodeListToJson(pJson, jkSortLogicPlanSortKeys, pNode->pSortKeys);
×
1202
  }
1203

1204
  return code;
×
1205
}
1206

1207
static int32_t jsonToLogicSortNode(const SJson* pJson, void* pObj) {
×
1208
  SSortLogicNode* pNode = (SSortLogicNode*)pObj;
×
1209

1210
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1211
  if (TSDB_CODE_SUCCESS == code) {
×
1212
    code = jsonToNodeList(pJson, jkSortLogicPlanSortKeys, &pNode->pSortKeys);
×
1213
  }
1214

1215
  return code;
×
1216
}
1217

1218
static const char* jkPartitionLogicPlanPartitionKeys = "PartitionKeys";
1219

1220
static int32_t logicPartitionNodeToJson(const void* pObj, SJson* pJson) {
×
1221
  const SPartitionLogicNode* pNode = (const SPartitionLogicNode*)pObj;
×
1222

1223
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1224
  if (TSDB_CODE_SUCCESS == code) {
×
1225
    code = nodeListToJson(pJson, jkPartitionLogicPlanPartitionKeys, pNode->pPartitionKeys);
×
1226
  }
1227

1228
  return code;
×
1229
}
1230

1231
static int32_t jsonToLogicPartitionNode(const SJson* pJson, void* pObj) {
×
1232
  SPartitionLogicNode* pNode = (SPartitionLogicNode*)pObj;
×
1233

1234
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1235
  if (TSDB_CODE_SUCCESS == code) {
×
1236
    code = jsonToNodeList(pJson, jkPartitionLogicPlanPartitionKeys, &pNode->pPartitionKeys);
×
1237
  }
1238

1239
  return code;
×
1240
}
1241

1242
static const char* jkIndefRowsFuncLogicPlanFuncs = "Funcs";
1243

1244
static int32_t logicIndefRowsFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1245
  const SIndefRowsFuncLogicNode* pNode = (const SIndefRowsFuncLogicNode*)pObj;
×
1246

1247
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1248
  if (TSDB_CODE_SUCCESS == code) {
×
1249
    code = nodeListToJson(pJson, jkIndefRowsFuncLogicPlanFuncs, pNode->pFuncs);
×
1250
  }
1251

1252
  return code;
×
1253
}
1254

1255
static int32_t jsonToLogicIndefRowsFuncNode(const SJson* pJson, void* pObj) {
×
1256
  SIndefRowsFuncLogicNode* pNode = (SIndefRowsFuncLogicNode*)pObj;
×
1257

1258
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1259
  if (TSDB_CODE_SUCCESS == code) {
×
1260
    code = jsonToNodeList(pJson, jkIndefRowsFuncLogicPlanFuncs, &pNode->pFuncs);
×
1261
  }
1262

1263
  return code;
×
1264
}
1265

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

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

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

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

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

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

1330
static int32_t logicInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1331
  const SInterpFuncLogicNode* pNode = (const SInterpFuncLogicNode*)pObj;
×
1332

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

1372
  return code;
×
1373
}
1374

1375
static int32_t jsonToLogicInterpFuncNode(const SJson* pJson, void* pObj) {
×
1376
  SInterpFuncLogicNode* pNode = (SInterpFuncLogicNode*)pObj;
×
1377

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

1417
  return code;
×
1418
}
1419

1420
static const char* jkForecastFuncLogicPlanFuncs = "Funcs";
1421

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

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

1430
  return code;
×
1431
}
1432

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

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

1441
  return code;
×
1442
}
1443

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

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

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

1466
  return code;
×
1467
}
1468

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

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

1486
  return code;
×
1487
}
1488

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

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

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

1511
  return code;
×
1512
}
1513

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

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

1531
  return code;
×
1532
}
1533

1534
static const char* jkSubplanIdQueryId = "QueryId";
1535
static const char* jkSubplanIdGroupId = "GroupId";
1536
static const char* jkSubplanIdSubplanId = "SubplanId";
1537

1538
static int32_t subplanIdToJson(const void* pObj, SJson* pJson) {
14,981✔
1539
  const SSubplanId* pNode = (const SSubplanId*)pObj;
14,981✔
1540

1541
  int32_t code = tjsonAddIntegerToObject(pJson, jkSubplanIdQueryId, pNode->queryId);
14,981✔
1542
  if (TSDB_CODE_SUCCESS == code) {
14,981!
1543
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdGroupId, pNode->groupId);
14,981✔
1544
  }
1545
  if (TSDB_CODE_SUCCESS == code) {
14,982!
1546
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdSubplanId, pNode->subplanId);
14,982✔
1547
  }
1548

1549
  return code;
14,981✔
1550
}
1551

1552
static int32_t jsonToSubplanId(const SJson* pJson, void* pObj) {
10,408✔
1553
  SSubplanId* pNode = (SSubplanId*)pObj;
10,408✔
1554

1555
  int32_t code = tjsonGetUBigIntValue(pJson, jkSubplanIdQueryId, &pNode->queryId);
10,408✔
1556
  if (TSDB_CODE_SUCCESS == code) {
10,411!
1557
    code = tjsonGetIntValue(pJson, jkSubplanIdGroupId, &pNode->groupId);
10,411✔
1558
  }
1559
  if (TSDB_CODE_SUCCESS == code) {
10,411!
1560
    code = tjsonGetIntValue(pJson, jkSubplanIdSubplanId, &pNode->subplanId);
10,411✔
1561
  }
1562

1563
  return code;
10,413✔
1564
}
1565

1566
static const char* jkEndPointFqdn = "Fqdn";
1567
static const char* jkEndPointPort = "Port";
1568

1569
static int32_t epToJson(const void* pObj, SJson* pJson) {
20,526✔
1570
  const SEp* pNode = (const SEp*)pObj;
20,526✔
1571

1572
  int32_t code = tjsonAddStringToObject(pJson, jkEndPointFqdn, pNode->fqdn);
20,526✔
1573
  if (TSDB_CODE_SUCCESS == code) {
20,528!
1574
    code = tjsonAddIntegerToObject(pJson, jkEndPointPort, pNode->port);
20,529✔
1575
  }
1576

1577
  return code;
20,527✔
1578
}
1579

1580
static int32_t jsonToEp(const SJson* pJson, void* pObj) {
19,659✔
1581
  SEp* pNode = (SEp*)pObj;
19,659✔
1582

1583
  int32_t code = tjsonGetStringValue(pJson, jkEndPointFqdn, pNode->fqdn);
19,659✔
1584
  if (TSDB_CODE_SUCCESS == code) {
19,658!
1585
    code = tjsonGetSmallIntValue(pJson, jkEndPointPort, &pNode->port);
19,658✔
1586
  }
1587

1588
  return code;
19,659✔
1589
}
1590

1591
static const char* jkEpSetInUse = "InUse";
1592
static const char* jkEpSetNumOfEps = "NumOfEps";
1593
static const char* jkEpSetEps = "Eps";
1594

1595
static int32_t epSetToJson(const void* pObj, SJson* pJson) {
5,272✔
1596
  const SEpSet* pNode = (const SEpSet*)pObj;
5,272✔
1597

1598
  int32_t code = tjsonAddIntegerToObject(pJson, jkEpSetInUse, pNode->inUse);
5,272✔
1599
  if (TSDB_CODE_SUCCESS == code) {
5,272!
1600
    code = tjsonAddIntegerToObject(pJson, jkEpSetNumOfEps, pNode->numOfEps);
5,272✔
1601
  }
1602
  if (TSDB_CODE_SUCCESS == code) {
5,271!
1603
    code = tjsonAddArray(pJson, jkEpSetEps, epToJson, pNode->eps, sizeof(SEp), pNode->numOfEps);
5,271✔
1604
  }
1605

1606
  return code;
5,270✔
1607
}
1608

1609
static int32_t jsonToEpSet(const SJson* pJson, void* pObj) {
10,527✔
1610
  SEpSet* pNode = (SEpSet*)pObj;
10,527✔
1611

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

1620
  return code;
10,527✔
1621
}
1622

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

1629
static int32_t vgroupInfoToJson(const void* pObj, SJson* pJson) {
3,377✔
1630
  const SVgroupInfo* pNode = (const SVgroupInfo*)pObj;
3,377✔
1631

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

1646
  return code;
3,377✔
1647
}
1648

1649
static int32_t jsonToVgroupInfo(const SJson* pJson, void* pObj) {
10,527✔
1650
  SVgroupInfo* pNode = (SVgroupInfo*)pObj;
10,527✔
1651

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

1666
  return code;
10,527✔
1667
}
1668

1669
static const char* jkVgroupsInfoNum = "Num";
1670
static const char* jkVgroupsInfoVgroups = "Vgroups";
1671

1672
static int32_t vgroupsInfoToJson(const void* pObj, SJson* pJson) {
1,503✔
1673
  const SVgroupsInfo* pNode = (const SVgroupsInfo*)pObj;
1,503✔
1674

1675
  int32_t code = tjsonAddIntegerToObject(pJson, jkVgroupsInfoNum, pNode->numOfVgroups);
1,503✔
1676
  if (TSDB_CODE_SUCCESS == code) {
1,503!
1677
    code = tjsonAddArray(pJson, jkVgroupsInfoVgroups, vgroupInfoToJson, pNode->vgroups, sizeof(SVgroupInfo),
1,503✔
1678
                         pNode->numOfVgroups);
1,503✔
1679
  }
1680

1681
  return code;
1,503✔
1682
}
1683

1684
static int32_t jsonToVgroupsInfo(const SJson* pJson, void* pObj) {
3,598✔
1685
  SVgroupsInfo* pNode = (SVgroupsInfo*)pObj;
3,598✔
1686

1687
  int32_t code = tjsonGetIntValue(pJson, jkVgroupsInfoNum, &pNode->numOfVgroups);
3,598✔
1688
  if (TSDB_CODE_SUCCESS == code) {
3,598!
1689
    code = tjsonToArray(pJson, jkVgroupsInfoVgroups, jsonToVgroupInfo, pNode->vgroups, sizeof(SVgroupInfo));
3,598✔
1690
  }
1691

1692
  return code;
3,598✔
1693
}
1694

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

1705
static int32_t logicSubplanToJson(const void* pObj, SJson* pJson) {
1,896✔
1706
  const SLogicSubplan* pNode = (const SLogicSubplan*)pObj;
1,896✔
1707

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

1734
  return code;
1,896✔
1735
}
1736

1737
static int32_t jsonToLogicSubplan(const SJson* pJson, void* pObj) {
×
1738
  SLogicSubplan* pNode = (SLogicSubplan*)pObj;
×
1739

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

1767
  return code;
×
1768
}
1769

1770
static const char* jkLogicPlanSubplans = "Subplans";
1771

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

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

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

1794
static int32_t logicJoinNodeToJson(const void* pObj, SJson* pJson) {
×
1795
  const SJoinLogicNode* pNode = (const SJoinLogicNode*)pObj;
×
1796

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

1819
static int32_t jsonToLogicJoinNode(const SJson* pJson, void* pObj) {
×
1820
  SJoinLogicNode* pNode = (SJoinLogicNode*)pObj;
×
1821

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

1842
  return code;
×
1843
}
1844

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

1851
static int32_t physicPlanNodeToJson(const void* pObj, SJson* pJson) {
26,456✔
1852
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
26,456✔
1853

1854
  int32_t code = tjsonAddObject(pJson, jkPhysiPlanOutputDataBlockDesc, nodeToJson, pNode->pOutputDataBlockDesc);
26,456✔
1855
  if (TSDB_CODE_SUCCESS == code) {
26,456!
1856
    code = tjsonAddObject(pJson, jkPhysiPlanConditions, nodeToJson, pNode->pConditions);
26,456✔
1857
  }
1858
  if (TSDB_CODE_SUCCESS == code) {
26,454!
1859
    code = nodeListToJson(pJson, jkPhysiPlanChildren, pNode->pChildren);
26,454✔
1860
  }
1861
  if (TSDB_CODE_SUCCESS == code) {
26,454!
1862
    code = tjsonAddObject(pJson, jkPhysiPlanLimit, nodeToJson, pNode->pLimit);
26,454✔
1863
  }
1864
  if (TSDB_CODE_SUCCESS == code) {
26,454!
1865
    code = tjsonAddObject(pJson, jkPhysiPlanSlimit, nodeToJson, pNode->pSlimit);
26,454✔
1866
  }
1867

1868
  return code;
26,454✔
1869
}
1870

1871
static int32_t jsonToPhysicPlanNode(const SJson* pJson, void* pObj) {
23,671✔
1872
  SPhysiNode* pNode = (SPhysiNode*)pObj;
23,671✔
1873

1874
  int32_t code = jsonToNodeObject(pJson, jkPhysiPlanOutputDataBlockDesc, (SNode**)&pNode->pOutputDataBlockDesc);
23,671✔
1875
  if (TSDB_CODE_SUCCESS == code) {
23,672!
1876
    code = jsonToNodeObject(pJson, jkPhysiPlanConditions, &pNode->pConditions);
23,672✔
1877
  }
1878
  if (TSDB_CODE_SUCCESS == code) {
23,661!
1879
    code = jsonToNodeList(pJson, jkPhysiPlanChildren, &pNode->pChildren);
23,661✔
1880
  }
1881
  if (TSDB_CODE_SUCCESS == code) {
23,670!
1882
    code = jsonToNodeObject(pJson, jkPhysiPlanLimit, &pNode->pLimit);
23,670✔
1883
  }
1884
  if (TSDB_CODE_SUCCESS == code) {
23,663!
1885
    code = jsonToNodeObject(pJson, jkPhysiPlanSlimit, &pNode->pSlimit);
23,663✔
1886
  }
1887

1888
  return code;
23,667✔
1889
}
1890

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

1896
static int32_t nameToJson(const void* pObj, SJson* pJson) {
12,453✔
1897
  const SName* pNode = (const SName*)pObj;
12,453✔
1898

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

1910
  return code;
12,451✔
1911
}
1912

1913
static int32_t jsonToName(const SJson* pJson, void* pObj) {
10,412✔
1914
  SName* pNode = (SName*)pObj;
10,412✔
1915

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

1927
  return code;
10,413✔
1928
}
1929

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

1938
static int32_t physiScanNodeToJson(const void* pObj, SJson* pJson) {
12,453✔
1939
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
12,453✔
1940

1941
  int32_t code = physicPlanNodeToJson(pObj, pJson);
12,453✔
1942
  if (TSDB_CODE_SUCCESS == code) {
12,451!
1943
    code = nodeListToJson(pJson, jkScanPhysiPlanScanCols, pNode->pScanCols);
12,451✔
1944
  }
1945
  if (TSDB_CODE_SUCCESS == code) {
12,449!
1946
    code = nodeListToJson(pJson, jkScanPhysiPlanScanPseudoCols, pNode->pScanPseudoCols);
12,449✔
1947
  }
1948
  if (TSDB_CODE_SUCCESS == code) {
12,449!
1949
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableId, pNode->uid);
12,449✔
1950
  }
1951
  if (TSDB_CODE_SUCCESS == code) {
12,454!
1952
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanSTableId, pNode->suid);
12,454✔
1953
  }
1954
  if (TSDB_CODE_SUCCESS == code) {
12,454!
1955
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableType, pNode->tableType);
12,454✔
1956
  }
1957
  if (TSDB_CODE_SUCCESS == code) {
12,453!
1958
    code = tjsonAddObject(pJson, jkScanPhysiPlanTableName, nameToJson, &pNode->tableName);
12,453✔
1959
  }
1960
  if (TSDB_CODE_SUCCESS == code) {
12,452!
1961
    code = tjsonAddBoolToObject(pJson, jkScanPhysiPlanGroupOrderScan, pNode->groupOrderScan);
12,452✔
1962
  }
1963

1964
  return code;
12,452✔
1965
}
1966

1967
static int32_t jsonToPhysiScanNode(const SJson* pJson, void* pObj) {
10,412✔
1968
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
10,412✔
1969

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

1993
  return code;
10,412✔
1994
}
1995

1996
static const char* jkTagScanPhysiOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
1997

1998
static int32_t physiTagScanNodeToJson(const void* pObj, SJson* pJson) {
3✔
1999
  const STagScanPhysiNode* pNode = (const STagScanPhysiNode*)pObj;
3✔
2000

2001
  int32_t code = physiScanNodeToJson(pObj, pJson);
3✔
2002

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

2009
static int32_t jsonToPhysiTagScanNode(const SJson* pJson, void* pObj) {
3✔
2010
  STagScanPhysiNode* pNode = (STagScanPhysiNode*)pObj;
3✔
2011

2012
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
3✔
2013

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

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

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

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

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

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

2040
static int32_t physiLastRowScanNodeToJson(const void* pObj, SJson* pJson) {
×
2041
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
×
2042

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

2057
  return code;
×
2058
}
2059

2060
static int32_t jsonToPhysiLastRowScanNode(const SJson* pJson, void* pObj) {
×
2061
  SLastRowScanPhysiNode* pNode = (SLastRowScanPhysiNode*)pObj;
×
2062

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

2077
  return code;
×
2078
}
2079

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

2106
static int32_t physiTableScanNodeToJson(const void* pObj, SJson* pJson) {
10,555✔
2107
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
10,555✔
2108

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

2188
static int32_t jsonToPhysiTableScanNode(const SJson* pJson, void* pObj) {
10,409✔
2189
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
10,409✔
2190

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

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

2275
static int32_t physiSysTableScanNodeToJson(const void* pObj, SJson* pJson) {
1,896✔
2276
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
1,896✔
2277

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

2292
  return code;
1,895✔
2293
}
2294

2295
static int32_t jsonToPhysiSysTableScanNode(const SJson* pJson, void* pObj) {
×
2296
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
×
2297

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

2312
  return code;
×
2313
}
2314

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

2320
static int32_t physiProjectNodeToJson(const void* pObj, SJson* pJson) {
6,067✔
2321
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
6,067✔
2322

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

2339
static int32_t jsonToPhysiProjectNode(const SJson* pJson, void* pObj) {
5,860✔
2340
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
5,860✔
2341

2342
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
5,860✔
2343
  if (TSDB_CODE_SUCCESS == code) {
5,860!
2344
    code = jsonToNodeList(pJson, jkProjectPhysiPlanProjections, &pNode->pProjections);
5,860✔
2345
  }
2346
  if (TSDB_CODE_SUCCESS == code) {
5,863!
2347
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
5,863✔
2348
  }
2349
  if (TSDB_CODE_SUCCESS == code) {
5,863!
2350
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanIgnoreGroupId, &pNode->ignoreGroupId);
5,863✔
2351
  }
2352
  if (TSDB_CODE_SUCCESS == code) {
5,863!
2353
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanInputIgnoreGroup, &pNode->inputIgnoreGroup);
5,863✔
2354
  }
2355
  return code;
5,863✔
2356
}
2357

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

2388
static int32_t physiMergeJoinNodeToJson(const void* pObj, SJson* pJson) {
×
2389
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
×
2390

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

2453
  return code;
×
2454
}
2455

2456
static int32_t jsonToPhysiMergeJoinNode(const SJson* pJson, void* pObj) {
×
2457
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
×
2458

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

2521
  return code;
×
2522
}
2523

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

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

2586
  return code;
×
2587
}
2588

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

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

2651
  return code;
×
2652
}
2653

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

2661
static int32_t physiAggNodeToJson(const void* pObj, SJson* pJson) {
48✔
2662
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
48✔
2663

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

2684
  return code;
48✔
2685
}
2686

2687
static int32_t jsonToPhysiAggNode(const SJson* pJson, void* pObj) {
33✔
2688
  SAggPhysiNode* pNode = (SAggPhysiNode*)pObj;
33✔
2689

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

2710
  return code;
33✔
2711
}
2712

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

2718
static int32_t physiExchangeNodeToJson(const void* pObj, SJson* pJson) {
632✔
2719
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
632✔
2720

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

2735
  return code;
632✔
2736
}
2737

2738
static int32_t jsonToPhysiExchangeNode(const SJson* pJson, void* pObj) {
×
2739
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
×
2740

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

2755
  return code;
×
2756
}
2757

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

2767
static int32_t physiMergeNodeToJson(const void* pObj, SJson* pJson) {
×
2768
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
×
2769

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

2796
  return code;
×
2797
}
2798

2799
static int32_t jsonToPhysiMergeNode(const SJson* pJson, void* pObj) {
×
2800
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
×
2801

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

2825
  return code;
×
2826
}
2827

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

2834
static int32_t physiSortNodeToJson(const void* pObj, SJson* pJson) {
×
2835
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
×
2836

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

2854
  return code;
×
2855
}
2856

2857
static int32_t jsonToPhysiSortNode(const SJson* pJson, void* pObj) {
×
2858
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
×
2859

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

2877
  return code;
×
2878
}
2879

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

2892
static int32_t physiWindowNodeToJson(const void* pObj, SJson* pJson) {
5,558✔
2893
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
5,558✔
2894

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

2927
  return code;
5,558✔
2928
}
2929

2930
static int32_t jsonToPhysiWindowNode(const SJson* pJson, void* pObj) {
5,664✔
2931
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
5,664✔
2932

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

2965
  return code;
5,664✔
2966
}
2967

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

2976
static int32_t physiIntervalNodeToJson(const void* pObj, SJson* pJson) {
4,296✔
2977
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
4,296✔
2978

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

3002
  return code;
4,296✔
3003
}
3004

3005
static int32_t jsonToPhysiIntervalNode(const SJson* pJson, void* pObj) {
4,384✔
3006
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
4,384✔
3007

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

3031
  return code;
4,384✔
3032
}
3033

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

3043
static int32_t physiFillNodeToJson(const void* pObj, SJson* pJson) {
398✔
3044
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
398✔
3045

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

3072
  return code;
398✔
3073
}
3074

3075
static int32_t jsonToPhysiFillNode(const SJson* pJson, void* pObj) {
399✔
3076
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
399✔
3077

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

3104
  return code;
399✔
3105
}
3106

3107
static const char* jkSessionWindowPhysiPlanGap = "Gap";
3108

3109
static int32_t physiSessionWindowNodeToJson(const void* pObj, SJson* pJson) {
739✔
3110
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
739✔
3111

3112
  int32_t code = physiWindowNodeToJson(pObj, pJson);
739✔
3113
  if (TSDB_CODE_SUCCESS == code) {
739!
3114
    code = tjsonAddIntegerToObject(pJson, jkSessionWindowPhysiPlanGap, pNode->gap);
739✔
3115
  }
3116

3117
  return code;
739✔
3118
}
3119

3120
static int32_t jsonToPhysiSessionWindowNode(const SJson* pJson, void* pObj) {
744✔
3121
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
744✔
3122

3123
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
744✔
3124
  if (TSDB_CODE_SUCCESS == code) {
744!
3125
    tjsonGetNumberValue(pJson, jkSessionWindowPhysiPlanGap, pNode->gap, code);
744✔
3126
  }
3127

3128
  return code;
744✔
3129
}
3130

3131
static const char* jkStateWindowPhysiPlanStateKey = "StateKey";
3132
static const char* jkStateWindowPhysiPlanTrueForLimit = "TrueForLimit";
3133

3134
static int32_t physiStateWindowNodeToJson(const void* pObj, SJson* pJson) {
400✔
3135
  const SStateWinodwPhysiNode* pNode = (const SStateWinodwPhysiNode*)pObj;
400✔
3136

3137
  int32_t code = physiWindowNodeToJson(pObj, pJson);
400✔
3138
  if (TSDB_CODE_SUCCESS == code) {
400!
3139
    code = tjsonAddObject(pJson, jkStateWindowPhysiPlanStateKey, nodeToJson, pNode->pStateKey);
400✔
3140
  }
3141
  if (TSDB_CODE_SUCCESS == code) {
400!
3142
    code = tjsonAddIntegerToObject(pJson, jkStateWindowPhysiPlanTrueForLimit, pNode->trueForLimit);
400✔
3143
  }
3144

3145
  return code;
400✔
3146
}
3147

3148
static int32_t jsonToPhysiStateWindowNode(const SJson* pJson, void* pObj) {
405✔
3149
  SStateWinodwPhysiNode* pNode = (SStateWinodwPhysiNode*)pObj;
405✔
3150

3151
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
405✔
3152
  if (TSDB_CODE_SUCCESS == code) {
405!
3153
    code = jsonToNodeObject(pJson, jkStateWindowPhysiPlanStateKey, &pNode->pStateKey);
405✔
3154
  }
3155
  if (TSDB_CODE_SUCCESS == code) {
405!
3156
    code = tjsonGetBigIntValue(pJson, jkStateWindowPhysiPlanTrueForLimit, &pNode->trueForLimit);
405✔
3157
  }
3158

3159
  return code;
405✔
3160
}
3161

3162
static const char* jkEventWindowPhysiPlanStartCond = "StartCond";
3163
static const char* jkEventWindowPhysiPlanEndCond = "EndCond";
3164
static const char* jkEventWindowPhysiPlanTrueForLimit = "TrueForLimit";
3165

3166
static int32_t physiEventWindowNodeToJson(const void* pObj, SJson* pJson) {
77✔
3167
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
77✔
3168

3169
  int32_t code = physiWindowNodeToJson(pObj, pJson);
77✔
3170
  if (TSDB_CODE_SUCCESS == code) {
77!
3171
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanStartCond, nodeToJson, pNode->pStartCond);
77✔
3172
  }
3173
  if (TSDB_CODE_SUCCESS == code) {
77!
3174
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanEndCond, nodeToJson, pNode->pEndCond);
77✔
3175
  }
3176
  if (TSDB_CODE_SUCCESS == code) {
77!
3177
    code = tjsonAddIntegerToObject(pJson, jkEventWindowPhysiPlanTrueForLimit, pNode->trueForLimit);
77✔
3178
  }
3179

3180
  return code;
77✔
3181
}
3182

3183
static int32_t jsonToPhysiEventWindowNode(const SJson* pJson, void* pObj) {
81✔
3184
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
81✔
3185

3186
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
81✔
3187
  if (TSDB_CODE_SUCCESS == code) {
81!
3188
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanStartCond, &pNode->pStartCond);
81✔
3189
  }
3190
  if (TSDB_CODE_SUCCESS == code) {
81!
3191
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanEndCond, &pNode->pEndCond);
81✔
3192
  }
3193
  if (TSDB_CODE_SUCCESS == code) {
81!
3194
    code = tjsonGetBigIntValue(pJson, jkEventWindowPhysiPlanTrueForLimit, &pNode->trueForLimit);
81✔
3195
  }
3196

3197
  return code;
81✔
3198
}
3199

3200
static const char* jkCountWindowPhysiPlanWindowCount = "WindowCount";
3201
static const char* jkCountWindowPhysiPlanWindowSliding = "WindowSliding";
3202

3203
static int32_t physiCountWindowNodeToJson(const void* pObj, SJson* pJson) {
46✔
3204
  const SCountWinodwPhysiNode* pNode = (const SCountWinodwPhysiNode*)pObj;
46✔
3205

3206
  int32_t code = physiWindowNodeToJson(pObj, pJson);
46✔
3207
  if (TSDB_CODE_SUCCESS == code) {
46!
3208
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowCount, pNode->windowCount);
46✔
3209
  }
3210
  if (TSDB_CODE_SUCCESS == code) {
46!
3211
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowSliding, pNode->windowSliding);
46✔
3212
  }
3213
  return code;
46✔
3214
}
3215

3216
static int32_t jsonToPhysiCountWindowNode(const SJson* pJson, void* pObj) {
50✔
3217
  SCountWinodwPhysiNode* pNode = (SCountWinodwPhysiNode*)pObj;
50✔
3218

3219
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
50✔
3220
  if (TSDB_CODE_SUCCESS == code) {
50!
3221
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowCount, &pNode->windowCount);
50✔
3222
  }
3223
  if (TSDB_CODE_SUCCESS == code) {
50!
3224
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowSliding, &pNode->windowSliding);
50✔
3225
  }
3226

3227
  return code;
50✔
3228
}
3229

3230
static const char* jkAnomalyWindowPhysiPlanAnomalyKey = "AnomalyKey";
3231
static const char* jkAnomalyWindowPhysiPlanAnomalyOption = "AnomalyOpt";
3232

3233
static int32_t physiAnomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
3234
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3235

3236
  int32_t code = physiWindowNodeToJson(pObj, pJson);
×
3237
  if (TSDB_CODE_SUCCESS == code) {
×
3238
    code = tjsonAddObject(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, nodeToJson, pNode->pAnomalyKey);
×
3239
  }
3240
  if (TSDB_CODE_SUCCESS == code) {
×
3241
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt);
×
3242
  }
3243
  return code;
×
3244
}
3245

3246
static int32_t jsonToPhysiAnomalyWindowNode(const SJson* pJson, void* pObj) {
×
3247
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3248

3249
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
×
3250
  if (TSDB_CODE_SUCCESS == code) {
×
3251
    code = jsonToNodeObject(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, &pNode->pAnomalyKey);
×
3252
  }
3253
  if (TSDB_CODE_SUCCESS == code) {
×
3254
    code = tjsonGetStringValue(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt);
×
3255
  }
3256

3257
  return code;
×
3258
}
3259

3260
static const char* jkPartitionPhysiPlanExprs = "Exprs";
3261
static const char* jkPartitionPhysiPlanPartitionKeys = "PartitionKeys";
3262
static const char* jkPartitionPhysiPlanTargets = "Targets";
3263
static const char* jkPartitionPhysiPlanNeedBlockOutputTsOrder = "NeedBlockOutputTsOrder";
3264
static const char* jkPartitionPhysiPlanTsSlotId = "tsSlotId";
3265

3266
static int32_t physiPartitionNodeToJson(const void* pObj, SJson* pJson) {
1,055✔
3267
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
1,055✔
3268

3269
  int32_t code = physicPlanNodeToJson(pObj, pJson);
1,055✔
3270
  if (TSDB_CODE_SUCCESS == code) {
1,055!
3271
    code = nodeListToJson(pJson, jkPartitionPhysiPlanExprs, pNode->pExprs);
1,055✔
3272
  }
3273
  if (TSDB_CODE_SUCCESS == code) {
1,055!
3274
    code = nodeListToJson(pJson, jkPartitionPhysiPlanPartitionKeys, pNode->pPartitionKeys);
1,055✔
3275
  }
3276
  if (TSDB_CODE_SUCCESS == code) {
1,055!
3277
    code = nodeListToJson(pJson, jkPartitionPhysiPlanTargets, pNode->pTargets);
1,055✔
3278
  }
3279
  if (TSDB_CODE_SUCCESS == code) {
1,055!
3280
    code = tjsonAddBoolToObject(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, pNode->needBlockOutputTsOrder);
1,055✔
3281
  }
3282
  if (TSDB_CODE_SUCCESS == code) {
1,055!
3283
    code = tjsonAddIntegerToObject(pJson, jkPartitionPhysiPlanTsSlotId, pNode->tsSlotId);
1,055✔
3284
  }
3285

3286
  return code;
1,055✔
3287
}
3288

3289
static int32_t jsonToPhysiPartitionNode(const SJson* pJson, void* pObj) {
1,055✔
3290
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
1,055✔
3291

3292
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
1,055✔
3293
  if (TSDB_CODE_SUCCESS == code) {
1,055!
3294
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanExprs, &pNode->pExprs);
1,055✔
3295
  }
3296
  if (TSDB_CODE_SUCCESS == code) {
1,055!
3297
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanPartitionKeys, &pNode->pPartitionKeys);
1,055✔
3298
  }
3299
  if (TSDB_CODE_SUCCESS == code) {
1,055!
3300
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanTargets, &pNode->pTargets);
1,055✔
3301
  }
3302
  if (TSDB_CODE_SUCCESS == code) {
1,055✔
3303
    code = tjsonGetBoolValue(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, &pNode->needBlockOutputTsOrder);
1,054✔
3304
  }
3305
  if (TSDB_CODE_SUCCESS == code) {
1,056✔
3306
    code = tjsonGetIntValue(pJson, jkPartitionPhysiPlanTsSlotId, &pNode->tsSlotId);
1,055✔
3307
  }
3308

3309
  return code;
1,055✔
3310
}
3311

3312
static const char* jkStreamPartitionPhysiPlanTags = "Tags";
3313
static const char* jkStreamPartitionPhysiPlanSubtable = "Subtable";
3314

3315
static int32_t physiStreamPartitionNodeToJson(const void* pObj, SJson* pJson) {
1,055✔
3316
  const SStreamPartitionPhysiNode* pNode = (const SStreamPartitionPhysiNode*)pObj;
1,055✔
3317

3318
  int32_t code = physiPartitionNodeToJson(pObj, pJson);
1,055✔
3319
  if (TSDB_CODE_SUCCESS == code) {
1,055!
3320
    code = nodeListToJson(pJson, jkStreamPartitionPhysiPlanTags, pNode->pTags);
1,055✔
3321
  }
3322
  if (TSDB_CODE_SUCCESS == code) {
1,055!
3323
    code = tjsonAddObject(pJson, jkStreamPartitionPhysiPlanSubtable, nodeToJson, pNode->pSubtable);
1,055✔
3324
  }
3325

3326
  return code;
1,055✔
3327
}
3328

3329
static int32_t jsonToPhysiStreamPartitionNode(const SJson* pJson, void* pObj) {
1,055✔
3330
  SStreamPartitionPhysiNode* pNode = (SStreamPartitionPhysiNode*)pObj;
1,055✔
3331

3332
  int32_t code = jsonToPhysiPartitionNode(pJson, pObj);
1,055✔
3333
  if (TSDB_CODE_SUCCESS == code) {
1,055!
3334
    code = jsonToNodeList(pJson, jkStreamPartitionPhysiPlanTags, &pNode->pTags);
1,055✔
3335
  }
3336
  if (TSDB_CODE_SUCCESS == code) {
1,055!
3337
    code = jsonToNodeObject(pJson, jkStreamPartitionPhysiPlanSubtable, &pNode->pSubtable);
1,055✔
3338
  }
3339

3340
  return code;
1,055✔
3341
}
3342

3343
static const char* jkIndefRowsFuncPhysiPlanExprs = "Exprs";
3344
static const char* jkIndefRowsFuncPhysiPlanFuncs = "Funcs";
3345

3346
static int32_t physiIndefRowsFuncNodeToJson(const void* pObj, SJson* pJson) {
×
3347
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
×
3348

3349
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3350
  if (TSDB_CODE_SUCCESS == code) {
×
3351
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanExprs, pNode->pExprs);
×
3352
  }
3353
  if (TSDB_CODE_SUCCESS == code) {
×
3354
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanFuncs, pNode->pFuncs);
×
3355
  }
3356

3357
  return code;
×
3358
}
3359

3360
static int32_t jsonToPhysiIndefRowsFuncNode(const SJson* pJson, void* pObj) {
×
3361
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
×
3362

3363
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3364
  if (TSDB_CODE_SUCCESS == code) {
×
3365
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanExprs, &pNode->pExprs);
×
3366
  }
3367
  if (TSDB_CODE_SUCCESS == code) {
×
3368
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanFuncs, &pNode->pFuncs);
×
3369
  }
3370

3371
  return code;
×
3372
}
3373

3374
static const char* jkInterpFuncPhysiPlanExprs = "Exprs";
3375
static const char* jkInterpFuncPhysiPlanFuncs = "Funcs";
3376
static const char* jkInterpFuncPhysiPlanStartTime = "StartTime";
3377
static const char* jkInterpFuncPhysiPlanEndTime = "EndTime";
3378
static const char* jkInterpFuncPhysiPlanInterval = "Interval";
3379
static const char* jkInterpFuncPhysiPlanIntervalUnit = "intervalUnit";
3380
static const char* jkInterpFuncPhysiPlanPrecision = "precision";
3381
static const char* jkInterpFuncPhysiPlanFillMode = "FillMode";
3382
static const char* jkInterpFuncPhysiPlanFillValues = "FillValues";
3383
static const char* jkInterpFuncPhysiPlanTimeSeries = "TimeSeries";
3384
static const char* jkInterpFuncPhysiPlanStreamNodeOption = "StreamNodeOption";
3385
static const char* jkInterpFuncPhysiPlanRangeInterval = "RangeInterval";
3386
static const char* jkInterpFuncPhysiPlanRangeIntervalUnit = "RangeIntervalUnit";
3387

3388
static int32_t physiInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
245✔
3389
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
245✔
3390

3391
  int32_t code = physicPlanNodeToJson(pObj, pJson);
245✔
3392
  if (TSDB_CODE_SUCCESS == code) {
245!
3393
    code = nodeListToJson(pJson, jkInterpFuncPhysiPlanExprs, pNode->pExprs);
245✔
3394
  }
3395
  if (TSDB_CODE_SUCCESS == code) {
245!
3396
    code = nodeListToJson(pJson, jkInterpFuncPhysiPlanFuncs, pNode->pFuncs);
245✔
3397
  }
3398
  if (TSDB_CODE_SUCCESS == code) {
245!
3399
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanStartTime, pNode->timeRange.skey);
245✔
3400
  }
3401
  if (TSDB_CODE_SUCCESS == code) {
245!
3402
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanEndTime, pNode->timeRange.ekey);
245✔
3403
  }
3404
  if (TSDB_CODE_SUCCESS == code) {
245!
3405
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanInterval, pNode->interval);
245✔
3406
  }
3407
  if (TSDB_CODE_SUCCESS == code) {
245!
3408
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanIntervalUnit, pNode->intervalUnit);
245✔
3409
  }
3410
  if (TSDB_CODE_SUCCESS == code) {
245!
3411
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanPrecision, pNode->precision);
245✔
3412
  }
3413
  if (TSDB_CODE_SUCCESS == code) {
245!
3414
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanFillMode, pNode->fillMode);
245✔
3415
  }
3416
  if (TSDB_CODE_SUCCESS == code) {
245!
3417
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanFillValues, nodeToJson, pNode->pFillValues);
245✔
3418
  }
3419
  if (TSDB_CODE_SUCCESS == code) {
245!
3420
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanTimeSeries, nodeToJson, pNode->pTimeSeries);
245✔
3421
  }
3422
  if (TSDB_CODE_SUCCESS == code) {
245!
3423
    code =
3424
        tjsonAddObject(pJson, jkInterpFuncPhysiPlanStreamNodeOption, streamNodeOptionToJson, &pNode->streamNodeOption);
245✔
3425
  }
3426
  if (TSDB_CODE_SUCCESS == code) {
245!
3427
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanRangeInterval, pNode->rangeInterval);
245✔
3428
  }
3429
  if (TSDB_CODE_SUCCESS == code) {
245!
3430
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanRangeIntervalUnit, pNode->rangeIntervalUnit);
245✔
3431
  }
3432

3433
  return code;
245✔
3434
}
3435

3436
static int32_t jsonToPhysiInterpFuncNode(const SJson* pJson, void* pObj) {
246✔
3437
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
246✔
3438

3439
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
246✔
3440
  if (TSDB_CODE_SUCCESS == code) {
246!
3441
    code = jsonToNodeList(pJson, jkInterpFuncPhysiPlanExprs, &pNode->pExprs);
246✔
3442
  }
3443
  if (TSDB_CODE_SUCCESS == code) {
246!
3444
    code = jsonToNodeList(pJson, jkInterpFuncPhysiPlanFuncs, &pNode->pFuncs);
246✔
3445
  }
3446
  if (TSDB_CODE_SUCCESS == code) {
246!
3447
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanStartTime, &pNode->timeRange.skey);
246✔
3448
  }
3449
  if (TSDB_CODE_SUCCESS == code) {
246!
3450
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanEndTime, &pNode->timeRange.ekey);
246✔
3451
  }
3452
  if (TSDB_CODE_SUCCESS == code) {
246!
3453
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanInterval, &pNode->interval);
246✔
3454
  }
3455
  if (TSDB_CODE_SUCCESS == code) {
246!
3456
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanIntervalUnit, &pNode->intervalUnit);
246✔
3457
  }
3458
  if (TSDB_CODE_SUCCESS == code) {
246!
3459
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanPrecision, &pNode->precision);
246✔
3460
  }
3461
  if (TSDB_CODE_SUCCESS == code) {
246!
3462
    tjsonGetNumberValue(pJson, jkInterpFuncPhysiPlanFillMode, pNode->fillMode, code);
246✔
3463
  }
3464
  if (TSDB_CODE_SUCCESS == code) {
246!
3465
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanFillValues, &pNode->pFillValues);
246✔
3466
  }
3467
  if (TSDB_CODE_SUCCESS == code) {
246!
3468
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanTimeSeries, &pNode->pTimeSeries);
246✔
3469
  }
3470
  if (TSDB_CODE_SUCCESS == code) {
246!
3471
    code =
3472
        tjsonToObject(pJson, jkInterpFuncPhysiPlanStreamNodeOption, jsonToStreamNodeOption, &pNode->streamNodeOption);
246✔
3473
  }
3474
  if (TSDB_CODE_SUCCESS == code) {
246!
3475
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanRangeInterval, &pNode->rangeInterval);
246✔
3476
  }
3477
  if (TSDB_CODE_SUCCESS == code) {
246!
3478
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanRangeIntervalUnit, &pNode->rangeIntervalUnit);
246✔
3479
  }
3480

3481
  return code;
246✔
3482
}
3483

3484
static const char* jkForecastFuncPhysiPlanExprs = "Exprs";
3485
static const char* jkForecastFuncPhysiPlanFuncs = "Funcs";
3486

3487
static int32_t physiForecastFuncNodeToJson(const void* pObj, SJson* pJson) {
×
3488
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
3489

3490
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3491
  if (TSDB_CODE_SUCCESS == code) {
×
3492
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanExprs, pNode->pExprs);
×
3493
  }
3494
  if (TSDB_CODE_SUCCESS == code) {
×
3495
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanFuncs, pNode->pFuncs);
×
3496
  }
3497

3498
  return code;
×
3499
}
3500

3501
static int32_t jsonToPhysiForecastFuncNode(const SJson* pJson, void* pObj) {
×
3502
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
3503

3504
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3505
  if (TSDB_CODE_SUCCESS == code) {
×
3506
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanExprs, &pNode->pExprs);
×
3507
  }
3508
  if (TSDB_CODE_SUCCESS == code) {
×
3509
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanFuncs, &pNode->pFuncs);
×
3510
  }
3511

3512
  return code;
×
3513
}
3514

3515
static const char* jkDataSinkInputDataBlockDesc = "InputDataBlockDesc";
3516

3517
static int32_t physicDataSinkNodeToJson(const void* pObj, SJson* pJson) {
2,525✔
3518
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
2,525✔
3519
  return tjsonAddObject(pJson, jkDataSinkInputDataBlockDesc, nodeToJson, pNode->pInputDataBlockDesc);
2,525✔
3520
}
3521

3522
static int32_t jsonToPhysicDataSinkNode(const SJson* pJson, void* pObj) {
×
3523
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
×
3524
  return jsonToNodeObject(pJson, jkDataSinkInputDataBlockDesc, (SNode**)&pNode->pInputDataBlockDesc);
×
3525
}
3526

3527
static int32_t physiDispatchNodeToJson(const void* pObj, SJson* pJson) { return physicDataSinkNodeToJson(pObj, pJson); }
2,525✔
3528

3529
static int32_t jsonToPhysiDispatchNode(const SJson* pJson, void* pObj) { return jsonToPhysicDataSinkNode(pJson, pObj); }
×
3530

3531
static const char* jkQueryInsertPhysiPlanInsertCols = "InsertCols";
3532
static const char* jkQueryInsertPhysiPlanStableId = "StableId";
3533
static const char* jkQueryInsertPhysiPlanTableId = "TableId";
3534
static const char* jkQueryInsertPhysiPlanTableType = "TableType";
3535
static const char* jkQueryInsertPhysiPlanTableFName = "TableFName";
3536
static const char* jkQueryInsertPhysiPlanVgId = "VgId";
3537
static const char* jkQueryInsertPhysiPlanEpSet = "EpSet";
3538
static const char* jkQueryInsertPhysiPlanExplain = "Explain";
3539

3540
static int32_t physiQueryInsertNodeToJson(const void* pObj, SJson* pJson) {
×
3541
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
×
3542

3543
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
×
3544
  if (TSDB_CODE_SUCCESS == code) {
×
3545
    code = nodeListToJson(pJson, jkQueryInsertPhysiPlanInsertCols, pNode->pCols);
×
3546
  }
3547
  if (TSDB_CODE_SUCCESS == code) {
×
3548
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanStableId, pNode->stableId);
×
3549
  }
3550
  if (TSDB_CODE_SUCCESS == code) {
×
3551
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableId, pNode->tableId);
×
3552
  }
3553
  if (TSDB_CODE_SUCCESS == code) {
×
3554
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableType, pNode->tableType);
×
3555
  }
3556
  if (TSDB_CODE_SUCCESS == code) {
×
3557
    code = tjsonAddStringToObject(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName);
×
3558
  }
3559
  if (TSDB_CODE_SUCCESS == code) {
×
3560
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanVgId, pNode->vgId);
×
3561
  }
3562
  if (TSDB_CODE_SUCCESS == code) {
×
3563
    code = tjsonAddObject(pJson, jkQueryInsertPhysiPlanEpSet, epSetToJson, &pNode->epSet);
×
3564
  }
3565
  if (TSDB_CODE_SUCCESS == code) {
×
3566
    code = tjsonAddBoolToObject(pJson, jkQueryInsertPhysiPlanExplain, pNode->explain);
×
3567
  }
3568

3569
  return code;
×
3570
}
3571

3572
static int32_t jsonToPhysiQueryInsertNode(const SJson* pJson, void* pObj) {
×
3573
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
×
3574

3575
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
×
3576
  if (TSDB_CODE_SUCCESS == code) {
×
3577
    code = jsonToNodeList(pJson, jkQueryInsertPhysiPlanInsertCols, &pNode->pCols);
×
3578
  }
3579
  if (TSDB_CODE_SUCCESS == code) {
×
3580
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanStableId, &pNode->stableId);
×
3581
  }
3582
  if (TSDB_CODE_SUCCESS == code) {
×
3583
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanTableId, &pNode->tableId);
×
3584
  }
3585
  if (TSDB_CODE_SUCCESS == code) {
×
3586
    code = tjsonGetTinyIntValue(pJson, jkQueryInsertPhysiPlanTableType, &pNode->tableType);
×
3587
  }
3588
  if (TSDB_CODE_SUCCESS == code) {
×
3589
    code = tjsonGetStringValue(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName);
×
3590
  }
3591
  if (TSDB_CODE_SUCCESS == code) {
×
3592
    code = tjsonGetIntValue(pJson, jkQueryInsertPhysiPlanVgId, &pNode->vgId);
×
3593
  }
3594
  if (TSDB_CODE_SUCCESS == code) {
×
3595
    code = tjsonToObject(pJson, jkQueryInsertPhysiPlanEpSet, jsonToEpSet, &pNode->epSet);
×
3596
  }
3597
  if (TSDB_CODE_SUCCESS == code) {
×
3598
    code = tjsonGetBoolValue(pJson, jkQueryInsertPhysiPlanExplain, &pNode->explain);
×
3599
  }
3600

3601
  return code;
×
3602
}
3603

3604
static const char* jkDeletePhysiPlanTableId = "TableId";
3605
static const char* jkDeletePhysiPlanTableType = "TableType";
3606
static const char* jkDeletePhysiPlanTableFName = "TableFName";
3607
static const char* jkDeletePhysiPlanTsColName = "TsColName";
3608
static const char* jkDeletePhysiPlanDeleteTimeRangeStartKey = "DeleteTimeRangeStartKey";
3609
static const char* jkDeletePhysiPlanDeleteTimeRangeEndKey = "DeleteTimeRangeEndKey";
3610
static const char* jkDeletePhysiPlanAffectedRows = "AffectedRows";
3611
static const char* jkDeletePhysiPlanStartTs = "StartTs";
3612
static const char* jkDeletePhysiPlanEndTs = "EndTs";
3613

3614
static int32_t physiDeleteNodeToJson(const void* pObj, SJson* pJson) {
×
3615
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
×
3616

3617
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
×
3618
  if (TSDB_CODE_SUCCESS == code) {
×
3619
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableId, pNode->tableId);
×
3620
  }
3621
  if (TSDB_CODE_SUCCESS == code) {
×
3622
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableType, pNode->tableType);
×
3623
  }
3624
  if (TSDB_CODE_SUCCESS == code) {
×
3625
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName);
×
3626
  }
3627
  if (TSDB_CODE_SUCCESS == code) {
×
3628
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName);
×
3629
  }
3630
  if (TSDB_CODE_SUCCESS == code) {
×
3631
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, pNode->deleteTimeRange.skey);
×
3632
  }
3633
  if (TSDB_CODE_SUCCESS == code) {
×
3634
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, pNode->deleteTimeRange.ekey);
×
3635
  }
3636
  if (TSDB_CODE_SUCCESS == code) {
×
3637
    code = tjsonAddObject(pJson, jkDeletePhysiPlanAffectedRows, nodeToJson, pNode->pAffectedRows);
×
3638
  }
3639
  if (TSDB_CODE_SUCCESS == code) {
×
3640
    code = tjsonAddObject(pJson, jkDeletePhysiPlanStartTs, nodeToJson, pNode->pStartTs);
×
3641
  }
3642
  if (TSDB_CODE_SUCCESS == code) {
×
3643
    code = tjsonAddObject(pJson, jkDeletePhysiPlanEndTs, nodeToJson, pNode->pEndTs);
×
3644
  }
3645

3646
  return code;
×
3647
}
3648

3649
static int32_t jsonToPhysiDeleteNode(const SJson* pJson, void* pObj) {
×
3650
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
×
3651

3652
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
×
3653
  if (TSDB_CODE_SUCCESS == code) {
×
3654
    code = tjsonGetUBigIntValue(pJson, jkDeletePhysiPlanTableId, &pNode->tableId);
×
3655
  }
3656
  if (TSDB_CODE_SUCCESS == code) {
×
3657
    code = tjsonGetTinyIntValue(pJson, jkDeletePhysiPlanTableType, &pNode->tableType);
×
3658
  }
3659
  if (TSDB_CODE_SUCCESS == code) {
×
3660
    code = tjsonGetStringValue(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName);
×
3661
  }
3662
  if (TSDB_CODE_SUCCESS == code) {
×
3663
    code = tjsonGetStringValue(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName);
×
3664
  }
3665
  if (TSDB_CODE_SUCCESS == code) {
×
3666
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, &pNode->deleteTimeRange.skey);
×
3667
  }
3668
  if (TSDB_CODE_SUCCESS == code) {
×
3669
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, &pNode->deleteTimeRange.ekey);
×
3670
  }
3671
  if (TSDB_CODE_SUCCESS == code) {
×
3672
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanAffectedRows, &pNode->pAffectedRows);
×
3673
  }
3674
  if (TSDB_CODE_SUCCESS == code) {
×
3675
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanStartTs, &pNode->pStartTs);
×
3676
  }
3677
  if (TSDB_CODE_SUCCESS == code) {
×
3678
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanEndTs, &pNode->pEndTs);
×
3679
  }
3680

3681
  return code;
×
3682
}
3683

3684
static const char* jkGroupCachePhysiPlanGroupCols = "GroupColumns";
3685
static const char* jkGroupCachePhysiPlanGrpColsMayBeNull = "GroupColumnsMayBeNull";
3686
static const char* jkGroupCachePhysiPlanGroupByUid = "GroupByUid";
3687
static const char* jkGroupCachePhysiPlanGlobalGroup = "GlobalGroup";
3688
static const char* jkGroupCachePhysiPlanBatchFetch = "BatchFetch";
3689

3690
static int32_t physiGroupCacheNodeToJson(const void* pObj, SJson* pJson) {
×
3691
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
×
3692

3693
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3694
  if (TSDB_CODE_SUCCESS == code) {
×
3695
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, pNode->grpColsMayBeNull);
×
3696
  }
3697
  if (TSDB_CODE_SUCCESS == code) {
×
3698
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGroupByUid, pNode->grpByUid);
×
3699
  }
3700
  if (TSDB_CODE_SUCCESS == code) {
×
3701
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGlobalGroup, pNode->globalGrp);
×
3702
  }
3703
  if (TSDB_CODE_SUCCESS == code) {
×
3704
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanBatchFetch, pNode->batchFetch);
×
3705
  }
3706
  if (TSDB_CODE_SUCCESS == code) {
×
3707
    code = nodeListToJson(pJson, jkGroupCachePhysiPlanGroupCols, pNode->pGroupCols);
×
3708
  }
3709
  return code;
×
3710
}
3711

3712
static int32_t jsonToPhysiGroupCacheNode(const SJson* pJson, void* pObj) {
×
3713
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
×
3714

3715
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3716
  if (TSDB_CODE_SUCCESS == code) {
×
3717
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, &pNode->grpColsMayBeNull);
×
3718
  }
3719
  if (TSDB_CODE_SUCCESS == code) {
×
3720
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGroupByUid, &pNode->grpByUid);
×
3721
  }
3722
  if (TSDB_CODE_SUCCESS == code) {
×
3723
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGlobalGroup, &pNode->globalGrp);
×
3724
  }
3725
  if (TSDB_CODE_SUCCESS == code) {
×
3726
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanBatchFetch, &pNode->batchFetch);
×
3727
  }
3728
  if (TSDB_CODE_SUCCESS == code) {
×
3729
    code = jsonToNodeList(pJson, jkGroupCachePhysiPlanGroupCols, &pNode->pGroupCols);
×
3730
  }
3731
  return code;
×
3732
}
3733

3734
static const char* jkDynQueryCtrlPhysiPlanQueryType = "QueryType";
3735
static const char* jkDynQueryCtrlPhysiPlanBatchFetch = "BatchFetch";
3736
static const char* jkDynQueryCtrlPhysiPlanVgSlot0 = "VgSlot[0]";
3737
static const char* jkDynQueryCtrlPhysiPlanVgSlot1 = "VgSlot[1]";
3738
static const char* jkDynQueryCtrlPhysiPlanUidSlot0 = "UidSlot[0]";
3739
static const char* jkDynQueryCtrlPhysiPlanUidSlot1 = "UidSlot[1]";
3740
static const char* jkDynQueryCtrlPhysiPlanSrcScan0 = "SrcScan[0]";
3741
static const char* jkDynQueryCtrlPhysiPlanSrcScan1 = "SrcScan[1]";
3742

3743
static int32_t physiDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
×
3744
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
×
3745

3746
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3747
  if (TSDB_CODE_SUCCESS == code) {
×
3748
    code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType);
×
3749
  }
3750
  if (TSDB_CODE_SUCCESS == code) {
×
3751
    switch (pNode->qType) {
×
3752
      case DYN_QTYPE_STB_HASH: {
×
3753
        code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanBatchFetch, pNode->stbJoin.batchFetch);
×
3754
        if (TSDB_CODE_SUCCESS == code) {
×
3755
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot0, pNode->stbJoin.vgSlot[0]);
×
3756
        }
3757
        if (TSDB_CODE_SUCCESS == code) {
×
3758
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot1, pNode->stbJoin.vgSlot[1]);
×
3759
        }
3760
        if (TSDB_CODE_SUCCESS == code) {
×
3761
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot0, pNode->stbJoin.uidSlot[0]);
×
3762
        }
3763
        if (TSDB_CODE_SUCCESS == code) {
×
3764
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot1, pNode->stbJoin.uidSlot[1]);
×
3765
        }
3766
        if (TSDB_CODE_SUCCESS == code) {
×
3767
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan0, pNode->stbJoin.srcScan[0]);
×
3768
        }
3769
        if (TSDB_CODE_SUCCESS == code) {
×
3770
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan1, pNode->stbJoin.srcScan[1]);
×
3771
        }
3772
        break;
×
3773
      }
3774
      default:
×
3775
        return TSDB_CODE_INVALID_PARA;
×
3776
    }
3777
  }
3778
  return code;
×
3779
}
3780

3781
static int32_t jsonToPhysiDynQueryCtrlNode(const SJson* pJson, void* pObj) {
×
3782
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
×
3783

3784
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3785
  if (TSDB_CODE_SUCCESS == code) {
×
3786
    tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType, code);
×
3787
  }
3788
  if (TSDB_CODE_SUCCESS == code) {
×
3789
    switch (pNode->qType) {
×
3790
      case DYN_QTYPE_STB_HASH: {
×
3791
        tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType, code);
×
3792
        if (TSDB_CODE_SUCCESS == code) {
×
3793
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanBatchFetch, &pNode->stbJoin.batchFetch);
×
3794
        }
3795
        if (TSDB_CODE_SUCCESS == code) {
×
3796
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanVgSlot0, pNode->stbJoin.vgSlot[0], code);
×
3797
        }
3798
        if (TSDB_CODE_SUCCESS == code) {
×
3799
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanVgSlot1, pNode->stbJoin.vgSlot[1], code);
×
3800
        }
3801
        if (TSDB_CODE_SUCCESS == code) {
×
3802
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanUidSlot0, pNode->stbJoin.uidSlot[0], code);
×
3803
        }
3804
        if (TSDB_CODE_SUCCESS == code) {
×
3805
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanUidSlot1, pNode->stbJoin.uidSlot[1], code);
×
3806
        }
3807
        if (TSDB_CODE_SUCCESS == code) {
×
3808
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanSrcScan0, &pNode->stbJoin.srcScan[0]);
×
3809
        }
3810
        if (TSDB_CODE_SUCCESS == code) {
×
3811
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanSrcScan1, &pNode->stbJoin.srcScan[1]);
×
3812
        }
3813
        break;
×
3814
      }
3815
      default:
×
3816
        return TSDB_CODE_INVALID_PARA;
×
3817
    }
3818
  }
3819

3820
  return code;
×
3821
}
3822

3823
static const char* jkQueryNodeAddrId = "Id";
3824
static const char* jkQueryNodeAddrInUse = "InUse";
3825
static const char* jkQueryNodeAddrNumOfEps = "NumOfEps";
3826
static const char* jkQueryNodeAddrEps = "Eps";
3827

3828
static int32_t queryNodeAddrToJson(const void* pObj, SJson* pJson) {
14,033✔
3829
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
14,033✔
3830

3831
  int32_t code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrId, pNode->nodeId);
14,033✔
3832
  if (TSDB_CODE_SUCCESS == code) {
14,031!
3833
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrInUse, pNode->epSet.inUse);
14,031✔
3834
  }
3835
  if (TSDB_CODE_SUCCESS == code) {
14,032!
3836
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrNumOfEps, pNode->epSet.numOfEps);
14,032✔
3837
  }
3838
  if (TSDB_CODE_SUCCESS == code) {
14,033!
3839
    code = tjsonAddArray(pJson, jkQueryNodeAddrEps, epToJson, pNode->epSet.eps, sizeof(SEp), pNode->epSet.numOfEps);
14,033✔
3840
  }
3841

3842
  return code;
14,032✔
3843
}
3844

3845
static int32_t jsonToQueryNodeAddr(const SJson* pJson, void* pObj) {
10,412✔
3846
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
10,412✔
3847

3848
  int32_t code = tjsonGetIntValue(pJson, jkQueryNodeAddrId, &pNode->nodeId);
10,412✔
3849
  if (TSDB_CODE_SUCCESS == code) {
10,409!
3850
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrInUse, &pNode->epSet.inUse);
10,409✔
3851
  }
3852
  if (TSDB_CODE_SUCCESS == code) {
10,412!
3853
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrNumOfEps, &pNode->epSet.numOfEps);
10,412✔
3854
  }
3855
  if (TSDB_CODE_SUCCESS == code) {
10,412!
3856
    code = tjsonToArray(pJson, jkQueryNodeAddrEps, jsonToEp, pNode->epSet.eps, sizeof(SEp));
10,412✔
3857
  }
3858

3859
  return code;
10,411✔
3860
}
3861

3862
static const char* jkSubplanId = "Id";
3863
static const char* jkSubplanType = "SubplanType";
3864
static const char* jkSubplanMsgType = "MsgType";
3865
static const char* jkSubplanLevel = "Level";
3866
static const char* jkSubplanDbFName = "DbFName";
3867
static const char* jkSubplanUser = "User";
3868
static const char* jkSubplanNodeAddr = "NodeAddr";
3869
static const char* jkSubplanRootNode = "RootNode";
3870
static const char* jkSubplanDataSink = "DataSink";
3871
static const char* jkSubplanTagCond = "TagCond";
3872
static const char* jkSubplanTagIndexCond = "TagIndexCond";
3873
static const char* jkSubplanShowRewrite = "ShowRewrite";
3874
static const char* jkSubplanRowsThreshold = "RowThreshold";
3875
static const char* jkSubplanDynamicRowsThreshold = "DyRowThreshold";
3876
static const char* jkSubplanIsView = "IsView";
3877
static const char* jkSubplanIsAudit = "IsAudit";
3878

3879
static int32_t subplanToJson(const void* pObj, SJson* pJson) {
13,083✔
3880
  const SSubplan* pNode = (const SSubplan*)pObj;
13,083✔
3881

3882
  int32_t code = tjsonAddObject(pJson, jkSubplanId, subplanIdToJson, &pNode->id);
13,083✔
3883
  if (TSDB_CODE_SUCCESS == code) {
13,086!
3884
    code = tjsonAddIntegerToObject(pJson, jkSubplanType, pNode->subplanType);
13,086✔
3885
  }
3886
  if (TSDB_CODE_SUCCESS == code) {
13,082!
3887
    code = tjsonAddIntegerToObject(pJson, jkSubplanMsgType, pNode->msgType);
13,082✔
3888
  }
3889
  if (TSDB_CODE_SUCCESS == code) {
13,086!
3890
    code = tjsonAddIntegerToObject(pJson, jkSubplanLevel, pNode->level);
13,086✔
3891
  }
3892
  if (TSDB_CODE_SUCCESS == code) {
13,086!
3893
    code = tjsonAddStringToObject(pJson, jkSubplanDbFName, pNode->dbFName);
13,086✔
3894
  }
3895
  if (TSDB_CODE_SUCCESS == code) {
13,086!
3896
    code = tjsonAddStringToObject(pJson, jkSubplanUser, pNode->user);
13,086✔
3897
  }
3898
  if (TSDB_CODE_SUCCESS == code) {
13,085!
3899
    code = tjsonAddObject(pJson, jkSubplanNodeAddr, queryNodeAddrToJson, &pNode->execNode);
13,085✔
3900
  }
3901
  if (TSDB_CODE_SUCCESS == code) {
13,086!
3902
    code = tjsonAddObject(pJson, jkSubplanRootNode, nodeToJson, pNode->pNode);
13,086✔
3903
  }
3904
  if (TSDB_CODE_SUCCESS == code) {
13,084!
3905
    code = tjsonAddObject(pJson, jkSubplanDataSink, nodeToJson, pNode->pDataSink);
13,084✔
3906
  }
3907
  if (TSDB_CODE_SUCCESS == code) {
13,085!
3908
    code = tjsonAddObject(pJson, jkSubplanTagCond, nodeToJson, pNode->pTagCond);
13,085✔
3909
  }
3910
  if (TSDB_CODE_SUCCESS == code) {
13,085!
3911
    code = tjsonAddObject(pJson, jkSubplanTagIndexCond, nodeToJson, pNode->pTagIndexCond);
13,085✔
3912
  }
3913
  if (TSDB_CODE_SUCCESS == code) {
13,086✔
3914
    code = tjsonAddBoolToObject(pJson, jkSubplanShowRewrite, pNode->showRewrite);
13,085✔
3915
  }
3916
  if (TSDB_CODE_SUCCESS == code) {
13,085✔
3917
    code = tjsonAddBoolToObject(pJson, jkSubplanIsView, pNode->isView);
13,084✔
3918
  }
3919
  if (TSDB_CODE_SUCCESS == code) {
13,087✔
3920
    code = tjsonAddBoolToObject(pJson, jkSubplanIsAudit, pNode->isAudit);
13,086✔
3921
  }
3922
  if (TSDB_CODE_SUCCESS == code) {
13,087✔
3923
    code = tjsonAddIntegerToObject(pJson, jkSubplanRowsThreshold, pNode->rowsThreshold);
13,086✔
3924
  }
3925
  if (TSDB_CODE_SUCCESS == code) {
13,087✔
3926
    code = tjsonAddBoolToObject(pJson, jkSubplanDynamicRowsThreshold, pNode->dynamicRowThreshold);
13,086✔
3927
  }
3928

3929
  return code;
13,086✔
3930
}
3931

3932
static int32_t jsonToSubplan(const SJson* pJson, void* pObj) {
10,408✔
3933
  SSubplan* pNode = (SSubplan*)pObj;
10,408✔
3934

3935
  int32_t code = tjsonToObject(pJson, jkSubplanId, jsonToSubplanId, &pNode->id);
10,408✔
3936
  if (TSDB_CODE_SUCCESS == code) {
10,413!
3937
    tjsonGetNumberValue(pJson, jkSubplanType, pNode->subplanType, code);
10,413✔
3938
  }
3939
  if (TSDB_CODE_SUCCESS == code) {
10,413!
3940
    code = tjsonGetIntValue(pJson, jkSubplanMsgType, &pNode->msgType);
10,413✔
3941
  }
3942
  if (TSDB_CODE_SUCCESS == code) {
10,411!
3943
    code = tjsonGetIntValue(pJson, jkSubplanLevel, &pNode->level);
10,411✔
3944
  }
3945
  if (TSDB_CODE_SUCCESS == code) {
10,413!
3946
    code = tjsonGetStringValue(pJson, jkSubplanDbFName, pNode->dbFName);
10,413✔
3947
  }
3948
  if (TSDB_CODE_SUCCESS == code) {
10,412!
3949
    code = tjsonGetStringValue(pJson, jkSubplanUser, pNode->user);
10,412✔
3950
  }
3951
  if (TSDB_CODE_SUCCESS == code) {
10,413!
3952
    code = tjsonToObject(pJson, jkSubplanNodeAddr, jsonToQueryNodeAddr, &pNode->execNode);
10,413✔
3953
  }
3954
  if (TSDB_CODE_SUCCESS == code) {
10,411!
3955
    code = jsonToNodeObject(pJson, jkSubplanRootNode, (SNode**)&pNode->pNode);
10,411✔
3956
  }
3957
  if (TSDB_CODE_SUCCESS == code) {
10,413!
3958
    code = jsonToNodeObject(pJson, jkSubplanDataSink, (SNode**)&pNode->pDataSink);
10,413✔
3959
  }
3960
  if (TSDB_CODE_SUCCESS == code) {
10,413!
3961
    code = jsonToNodeObject(pJson, jkSubplanTagCond, (SNode**)&pNode->pTagCond);
10,413✔
3962
  }
3963
  if (TSDB_CODE_SUCCESS == code) {
10,411!
3964
    code = jsonToNodeObject(pJson, jkSubplanTagIndexCond, (SNode**)&pNode->pTagIndexCond);
10,411✔
3965
  }
3966
  if (TSDB_CODE_SUCCESS == code) {
10,410!
3967
    code = tjsonGetBoolValue(pJson, jkSubplanShowRewrite, &pNode->showRewrite);
10,410✔
3968
  }
3969
  if (TSDB_CODE_SUCCESS == code) {
10,413!
3970
    code = tjsonGetBoolValue(pJson, jkSubplanIsView, &pNode->isView);
10,413✔
3971
  }
3972
  if (TSDB_CODE_SUCCESS == code) {
10,413!
3973
    code = tjsonGetBoolValue(pJson, jkSubplanIsAudit, &pNode->isAudit);
10,413✔
3974
  }
3975
  if (TSDB_CODE_SUCCESS == code) {
10,413!
3976
    code = tjsonGetIntValue(pJson, jkSubplanRowsThreshold, &pNode->rowsThreshold);
10,413✔
3977
  }
3978
  if (TSDB_CODE_SUCCESS == code) {
10,412!
3979
    code = tjsonGetBoolValue(pJson, jkSubplanDynamicRowsThreshold, &pNode->dynamicRowThreshold);
10,412✔
3980
  }
3981

3982
  return code;
10,413✔
3983
}
3984

3985
static const char* jkPlanQueryId = "QueryId";
3986
static const char* jkPlanNumOfSubplans = "NumOfSubplans";
3987
static const char* jkPlanSubplans = "Subplans";
3988

3989
static int32_t planToJson(const void* pObj, SJson* pJson) {
2,164✔
3990
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
2,164✔
3991

3992
  int32_t code = tjsonAddIntegerToObject(pJson, jkPlanQueryId, pNode->queryId);
2,164✔
3993
  if (TSDB_CODE_SUCCESS == code) {
2,164!
3994
    code = tjsonAddIntegerToObject(pJson, jkPlanNumOfSubplans, pNode->numOfSubplans);
2,164✔
3995
  }
3996
  if (TSDB_CODE_SUCCESS == code) {
2,164!
3997
    code = nodeListToJson(pJson, jkPlanSubplans, pNode->pSubplans);
2,164✔
3998
  }
3999

4000
  return code;
2,164✔
4001
}
4002

4003
static int32_t jsonToPlan(const SJson* pJson, void* pObj) {
1,850✔
4004
  SQueryPlan* pNode = (SQueryPlan*)pObj;
1,850✔
4005

4006
  int32_t code = tjsonGetUBigIntValue(pJson, jkPlanQueryId, &pNode->queryId);
1,850✔
4007
  if (TSDB_CODE_SUCCESS == code) {
1,850!
4008
    code = tjsonGetIntValue(pJson, jkPlanNumOfSubplans, &pNode->numOfSubplans);
1,850✔
4009
  }
4010
  if (TSDB_CODE_SUCCESS == code) {
1,850!
4011
    code = jsonToNodeList(pJson, jkPlanSubplans, &pNode->pSubplans);
1,850✔
4012
  }
4013

4014
  return code;
1,850✔
4015
}
4016

4017
static const char* jkAggLogicPlanGroupKeys = "GroupKeys";
4018
static const char* jkAggLogicPlanAggFuncs = "AggFuncs";
4019

4020
static int32_t logicAggNodeToJson(const void* pObj, SJson* pJson) {
×
4021
  const SAggLogicNode* pNode = (const SAggLogicNode*)pObj;
×
4022

4023
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
4024
  if (TSDB_CODE_SUCCESS == code) {
×
4025
    code = nodeListToJson(pJson, jkAggLogicPlanGroupKeys, pNode->pGroupKeys);
×
4026
  }
4027
  if (TSDB_CODE_SUCCESS == code) {
×
4028
    code = nodeListToJson(pJson, jkAggLogicPlanAggFuncs, pNode->pAggFuncs);
×
4029
  }
4030

4031
  return code;
×
4032
}
4033

4034
static int32_t jsonToLogicAggNode(const SJson* pJson, void* pObj) {
×
4035
  SAggLogicNode* pNode = (SAggLogicNode*)pObj;
×
4036

4037
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
4038
  if (TSDB_CODE_SUCCESS == code) {
×
4039
    code = jsonToNodeList(pJson, jkAggLogicPlanGroupKeys, &pNode->pGroupKeys);
×
4040
  }
4041
  if (TSDB_CODE_SUCCESS == code) {
×
4042
    code = jsonToNodeList(pJson, jkAggLogicPlanAggFuncs, &pNode->pAggFuncs);
×
4043
  }
4044

4045
  return code;
×
4046
}
4047

4048
static const char* jkDataTypeType = "Type";
4049
static const char* jkDataTypePrecision = "Precision";
4050
static const char* jkDataTypeScale = "Scale";
4051
static const char* jkDataTypeDataBytes = "Bytes";
4052

4053
static int32_t dataTypeToJson(const void* pObj, SJson* pJson) {
1,830,783✔
4054
  const SDataType* pNode = (const SDataType*)pObj;
1,830,783✔
4055

4056
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataTypeType, pNode->type);
1,830,783✔
4057
  if (TSDB_CODE_SUCCESS == code) {
1,830,720!
4058
    code = tjsonAddIntegerToObject(pJson, jkDataTypePrecision, pNode->precision);
1,830,721✔
4059
  }
4060
  if (TSDB_CODE_SUCCESS == code) {
1,830,734!
4061
    code = tjsonAddIntegerToObject(pJson, jkDataTypeScale, pNode->scale);
1,830,736✔
4062
  }
4063
  if (TSDB_CODE_SUCCESS == code) {
1,830,737!
4064
    code = tjsonAddIntegerToObject(pJson, jkDataTypeDataBytes, pNode->bytes);
1,830,741✔
4065
  }
4066

4067
  return code;
1,830,723✔
4068
}
4069

4070
static int32_t jsonToDataType(const SJson* pJson, void* pObj) {
2,655,514✔
4071
  SDataType* pNode = (SDataType*)pObj;
2,655,514✔
4072

4073
  int32_t code = tjsonGetUTinyIntValue(pJson, jkDataTypeType, &pNode->type);
2,655,514✔
4074
  if (TSDB_CODE_SUCCESS == code) {
2,653,889!
4075
    code = tjsonGetUTinyIntValue(pJson, jkDataTypePrecision, &pNode->precision);
2,653,908✔
4076
  }
4077
  if (TSDB_CODE_SUCCESS == code) {
2,654,213✔
4078
    code = tjsonGetUTinyIntValue(pJson, jkDataTypeScale, &pNode->scale);
2,654,212✔
4079
  }
4080
  if (TSDB_CODE_SUCCESS == code) {
2,653,482!
4081
    code = tjsonGetIntValue(pJson, jkDataTypeDataBytes, &pNode->bytes);
2,653,482✔
4082
  }
4083

4084
  return TSDB_CODE_SUCCESS;
2,653,652✔
4085
}
4086

4087
static const char* jkExprDataType = "DataType";
4088
static const char* jkExprAliasName = "AliasName";
4089
static const char* jkExprUserAlias = "UserAlias";
4090

4091
static int32_t exprNodeToJson(const void* pObj, SJson* pJson) {
1,185,840✔
4092
  const SExprNode* pNode = (const SExprNode*)pObj;
1,185,840✔
4093

4094
  int32_t code = tjsonAddObject(pJson, jkExprDataType, dataTypeToJson, &pNode->resType);
1,185,840✔
4095
  if (TSDB_CODE_SUCCESS == code) {
1,185,844!
4096
    code = tjsonAddStringToObject(pJson, jkExprAliasName, pNode->aliasName);
1,185,844✔
4097
  }
4098
  if (TSDB_CODE_SUCCESS == code) {
1,185,830!
4099
    code = tjsonAddStringToObject(pJson, jkExprUserAlias, pNode->userAlias);
1,185,830✔
4100
  }
4101

4102
  return code;
1,185,836✔
4103
}
4104

4105
static int32_t jsonToExprNode(const SJson* pJson, void* pObj) {
2,036,926✔
4106
  SExprNode* pNode = (SExprNode*)pObj;
2,036,926✔
4107

4108
  int32_t code = tjsonToObject(pJson, jkExprDataType, jsonToDataType, &pNode->resType);
2,036,926✔
4109
  if (TSDB_CODE_SUCCESS == code) {
2,036,178!
4110
    code = tjsonGetStringValue(pJson, jkExprAliasName, pNode->aliasName);
2,036,180✔
4111
  }
4112
  if (TSDB_CODE_SUCCESS == code) {
2,037,024✔
4113
    code = tjsonGetStringValue(pJson, jkExprUserAlias, pNode->userAlias);
2,037,009✔
4114
  }
4115

4116
  return code;
2,037,092✔
4117
}
4118

4119
static const char* jkColumnTableId = "TableId";
4120
static const char* jkColumnTableType = "TableType";
4121
static const char* jkColumnColId = "ColId";
4122
static const char* jkColumnColType = "ColType";
4123
static const char* jkColumnProjId = "ProjId";
4124
static const char* jkColumnDbName = "DbName";
4125
static const char* jkColumnTableName = "TableName";
4126
static const char* jkColumnTableAlias = "TableAlias";
4127
static const char* jkColumnColName = "ColName";
4128
static const char* jkColumnDataBlockId = "DataBlockId";
4129
static const char* jkColumnSlotId = "SlotId";
4130
static const char* jkColumnTableHasPk = "TableHasPk";
4131
static const char* jkColumnIsPk = "IsPk";
4132
static const char* jkColumnNumOfPKs = "NumOfPKs";
4133

4134
static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
764,887✔
4135
  const SColumnNode* pNode = (const SColumnNode*)pObj;
764,887✔
4136

4137
  int32_t code = exprNodeToJson(pObj, pJson);
764,887✔
4138
  if (TSDB_CODE_SUCCESS == code) {
764,878!
4139
    code = tjsonAddIntegerToObject(pJson, jkColumnTableId, pNode->tableId);
764,878✔
4140
  }
4141
  if (TSDB_CODE_SUCCESS == code) {
764,883!
4142
    code = tjsonAddIntegerToObject(pJson, jkColumnTableType, pNode->tableType);
764,883✔
4143
  }
4144
  if (TSDB_CODE_SUCCESS == code) {
764,875!
4145
    code = tjsonAddIntegerToObject(pJson, jkColumnColId, pNode->colId);
764,875✔
4146
  }
4147
  if (TSDB_CODE_SUCCESS == code) {
764,881✔
4148
    code = tjsonAddIntegerToObject(pJson, jkColumnProjId, pNode->projIdx);
764,880✔
4149
  }
4150
  if (TSDB_CODE_SUCCESS == code) {
764,880✔
4151
    code = tjsonAddIntegerToObject(pJson, jkColumnColType, pNode->colType);
764,879✔
4152
  }
4153
  if (TSDB_CODE_SUCCESS == code) {
764,875!
4154
    code = tjsonAddStringToObject(pJson, jkColumnDbName, pNode->dbName);
764,875✔
4155
  }
4156
  if (TSDB_CODE_SUCCESS == code) {
764,883!
4157
    code = tjsonAddStringToObject(pJson, jkColumnTableName, pNode->tableName);
764,883✔
4158
  }
4159
  if (TSDB_CODE_SUCCESS == code) {
764,888!
4160
    code = tjsonAddStringToObject(pJson, jkColumnTableAlias, pNode->tableAlias);
764,888✔
4161
  }
4162
  if (TSDB_CODE_SUCCESS == code) {
764,879!
4163
    code = tjsonAddStringToObject(pJson, jkColumnColName, pNode->colName);
764,879✔
4164
  }
4165
  if (TSDB_CODE_SUCCESS == code) {
764,876!
4166
    code = tjsonAddIntegerToObject(pJson, jkColumnDataBlockId, pNode->dataBlockId);
764,876✔
4167
  }
4168
  if (TSDB_CODE_SUCCESS == code) {
764,882!
4169
    code = tjsonAddIntegerToObject(pJson, jkColumnSlotId, pNode->slotId);
764,883✔
4170
  }
4171
  if (TSDB_CODE_SUCCESS == code) {
764,870!
4172
    code = tjsonAddBoolToObject(pJson, jkColumnTableHasPk, pNode->tableHasPk);
764,871✔
4173
  }
4174
  if (TSDB_CODE_SUCCESS == code) {
764,881!
4175
    code = tjsonAddBoolToObject(pJson, jkColumnIsPk, pNode->isPk);
764,884✔
4176
  }
4177
  if (TSDB_CODE_SUCCESS == code) {
764,879!
4178
    code = tjsonAddIntegerToObject(pJson, jkColumnNumOfPKs, pNode->numOfPKs);
764,882✔
4179
  }
4180
  return code;
764,860✔
4181
}
4182

4183
static int32_t jsonToColumnNode(const SJson* pJson, void* pObj) {
1,174,951✔
4184
  SColumnNode* pNode = (SColumnNode*)pObj;
1,174,951✔
4185

4186
  int32_t code = jsonToExprNode(pJson, pObj);
1,174,951✔
4187
  if (TSDB_CODE_SUCCESS == code) {
1,175,020!
4188
    code = tjsonGetUBigIntValue(pJson, jkColumnTableId, &pNode->tableId);
1,175,022✔
4189
  }
4190
  if (TSDB_CODE_SUCCESS == code) {
1,174,800✔
4191
    code = tjsonGetTinyIntValue(pJson, jkColumnTableType, &pNode->tableType);
1,174,795✔
4192
  }
4193
  if (TSDB_CODE_SUCCESS == code) {
1,174,962✔
4194
    code = tjsonGetSmallIntValue(pJson, jkColumnColId, &pNode->colId);
1,174,959✔
4195
  }
4196
  if (TSDB_CODE_SUCCESS == code) {
1,174,701✔
4197
    code = tjsonGetSmallIntValue(pJson, jkColumnProjId, &pNode->projIdx);
1,174,699✔
4198
  }
4199
  if (TSDB_CODE_SUCCESS == code) {
1,174,820✔
4200
    tjsonGetNumberValue(pJson, jkColumnColType, pNode->colType, code);
1,174,818✔
4201
  }
4202
  if (TSDB_CODE_SUCCESS == code) {
1,174,909✔
4203
    code = tjsonGetStringValue(pJson, jkColumnDbName, pNode->dbName);
1,174,902✔
4204
  }
4205
  if (TSDB_CODE_SUCCESS == code) {
1,174,947✔
4206
    code = tjsonGetStringValue(pJson, jkColumnTableName, pNode->tableName);
1,174,940✔
4207
  }
4208
  if (TSDB_CODE_SUCCESS == code) {
1,175,035✔
4209
    code = tjsonGetStringValue(pJson, jkColumnTableAlias, pNode->tableAlias);
1,175,029✔
4210
  }
4211
  if (TSDB_CODE_SUCCESS == code) {
1,175,030✔
4212
    code = tjsonGetStringValue(pJson, jkColumnColName, pNode->colName);
1,175,025✔
4213
  }
4214
  if (TSDB_CODE_SUCCESS == code) {
1,174,967!
4215
    code = tjsonGetSmallIntValue(pJson, jkColumnDataBlockId, &pNode->dataBlockId);
1,174,980✔
4216
  }
4217
  if (TSDB_CODE_SUCCESS == code) {
1,174,940!
4218
    code = tjsonGetSmallIntValue(pJson, jkColumnSlotId, &pNode->slotId);
1,174,953✔
4219
  }
4220
  if (TSDB_CODE_SUCCESS == code) {
1,174,902!
4221
    code = tjsonGetBoolValue(pJson, jkColumnTableHasPk, &pNode->tableHasPk);
1,174,917✔
4222
  }
4223
  if (TSDB_CODE_SUCCESS == code) {
1,175,050!
4224
    code = tjsonGetBoolValue(pJson, jkColumnIsPk, &pNode->isPk);
1,175,065✔
4225
  }
4226
  if (TSDB_CODE_SUCCESS == code) {
1,174,804!
4227
    code = tjsonGetSmallIntValue(pJson, jkColumnNumOfPKs, &pNode->numOfPKs);
1,174,818✔
4228
  }
4229
  return code;
1,175,022✔
4230
}
4231

4232
static const char* jkValueLiteralSize = "LiteralSize";
4233
static const char* jkValueLiteral = "Literal";
4234
static const char* jkValueFlag = "Flag";
4235
static const char* jkValueTranslate = "Translate";
4236
static const char* jkValueNotReserved = "NotReserved";
4237
static const char* jkValueIsNull = "IsNull";
4238
static const char* jkValueUnit = "Unit";
4239
static const char* jkValueDatum = "Datum";
4240

4241
static int32_t datumToJson(const void* pObj, SJson* pJson) {
39,197✔
4242
  const SValueNode* pNode = (const SValueNode*)pObj;
39,197✔
4243

4244
  int32_t code = TSDB_CODE_SUCCESS;
39,197✔
4245
  switch (pNode->node.resType.type) {
39,197!
4246
    case TSDB_DATA_TYPE_NULL:
×
4247
      break;
×
4248
    case TSDB_DATA_TYPE_BOOL:
130✔
4249
      code = tjsonAddBoolToObject(pJson, jkValueDatum, pNode->datum.b);
130✔
4250
      break;
130✔
4251
    case TSDB_DATA_TYPE_TINYINT:
27,623✔
4252
    case TSDB_DATA_TYPE_SMALLINT:
4253
    case TSDB_DATA_TYPE_INT:
4254
    case TSDB_DATA_TYPE_BIGINT:
4255
    case TSDB_DATA_TYPE_TIMESTAMP:
4256
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.i);
27,623✔
4257
      break;
27,622✔
4258
    case TSDB_DATA_TYPE_UTINYINT:
98✔
4259
    case TSDB_DATA_TYPE_USMALLINT:
4260
    case TSDB_DATA_TYPE_UINT:
4261
    case TSDB_DATA_TYPE_UBIGINT:
4262
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.u);
98✔
4263
      break;
98✔
4264
    case TSDB_DATA_TYPE_FLOAT:
464✔
4265
    case TSDB_DATA_TYPE_DOUBLE:
4266
      code = tjsonAddDoubleToObject(pJson, jkValueDatum, pNode->datum.d);
464✔
4267
      break;
464✔
4268
    case TSDB_DATA_TYPE_NCHAR: {
×
4269
      // cJSON only support utf-8 encoding. Convert memory content to hex string.
4270
      int32_t bufSize = varDataLen(pNode->datum.p) * 2 + 1;
×
4271
      char*   buf = taosMemoryCalloc(bufSize, sizeof(char));
×
4272
      if (!buf) return terrno;
×
4273
      code = taosHexEncode(varDataVal(pNode->datum.p), buf, varDataLen(pNode->datum.p), bufSize);
×
4274
      if (code != TSDB_CODE_SUCCESS) {
×
4275
        taosMemoryFree(buf);
×
4276
        return TSDB_CODE_TSC_INVALID_VALUE;
×
4277
      }
4278
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
×
4279
      taosMemoryFree(buf);
×
4280
      break;
×
4281
    }
4282
    case TSDB_DATA_TYPE_VARCHAR:
10,882✔
4283
    case TSDB_DATA_TYPE_VARBINARY:
4284
    case TSDB_DATA_TYPE_GEOMETRY:
4285
      code = tjsonAddStringToObject(pJson, jkValueDatum, varDataVal(pNode->datum.p));
10,882✔
4286
      break;
10,882✔
4287
    case TSDB_DATA_TYPE_JSON: {
×
4288
      int32_t len = getJsonValueLen(pNode->datum.p);
×
4289
      int32_t bufSize = len * 2 + 1;
×
4290
      char*   buf = taosMemoryCalloc(bufSize, sizeof(char));
×
4291
      if (!buf) return terrno;
×
4292
      code = taosHexEncode(pNode->datum.p, buf, len, bufSize);
×
4293
      if (code != TSDB_CODE_SUCCESS) {
×
4294
        taosMemoryFree(buf);
×
4295
        return TSDB_CODE_TSC_INVALID_VALUE;
×
4296
      }
4297
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
×
4298
      taosMemoryFree(buf);
×
4299
      break;
×
4300
    }
4301
    case TSDB_DATA_TYPE_DECIMAL:
×
4302
    case TSDB_DATA_TYPE_BLOB:
4303
      // todo
4304
    default:
4305
      break;
×
4306
  }
4307

4308
  return code;
39,196✔
4309
}
4310

4311
static int32_t valueNodeToJson(const void* pObj, SJson* pJson) {
41,953✔
4312
  const SValueNode* pNode = (const SValueNode*)pObj;
41,953✔
4313

4314
  int32_t code = exprNodeToJson(pObj, pJson);
41,953✔
4315
  if (TSDB_CODE_SUCCESS == code) {
41,954!
4316
    code = tjsonAddIntegerToObject(pJson, jkValueLiteralSize, NULL != pNode->literal ? strlen(pNode->literal) : 0);
41,954✔
4317
  }
4318
  if (TSDB_CODE_SUCCESS == code && NULL != pNode->literal) {
41,952!
4319
    code = tjsonAddStringToObject(pJson, jkValueLiteral, pNode->literal);
31,317✔
4320
  }
4321
  if (TSDB_CODE_SUCCESS == code) {
41,954!
4322
    code = tjsonAddBoolToObject(pJson, jkValueFlag, pNode->flag);
41,954✔
4323
  }
4324
  if (TSDB_CODE_SUCCESS == code) {
41,954!
4325
    code = tjsonAddBoolToObject(pJson, jkValueTranslate, pNode->translate);
41,954✔
4326
  }
4327
  if (TSDB_CODE_SUCCESS == code) {
41,954!
4328
    code = tjsonAddBoolToObject(pJson, jkValueNotReserved, pNode->notReserved);
41,954✔
4329
  }
4330
  if (TSDB_CODE_SUCCESS == code) {
41,955!
4331
    code = tjsonAddBoolToObject(pJson, jkValueIsNull, pNode->isNull);
41,955✔
4332
  }
4333
  if (TSDB_CODE_SUCCESS == code) {
41,954!
4334
    code = tjsonAddIntegerToObject(pJson, jkValueUnit, pNode->unit);
41,954✔
4335
  }
4336
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
41,955!
4337
    code = datumToJson(pNode, pJson);
39,197✔
4338
  }
4339

4340
  return code;
41,954✔
4341
}
4342

4343
static int32_t jsonToDatum(const SJson* pJson, void* pObj) {
43,627✔
4344
  SValueNode* pNode = (SValueNode*)pObj;
43,627✔
4345

4346
  int32_t code = TSDB_CODE_SUCCESS;
43,627✔
4347
  switch (pNode->node.resType.type) {
43,627!
4348
    case TSDB_DATA_TYPE_NULL:
×
4349
      break;
×
4350
    case TSDB_DATA_TYPE_BOOL:
185✔
4351
      code = tjsonGetBoolValue(pJson, jkValueDatum, &pNode->datum.b);
185✔
4352
      *(bool*)&pNode->typeData = pNode->datum.b;
185✔
4353
      break;
185✔
4354
    case TSDB_DATA_TYPE_TINYINT:
7,418✔
4355
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
7,418✔
4356
      *(int8_t*)&pNode->typeData = pNode->datum.i;
7,418✔
4357
      break;
7,418✔
4358
    case TSDB_DATA_TYPE_SMALLINT:
110✔
4359
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
110✔
4360
      *(int16_t*)&pNode->typeData = pNode->datum.i;
110✔
4361
      break;
110✔
4362
    case TSDB_DATA_TYPE_INT:
180✔
4363
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
180✔
4364
      *(int32_t*)&pNode->typeData = pNode->datum.i;
180✔
4365
      break;
180✔
4366
    case TSDB_DATA_TYPE_BIGINT:
20,710✔
4367
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
20,710✔
4368
      *(int64_t*)&pNode->typeData = pNode->datum.i;
20,711✔
4369
      break;
20,711✔
4370
    case TSDB_DATA_TYPE_TIMESTAMP:
×
4371
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
×
4372
      *(int64_t*)&pNode->typeData = pNode->datum.i;
×
4373
      break;
×
4374
    case TSDB_DATA_TYPE_UTINYINT:
98✔
4375
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
98✔
4376
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
98✔
4377
      break;
98✔
4378
    case TSDB_DATA_TYPE_USMALLINT:
×
4379
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
4380
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
×
4381
      break;
×
4382
    case TSDB_DATA_TYPE_UINT:
×
4383
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
4384
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
×
4385
      break;
×
4386
    case TSDB_DATA_TYPE_UBIGINT:
×
4387
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
4388
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
×
4389
      break;
×
4390
    case TSDB_DATA_TYPE_FLOAT:
×
4391
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
×
4392
      *(float*)&pNode->typeData = pNode->datum.d;
×
4393
      break;
×
4394
    case TSDB_DATA_TYPE_DOUBLE:
464✔
4395
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
464✔
4396
      *(double*)&pNode->typeData = pNode->datum.d;
463✔
4397
      break;
463✔
4398
    case TSDB_DATA_TYPE_NCHAR:
14,466✔
4399
    case TSDB_DATA_TYPE_VARCHAR:
4400
    case TSDB_DATA_TYPE_VARBINARY:
4401
    case TSDB_DATA_TYPE_GEOMETRY: {
4402
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
14,466!
4403
      if (NULL == pNode->datum.p) {
14,466!
4404
        code = terrno;
×
4405
        break;
×
4406
      }
4407
      varDataSetLen(pNode->datum.p, pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
14,466✔
4408
      if (TSDB_DATA_TYPE_NCHAR == pNode->node.resType.type) {
14,466!
4409
        char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + VARSTR_HEADER_SIZE + 1);
×
4410
        if (NULL == buf) {
×
4411
          code = terrno;
×
4412
          break;
×
4413
        }
4414
        code = tjsonGetStringValue(pJson, jkValueDatum, buf);
×
4415
        if (code != TSDB_CODE_SUCCESS) {
×
4416
          taosMemoryFree(buf);
×
4417
          break;
×
4418
        }
4419
        code = taosHexDecode(buf, varDataVal(pNode->datum.p), pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
×
4420
        if (code != TSDB_CODE_SUCCESS) {
×
4421
          taosMemoryFree(buf);
×
4422
          break;
×
4423
        }
4424
        taosMemoryFree(buf);
×
4425
      } else {
4426
        code = tjsonGetStringValue(pJson, jkValueDatum, varDataVal(pNode->datum.p));
14,466✔
4427
      }
4428
      break;
14,464✔
4429
    }
4430
    case TSDB_DATA_TYPE_JSON: {
×
4431
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes);
×
4432
      if (NULL == pNode->datum.p) {
×
4433
        code = terrno;
×
4434
        break;
×
4435
      }
4436
      char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + 1);
×
4437
      if (NULL == buf) {
×
4438
        code = terrno;
×
4439
        break;
×
4440
      }
4441
      code = tjsonGetStringValue(pJson, jkValueDatum, buf);
×
4442
      if (code != TSDB_CODE_SUCCESS) {
×
4443
        taosMemoryFree(buf);
×
4444
        break;
×
4445
      }
4446
      code = taosHexDecode(buf, pNode->datum.p, pNode->node.resType.bytes);
×
4447
      if (code != TSDB_CODE_SUCCESS) {
×
4448
        taosMemoryFree(buf);
×
4449
        break;
×
4450
      }
4451
      taosMemoryFree(buf);
×
4452
      break;
×
4453
    }
4454
    case TSDB_DATA_TYPE_DECIMAL:
×
4455
    case TSDB_DATA_TYPE_BLOB:
4456
      // todo
4457
    default:
4458
      break;
×
4459
  }
4460

4461
  return code;
43,625✔
4462
}
4463

4464
static int32_t jsonToValueNode(const SJson* pJson, void* pObj) {
46,395✔
4465
  SValueNode* pNode = (SValueNode*)pObj;
46,395✔
4466

4467
  int32_t code = jsonToExprNode(pJson, pObj);
46,395✔
4468
  int32_t literalSize = 0;
46,398✔
4469
  if (TSDB_CODE_SUCCESS == code) {
46,398!
4470
    code = tjsonGetIntValue(pJson, jkValueLiteralSize, &literalSize);
46,398✔
4471
  }
4472
  if (TSDB_CODE_SUCCESS == code && literalSize > 0) {
46,397!
4473
    code = tjsonDupStringValue(pJson, jkValueLiteral, &pNode->literal);
35,366✔
4474
  }
4475
  if (TSDB_CODE_SUCCESS == code) {
46,400✔
4476
    code = tjsonGetIntValue(pJson, jkValueFlag, &pNode->flag);
46,399✔
4477
  }
4478
  if (TSDB_CODE_SUCCESS == code) {
46,395✔
4479
    code = tjsonGetBoolValue(pJson, jkValueTranslate, &pNode->translate);
46,394✔
4480
  }
4481
  if (TSDB_CODE_SUCCESS == code) {
46,402✔
4482
    code = tjsonGetBoolValue(pJson, jkValueNotReserved, &pNode->notReserved);
46,401✔
4483
  }
4484
  if (TSDB_CODE_SUCCESS == code) {
46,401✔
4485
    code = tjsonGetBoolValue(pJson, jkValueIsNull, &pNode->isNull);
46,400✔
4486
  }
4487
  if (TSDB_CODE_SUCCESS == code) {
46,398✔
4488
    code = tjsonGetTinyIntValue(pJson, jkValueUnit, &pNode->unit);
46,397✔
4489
  }
4490
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
46,393!
4491
    code = jsonToDatum(pJson, pNode);
43,627✔
4492
  }
4493

4494
  return code;
46,392✔
4495
}
4496

4497
static const char* jkOperatorType = "OpType";
4498
static const char* jkOperatorLeft = "Left";
4499
static const char* jkOperatorRight = "Right";
4500

4501
static int32_t operatorNodeToJson(const void* pObj, SJson* pJson) {
9,129✔
4502
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
9,129✔
4503

4504
  int32_t code = exprNodeToJson(pObj, pJson);
9,129✔
4505
  if (TSDB_CODE_SUCCESS == code) {
9,132!
4506
    code = tjsonAddIntegerToObject(pJson, jkOperatorType, pNode->opType);
9,132✔
4507
  }
4508
  if (TSDB_CODE_SUCCESS == code) {
9,131!
4509
    code = tjsonAddObject(pJson, jkOperatorLeft, nodeToJson, pNode->pLeft);
9,131✔
4510
  }
4511
  if (TSDB_CODE_SUCCESS == code) {
9,132!
4512
    code = tjsonAddObject(pJson, jkOperatorRight, nodeToJson, pNode->pRight);
9,132✔
4513
  }
4514

4515
  return code;
9,132✔
4516
}
4517

4518
static int32_t jsonToOperatorNode(const SJson* pJson, void* pObj) {
7,558✔
4519
  SOperatorNode* pNode = (SOperatorNode*)pObj;
7,558✔
4520

4521
  int32_t code = jsonToExprNode(pJson, pObj);
7,558✔
4522
  if (TSDB_CODE_SUCCESS == code) {
7,560!
4523
    tjsonGetNumberValue(pJson, jkOperatorType, pNode->opType, code);
7,560✔
4524
  }
4525
  if (TSDB_CODE_SUCCESS == code) {
7,558!
4526
    code = jsonToNodeObject(pJson, jkOperatorLeft, &pNode->pLeft);
7,558✔
4527
  }
4528
  if (TSDB_CODE_SUCCESS == code) {
7,560!
4529
    code = jsonToNodeObject(pJson, jkOperatorRight, &pNode->pRight);
7,560✔
4530
  }
4531

4532
  return code;
7,560✔
4533
}
4534

4535
static const char* jkLogicCondType = "CondType";
4536
static const char* jkLogicCondParameters = "Parameters";
4537

4538
static int32_t logicConditionNodeToJson(const void* pObj, SJson* pJson) {
1,421✔
4539
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
1,421✔
4540

4541
  int32_t code = exprNodeToJson(pObj, pJson);
1,421✔
4542
  if (TSDB_CODE_SUCCESS == code) {
1,421!
4543
    code = tjsonAddIntegerToObject(pJson, jkLogicCondType, pNode->condType);
1,421✔
4544
  }
4545
  if (TSDB_CODE_SUCCESS == code) {
1,421!
4546
    code = nodeListToJson(pJson, jkLogicCondParameters, pNode->pParameterList);
1,421✔
4547
  }
4548

4549
  return code;
1,421✔
4550
}
4551

4552
static int32_t jsonToLogicConditionNode(const SJson* pJson, void* pObj) {
2,000✔
4553
  SLogicConditionNode* pNode = (SLogicConditionNode*)pObj;
2,000✔
4554

4555
  int32_t code = jsonToExprNode(pJson, pObj);
2,000✔
4556
  if (TSDB_CODE_SUCCESS == code) {
2,000!
4557
    tjsonGetNumberValue(pJson, jkLogicCondType, pNode->condType, code);
2,000✔
4558
  }
4559
  if (TSDB_CODE_SUCCESS == code) {
2,000!
4560
    code = jsonToNodeList(pJson, jkLogicCondParameters, &pNode->pParameterList);
2,000✔
4561
  }
4562

4563
  return code;
1,999✔
4564
}
4565

4566
static const char* jkFunctionName = "Name";
4567
static const char* jkFunctionId = "Id";
4568
static const char* jkFunctionType = "Type";
4569
static const char* jkFunctionParameter = "Parameters";
4570
static const char* jkFunctionUdfBufSize = "UdfBufSize";
4571
static const char* jkFunctionHasPk = "HasPk";
4572
static const char* jkFunctionPkBytes = "PkBytes";
4573
static const char* jkFunctionIsMergeFunc = "IsMergeFunc";
4574
static const char* jkFunctionMergeFuncOf = "MergeFuncOf";
4575
static const char* jkFunctionTrimType = "TrimType";
4576

4577
static int32_t functionNodeToJson(const void* pObj, SJson* pJson) {
366,760✔
4578
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
366,760✔
4579

4580
  int32_t code = exprNodeToJson(pObj, pJson);
366,760✔
4581
  if (TSDB_CODE_SUCCESS == code) {
366,760!
4582
    code = tjsonAddStringToObject(pJson, jkFunctionName, pNode->functionName);
366,760✔
4583
  }
4584
  if (TSDB_CODE_SUCCESS == code) {
366,760!
4585
    code = tjsonAddIntegerToObject(pJson, jkFunctionId, pNode->funcId);
366,760✔
4586
  }
4587
  if (TSDB_CODE_SUCCESS == code) {
366,760!
4588
    code = tjsonAddIntegerToObject(pJson, jkFunctionType, pNode->funcType);
366,760✔
4589
  }
4590
  if (TSDB_CODE_SUCCESS == code) {
366,760!
4591
    code = nodeListToJson(pJson, jkFunctionParameter, pNode->pParameterList);
366,760✔
4592
  }
4593
  if (TSDB_CODE_SUCCESS == code) {
366,760!
4594
    code = tjsonAddIntegerToObject(pJson, jkFunctionUdfBufSize, pNode->udfBufSize);
366,760✔
4595
  }
4596
  if (TSDB_CODE_SUCCESS == code) {
366,760!
4597
    code = tjsonAddBoolToObject(pJson, jkFunctionHasPk, pNode->hasPk);
366,760✔
4598
  }
4599
  if (TSDB_CODE_SUCCESS == code) {
366,760!
4600
    code = tjsonAddIntegerToObject(pJson, jkFunctionPkBytes, pNode->pkBytes);
366,760✔
4601
  }
4602
  if (TSDB_CODE_SUCCESS == code) {
366,760!
4603
    code = tjsonAddBoolToObject(pJson, jkFunctionIsMergeFunc, pNode->hasOriginalFunc);
366,760✔
4604
  }
4605
  if (TSDB_CODE_SUCCESS == code) {
366,760!
4606
    code = tjsonAddIntegerToObject(pJson, jkFunctionMergeFuncOf, pNode->originalFuncId);
366,760✔
4607
  }
4608
  if (TSDB_CODE_SUCCESS == code) {
366,760!
4609
    code = tjsonAddIntegerToObject(pJson, jkFunctionTrimType, pNode->trimType);
366,760✔
4610
  }
4611
  return code;
366,760✔
4612
}
4613

4614
static int32_t jsonToFunctionNode(const SJson* pJson, void* pObj) {
801,439✔
4615
  SFunctionNode* pNode = (SFunctionNode*)pObj;
801,439✔
4616

4617
  int32_t code = jsonToExprNode(pJson, pObj);
801,439✔
4618
  if (TSDB_CODE_SUCCESS == code) {
801,392!
4619
    code = tjsonGetStringValue(pJson, jkFunctionName, pNode->functionName);
801,392✔
4620
  }
4621
  if (TSDB_CODE_SUCCESS == code) {
801,173!
4622
    code = tjsonGetIntValue(pJson, jkFunctionId, &pNode->funcId);
801,175✔
4623
  }
4624
  if (TSDB_CODE_SUCCESS == code) {
801,107!
4625
    code = tjsonGetIntValue(pJson, jkFunctionType, &pNode->funcType);
801,109✔
4626
  }
4627
  if (TSDB_CODE_SUCCESS == code) {
801,232!
4628
    code = jsonToNodeList(pJson, jkFunctionParameter, &pNode->pParameterList);
801,234✔
4629
  }
4630
  if (TSDB_CODE_SUCCESS == code) {
801,475!
4631
    code = tjsonGetIntValue(pJson, jkFunctionUdfBufSize, &pNode->udfBufSize);
801,477✔
4632
  }
4633
  if (TSDB_CODE_SUCCESS == code) {
801,445!
4634
    code = tjsonGetBoolValue(pJson, jkFunctionHasPk, &pNode->hasPk);
801,447✔
4635
  }
4636
  if (TSDB_CODE_SUCCESS == code) {
801,413!
4637
    code = tjsonGetIntValue(pJson, jkFunctionPkBytes, &pNode->pkBytes);
801,416✔
4638
  }
4639
  if (TSDB_CODE_SUCCESS == code) {
801,423!
4640
    code = tjsonGetBoolValue(pJson, jkFunctionIsMergeFunc, &pNode->hasOriginalFunc);
801,426✔
4641
  }
4642
  if (TSDB_CODE_SUCCESS == code) {
801,446!
4643
    code = tjsonGetIntValue(pJson, jkFunctionMergeFuncOf, &pNode->originalFuncId);
801,449✔
4644
  }
4645
  if (TSDB_CODE_SUCCESS == code) {
801,440!
4646
    tjsonGetNumberValue(pJson, jkFunctionTrimType, pNode->trimType, code);
801,440✔
4647
  }
4648

4649
  return code;
801,463✔
4650
}
4651

4652
static const char* jkTableDbName = "DbName";
4653
static const char* jkTableTableName = "tableName";
4654
static const char* jkTableTableAlias = "tableAlias";
4655

4656
static int32_t tableNodeToJson(const void* pObj, SJson* pJson) {
1,608✔
4657
  const STableNode* pNode = (const STableNode*)pObj;
1,608✔
4658

4659
  int32_t code = exprNodeToJson(pObj, pJson);
1,608✔
4660
  if (TSDB_CODE_SUCCESS == code) {
1,608!
4661
    code = tjsonAddStringToObject(pJson, jkTableDbName, pNode->dbName);
1,608✔
4662
  }
4663
  if (TSDB_CODE_SUCCESS == code) {
1,608!
4664
    code = tjsonAddStringToObject(pJson, jkTableTableName, pNode->tableName);
1,608✔
4665
  }
4666
  if (TSDB_CODE_SUCCESS == code) {
1,608!
4667
    code = tjsonAddStringToObject(pJson, jkTableTableAlias, pNode->tableAlias);
1,608✔
4668
  }
4669

4670
  return code;
1,608✔
4671
}
4672

4673
static int32_t jsonToTableNode(const SJson* pJson, void* pObj) {
5,053✔
4674
  STableNode* pNode = (STableNode*)pObj;
5,053✔
4675

4676
  int32_t code = jsonToExprNode(pJson, pObj);
5,053✔
4677
  if (TSDB_CODE_SUCCESS == code) {
5,053!
4678
    code = tjsonGetStringValue(pJson, jkTableDbName, pNode->dbName);
5,053✔
4679
  }
4680
  if (TSDB_CODE_SUCCESS == code) {
5,053!
4681
    code = tjsonGetStringValue(pJson, jkTableTableName, pNode->tableName);
5,053✔
4682
  }
4683
  if (TSDB_CODE_SUCCESS == code) {
5,053!
4684
    code = tjsonGetStringValue(pJson, jkTableTableAlias, pNode->tableAlias);
5,053✔
4685
  }
4686

4687
  return code;
5,053✔
4688
}
4689

4690
static const char* jkTableIndexInfoIntervalUnit = "IntervalUnit";
4691
static const char* jkTableIndexInfoSlidingUnit = "SlidingUnit";
4692
static const char* jkTableIndexInfoInterval = "Interval";
4693
static const char* jkTableIndexInfoOffset = "Offset";
4694
static const char* jkTableIndexInfoSliding = "Sliding";
4695
static const char* jkTableIndexInfoDstTbUid = "DstTbUid";
4696
static const char* jkTableIndexInfoDstVgId = "DstVgId";
4697
static const char* jkTableIndexInfoEpSet = "EpSet";
4698
static const char* jkTableIndexInfoExpr = "Expr";
4699

4700
static int32_t tableIndexInfoToJson(const void* pObj, SJson* pJson) {
×
4701
  const STableIndexInfo* pNode = (const STableIndexInfo*)pObj;
×
4702

4703
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoIntervalUnit, pNode->intervalUnit);
×
4704
  if (TSDB_CODE_SUCCESS == code) {
×
4705
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoSlidingUnit, pNode->slidingUnit);
×
4706
  }
4707
  if (TSDB_CODE_SUCCESS == code) {
×
4708
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoInterval, pNode->interval);
×
4709
  }
4710
  if (TSDB_CODE_SUCCESS == code) {
×
4711
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoOffset, pNode->offset);
×
4712
  }
4713
  if (TSDB_CODE_SUCCESS == code) {
×
4714
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoSliding, pNode->sliding);
×
4715
  }
4716
  if (TSDB_CODE_SUCCESS == code) {
×
4717
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoDstTbUid, pNode->dstTbUid);
×
4718
  }
4719
  if (TSDB_CODE_SUCCESS == code) {
×
4720
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoDstVgId, pNode->dstVgId);
×
4721
  }
4722
  if (TSDB_CODE_SUCCESS == code) {
×
4723
    code = tjsonAddObject(pJson, jkTableIndexInfoEpSet, epSetToJson, &pNode->epSet);
×
4724
  }
4725
  if (TSDB_CODE_SUCCESS == code) {
×
4726
    code = tjsonAddStringToObject(pJson, jkTableIndexInfoExpr, pNode->expr);
×
4727
  }
4728

4729
  return code;
×
4730
}
4731

4732
static int32_t jsonToTableIndexInfo(const SJson* pJson, void* pObj) {
×
4733
  STableIndexInfo* pNode = (STableIndexInfo*)pObj;
×
4734

4735
  int32_t code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoIntervalUnit, &pNode->intervalUnit);
×
4736
  if (TSDB_CODE_SUCCESS == code) {
×
4737
    code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoSlidingUnit, &pNode->slidingUnit);
×
4738
  }
4739
  if (TSDB_CODE_SUCCESS == code) {
×
4740
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoInterval, &pNode->interval);
×
4741
  }
4742
  if (TSDB_CODE_SUCCESS == code) {
×
4743
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoOffset, &pNode->offset);
×
4744
  }
4745
  if (TSDB_CODE_SUCCESS == code) {
×
4746
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoSliding, &pNode->sliding);
×
4747
  }
4748
  if (TSDB_CODE_SUCCESS == code) {
×
4749
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoDstTbUid, &pNode->dstTbUid);
×
4750
  }
4751
  if (TSDB_CODE_SUCCESS == code) {
×
4752
    code = tjsonGetIntValue(pJson, jkTableIndexInfoDstVgId, &pNode->dstVgId);
×
4753
  }
4754
  if (TSDB_CODE_SUCCESS == code) {
×
4755
    code = tjsonToObject(pJson, jkTableIndexInfoEpSet, jsonToEpSet, &pNode->epSet);
×
4756
  }
4757
  if (TSDB_CODE_SUCCESS == code) {
×
4758
    code = tjsonDupStringValue(pJson, jkTableIndexInfoExpr, &pNode->expr);
×
4759
  }
4760

4761
  return code;
×
4762
}
4763

4764
static const char* jkRealTableMetaSize = "MetaSize";
4765
static const char* jkRealTableMeta = "Meta";
4766
static const char* jkRealTableVgroupsInfoSize = "VgroupsInfoSize";
4767
static const char* jkRealTableVgroupsInfo = "VgroupsInfo";
4768
static const char* jkRealTableSmaIndexes = "SmaIndexes";
4769

4770
static int32_t realTableNodeToJson(const void* pObj, SJson* pJson) {
1,607✔
4771
  const SRealTableNode* pNode = (const SRealTableNode*)pObj;
1,607✔
4772

4773
  int32_t code = tableNodeToJson(pObj, pJson);
1,607✔
4774
  if (TSDB_CODE_SUCCESS == code) {
1,607!
4775
    code = tjsonAddIntegerToObject(pJson, jkRealTableMetaSize, TABLE_META_SIZE(pNode->pMeta));
1,607!
4776
  }
4777
  if (TSDB_CODE_SUCCESS == code) {
1,607!
4778
    code = tjsonAddObject(pJson, jkRealTableMeta, tableMetaToJson, pNode->pMeta);
1,607✔
4779
  }
4780
  if (TSDB_CODE_SUCCESS == code) {
1,607!
4781
    code = tjsonAddIntegerToObject(pJson, jkRealTableVgroupsInfoSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
1,607✔
4782
  }
4783
  if (TSDB_CODE_SUCCESS == code) {
1,607!
4784
    code = tjsonAddObject(pJson, jkRealTableVgroupsInfo, vgroupsInfoToJson, pNode->pVgroupList);
1,607✔
4785
  }
4786
  if (TSDB_CODE_SUCCESS == code) {
1,607!
4787
    code = tjsonAddTArray(pJson, jkRealTableSmaIndexes, tableIndexInfoToJson, pNode->pSmaIndexes);
1,607✔
4788
  }
4789

4790
  return code;
1,607✔
4791
}
4792

4793
static int32_t jsonToRealTableNode(const SJson* pJson, void* pObj) {
5,053✔
4794
  SRealTableNode* pNode = (SRealTableNode*)pObj;
5,053✔
4795

4796
  int32_t objSize = 0;
5,053✔
4797
  int32_t code = jsonToTableNode(pJson, pObj);
5,053✔
4798
  if (TSDB_CODE_SUCCESS == code) {
5,053!
4799
    code = tjsonGetIntValue(pJson, jkRealTableMetaSize, &objSize);
5,053✔
4800
  }
4801
  if (TSDB_CODE_SUCCESS == code) {
5,053!
4802
    code = tjsonMakeObject(pJson, jkRealTableMeta, jsonToTableMeta, (void**)&pNode->pMeta, objSize);
5,053✔
4803
  }
4804
  if (TSDB_CODE_SUCCESS == code) {
5,053!
4805
    code = tjsonGetIntValue(pJson, jkRealTableVgroupsInfoSize, &objSize);
5,053✔
4806
  }
4807
  if (TSDB_CODE_SUCCESS == code) {
5,053!
4808
    code = tjsonMakeObject(pJson, jkRealTableVgroupsInfo, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
5,053✔
4809
  }
4810
  if (TSDB_CODE_SUCCESS == code) {
5,053!
4811
    code =
4812
        tjsonToTArray(pJson, jkRealTableSmaIndexes, jsonToTableIndexInfo, &pNode->pSmaIndexes, sizeof(STableIndexInfo));
5,053✔
4813
  }
4814

4815
  return code;
5,053✔
4816
}
4817

4818
static const char* jkTempTableSubquery = "Subquery";
4819

4820
static int32_t tempTableNodeToJson(const void* pObj, SJson* pJson) {
1✔
4821
  const STempTableNode* pNode = (const STempTableNode*)pObj;
1✔
4822

4823
  int32_t code = tableNodeToJson(pObj, pJson);
1✔
4824
  if (TSDB_CODE_SUCCESS == code) {
1!
4825
    code = tjsonAddObject(pJson, jkTempTableSubquery, nodeToJson, pNode->pSubquery);
1✔
4826
  }
4827

4828
  return code;
1✔
4829
}
4830

4831
static int32_t jsonToTempTableNode(const SJson* pJson, void* pObj) {
×
4832
  STempTableNode* pNode = (STempTableNode*)pObj;
×
4833

4834
  int32_t code = jsonToTableNode(pJson, pObj);
×
4835
  if (TSDB_CODE_SUCCESS == code) {
×
4836
    code = jsonToNodeObject(pJson, jkTempTableSubquery, &pNode->pSubquery);
×
4837
  }
4838

4839
  return code;
×
4840
}
4841

4842
static const char* jkJoinTableJoinType = "JoinType";
4843
static const char* jkJoinTableSubType = "SubType";
4844
static const char* jkJoinTableLeft = "Left";
4845
static const char* jkJoinTableRight = "Right";
4846
static const char* jkJoinTableOnCond = "OnCond";
4847

4848
static int32_t joinTableNodeToJson(const void* pObj, SJson* pJson) {
×
4849
  const SJoinTableNode* pNode = (const SJoinTableNode*)pObj;
×
4850

4851
  int32_t code = tableNodeToJson(pObj, pJson);
×
4852
  if (TSDB_CODE_SUCCESS == code) {
×
4853
    code = tjsonAddIntegerToObject(pJson, jkJoinTableJoinType, pNode->joinType);
×
4854
  }
4855
  if (TSDB_CODE_SUCCESS == code) {
×
4856
    code = tjsonAddIntegerToObject(pJson, jkJoinTableSubType, pNode->subType);
×
4857
  }
4858
  if (TSDB_CODE_SUCCESS == code) {
×
4859
    code = tjsonAddObject(pJson, jkJoinTableLeft, nodeToJson, pNode->pLeft);
×
4860
  }
4861
  if (TSDB_CODE_SUCCESS == code) {
×
4862
    code = tjsonAddObject(pJson, jkJoinTableRight, nodeToJson, pNode->pRight);
×
4863
  }
4864
  if (TSDB_CODE_SUCCESS == code) {
×
4865
    code = tjsonAddObject(pJson, jkJoinTableOnCond, nodeToJson, pNode->pOnCond);
×
4866
  }
4867

4868
  return code;
×
4869
}
4870

4871
static int32_t jsonToJoinTableNode(const SJson* pJson, void* pObj) {
×
4872
  SJoinTableNode* pNode = (SJoinTableNode*)pObj;
×
4873

4874
  int32_t code = jsonToTableNode(pJson, pObj);
×
4875
  if (TSDB_CODE_SUCCESS == code) {
×
4876
    tjsonGetNumberValue(pJson, jkJoinTableJoinType, pNode->joinType, code);
×
4877
  }
4878
  if (TSDB_CODE_SUCCESS == code) {
×
4879
    tjsonGetNumberValue(pJson, jkJoinTableSubType, pNode->subType, code);
×
4880
  }
4881
  if (TSDB_CODE_SUCCESS == code) {
×
4882
    code = jsonToNodeObject(pJson, jkJoinTableLeft, &pNode->pLeft);
×
4883
  }
4884
  if (TSDB_CODE_SUCCESS == code) {
×
4885
    code = jsonToNodeObject(pJson, jkJoinTableRight, &pNode->pRight);
×
4886
  }
4887
  if (TSDB_CODE_SUCCESS == code) {
×
4888
    code = jsonToNodeObject(pJson, jkJoinTableOnCond, &pNode->pOnCond);
×
4889
  }
4890

4891
  return code;
×
4892
}
4893

4894
static const char* jkGroupingSetType = "GroupingSetType";
4895
static const char* jkGroupingSetParameter = "Parameters";
4896

4897
static int32_t groupingSetNodeToJson(const void* pObj, SJson* pJson) {
×
4898
  const SGroupingSetNode* pNode = (const SGroupingSetNode*)pObj;
×
4899

4900
  int32_t code = tjsonAddIntegerToObject(pJson, jkGroupingSetType, pNode->groupingSetType);
×
4901
  if (TSDB_CODE_SUCCESS == code) {
×
4902
    code = nodeListToJson(pJson, jkGroupingSetParameter, pNode->pParameterList);
×
4903
  }
4904

4905
  return code;
×
4906
}
4907

4908
static int32_t jsonToGroupingSetNode(const SJson* pJson, void* pObj) {
×
4909
  SGroupingSetNode* pNode = (SGroupingSetNode*)pObj;
×
4910

4911
  int32_t code = TSDB_CODE_SUCCESS;
×
4912
  tjsonGetNumberValue(pJson, jkGroupingSetType, pNode->groupingSetType, code);
×
4913
  if (TSDB_CODE_SUCCESS == code) {
×
4914
    code = jsonToNodeList(pJson, jkGroupingSetParameter, &pNode->pParameterList);
×
4915
  }
4916

4917
  return code;
×
4918
}
4919

4920
static const char* jkOrderByExprExpr = "Expr";
4921
static const char* jkOrderByExprOrder = "Order";
4922
static const char* jkOrderByExprNullOrder = "NullOrder";
4923

4924
static int32_t orderByExprNodeToJson(const void* pObj, SJson* pJson) {
×
4925
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
×
4926

4927
  int32_t code = tjsonAddObject(pJson, jkOrderByExprExpr, nodeToJson, pNode->pExpr);
×
4928
  if (TSDB_CODE_SUCCESS == code) {
×
4929
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprOrder, pNode->order);
×
4930
  }
4931
  if (TSDB_CODE_SUCCESS == code) {
×
4932
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprNullOrder, pNode->nullOrder);
×
4933
  }
4934

4935
  return code;
×
4936
}
4937

4938
static int32_t jsonToOrderByExprNode(const SJson* pJson, void* pObj) {
×
4939
  SOrderByExprNode* pNode = (SOrderByExprNode*)pObj;
×
4940

4941
  int32_t code = jsonToNodeObject(pJson, jkOrderByExprExpr, &pNode->pExpr);
×
4942
  if (TSDB_CODE_SUCCESS == code) {
×
4943
    tjsonGetNumberValue(pJson, jkOrderByExprOrder, pNode->order, code);
×
4944
  }
4945
  if (TSDB_CODE_SUCCESS == code) {
×
4946
    tjsonGetNumberValue(pJson, jkOrderByExprNullOrder, pNode->nullOrder, code);
×
4947
  }
4948

4949
  return code;
×
4950
}
4951

4952
static const char* jkLimitLimit = "Limit";
4953
static const char* jkLimitOffset = "Offset";
4954

4955
static int32_t limitNodeToJson(const void* pObj, SJson* pJson) {
×
4956
  const SLimitNode* pNode = (const SLimitNode*)pObj;
×
4957

4958
  int32_t code = tjsonAddObject(pJson, jkLimitLimit, nodeToJson, pNode->limit);
×
4959
  if (TSDB_CODE_SUCCESS == code && pNode->offset) {
×
4960
    code = tjsonAddObject(pJson, jkLimitOffset, nodeToJson, pNode->offset);
×
4961
  }
4962

4963
  return code;
×
4964
}
4965

4966
static int32_t jsonToLimitNode(const SJson* pJson, void* pObj) {
×
4967
  SLimitNode* pNode = (SLimitNode*)pObj;
×
4968

4969
  int32_t code = jsonToNodeObject(pJson, jkLimitLimit, (SNode**)&pNode->limit);
×
4970
  if (TSDB_CODE_SUCCESS == code) {
×
4971
    code = jsonToNodeObject(pJson, jkLimitOffset, (SNode**)&pNode->offset);
×
4972
  }
4973

4974
  return code;
×
4975
}
4976

4977
static const char* jkStateWindowCol = "StateWindowCol";
4978
static const char* jkStateWindowExpr = "StateWindowExpr";
4979
static const char* jkStateWindowTrueForLimit = "TrueForLimit";
4980

4981
static int32_t stateWindowNodeToJson(const void* pObj, SJson* pJson) {
69✔
4982
  const SStateWindowNode* pNode = (const SStateWindowNode*)pObj;
69✔
4983
  int32_t                 code = tjsonAddObject(pJson, jkStateWindowCol, nodeToJson, pNode->pCol);
69✔
4984
  if (TSDB_CODE_SUCCESS == code) {
69!
4985
    code = tjsonAddObject(pJson, jkStateWindowExpr, nodeToJson, pNode->pExpr);
69✔
4986
  }
4987
  if (TSDB_CODE_SUCCESS == code) {
69!
4988
    code = tjsonAddObject(pJson, jkStateWindowTrueForLimit, nodeToJson, pNode->pTrueForLimit);
69✔
4989
  }
4990
  return code;
69✔
4991
}
4992

4993
static int32_t jsonToStateWindowNode(const SJson* pJson, void* pObj) {
97✔
4994
  SStateWindowNode* pNode = (SStateWindowNode*)pObj;
97✔
4995

4996
  int32_t code = jsonToNodeObject(pJson, jkStateWindowCol, (SNode**)&pNode->pCol);
97✔
4997
  if (TSDB_CODE_SUCCESS == code) {
97!
4998
    code = jsonToNodeObject(pJson, jkStateWindowExpr, (SNode**)&pNode->pExpr);
97✔
4999
  }
5000
  if (TSDB_CODE_SUCCESS == code) {
97!
5001
    code = jsonToNodeObject(pJson, jkStateWindowTrueForLimit, (SNode**)&pNode->pTrueForLimit);
97✔
5002
  }
5003
  return code;
97✔
5004
}
5005

5006
static const char* jkSessionWindowTsPrimaryKey = "TsPrimaryKey";
5007
static const char* jkSessionWindowGap = "Gap";
5008

5009
static int32_t sessionWindowNodeToJson(const void* pObj, SJson* pJson) {
98✔
5010
  const SSessionWindowNode* pNode = (const SSessionWindowNode*)pObj;
98✔
5011

5012
  int32_t code = tjsonAddObject(pJson, jkSessionWindowTsPrimaryKey, nodeToJson, pNode->pCol);
98✔
5013
  if (TSDB_CODE_SUCCESS == code) {
98!
5014
    code = tjsonAddObject(pJson, jkSessionWindowGap, nodeToJson, pNode->pGap);
98✔
5015
  }
5016
  return code;
98✔
5017
}
5018

5019
static int32_t jsonToSessionWindowNode(const SJson* pJson, void* pObj) {
163✔
5020
  SSessionWindowNode* pNode = (SSessionWindowNode*)pObj;
163✔
5021

5022
  int32_t code = jsonToNodeObject(pJson, jkSessionWindowTsPrimaryKey, (SNode**)&pNode->pCol);
163✔
5023
  if (TSDB_CODE_SUCCESS == code) {
163!
5024
    code = jsonToNodeObject(pJson, jkSessionWindowGap, (SNode**)&pNode->pGap);
163✔
5025
  }
5026
  return code;
163✔
5027
}
5028

5029
static const char* jkEventWindowTsPrimaryKey = "TsPrimaryKey";
5030
static const char* jkEventWindowStartCond = "StartCond";
5031
static const char* jkEventWindowEndCond = "EndCond";
5032
static const char* jkEventWindowTrueForLimit = "TrueForLimit";
5033

5034
static int32_t eventWindowNodeToJson(const void* pObj, SJson* pJson) {
17✔
5035
  const SEventWindowNode* pNode = (const SEventWindowNode*)pObj;
17✔
5036

5037
  int32_t code = tjsonAddObject(pJson, jkEventWindowTsPrimaryKey, nodeToJson, pNode->pCol);
17✔
5038
  if (TSDB_CODE_SUCCESS == code) {
17!
5039
    code = tjsonAddObject(pJson, jkEventWindowStartCond, nodeToJson, pNode->pStartCond);
17✔
5040
  }
5041
  if (TSDB_CODE_SUCCESS == code) {
17!
5042
    code = tjsonAddObject(pJson, jkEventWindowEndCond, nodeToJson, pNode->pEndCond);
17✔
5043
  }
5044
  if (TSDB_CODE_SUCCESS == code) {
17!
5045
    code = tjsonAddObject(pJson, jkEventWindowTrueForLimit, nodeToJson, pNode->pTrueForLimit);
17✔
5046
  }
5047
  return code;
17✔
5048
}
5049

5050
static int32_t jsonToEventWindowNode(const SJson* pJson, void* pObj) {
23✔
5051
  SEventWindowNode* pNode = (SEventWindowNode*)pObj;
23✔
5052

5053
  int32_t code = jsonToNodeObject(pJson, jkEventWindowTsPrimaryKey, &pNode->pCol);
23✔
5054
  if (TSDB_CODE_SUCCESS == code) {
23!
5055
    code = jsonToNodeObject(pJson, jkEventWindowStartCond, &pNode->pStartCond);
23✔
5056
  }
5057
  if (TSDB_CODE_SUCCESS == code) {
23!
5058
    code = jsonToNodeObject(pJson, jkEventWindowEndCond, &pNode->pEndCond);
23✔
5059
  }
5060
  if (TSDB_CODE_SUCCESS == code) {
23!
5061
    code = jsonToNodeObject(pJson, jkEventWindowTrueForLimit, &pNode->pTrueForLimit);
23✔
5062
  }
5063
  return code;
23✔
5064
}
5065

5066
static const char* jkCountWindowTsPrimaryKey = "CountTsPrimaryKey";
5067
static const char* jkCountWindowCount = "CountWindowCount";
5068
static const char* jkCountWindowSliding = "CountWindowSliding";
5069

5070
static int32_t countWindowNodeToJson(const void* pObj, SJson* pJson) {
15✔
5071
  const SCountWindowNode* pNode = (const SCountWindowNode*)pObj;
15✔
5072

5073
  int32_t code = tjsonAddObject(pJson, jkCountWindowTsPrimaryKey, nodeToJson, pNode->pCol);
15✔
5074
  if (TSDB_CODE_SUCCESS == code) {
15!
5075
    code = tjsonAddIntegerToObject(pJson, jkCountWindowCount, pNode->windowCount);
15✔
5076
  }
5077
  if (TSDB_CODE_SUCCESS == code) {
15!
5078
    code = tjsonAddIntegerToObject(pJson, jkCountWindowSliding, pNode->windowSliding);
15✔
5079
  }
5080
  return code;
15✔
5081
}
5082

5083
static int32_t jsonToCountWindowNode(const SJson* pJson, void* pObj) {
15✔
5084
  SCountWindowNode* pNode = (SCountWindowNode*)pObj;
15✔
5085

5086
  int32_t code = jsonToNodeObject(pJson, jkCountWindowTsPrimaryKey, &pNode->pCol);
15✔
5087
  if (TSDB_CODE_SUCCESS == code) {
15!
5088
    code = tjsonGetBigIntValue(pJson, jkCountWindowCount, &pNode->windowCount);
15✔
5089
  }
5090
  if (TSDB_CODE_SUCCESS == code) {
15!
5091
    code = tjsonGetBigIntValue(pJson, jkCountWindowSliding, &pNode->windowSliding);
15✔
5092
  }
5093
  return code;
15✔
5094
}
5095

5096
static const char* jkAnomalyWindowTsPrimaryKey = "AnomalyTsPrimaryKey";
5097
static const char* jkAnomalyWindowExpr = "AnomalyWindowExpr";
5098
static const char* jkAnomalyWindowOption = "AnomalyWindowOpt";
5099

5100
static int32_t anomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
5101
  const SAnomalyWindowNode* pNode = (const SAnomalyWindowNode*)pObj;
×
5102

5103
  int32_t code = tjsonAddObject(pJson, jkAnomalyWindowTsPrimaryKey, nodeToJson, pNode->pCol);
×
5104
  if (TSDB_CODE_SUCCESS == code) {
×
5105
    code = tjsonAddObject(pJson, jkAnomalyWindowExpr, nodeToJson, pNode->pExpr);
×
5106
  }
5107
  if (TSDB_CODE_SUCCESS == code) {
×
5108
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowOption, pNode->anomalyOpt);
×
5109
  }
5110
  return code;
×
5111
}
5112

5113
static int32_t jsonToAnomalyWindowNode(const SJson* pJson, void* pObj) {
×
5114
  SAnomalyWindowNode* pNode = (SAnomalyWindowNode*)pObj;
×
5115

5116
  int32_t code = jsonToNodeObject(pJson, jkAnomalyWindowTsPrimaryKey, &pNode->pCol);
×
5117
  if (TSDB_CODE_SUCCESS == code) {
×
5118
    code = jsonToNodeObject(pJson, jkAnomalyWindowExpr, (SNode**)&pNode->pExpr);
×
5119
  }
5120
  if (TSDB_CODE_SUCCESS == code) {
×
5121
    code = tjsonGetStringValue(pJson, jkAnomalyWindowOption, pNode->anomalyOpt);
×
5122
  }
5123
  return code;
×
5124
}
5125

5126
static const char* jkIntervalWindowInterval = "Interval";
5127
static const char* jkIntervalWindowOffset = "Offset";
5128
static const char* jkIntervalWindowSliding = "Sliding";
5129
static const char* jkIntervalWindowFill = "Fill";
5130
static const char* jkIntervalWindowTsPk = "TsPk";
5131
static const char* jkIntervalStartTime = "StartTime";
5132
static const char* jkIntervalEndTime = "EndTime";
5133

5134
static int32_t intervalWindowNodeToJson(const void* pObj, SJson* pJson) {
729✔
5135
  const SIntervalWindowNode* pNode = (const SIntervalWindowNode*)pObj;
729✔
5136

5137
  int32_t code = tjsonAddObject(pJson, jkIntervalWindowInterval, nodeToJson, pNode->pInterval);
729✔
5138
  if (TSDB_CODE_SUCCESS == code) {
729!
5139
    code = tjsonAddObject(pJson, jkIntervalWindowOffset, nodeToJson, pNode->pOffset);
729✔
5140
  }
5141
  if (TSDB_CODE_SUCCESS == code) {
729!
5142
    code = tjsonAddObject(pJson, jkIntervalWindowSliding, nodeToJson, pNode->pSliding);
729✔
5143
  }
5144
  if (TSDB_CODE_SUCCESS == code) {
729!
5145
    code = tjsonAddObject(pJson, jkIntervalWindowFill, nodeToJson, pNode->pFill);
729✔
5146
  }
5147
  if (TSDB_CODE_SUCCESS == code) {
729!
5148
    code = tjsonAddObject(pJson, jkIntervalWindowTsPk, nodeToJson, pNode->pCol);
729✔
5149
  }
5150
  if (TSDB_CODE_SUCCESS == code) {
729!
5151
    code = tjsonAddIntegerToObject(pJson, jkIntervalStartTime, pNode->timeRange.skey);
729✔
5152
  }
5153
  if (TSDB_CODE_SUCCESS == code) {
729!
5154
    code = tjsonAddIntegerToObject(pJson, jkIntervalEndTime, pNode->timeRange.ekey);
729✔
5155
  }
5156

5157
  return code;
729✔
5158
}
5159

5160
static int32_t jsonToIntervalWindowNode(const SJson* pJson, void* pObj) {
2,892✔
5161
  SIntervalWindowNode* pNode = (SIntervalWindowNode*)pObj;
2,892✔
5162

5163
  int32_t code = jsonToNodeObject(pJson, jkIntervalWindowInterval, &pNode->pInterval);
2,892✔
5164
  if (TSDB_CODE_SUCCESS == code) {
2,892!
5165
    code = jsonToNodeObject(pJson, jkIntervalWindowOffset, &pNode->pOffset);
2,892✔
5166
  }
5167
  if (TSDB_CODE_SUCCESS == code) {
2,892!
5168
    code = jsonToNodeObject(pJson, jkIntervalWindowSliding, &pNode->pSliding);
2,892✔
5169
  }
5170
  if (TSDB_CODE_SUCCESS == code) {
2,892!
5171
    code = jsonToNodeObject(pJson, jkIntervalWindowFill, &pNode->pFill);
2,892✔
5172
  }
5173
  if (TSDB_CODE_SUCCESS == code) {
2,892!
5174
    code = jsonToNodeObject(pJson, jkIntervalWindowTsPk, &pNode->pCol);
2,892✔
5175
  }
5176
  if (TSDB_CODE_SUCCESS == code) {
2,892!
5177
    code = tjsonGetBigIntValue(pJson, jkIntervalStartTime, &pNode->timeRange.skey);
2,892✔
5178
  }
5179
  if (TSDB_CODE_SUCCESS == code) {
2,892!
5180
    code = tjsonGetBigIntValue(pJson, jkIntervalEndTime, &pNode->timeRange.ekey);
2,892✔
5181
  }
5182

5183
  return code;
2,892✔
5184
}
5185

5186
static const char* jkNodeListDataType = "DataType";
5187
static const char* jkNodeListNodeList = "NodeList";
5188

5189
static int32_t nodeListNodeToJson(const void* pObj, SJson* pJson) {
3,267✔
5190
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
3,267✔
5191

5192
  int32_t code = tjsonAddObject(pJson, jkNodeListDataType, dataTypeToJson, &pNode->node.resType);
3,267✔
5193
  if (TSDB_CODE_SUCCESS == code) {
3,267!
5194
    code = nodeListToJson(pJson, jkNodeListNodeList, pNode->pNodeList);
3,267✔
5195
  }
5196

5197
  return code;
3,267✔
5198
}
5199

5200
static int32_t jsonToNodeListNode(const SJson* pJson, void* pObj) {
2,783✔
5201
  SNodeListNode* pNode = (SNodeListNode*)pObj;
2,783✔
5202

5203
  int32_t code = tjsonToObject(pJson, jkNodeListDataType, jsonToDataType, &pNode->node.resType);
2,783✔
5204
  if (TSDB_CODE_SUCCESS == code) {
2,783!
5205
    code = jsonToNodeList(pJson, jkNodeListNodeList, &pNode->pNodeList);
2,783✔
5206
  }
5207

5208
  return code;
2,783✔
5209
}
5210

5211
static const char* jkFillMode = "Mode";
5212
static const char* jkFillValues = "Values";
5213
static const char* jkFillWStartTs = "WStartTs";
5214
static const char* jkFillStartTime = "StartTime";
5215
static const char* jkFillEndTime = "EndTime";
5216

5217
static int32_t fillNodeToJson(const void* pObj, SJson* pJson) {
243✔
5218
  const SFillNode* pNode = (const SFillNode*)pObj;
243✔
5219

5220
  int32_t code = tjsonAddIntegerToObject(pJson, jkFillMode, pNode->mode);
243✔
5221
  if (TSDB_CODE_SUCCESS == code) {
243!
5222
    code = tjsonAddObject(pJson, jkFillValues, nodeToJson, pNode->pValues);
243✔
5223
  }
5224
  if (TSDB_CODE_SUCCESS == code) {
243!
5225
    code = tjsonAddObject(pJson, jkFillWStartTs, nodeToJson, pNode->pWStartTs);
243✔
5226
  }
5227
  if (TSDB_CODE_SUCCESS == code) {
243!
5228
    code = tjsonAddIntegerToObject(pJson, jkFillStartTime, pNode->timeRange.skey);
243✔
5229
  }
5230
  if (TSDB_CODE_SUCCESS == code) {
243!
5231
    code = tjsonAddIntegerToObject(pJson, jkFillEndTime, pNode->timeRange.ekey);
243✔
5232
  }
5233

5234
  return code;
243✔
5235
}
5236

5237
static int32_t jsonToFillNode(const SJson* pJson, void* pObj) {
235✔
5238
  SFillNode* pNode = (SFillNode*)pObj;
235✔
5239

5240
  int32_t code;
5241
  tjsonGetNumberValue(pJson, jkFillMode, pNode->mode, code);
235✔
5242
  if (TSDB_CODE_SUCCESS == code) {
235!
5243
    code = jsonToNodeObject(pJson, jkFillValues, &pNode->pValues);
235✔
5244
  }
5245
  if (TSDB_CODE_SUCCESS == code) {
235!
5246
    code = jsonToNodeObject(pJson, jkFillWStartTs, &pNode->pWStartTs);
235✔
5247
  }
5248
  if (TSDB_CODE_SUCCESS == code) {
235!
5249
    code = tjsonGetBigIntValue(pJson, jkFillStartTime, &pNode->timeRange.skey);
235✔
5250
  }
5251
  if (TSDB_CODE_SUCCESS == code) {
235!
5252
    code = tjsonGetBigIntValue(pJson, jkFillEndTime, &pNode->timeRange.ekey);
235✔
5253
  }
5254

5255
  return code;
235✔
5256
}
5257

5258
static const char* jkTargetDataBlockId = "DataBlockId";
5259
static const char* jkTargetSlotId = "SlotId";
5260
static const char* jkTargetExpr = "Expr";
5261

5262
static int32_t targetNodeToJson(const void* pObj, SJson* pJson) {
623,146✔
5263
  const STargetNode* pNode = (const STargetNode*)pObj;
623,146✔
5264

5265
  int32_t code = tjsonAddIntegerToObject(pJson, jkTargetDataBlockId, pNode->dataBlockId);
623,146✔
5266
  if (TSDB_CODE_SUCCESS == code) {
623,146!
5267
    code = tjsonAddIntegerToObject(pJson, jkTargetSlotId, pNode->slotId);
623,146✔
5268
  }
5269
  if (TSDB_CODE_SUCCESS == code) {
623,142!
5270
    code = tjsonAddObject(pJson, jkTargetExpr, nodeToJson, pNode->pExpr);
623,142✔
5271
  }
5272

5273
  return code;
623,136✔
5274
}
5275

5276
static int32_t jsonToTargetNode(const SJson* pJson, void* pObj) {
616,097✔
5277
  STargetNode* pNode = (STargetNode*)pObj;
616,097✔
5278

5279
  int32_t code = tjsonGetSmallIntValue(pJson, jkTargetDataBlockId, &pNode->dataBlockId);
616,097✔
5280
  if (TSDB_CODE_SUCCESS == code) {
616,029!
5281
    code = tjsonGetSmallIntValue(pJson, jkTargetSlotId, &pNode->slotId);
616,029✔
5282
  }
5283
  if (TSDB_CODE_SUCCESS == code) {
616,030!
5284
    code = jsonToNodeObject(pJson, jkTargetExpr, &pNode->pExpr);
616,030✔
5285
  }
5286

5287
  return code;
616,101✔
5288
}
5289

5290
static const char* jkSlotDescSlotId = "SlotId";
5291
static const char* jkSlotDescDataType = "DataType";
5292
static const char* jkSlotDescReserve = "Reserve";
5293
static const char* jkSlotDescOutput = "Output";
5294
static const char* jkSlotDescName = "Name";
5295

5296
static int32_t slotDescNodeToJson(const void* pObj, SJson* pJson) {
641,679✔
5297
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
641,679✔
5298

5299
  int32_t code = tjsonAddIntegerToObject(pJson, jkSlotDescSlotId, pNode->slotId);
641,679✔
5300
  if (TSDB_CODE_SUCCESS == code) {
641,669!
5301
    code = tjsonAddObject(pJson, jkSlotDescDataType, dataTypeToJson, &pNode->dataType);
641,670✔
5302
  }
5303
  if (TSDB_CODE_SUCCESS == code) {
641,685!
5304
    code = tjsonAddBoolToObject(pJson, jkSlotDescReserve, pNode->reserve);
641,688✔
5305
  }
5306
  if (TSDB_CODE_SUCCESS == code) {
641,682!
5307
    code = tjsonAddBoolToObject(pJson, jkSlotDescOutput, pNode->output);
641,685✔
5308
  }
5309
  if (TSDB_CODE_SUCCESS == code) {
641,670!
5310
    code = tjsonAddStringToObject(pJson, jkSlotDescName, pNode->name);
641,672✔
5311
  }
5312

5313
  return code;
641,669✔
5314
}
5315

5316
static int32_t jsonToSlotDescNode(const SJson* pJson, void* pObj) {
615,606✔
5317
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
615,606✔
5318

5319
  int32_t code = tjsonGetSmallIntValue(pJson, jkSlotDescSlotId, &pNode->slotId);
615,606✔
5320
  if (TSDB_CODE_SUCCESS == code) {
615,403!
5321
    code = tjsonToObject(pJson, jkSlotDescDataType, jsonToDataType, &pNode->dataType);
615,403✔
5322
  }
5323
  if (TSDB_CODE_SUCCESS == code) {
615,243!
5324
    code = tjsonGetBoolValue(pJson, jkSlotDescReserve, &pNode->reserve);
615,244✔
5325
  }
5326
  if (TSDB_CODE_SUCCESS == code) {
615,461!
5327
    code = tjsonGetBoolValue(pJson, jkSlotDescOutput, &pNode->output);
615,462✔
5328
  }
5329
  if (TSDB_CODE_SUCCESS == code) {
615,377!
5330
    code = tjsonGetStringValue(pJson, jkSlotDescName, pNode->name);
615,378✔
5331
  }
5332

5333
  return code;
615,104✔
5334
}
5335

5336
static const char* jkColumnDefColName = "ColName";
5337
static const char* jkColumnDefDataType = "DataType";
5338
static const char* jkColumnDefComments = "Comments";
5339
static const char* jkColumnDefSma = "Sma";
5340
static const char* jkColumnDefOptions = "ColumnOptions";
5341

5342
static int32_t columnDefNodeToJson(const void* pObj, SJson* pJson) {
×
5343
  const SColumnDefNode* pNode = (const SColumnDefNode*)pObj;
×
5344

5345
  int32_t code = tjsonAddStringToObject(pJson, jkColumnDefColName, pNode->colName);
×
5346
  if (TSDB_CODE_SUCCESS == code) {
×
5347
    code = tjsonAddObject(pJson, jkColumnDefDataType, dataTypeToJson, &pNode->dataType);
×
5348
  }
5349
  if (TSDB_CODE_SUCCESS == code) {
×
5350
    code = tjsonAddBoolToObject(pJson, jkColumnDefSma, pNode->sma);
×
5351
  }
5352
  if (TSDB_CODE_SUCCESS == code) {
×
5353
    code = tjsonAddObject(pJson, jkColumnDefOptions, nodeToJson, pNode->pOptions);
×
5354
  }
5355

5356
  return code;
×
5357
}
5358

5359
static int32_t jsonToColumnDefNode(const SJson* pJson, void* pObj) {
×
5360
  SColumnDefNode* pNode = (SColumnDefNode*)pObj;
×
5361

5362
  int32_t code = tjsonGetStringValue(pJson, jkColumnDefColName, pNode->colName);
×
5363
  if (TSDB_CODE_SUCCESS == code) {
×
5364
    code = tjsonToObject(pJson, jkColumnDefDataType, jsonToDataType, &pNode->dataType);
×
5365
  }
5366
  if (TSDB_CODE_SUCCESS == code) {
×
5367
    code = tjsonGetBoolValue(pJson, jkColumnDefSma, &pNode->sma);
×
5368
  }
5369
  if (TSDB_CODE_SUCCESS == code) {
×
5370
    code = jsonToNodeObject(pJson, jkColumnDefOptions, (SNode**)&pNode->pOptions);
×
5371
  }
5372
  return code;
×
5373
}
5374

5375
static const char* jkDownstreamSourceAddr = "Addr";
5376
static const char* jkDownstreamSourceClientId = "ClientId";
5377
static const char* jkDownstreamSourceTaskId = "TaskId";
5378
static const char* jkDownstreamSourceSeriousId = "SeriousId";
5379
static const char* jkDownstreamSourceExecId = "ExecId";
5380
static const char* jkDownstreamSourceFetchMsgType = "FetchMsgType";
5381

5382
static int32_t downstreamSourceNodeToJson(const void* pObj, SJson* pJson) {
948✔
5383
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
948✔
5384

5385
  int32_t code = tjsonAddObject(pJson, jkDownstreamSourceAddr, queryNodeAddrToJson, &pNode->addr);
948✔
5386
  if (TSDB_CODE_SUCCESS == code) {
948!
5387
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceClientId, pNode->clientId);
948✔
5388
  }
5389
  if (TSDB_CODE_SUCCESS == code) {
948!
5390
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceTaskId, pNode->taskId);
948✔
5391
  }
5392
  if (TSDB_CODE_SUCCESS == code) {
948!
5393
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceSeriousId, pNode->sId);
948✔
5394
  }
5395
  if (TSDB_CODE_SUCCESS == code) {
948!
5396
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceExecId, pNode->execId);
948✔
5397
  }
5398
  if (TSDB_CODE_SUCCESS == code) {
948!
5399
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceFetchMsgType, pNode->fetchMsgType);
948✔
5400
  }
5401

5402
  return code;
948✔
5403
}
5404

5405
static int32_t jsonToDownstreamSourceNode(const SJson* pJson, void* pObj) {
×
5406
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
×
5407

5408
  int32_t code = tjsonToObject(pJson, jkDownstreamSourceAddr, jsonToQueryNodeAddr, &pNode->addr);
×
5409
  if (TSDB_CODE_SUCCESS == code) {
×
5410
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceClientId, &pNode->clientId);
×
5411
  }
5412
  if (TSDB_CODE_SUCCESS == code) {
×
5413
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceTaskId, &pNode->taskId);
×
5414
  }
5415
  if (TSDB_CODE_SUCCESS == code) {
×
5416
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceSeriousId, &pNode->sId);
×
5417
  }
5418
  if (TSDB_CODE_SUCCESS == code) {
×
5419
    code = tjsonGetIntValue(pJson, jkDownstreamSourceExecId, &pNode->execId);
×
5420
  }
5421
  if (TSDB_CODE_SUCCESS == code) {
×
5422
    code = tjsonGetIntValue(pJson, jkDownstreamSourceFetchMsgType, &pNode->fetchMsgType);
×
5423
  }
5424

5425
  return code;
×
5426
}
5427

5428
static const char* jkWindowOffsetStartOffset = "StartOffset";
5429
static const char* jkWindowOffsetEndOffset = "EndOffset";
5430
static int32_t     windowOffsetNodeToJson(const void* pObj, SJson* pJson) {
×
5431
  const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
×
5432

5433
  int32_t code = tjsonAddObject(pJson, jkWindowOffsetStartOffset, nodeToJson, pNode->pStartOffset);
×
5434
  if (TSDB_CODE_SUCCESS == code) {
×
5435
    code = tjsonAddObject(pJson, jkWindowOffsetEndOffset, nodeToJson, pNode->pEndOffset);
×
5436
  }
5437
  return code;
×
5438
}
5439

5440
static int32_t jsonToWindowOffsetNode(const SJson* pJson, void* pObj) {
×
5441
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
×
5442

5443
  int32_t code = jsonToNodeObject(pJson, jkWindowOffsetStartOffset, &pNode->pStartOffset);
×
5444
  if (TSDB_CODE_SUCCESS == code) {
×
5445
    code = jsonToNodeObject(pJson, jkWindowOffsetEndOffset, &pNode->pEndOffset);
×
5446
  }
5447
  return code;
×
5448
}
5449

5450
static const char* jkDatabaseOptionsBuffer = "Buffer";
5451
static const char* jkDatabaseOptionsCacheModel = "CacheModel";
5452
static const char* jkDatabaseOptionsCompressionLevel = "CompressionLevel";
5453
static const char* jkDatabaseOptionsDaysPerFileNode = "DaysPerFileNode";
5454
static const char* jkDatabaseOptionsDaysPerFile = "DaysPerFile";
5455
static const char* jkDatabaseOptionsFsyncPeriod = "FsyncPeriod";
5456
static const char* jkDatabaseOptionsMaxRowsPerBlock = "MaxRowsPerBlock";
5457
static const char* jkDatabaseOptionsMinRowsPerBlock = "MinRowsPerBlock";
5458
static const char* jkDatabaseOptionsKeep = "Keep";
5459
static const char* jkDatabaseOptionsPages = "Pages";
5460
static const char* jkDatabaseOptionsPagesize = "Pagesize";
5461
static const char* jkDatabaseOptionsPrecision = "Precision";
5462
static const char* jkDatabaseOptionsReplica = "Replica";
5463
static const char* jkDatabaseOptionsStrict = "Strict";
5464
static const char* jkDatabaseOptionsWalLevel = "WalLevel";
5465
static const char* jkDatabaseOptionsNumOfVgroups = "NumOfVgroups";
5466
static const char* jkDatabaseOptionsSingleStable = "SingleStable";
5467
static const char* jkDatabaseOptionsRetentions = "Retentions";
5468
static const char* jkDatabaseOptionsSchemaless = "Schemaless";
5469
static const char* jkDatabaseOptionsS3ChunkSize = "S3ChunkSize";
5470
static const char* jkDatabaseOptionsS3KeepLocalNode = "S3KeepLocalNode";
5471
static const char* jkDatabaseOptionsS3KeepLocal = "S3KeepLocal";
5472
static const char* jkDatabaseOptionsS3Compact = "S3Compact";
5473
static const char* jkDatabaseOptionsCompactIntervalNode = "compactIntervalNode";
5474
static const char* jkDatabaseOptionsCompactTimeRange = "compactTimeRange";
5475
static const char* jkDatabaseOptionsCompactTimeOffsetNode = "compactTimeOffsetNode";
5476

5477
static int32_t databaseOptionsToJson(const void* pObj, SJson* pJson) {
×
5478
  const SDatabaseOptions* pNode = (const SDatabaseOptions*)pObj;
×
5479

5480
  int32_t code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsBuffer, pNode->buffer);
×
5481
  if (TSDB_CODE_SUCCESS == code) {
×
5482
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCacheModel, pNode->cacheModel);
×
5483
  }
5484
  if (TSDB_CODE_SUCCESS == code) {
×
5485
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCompressionLevel, pNode->compressionLevel);
×
5486
  }
5487
  if (TSDB_CODE_SUCCESS == code) {
×
5488
    code = tjsonAddObject(pJson, jkDatabaseOptionsDaysPerFileNode, nodeToJson, pNode->pDaysPerFile);
×
5489
  }
5490
  if (TSDB_CODE_SUCCESS == code) {
×
5491
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsDaysPerFile, pNode->daysPerFile);
×
5492
  }
5493
  if (TSDB_CODE_SUCCESS == code) {
×
5494
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsFsyncPeriod, pNode->fsyncPeriod);
×
5495
  }
5496
  if (TSDB_CODE_SUCCESS == code) {
×
5497
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsMaxRowsPerBlock, pNode->maxRowsPerBlock);
×
5498
  }
5499
  if (TSDB_CODE_SUCCESS == code) {
×
5500
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsMinRowsPerBlock, pNode->minRowsPerBlock);
×
5501
  }
5502
  if (TSDB_CODE_SUCCESS == code) {
×
5503
    code = nodeListToJson(pJson, jkDatabaseOptionsKeep, pNode->pKeep);
×
5504
  }
5505
  if (TSDB_CODE_SUCCESS == code) {
×
5506
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsPages, pNode->pages);
×
5507
  }
5508
  if (TSDB_CODE_SUCCESS == code) {
×
5509
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsPagesize, pNode->pagesize);
×
5510
  }
5511
  if (TSDB_CODE_SUCCESS == code) {
×
5512
    code = tjsonAddStringToObject(pJson, jkDatabaseOptionsPrecision, pNode->precisionStr);
×
5513
  }
5514
  if (TSDB_CODE_SUCCESS == code) {
×
5515
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsReplica, pNode->replica);
×
5516
  }
5517
  if (TSDB_CODE_SUCCESS == code) {
×
5518
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsStrict, pNode->strict);
×
5519
  }
5520
  if (TSDB_CODE_SUCCESS == code) {
×
5521
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsWalLevel, pNode->walLevel);
×
5522
  }
5523
  if (TSDB_CODE_SUCCESS == code) {
×
5524
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsNumOfVgroups, pNode->numOfVgroups);
×
5525
  }
5526
  if (TSDB_CODE_SUCCESS == code) {
×
5527
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSingleStable, pNode->singleStable);
×
5528
  }
5529
  if (TSDB_CODE_SUCCESS == code) {
×
5530
    code = nodeListToJson(pJson, jkDatabaseOptionsRetentions, pNode->pRetentions);
×
5531
  }
5532
  if (TSDB_CODE_SUCCESS == code) {
×
5533
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSchemaless, pNode->schemaless);
×
5534
  }
5535
  if (TSDB_CODE_SUCCESS == code) {
×
5536
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsS3ChunkSize, pNode->s3ChunkSize);
×
5537
  }
5538
  if (TSDB_CODE_SUCCESS == code) {
×
5539
    code = tjsonAddObject(pJson, jkDatabaseOptionsS3KeepLocalNode, nodeToJson, pNode->s3KeepLocalStr);
×
5540
  }
5541
  if (TSDB_CODE_SUCCESS == code) {
×
5542
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsS3KeepLocal, pNode->s3KeepLocal);
×
5543
  }
5544
  if (TSDB_CODE_SUCCESS == code) {
×
5545
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsS3Compact, pNode->s3Compact);
×
5546
  }
5547
  if (TSDB_CODE_SUCCESS == code) {
×
5548
    code = tjsonAddObject(pJson, jkDatabaseOptionsCompactIntervalNode, nodeToJson, pNode->pCompactIntervalNode);
×
5549
  }
5550
  if (TSDB_CODE_SUCCESS == code) {
×
5551
    code = nodeListToJson(pJson, jkDatabaseOptionsCompactTimeRange, pNode->pCompactTimeRangeList);
×
5552
  }
5553
  if (TSDB_CODE_SUCCESS == code) {
×
5554
    code = tjsonAddObject(pJson, jkDatabaseOptionsCompactTimeOffsetNode, nodeToJson, pNode->pCompactTimeOffsetNode);
×
5555
  }
5556

5557
  return code;
×
5558
}
5559

5560
static int32_t jsonToDatabaseOptions(const SJson* pJson, void* pObj) {
×
5561
  SDatabaseOptions* pNode = (SDatabaseOptions*)pObj;
×
5562

5563
  int32_t code = tjsonGetIntValue(pJson, jkDatabaseOptionsBuffer, &pNode->buffer);
×
5564
  if (TSDB_CODE_SUCCESS == code) {
×
5565
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCacheModel, &pNode->cacheModel);
×
5566
  }
5567
  if (TSDB_CODE_SUCCESS == code) {
×
5568
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCompressionLevel, &pNode->compressionLevel);
×
5569
  }
5570
  if (TSDB_CODE_SUCCESS == code) {
×
5571
    code = jsonToNodeObject(pJson, jkDatabaseOptionsDaysPerFileNode, (SNode**)&pNode->pDaysPerFile);
×
5572
  }
5573
  if (TSDB_CODE_SUCCESS == code) {
×
5574
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsDaysPerFile, &pNode->daysPerFile);
×
5575
  }
5576
  if (TSDB_CODE_SUCCESS == code) {
×
5577
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsFsyncPeriod, &pNode->fsyncPeriod);
×
5578
  }
5579
  if (TSDB_CODE_SUCCESS == code) {
×
5580
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMaxRowsPerBlock, &pNode->maxRowsPerBlock);
×
5581
  }
5582
  if (TSDB_CODE_SUCCESS == code) {
×
5583
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMinRowsPerBlock, &pNode->minRowsPerBlock);
×
5584
  }
5585
  if (TSDB_CODE_SUCCESS == code) {
×
5586
    code = jsonToNodeList(pJson, jkDatabaseOptionsKeep, &pNode->pKeep);
×
5587
  }
5588
  if (TSDB_CODE_SUCCESS == code) {
×
5589
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPages, &pNode->pages);
×
5590
  }
5591
  if (TSDB_CODE_SUCCESS == code) {
×
5592
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPagesize, &pNode->pagesize);
×
5593
  }
5594
  if (TSDB_CODE_SUCCESS == code) {
×
5595
    code = tjsonGetStringValue(pJson, jkDatabaseOptionsPrecision, pNode->precisionStr);
×
5596
  }
5597
  if (TSDB_CODE_SUCCESS == code) {
×
5598
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsReplica, &pNode->replica);
×
5599
  }
5600
  if (TSDB_CODE_SUCCESS == code) {
×
5601
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsStrict, &pNode->strict);
×
5602
  }
5603
  if (TSDB_CODE_SUCCESS == code) {
×
5604
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsWalLevel, &pNode->walLevel);
×
5605
  }
5606
  if (TSDB_CODE_SUCCESS == code) {
×
5607
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsNumOfVgroups, &pNode->numOfVgroups);
×
5608
  }
5609
  if (TSDB_CODE_SUCCESS == code) {
×
5610
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSingleStable, &pNode->singleStable);
×
5611
  }
5612
  if (TSDB_CODE_SUCCESS == code) {
×
5613
    code = jsonToNodeList(pJson, jkDatabaseOptionsRetentions, &pNode->pRetentions);
×
5614
  }
5615
  if (TSDB_CODE_SUCCESS == code) {
×
5616
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSchemaless, &pNode->schemaless);
×
5617
  }
5618
  if (TSDB_CODE_SUCCESS == code) {
×
5619
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3ChunkSize, &pNode->s3ChunkSize);
×
5620
  }
5621
  if (TSDB_CODE_SUCCESS == code) {
×
5622
    code = jsonToNodeObject(pJson, jkDatabaseOptionsS3KeepLocalNode, (SNode**)&pNode->s3KeepLocalStr);
×
5623
  }
5624
  if (TSDB_CODE_SUCCESS == code) {
×
5625
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3KeepLocal, &pNode->s3KeepLocal);
×
5626
  }
5627
  if (TSDB_CODE_SUCCESS == code) {
×
5628
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsS3Compact, &pNode->s3Compact);
×
5629
  }
5630
  if (TSDB_CODE_SUCCESS == code) {
×
5631
    code = jsonToNodeObject(pJson, jkDatabaseOptionsCompactIntervalNode, (SNode**)&pNode->pCompactIntervalNode);
×
5632
  }
5633
  if (TSDB_CODE_SUCCESS == code) {
×
5634
    code = jsonToNodeList(pJson, jkDatabaseOptionsCompactTimeRange, &pNode->pCompactTimeRangeList);
×
5635
  }
5636
  if (TSDB_CODE_SUCCESS == code) {
×
5637
    code = jsonToNodeObject(pJson, jkDatabaseOptionsCompactTimeOffsetNode, (SNode**)&pNode->pCompactTimeOffsetNode);
×
5638
  }
5639

5640
  return code;
×
5641
}
5642

5643
static const char* jkTableOptionsComment = "Comment";
5644
static const char* jkTableOptionsMaxDelay = "MaxDelay";
5645
static const char* jkTableOptionsWatermark = "Watermark";
5646
static const char* jkTableOptionsDeleteMark = "DeleteMark";
5647
static const char* jkTableOptionsRollupFuncs = "RollupFuncs";
5648
static const char* jkTableOptionsTtl = "Ttl";
5649
static const char* jkTableOptionsSma = "Sma";
5650

5651
static int32_t tableOptionsToJson(const void* pObj, SJson* pJson) {
×
5652
  const STableOptions* pNode = (const STableOptions*)pObj;
×
5653

5654
  int32_t code = tjsonAddStringToObject(pJson, jkTableOptionsComment, pNode->comment);
×
5655
  if (TSDB_CODE_SUCCESS == code) {
×
5656
    code = nodeListToJson(pJson, jkTableOptionsMaxDelay, pNode->pMaxDelay);
×
5657
  }
5658
  if (TSDB_CODE_SUCCESS == code) {
×
5659
    code = nodeListToJson(pJson, jkTableOptionsWatermark, pNode->pWatermark);
×
5660
  }
5661
  if (TSDB_CODE_SUCCESS == code) {
×
5662
    code = nodeListToJson(pJson, jkTableOptionsDeleteMark, pNode->pDeleteMark);
×
5663
  }
5664
  if (TSDB_CODE_SUCCESS == code) {
×
5665
    code = nodeListToJson(pJson, jkTableOptionsRollupFuncs, pNode->pRollupFuncs);
×
5666
  }
5667
  if (TSDB_CODE_SUCCESS == code) {
×
5668
    code = tjsonAddIntegerToObject(pJson, jkTableOptionsTtl, pNode->ttl);
×
5669
  }
5670
  if (TSDB_CODE_SUCCESS == code) {
×
5671
    code = nodeListToJson(pJson, jkTableOptionsSma, pNode->pSma);
×
5672
  }
5673

5674
  return code;
×
5675
}
5676

5677
static int32_t jsonToTableOptions(const SJson* pJson, void* pObj) {
×
5678
  STableOptions* pNode = (STableOptions*)pObj;
×
5679

5680
  int32_t code = tjsonGetStringValue(pJson, jkTableOptionsComment, pNode->comment);
×
5681
  if (TSDB_CODE_SUCCESS == code) {
×
5682
    code = jsonToNodeList(pJson, jkTableOptionsMaxDelay, &pNode->pMaxDelay);
×
5683
  }
5684
  if (TSDB_CODE_SUCCESS == code) {
×
5685
    code = jsonToNodeList(pJson, jkTableOptionsWatermark, &pNode->pWatermark);
×
5686
  }
5687
  if (TSDB_CODE_SUCCESS == code) {
×
5688
    code = jsonToNodeList(pJson, jkTableOptionsDeleteMark, &pNode->pDeleteMark);
×
5689
  }
5690
  if (TSDB_CODE_SUCCESS == code) {
×
5691
    code = jsonToNodeList(pJson, jkTableOptionsRollupFuncs, &pNode->pRollupFuncs);
×
5692
  }
5693
  if (TSDB_CODE_SUCCESS == code) {
×
5694
    code = tjsonGetIntValue(pJson, jkTableOptionsTtl, &pNode->ttl);
×
5695
  }
5696
  if (TSDB_CODE_SUCCESS == code) {
×
5697
    code = jsonToNodeList(pJson, jkTableOptionsSma, &pNode->pSma);
×
5698
  }
5699

5700
  return code;
×
5701
}
5702

5703
static const char* jkColumnOptionsEncode = "encode";
5704
static const char* jkColumnOptionsCompress = "compress";
5705
static const char* jkColumnOptionsLevel = "level";
5706
static int32_t     columnOptionsToJson(const void* pObj, SJson* pJson) {
×
5707
  const SColumnOptions* pNode = (const SColumnOptions*)pObj;
×
5708
  int32_t               code = tjsonAddStringToObject(pJson, jkColumnOptionsEncode, pNode->encode);
×
5709
  code = tjsonAddStringToObject(pJson, jkColumnOptionsCompress, pNode->compress);
×
5710
  code = tjsonAddStringToObject(pJson, jkColumnOptionsLevel, pNode->compressLevel);
×
5711
  return code;
×
5712
}
5713

5714
static int32_t jsonToColumnOptions(const SJson* pJson, void* pObj) {
×
5715
  SColumnOptions* pNode = (SColumnOptions*)pObj;
×
5716

5717
  int32_t code = tjsonGetStringValue(pJson, jkColumnOptionsEncode, pNode->encode);
×
5718
  code = tjsonGetStringValue(pJson, jkColumnOptionsCompress, pNode->compress);
×
5719
  code = tjsonGetStringValue(pJson, jkColumnOptionsLevel, pNode->compressLevel);
×
5720
  return code;
×
5721
}
5722

5723
static const char* jkIndexOptionsFuncs = "Funcs";
5724
static const char* jkIndexOptionsInterval = "Interval";
5725
static const char* jkIndexOptionsOffset = "Offset";
5726
static const char* jkIndexOptionsSliding = "Sliding";
5727
static const char* jkIndexOptionsStreamOptions = "StreamOptions";
5728

5729
static int32_t indexOptionsToJson(const void* pObj, SJson* pJson) {
×
5730
  const SIndexOptions* pNode = (const SIndexOptions*)pObj;
×
5731

5732
  int32_t code = nodeListToJson(pJson, jkIndexOptionsFuncs, pNode->pFuncs);
×
5733
  if (TSDB_CODE_SUCCESS == code) {
×
5734
    code = tjsonAddObject(pJson, jkIndexOptionsInterval, nodeToJson, pNode->pInterval);
×
5735
  }
5736
  if (TSDB_CODE_SUCCESS == code) {
×
5737
    code = tjsonAddObject(pJson, jkIndexOptionsOffset, nodeToJson, pNode->pOffset);
×
5738
  }
5739
  if (TSDB_CODE_SUCCESS == code) {
×
5740
    code = tjsonAddObject(pJson, jkIndexOptionsSliding, nodeToJson, pNode->pSliding);
×
5741
  }
5742
  if (TSDB_CODE_SUCCESS == code) {
×
5743
    code = tjsonAddObject(pJson, jkIndexOptionsStreamOptions, nodeToJson, pNode->pStreamOptions);
×
5744
  }
5745

5746
  return code;
×
5747
}
5748

5749
static int32_t jsonToIndexOptions(const SJson* pJson, void* pObj) {
×
5750
  SIndexOptions* pNode = (SIndexOptions*)pObj;
×
5751

5752
  int32_t code = jsonToNodeList(pJson, jkIndexOptionsFuncs, &pNode->pFuncs);
×
5753
  if (TSDB_CODE_SUCCESS == code) {
×
5754
    code = jsonToNodeObject(pJson, jkIndexOptionsInterval, &pNode->pInterval);
×
5755
  }
5756
  if (TSDB_CODE_SUCCESS == code) {
×
5757
    code = jsonToNodeObject(pJson, jkIndexOptionsOffset, &pNode->pOffset);
×
5758
  }
5759
  if (TSDB_CODE_SUCCESS == code) {
×
5760
    code = jsonToNodeObject(pJson, jkIndexOptionsSliding, &pNode->pSliding);
×
5761
  }
5762
  if (TSDB_CODE_SUCCESS == code) {
×
5763
    code = jsonToNodeObject(pJson, jkIndexOptionsStreamOptions, &pNode->pStreamOptions);
×
5764
  }
5765

5766
  return code;
×
5767
}
5768

5769
static const char* jkExplainOptionsVerbose = "Verbose";
5770
static const char* jkExplainOptionsRatio = "Ratio";
5771

5772
static int32_t explainOptionsToJson(const void* pObj, SJson* pJson) {
×
5773
  const SExplainOptions* pNode = (const SExplainOptions*)pObj;
×
5774

5775
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainOptionsVerbose, pNode->verbose);
×
5776
  if (TSDB_CODE_SUCCESS == code) {
×
5777
    code = tjsonAddDoubleToObject(pJson, jkExplainOptionsRatio, pNode->ratio);
×
5778
  }
5779

5780
  return code;
×
5781
}
5782

5783
static int32_t jsonToExplainOptions(const SJson* pJson, void* pObj) {
×
5784
  SExplainOptions* pNode = (SExplainOptions*)pObj;
×
5785

5786
  int32_t code = tjsonGetBoolValue(pJson, jkExplainOptionsVerbose, &pNode->verbose);
×
5787
  if (TSDB_CODE_SUCCESS == code) {
×
5788
    code = tjsonGetDoubleValue(pJson, jkExplainOptionsRatio, &pNode->ratio);
×
5789
  }
5790

5791
  return code;
×
5792
}
5793

5794
static const char* jkStreamOptionsTriggerType = "TriggerType";
5795
static const char* jkStreamOptionsDelay = "Delay";
5796
static const char* jkStreamOptionsWatermark = "Watermark";
5797
static const char* jkStreamOptionsDeleteMark = "DeleteMark";
5798
static const char* jkStreamOptionsFillHistory = "FillHistory";
5799
static const char* jkStreamOptionsIgnoreExpired = "IgnoreExpired";
5800

5801
static int32_t streamOptionsToJson(const void* pObj, SJson* pJson) {
×
5802
  const SStreamOptions* pNode = (const SStreamOptions*)pObj;
×
5803

5804
  int32_t code = tjsonAddIntegerToObject(pJson, jkStreamOptionsTriggerType, pNode->triggerType);
×
5805
  if (TSDB_CODE_SUCCESS == code) {
×
5806
    code = tjsonAddObject(pJson, jkStreamOptionsDelay, nodeToJson, pNode->pDelay);
×
5807
  }
5808
  if (TSDB_CODE_SUCCESS == code) {
×
5809
    code = tjsonAddObject(pJson, jkStreamOptionsWatermark, nodeToJson, pNode->pWatermark);
×
5810
  }
5811
  if (TSDB_CODE_SUCCESS == code) {
×
5812
    code = tjsonAddObject(pJson, jkStreamOptionsDeleteMark, nodeToJson, pNode->pDeleteMark);
×
5813
  }
5814
  if (TSDB_CODE_SUCCESS == code) {
×
5815
    code = tjsonAddIntegerToObject(pJson, jkStreamOptionsFillHistory, pNode->fillHistory);
×
5816
  }
5817
  if (TSDB_CODE_SUCCESS == code) {
×
5818
    code = tjsonAddIntegerToObject(pJson, jkStreamOptionsIgnoreExpired, pNode->ignoreExpired);
×
5819
  }
5820

5821
  return code;
×
5822
}
5823

5824
static int32_t jsonToStreamOptions(const SJson* pJson, void* pObj) {
×
5825
  SStreamOptions* pNode = (SStreamOptions*)pObj;
×
5826

5827
  int32_t code = tjsonGetTinyIntValue(pJson, jkStreamOptionsTriggerType, &pNode->triggerType);
×
5828
  if (TSDB_CODE_SUCCESS == code) {
×
5829
    code = jsonToNodeObject(pJson, jkStreamOptionsDelay, &pNode->pDelay);
×
5830
  }
5831
  if (TSDB_CODE_SUCCESS == code) {
×
5832
    code = jsonToNodeObject(pJson, jkStreamOptionsWatermark, &pNode->pWatermark);
×
5833
  }
5834
  if (TSDB_CODE_SUCCESS == code) {
×
5835
    code = jsonToNodeObject(pJson, jkStreamOptionsDeleteMark, &pNode->pDeleteMark);
×
5836
  }
5837
  if (TSDB_CODE_SUCCESS == code) {
×
5838
    code = tjsonGetTinyIntValue(pJson, jkStreamOptionsFillHistory, &pNode->fillHistory);
×
5839
  }
5840
  if (TSDB_CODE_SUCCESS == code) {
×
5841
    code = tjsonGetTinyIntValue(pJson, jkStreamOptionsIgnoreExpired, &pNode->ignoreExpired);
×
5842
  }
5843

5844
  return code;
×
5845
}
5846

5847
static const char* jkStreamNotifyOptionsAddrUrls = "AddrUrls";
5848
static const char* jkStreamNotifyOptionsEventType = "EventType";
5849
static const char* jkStreamNotifyOptionsErrorHandle = "ErrorHandle";
5850
static const char* jkStreamNotifyOptionsNotifyHistory = "NotifyHistory";
5851

5852
static int32_t streamNotifyOptionsToJson(const void* pObj, SJson* pJson) {
×
5853
  const SStreamNotifyOptions* pNotifyOption = (const SStreamNotifyOptions*)pObj;
×
5854
  int32_t                     code = nodeListToJson(pJson, jkStreamNotifyOptionsAddrUrls, pNotifyOption->pAddrUrls);
×
5855
  if (code == TSDB_CODE_SUCCESS) {
×
5856
    code = tjsonAddIntegerToObject(pJson, jkStreamNotifyOptionsEventType, pNotifyOption->eventTypes);
×
5857
  }
5858
  if (code == TSDB_CODE_SUCCESS) {
×
5859
    code = tjsonAddIntegerToObject(pJson, jkStreamNotifyOptionsErrorHandle, pNotifyOption->errorHandle);
×
5860
  }
5861
  if (code == TSDB_CODE_SUCCESS) {
×
5862
    code = tjsonAddBoolToObject(pJson, jkStreamNotifyOptionsNotifyHistory, pNotifyOption->notifyHistory);
×
5863
  }
5864

5865
  return code;
×
5866
}
5867

5868
static int32_t jsonToStreamNotifyOptions(const SJson* pJson, void* pObj) {
×
5869
  SStreamNotifyOptions* pNotifyOption = (SStreamNotifyOptions*)pObj;
×
5870
  int32_t               code = jsonToNodeList(pJson, jkStreamNotifyOptionsAddrUrls, &pNotifyOption->pAddrUrls);
×
5871
  int32_t               val = 0;
×
5872
  if (code == TSDB_CODE_SUCCESS) {
×
5873
    code = tjsonGetIntValue(pJson, jkStreamNotifyOptionsEventType, &val);
×
5874
    pNotifyOption->eventTypes = val;
×
5875
  }
5876
  if (code == TSDB_CODE_SUCCESS) {
×
5877
    code = tjsonGetIntValue(pJson, jkStreamNotifyOptionsErrorHandle, &val);
×
5878
    pNotifyOption->errorHandle = val;
×
5879
  }
5880
  if (code == TSDB_CODE_SUCCESS) {
×
5881
    code = tjsonGetBoolValue(pJson, jkStreamNotifyOptionsNotifyHistory, &pNotifyOption->notifyHistory);
×
5882
  }
5883
  return code;
×
5884
}
5885

5886
static const char* jkWhenThenWhen = "When";
5887
static const char* jkWhenThenThen = "Then";
5888

5889
static int32_t whenThenNodeToJson(const void* pObj, SJson* pJson) {
45✔
5890
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
45✔
5891

5892
  int32_t code = exprNodeToJson(pObj, pJson);
45✔
5893
  if (TSDB_CODE_SUCCESS == code) {
45!
5894
    code = tjsonAddObject(pJson, jkWhenThenWhen, nodeToJson, pNode->pWhen);
45✔
5895
  }
5896
  if (TSDB_CODE_SUCCESS == code) {
45!
5897
    code = tjsonAddObject(pJson, jkWhenThenThen, nodeToJson, pNode->pThen);
45✔
5898
  }
5899

5900
  return code;
45✔
5901
}
5902

5903
static int32_t jsonToWhenThenNode(const SJson* pJson, void* pObj) {
45✔
5904
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
45✔
5905

5906
  int32_t code = jsonToExprNode(pJson, pObj);
45✔
5907
  if (TSDB_CODE_SUCCESS == code) {
45!
5908
    code = jsonToNodeObject(pJson, jkWhenThenWhen, &pNode->pWhen);
45✔
5909
  }
5910
  if (TSDB_CODE_SUCCESS == code) {
45!
5911
    code = jsonToNodeObject(pJson, jkWhenThenThen, &pNode->pThen);
45✔
5912
  }
5913

5914
  return code;
45✔
5915
}
5916

5917
static const char* jkCaseWhenCase = "Case";
5918
static const char* jkCaseWhenWhenThenList = "WhenThenList";
5919
static const char* jkCaseWhenElse = "Else";
5920

5921
static int32_t caseWhenNodeToJson(const void* pObj, SJson* pJson) {
45✔
5922
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
45✔
5923

5924
  int32_t code = exprNodeToJson(pObj, pJson);
45✔
5925
  if (TSDB_CODE_SUCCESS == code) {
45!
5926
    code = tjsonAddObject(pJson, jkCaseWhenCase, nodeToJson, pNode->pCase);
45✔
5927
  }
5928
  if (TSDB_CODE_SUCCESS == code) {
45!
5929
    code = nodeListToJson(pJson, jkCaseWhenWhenThenList, pNode->pWhenThenList);
45✔
5930
  }
5931
  if (TSDB_CODE_SUCCESS == code) {
45!
5932
    code = tjsonAddObject(pJson, jkCaseWhenElse, nodeToJson, pNode->pElse);
45✔
5933
  }
5934

5935
  return code;
45✔
5936
}
5937

5938
static int32_t jsonToCaseWhenNode(const SJson* pJson, void* pObj) {
45✔
5939
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
45✔
5940

5941
  int32_t code = jsonToExprNode(pJson, pObj);
45✔
5942
  if (TSDB_CODE_SUCCESS == code) {
45!
5943
    code = jsonToNodeObject(pJson, jkCaseWhenCase, &pNode->pCase);
45✔
5944
  }
5945
  if (TSDB_CODE_SUCCESS == code) {
45!
5946
    code = jsonToNodeList(pJson, jkCaseWhenWhenThenList, &pNode->pWhenThenList);
45✔
5947
  }
5948
  if (TSDB_CODE_SUCCESS == code) {
45!
5949
    code = jsonToNodeObject(pJson, jkCaseWhenElse, &pNode->pElse);
45✔
5950
  }
5951

5952
  return code;
45✔
5953
}
5954

5955
static const char* jkDataBlockDescDataBlockId = "DataBlockId";
5956
static const char* jkDataBlockDescSlots = "Slots";
5957
static const char* jkDataBlockTotalRowSize = "TotalRowSize";
5958
static const char* jkDataBlockOutputRowSize = "OutputRowSize";
5959
static const char* jkDataBlockPrecision = "Precision";
5960

5961
static int32_t dataBlockDescNodeToJson(const void* pObj, SJson* pJson) {
28,977✔
5962
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
28,977✔
5963

5964
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataBlockDescDataBlockId, pNode->dataBlockId);
28,977✔
5965
  if (TSDB_CODE_SUCCESS == code) {
28,984!
5966
    code = tjsonAddIntegerToObject(pJson, jkDataBlockTotalRowSize, pNode->totalRowSize);
28,984✔
5967
  }
5968
  if (TSDB_CODE_SUCCESS == code) {
28,984!
5969
    code = tjsonAddIntegerToObject(pJson, jkDataBlockOutputRowSize, pNode->outputRowSize);
28,984✔
5970
  }
5971
  if (TSDB_CODE_SUCCESS == code) {
28,981!
5972
    code = nodeListToJson(pJson, jkDataBlockDescSlots, pNode->pSlots);
28,981✔
5973
  }
5974
  if (TSDB_CODE_SUCCESS == code) {
28,983!
5975
    code = tjsonAddIntegerToObject(pJson, jkDataBlockPrecision, pNode->precision);
28,983✔
5976
  }
5977

5978
  return code;
28,985✔
5979
}
5980

5981
static int32_t jsonToDataBlockDescNode(const SJson* pJson, void* pObj) {
23,668✔
5982
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
23,668✔
5983

5984
  int32_t code = tjsonGetSmallIntValue(pJson, jkDataBlockDescDataBlockId, &pNode->dataBlockId);
23,668✔
5985
  if (TSDB_CODE_SUCCESS == code) {
23,672!
5986
    code = tjsonGetIntValue(pJson, jkDataBlockTotalRowSize, &pNode->totalRowSize);
23,672✔
5987
  }
5988
  if (TSDB_CODE_SUCCESS == code) {
23,670!
5989
    code = tjsonGetIntValue(pJson, jkDataBlockOutputRowSize, &pNode->outputRowSize);
23,670✔
5990
  }
5991
  if (TSDB_CODE_SUCCESS == code) {
23,671!
5992
    code = jsonToNodeList(pJson, jkDataBlockDescSlots, &pNode->pSlots);
23,671✔
5993
  }
5994
  if (TSDB_CODE_SUCCESS == code) {
23,671!
5995
    code = tjsonGetUTinyIntValue(pJson, jkDataBlockPrecision, &pNode->precision);
23,671✔
5996
  }
5997

5998
  return code;
23,672✔
5999
}
6000

6001
static const char* jkSetOperatorOpType = "OpType";
6002
static const char* jkSetOperatorProjections = "Projections";
6003
static const char* jkSetOperatorLeft = "Left";
6004
static const char* jkSetOperatorRight = "Right";
6005
static const char* jkSetOperatorOrderByList = "OrderByList";
6006
static const char* jkSetOperatorLimit = "Limit";
6007

6008
static int32_t setOperatorToJson(const void* pObj, SJson* pJson) {
×
6009
  const SSetOperator* pNode = (const SSetOperator*)pObj;
×
6010

6011
  int32_t code = tjsonAddIntegerToObject(pJson, jkSetOperatorOpType, pNode->opType);
×
6012
  if (TSDB_CODE_SUCCESS == code) {
×
6013
    code = nodeListToJson(pJson, jkSetOperatorProjections, pNode->pProjectionList);
×
6014
  }
6015
  if (TSDB_CODE_SUCCESS == code) {
×
6016
    code = tjsonAddObject(pJson, jkSetOperatorLeft, nodeToJson, pNode->pLeft);
×
6017
  }
6018
  if (TSDB_CODE_SUCCESS == code) {
×
6019
    code = tjsonAddObject(pJson, jkSetOperatorRight, nodeToJson, pNode->pRight);
×
6020
  }
6021
  if (TSDB_CODE_SUCCESS == code) {
×
6022
    code = nodeListToJson(pJson, jkSetOperatorOrderByList, pNode->pOrderByList);
×
6023
  }
6024
  if (TSDB_CODE_SUCCESS == code) {
×
6025
    code = tjsonAddObject(pJson, jkSetOperatorLimit, nodeToJson, pNode->pLimit);
×
6026
  }
6027

6028
  return code;
×
6029
}
6030

6031
static int32_t jsonToSetOperator(const SJson* pJson, void* pObj) {
×
6032
  SSetOperator* pNode = (SSetOperator*)pObj;
×
6033

6034
  int32_t code = TSDB_CODE_SUCCESS;
×
6035
  tjsonGetNumberValue(pJson, jkSetOperatorOpType, pNode->opType, code);
×
6036
  if (TSDB_CODE_SUCCESS == code) {
×
6037
    code = jsonToNodeList(pJson, jkSetOperatorProjections, &pNode->pProjectionList);
×
6038
  }
6039
  if (TSDB_CODE_SUCCESS == code) {
×
6040
    code = jsonToNodeObject(pJson, jkSetOperatorLeft, &pNode->pLeft);
×
6041
  }
6042
  if (TSDB_CODE_SUCCESS == code) {
×
6043
    code = jsonToNodeObject(pJson, jkSetOperatorRight, &pNode->pRight);
×
6044
  }
6045
  if (TSDB_CODE_SUCCESS == code) {
×
6046
    code = jsonToNodeList(pJson, jkSetOperatorOrderByList, &pNode->pOrderByList);
×
6047
  }
6048
  if (TSDB_CODE_SUCCESS == code) {
×
6049
    code = jsonToNodeObject(pJson, jkSetOperatorLimit, &pNode->pLimit);
×
6050
  }
6051

6052
  return code;
×
6053
}
6054

6055
static const char* jkSelectStmtDistinct = "Distinct";
6056
static const char* jkSelectStmtProjections = "Projections";
6057
static const char* jkSelectStmtFrom = "From";
6058
static const char* jkSelectStmtWhere = "Where";
6059
static const char* jkSelectStmtPartitionBy = "PartitionBy";
6060
static const char* jkSelectStmtTags = "Tags";
6061
static const char* jkSelectStmtSubtable = "Subtable";
6062
static const char* jkSelectStmtWindow = "Window";
6063
static const char* jkSelectStmtGroupBy = "GroupBy";
6064
static const char* jkSelectStmtHaving = "Having";
6065
static const char* jkSelectStmtOrderBy = "OrderBy";
6066
static const char* jkSelectStmtLimit = "Limit";
6067
static const char* jkSelectStmtSlimit = "Slimit";
6068
static const char* jkSelectStmtStmtName = "StmtName";
6069
static const char* jkSelectStmtHasAggFuncs = "HasAggFuncs";
6070
static const char* jkSelectStmtInterpFuncs = "HasInterpFuncs";
6071
static const char* jkSelectStmtInterpFill = "InterpFill";
6072
static const char* jkSelectStmtInterpEvery = "InterpEvery";
6073
static const char* jkSelectStmtTwaOrElapsedFuncs = "HasTwaOrElapsedFuncs";
6074

6075
static int32_t selectStmtToJson(const void* pObj, SJson* pJson) {
1,608✔
6076
  const SSelectStmt* pNode = (const SSelectStmt*)pObj;
1,608✔
6077

6078
  int32_t code = tjsonAddBoolToObject(pJson, jkSelectStmtDistinct, pNode->isDistinct);
1,608✔
6079
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6080
    code = nodeListToJson(pJson, jkSelectStmtProjections, pNode->pProjectionList);
1,608✔
6081
  }
6082
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6083
    code = tjsonAddObject(pJson, jkSelectStmtFrom, nodeToJson, pNode->pFromTable);
1,608✔
6084
  }
6085
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6086
    code = tjsonAddObject(pJson, jkSelectStmtWhere, nodeToJson, pNode->pWhere);
1,608✔
6087
  }
6088
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6089
    code = nodeListToJson(pJson, jkSelectStmtPartitionBy, pNode->pPartitionByList);
1,608✔
6090
  }
6091
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6092
    code = nodeListToJson(pJson, jkSelectStmtTags, pNode->pTags);
1,608✔
6093
  }
6094
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6095
    code = tjsonAddObject(pJson, jkSelectStmtSubtable, nodeToJson, pNode->pSubtable);
1,608✔
6096
  }
6097
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6098
    code = tjsonAddObject(pJson, jkSelectStmtWindow, nodeToJson, pNode->pWindow);
1,608✔
6099
  }
6100
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6101
    code = nodeListToJson(pJson, jkSelectStmtGroupBy, pNode->pGroupByList);
1,608✔
6102
  }
6103
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6104
    code = tjsonAddObject(pJson, jkSelectStmtHaving, nodeToJson, pNode->pHaving);
1,608✔
6105
  }
6106
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6107
    code = nodeListToJson(pJson, jkSelectStmtOrderBy, pNode->pOrderByList);
1,608✔
6108
  }
6109
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6110
    code = tjsonAddObject(pJson, jkSelectStmtLimit, nodeToJson, pNode->pLimit);
1,608✔
6111
  }
6112
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6113
    code = tjsonAddObject(pJson, jkSelectStmtSlimit, nodeToJson, pNode->pSlimit);
1,608✔
6114
  }
6115
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6116
    code = tjsonAddStringToObject(pJson, jkSelectStmtStmtName, pNode->stmtName);
1,608✔
6117
  }
6118
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6119
    code = tjsonAddBoolToObject(pJson, jkSelectStmtHasAggFuncs, pNode->hasAggFuncs);
1,608✔
6120
  }
6121
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6122
    code = tjsonAddBoolToObject(pJson, jkSelectStmtInterpFuncs, pNode->hasInterpFunc);
1,608✔
6123
  }
6124
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6125
    code = tjsonAddBoolToObject(pJson, jkSelectStmtTwaOrElapsedFuncs, pNode->hasTwaOrElapsedFunc);
1,608✔
6126
  }
6127
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6128
    code = tjsonAddObject(pJson, jkSelectStmtInterpFill, nodeToJson, pNode->pFill);
1,608✔
6129
  }
6130
  if (TSDB_CODE_SUCCESS == code) {
1,608!
6131
    code = tjsonAddObject(pJson, jkSelectStmtInterpEvery, nodeToJson, pNode->pEvery);
1,608✔
6132
  }
6133

6134
  return code;
1,608✔
6135
}
6136

6137
static int32_t jsonToSelectStmt(const SJson* pJson, void* pObj) {
5,053✔
6138
  SSelectStmt* pNode = (SSelectStmt*)pObj;
5,053✔
6139

6140
  int32_t code = tjsonGetBoolValue(pJson, jkSelectStmtDistinct, &pNode->isDistinct);
5,053✔
6141
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6142
    code = jsonToNodeList(pJson, jkSelectStmtProjections, &pNode->pProjectionList);
5,053✔
6143
  }
6144
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6145
    code = jsonToNodeObject(pJson, jkSelectStmtFrom, &pNode->pFromTable);
5,053✔
6146
  }
6147
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6148
    code = jsonToNodeObject(pJson, jkSelectStmtWhere, &pNode->pWhere);
5,053✔
6149
  }
6150
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6151
    code = jsonToNodeList(pJson, jkSelectStmtPartitionBy, &pNode->pPartitionByList);
5,053✔
6152
  }
6153
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6154
    code = jsonToNodeList(pJson, jkSelectStmtTags, &pNode->pTags);
5,053✔
6155
  }
6156
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6157
    code = jsonToNodeObject(pJson, jkSelectStmtSubtable, &pNode->pSubtable);
5,053✔
6158
  }
6159
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6160
    code = jsonToNodeObject(pJson, jkSelectStmtWindow, &pNode->pWindow);
5,053✔
6161
  }
6162
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6163
    code = jsonToNodeList(pJson, jkSelectStmtGroupBy, &pNode->pGroupByList);
5,053✔
6164
  }
6165
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6166
    code = jsonToNodeObject(pJson, jkSelectStmtHaving, &pNode->pHaving);
5,053✔
6167
  }
6168
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6169
    code = jsonToNodeList(pJson, jkSelectStmtOrderBy, &pNode->pOrderByList);
5,053✔
6170
  }
6171
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6172
    code = jsonToNodeObject(pJson, jkSelectStmtLimit, (SNode**)&pNode->pLimit);
5,053✔
6173
  }
6174
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6175
    code = jsonToNodeObject(pJson, jkSelectStmtSlimit, (SNode**)&pNode->pSlimit);
5,053✔
6176
  }
6177
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6178
    code = tjsonGetStringValue(pJson, jkSelectStmtStmtName, pNode->stmtName);
5,053✔
6179
  }
6180
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6181
    code = tjsonGetBoolValue(pJson, jkSelectStmtHasAggFuncs, &pNode->hasAggFuncs);
5,053✔
6182
  }
6183
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6184
    code = tjsonGetBoolValue(pJson, jkSelectStmtInterpFuncs, &pNode->hasInterpFunc);
5,053✔
6185
  }
6186
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6187
    code = tjsonGetBoolValue(pJson, jkSelectStmtTwaOrElapsedFuncs, &pNode->hasTwaOrElapsedFunc);
5,053✔
6188
  }
6189
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6190
    code = jsonToNodeObject(pJson, jkSelectStmtInterpFill, &pNode->pFill);
5,053✔
6191
  }
6192
  if (TSDB_CODE_SUCCESS == code) {
5,053!
6193
    code = jsonToNodeObject(pJson, jkSelectStmtInterpEvery, &pNode->pEvery);
5,053✔
6194
  }
6195

6196
  return code;
5,053✔
6197
}
6198

6199
static const char* jkVnodeModifyOpStmtSqlNodeType = "SqlNodeType";
6200
static const char* jkVnodeModifyOpStmtTotalRowsNum = "TotalRowsNum";
6201
static const char* jkVnodeModifyOpStmtTotalTbNum = "TotalTbNum";
6202

6203
static int32_t vnodeModifyStmtToJson(const void* pObj, SJson* pJson) {
×
6204
  const SVnodeModifyOpStmt* pNode = (const SVnodeModifyOpStmt*)pObj;
×
6205

6206
  int32_t code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType);
×
6207
  if (TSDB_CODE_SUCCESS == code) {
×
6208
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalRowsNum, pNode->totalRowsNum);
×
6209
  }
6210
  if (TSDB_CODE_SUCCESS == code) {
×
6211
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalTbNum, pNode->totalTbNum);
×
6212
  }
6213

6214
  return code;
×
6215
}
6216

6217
static int32_t jsonToVnodeModifyStmt(const SJson* pJson, void* pObj) {
×
6218
  SVnodeModifyOpStmt* pNode = (SVnodeModifyOpStmt*)pObj;
×
6219

6220
  int32_t code = TSDB_CODE_SUCCESS;
×
6221
  tjsonGetNumberValue(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType, code);
×
6222
  if (TSDB_CODE_SUCCESS == code) {
×
6223
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalRowsNum, &pNode->totalRowsNum);
×
6224
  }
6225
  if (TSDB_CODE_SUCCESS == code) {
×
6226
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalTbNum, &pNode->totalTbNum);
×
6227
  }
6228

6229
  return code;
×
6230
}
6231

6232
static const char* jkCreateDatabaseStmtDbName = "DbName";
6233
static const char* jkCreateDatabaseStmtIgnoreExists = "IgnoreExists";
6234
static const char* jkCreateDatabaseStmtOptions = "Options";
6235

6236
static int32_t createDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6237
  const SCreateDatabaseStmt* pNode = (const SCreateDatabaseStmt*)pObj;
×
6238

6239
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
×
6240
  if (TSDB_CODE_SUCCESS == code) {
×
6241
    code = tjsonAddBoolToObject(pJson, jkCreateDatabaseStmtIgnoreExists, pNode->ignoreExists);
×
6242
  }
6243
  if (TSDB_CODE_SUCCESS == code) {
×
6244
    code = tjsonAddObject(pJson, jkCreateDatabaseStmtOptions, nodeToJson, pNode->pOptions);
×
6245
  }
6246

6247
  return code;
×
6248
}
6249

6250
static int32_t jsonToCreateDatabaseStmt(const SJson* pJson, void* pObj) {
×
6251
  SCreateDatabaseStmt* pNode = (SCreateDatabaseStmt*)pObj;
×
6252

6253
  int32_t code = tjsonGetStringValue(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
×
6254
  if (TSDB_CODE_SUCCESS == code) {
×
6255
    code = tjsonGetBoolValue(pJson, jkCreateDatabaseStmtIgnoreExists, &pNode->ignoreExists);
×
6256
  }
6257
  if (TSDB_CODE_SUCCESS == code) {
×
6258
    code = jsonToNodeObject(pJson, jkCreateDatabaseStmtOptions, (SNode**)&pNode->pOptions);
×
6259
  }
6260

6261
  return code;
×
6262
}
6263

6264
static const char* jkAlterDatabaseStmtDbName = "DbName";
6265
static const char* jkAlterDatabaseStmtOptions = "Options";
6266

6267
static int32_t alterDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6268
  const SAlterDatabaseStmt* pNode = (const SAlterDatabaseStmt*)pObj;
×
6269

6270
  int32_t code = tjsonAddStringToObject(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
×
6271
  if (TSDB_CODE_SUCCESS == code) {
×
6272
    code = tjsonAddObject(pJson, jkAlterDatabaseStmtOptions, nodeToJson, pNode->pOptions);
×
6273
  }
6274

6275
  return code;
×
6276
}
6277

6278
static int32_t jsonToAlterDatabaseStmt(const SJson* pJson, void* pObj) {
×
6279
  SAlterDatabaseStmt* pNode = (SAlterDatabaseStmt*)pObj;
×
6280

6281
  int32_t code = tjsonGetStringValue(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
×
6282
  if (TSDB_CODE_SUCCESS == code) {
×
6283
    code = jsonToNodeObject(pJson, jkAlterDatabaseStmtOptions, (SNode**)&pNode->pOptions);
×
6284
  }
6285

6286
  return code;
×
6287
}
6288

6289
static const char* jkTrimDatabaseStmtDbName = "DbName";
6290
static const char* jkTrimDatabaseStmtMaxSpeed = "MaxSpeed";
6291

6292
static int32_t trimDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6293
  const STrimDatabaseStmt* pNode = (const STrimDatabaseStmt*)pObj;
×
6294

6295
  int32_t code = tjsonAddStringToObject(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
×
6296
  if (TSDB_CODE_SUCCESS == code) {
×
6297
    code = tjsonAddIntegerToObject(pJson, jkTrimDatabaseStmtMaxSpeed, pNode->maxSpeed);
×
6298
  }
6299

6300
  return code;
×
6301
}
6302

6303
static int32_t jsonToTrimDatabaseStmt(const SJson* pJson, void* pObj) {
×
6304
  STrimDatabaseStmt* pNode = (STrimDatabaseStmt*)pObj;
×
6305

6306
  int32_t code = tjsonGetStringValue(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
×
6307
  if (TSDB_CODE_SUCCESS == code) {
×
6308
    code = tjsonGetIntValue(pJson, jkTrimDatabaseStmtMaxSpeed, &pNode->maxSpeed);
×
6309
  }
6310

6311
  return code;
×
6312
}
6313

6314
static const char* jkS3MigrateDatabaseStmtDbName = "DbName";
6315

6316
static int32_t s3migrateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6317
  const SS3MigrateDatabaseStmt* pNode = (const SS3MigrateDatabaseStmt*)pObj;
×
6318

6319
  int32_t code = tjsonAddStringToObject(pJson, jkS3MigrateDatabaseStmtDbName, pNode->dbName);
×
6320

6321
  return code;
×
6322
}
6323

6324
static int32_t jsonToS3MigrateDatabaseStmt(const SJson* pJson, void* pObj) {
×
6325
  SS3MigrateDatabaseStmt* pNode = (SS3MigrateDatabaseStmt*)pObj;
×
6326

6327
  int32_t code = tjsonGetStringValue(pJson, jkS3MigrateDatabaseStmtDbName, pNode->dbName);
×
6328

6329
  return code;
×
6330
}
6331

6332
static const char* jkCreateTableStmtDbName = "DbName";
6333
static const char* jkCreateTableStmtTableName = "TableName";
6334
static const char* jkCreateTableStmtIgnoreExists = "IgnoreExists";
6335
static const char* jkCreateTableStmtCols = "Cols";
6336
static const char* jkCreateTableStmtTags = "Tags";
6337
static const char* jkCreateTableStmtOptions = "Options";
6338

6339
static int32_t createTableStmtToJson(const void* pObj, SJson* pJson) {
×
6340
  const SCreateTableStmt* pNode = (const SCreateTableStmt*)pObj;
×
6341

6342
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTableStmtDbName, pNode->dbName);
×
6343
  if (TSDB_CODE_SUCCESS == code) {
×
6344
    code = tjsonAddStringToObject(pJson, jkCreateTableStmtTableName, pNode->tableName);
×
6345
  }
6346
  if (TSDB_CODE_SUCCESS == code) {
×
6347
    code = tjsonAddBoolToObject(pJson, jkCreateTableStmtIgnoreExists, pNode->ignoreExists);
×
6348
  }
6349
  if (TSDB_CODE_SUCCESS == code) {
×
6350
    code = nodeListToJson(pJson, jkCreateTableStmtCols, pNode->pCols);
×
6351
  }
6352
  if (TSDB_CODE_SUCCESS == code) {
×
6353
    code = nodeListToJson(pJson, jkCreateTableStmtTags, pNode->pTags);
×
6354
  }
6355
  if (TSDB_CODE_SUCCESS == code) {
×
6356
    code = tjsonAddObject(pJson, jkCreateTableStmtOptions, nodeToJson, pNode->pOptions);
×
6357
  }
6358

6359
  return code;
×
6360
}
6361

6362
static int32_t jsonToCreateTableStmt(const SJson* pJson, void* pObj) {
×
6363
  SCreateTableStmt* pNode = (SCreateTableStmt*)pObj;
×
6364

6365
  int32_t code = tjsonGetStringValue(pJson, jkCreateTableStmtDbName, pNode->dbName);
×
6366
  if (TSDB_CODE_SUCCESS == code) {
×
6367
    code = tjsonGetStringValue(pJson, jkCreateTableStmtTableName, pNode->tableName);
×
6368
  }
6369
  if (TSDB_CODE_SUCCESS == code) {
×
6370
    code = tjsonGetBoolValue(pJson, jkCreateTableStmtIgnoreExists, &pNode->ignoreExists);
×
6371
  }
6372
  if (TSDB_CODE_SUCCESS == code) {
×
6373
    code = jsonToNodeList(pJson, jkCreateTableStmtCols, &pNode->pCols);
×
6374
  }
6375
  if (TSDB_CODE_SUCCESS == code) {
×
6376
    code = jsonToNodeList(pJson, jkCreateTableStmtTags, &pNode->pTags);
×
6377
  }
6378
  if (TSDB_CODE_SUCCESS == code) {
×
6379
    code = jsonToNodeObject(pJson, jkCreateTableStmtOptions, (SNode**)&pNode->pOptions);
×
6380
  }
6381

6382
  return code;
×
6383
}
6384

6385
static const char* jkCreateSubTableClauseDbName = "DbName";
6386
static const char* jkCreateSubTableClauseTableName = "TableName";
6387
static const char* jkCreateSubTableClauseUseDbName = "UseDbName";
6388
static const char* jkCreateSubTableClauseUseTableName = "UseTableName";
6389
static const char* jkCreateSubTableClauseIgnoreExists = "IgnoreExists";
6390
static const char* jkCreateSubTableClauseSpecificTags = "SpecificTags";
6391
static const char* jkCreateSubTableClauseValsOfTags = "ValsOfTags";
6392
static const char* jkCreateSubTableClauseOptions = "Options";
6393

6394
static int32_t createSubTableClauseToJson(const void* pObj, SJson* pJson) {
×
6395
  const SCreateSubTableClause* pNode = (const SCreateSubTableClause*)pObj;
×
6396

6397
  int32_t code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
×
6398
  if (TSDB_CODE_SUCCESS == code) {
×
6399
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
×
6400
  }
6401
  if (TSDB_CODE_SUCCESS == code) {
×
6402
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
×
6403
  }
6404
  if (TSDB_CODE_SUCCESS == code) {
×
6405
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
×
6406
  }
6407
  if (TSDB_CODE_SUCCESS == code) {
×
6408
    code = tjsonAddBoolToObject(pJson, jkCreateSubTableClauseIgnoreExists, pNode->ignoreExists);
×
6409
  }
6410
  if (TSDB_CODE_SUCCESS == code) {
×
6411
    code = nodeListToJson(pJson, jkCreateSubTableClauseSpecificTags, pNode->pSpecificTags);
×
6412
  }
6413
  if (TSDB_CODE_SUCCESS == code) {
×
6414
    code = nodeListToJson(pJson, jkCreateSubTableClauseValsOfTags, pNode->pValsOfTags);
×
6415
  }
6416
  if (TSDB_CODE_SUCCESS == code) {
×
6417
    code = tjsonAddObject(pJson, jkCreateSubTableClauseOptions, nodeToJson, pNode->pOptions);
×
6418
  }
6419

6420
  return code;
×
6421
}
6422

6423
static int32_t jsonToCreateSubTableClause(const SJson* pJson, void* pObj) {
×
6424
  SCreateSubTableClause* pNode = (SCreateSubTableClause*)pObj;
×
6425

6426
  int32_t code = tjsonGetStringValue(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
×
6427
  if (TSDB_CODE_SUCCESS == code) {
×
6428
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
×
6429
  }
6430
  if (TSDB_CODE_SUCCESS == code) {
×
6431
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
×
6432
  }
6433
  if (TSDB_CODE_SUCCESS == code) {
×
6434
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
×
6435
  }
6436
  if (TSDB_CODE_SUCCESS == code) {
×
6437
    code = tjsonGetBoolValue(pJson, jkCreateSubTableClauseIgnoreExists, &pNode->ignoreExists);
×
6438
  }
6439
  if (TSDB_CODE_SUCCESS == code) {
×
6440
    code = jsonToNodeList(pJson, jkCreateSubTableClauseSpecificTags, &pNode->pSpecificTags);
×
6441
  }
6442
  if (TSDB_CODE_SUCCESS == code) {
×
6443
    code = jsonToNodeList(pJson, jkCreateSubTableClauseValsOfTags, &pNode->pValsOfTags);
×
6444
  }
6445
  if (TSDB_CODE_SUCCESS == code) {
×
6446
    code = jsonToNodeObject(pJson, jkCreateSubTableClauseOptions, (SNode**)&pNode->pOptions);
×
6447
  }
6448

6449
  return code;
×
6450
}
6451

6452
static const char* jkCreateMultiTablesStmtSubTables = "SubTables";
6453

6454
static int32_t createMultiTablesStmtToJson(const void* pObj, SJson* pJson) {
×
6455
  const SCreateMultiTablesStmt* pNode = (const SCreateMultiTablesStmt*)pObj;
×
6456
  return nodeListToJson(pJson, jkCreateMultiTablesStmtSubTables, pNode->pSubTables);
×
6457
}
6458

6459
static int32_t jsonToCreateMultiTablesStmt(const SJson* pJson, void* pObj) {
×
6460
  SCreateMultiTablesStmt* pNode = (SCreateMultiTablesStmt*)pObj;
×
6461
  return jsonToNodeList(pJson, jkCreateMultiTablesStmtSubTables, &pNode->pSubTables);
×
6462
}
6463

6464
static const char* jkDropTableClauseDbName = "DbName";
6465
static const char* jkDropTableClauseTableName = "TableName";
6466
static const char* jkDropTableClauseIgnoreNotExists = "IgnoreNotExists";
6467

6468
static int32_t dropTableClauseToJson(const void* pObj, SJson* pJson) {
×
6469
  const SDropTableClause* pNode = (const SDropTableClause*)pObj;
×
6470

6471
  int32_t code = tjsonAddStringToObject(pJson, jkDropTableClauseDbName, pNode->dbName);
×
6472
  if (TSDB_CODE_SUCCESS == code) {
×
6473
    code = tjsonAddStringToObject(pJson, jkDropTableClauseTableName, pNode->tableName);
×
6474
  }
6475
  if (TSDB_CODE_SUCCESS == code) {
×
6476
    code = tjsonAddBoolToObject(pJson, jkDropTableClauseIgnoreNotExists, pNode->ignoreNotExists);
×
6477
  }
6478

6479
  return code;
×
6480
}
6481

6482
static int32_t jsonToDropTableClause(const SJson* pJson, void* pObj) {
×
6483
  SDropTableClause* pNode = (SDropTableClause*)pObj;
×
6484

6485
  int32_t code = tjsonGetStringValue(pJson, jkDropTableClauseDbName, pNode->dbName);
×
6486
  if (TSDB_CODE_SUCCESS == code) {
×
6487
    code = tjsonGetStringValue(pJson, jkDropTableClauseTableName, pNode->tableName);
×
6488
  }
6489
  if (TSDB_CODE_SUCCESS == code) {
×
6490
    code = tjsonGetBoolValue(pJson, jkDropTableClauseIgnoreNotExists, &pNode->ignoreNotExists);
×
6491
  }
6492

6493
  return code;
×
6494
}
6495

6496
static const char* jkDropTableStmtTables = "Tables";
6497

6498
static int32_t dropTableStmtToJson(const void* pObj, SJson* pJson) {
×
6499
  const SDropTableStmt* pNode = (const SDropTableStmt*)pObj;
×
6500
  return nodeListToJson(pJson, jkDropTableStmtTables, pNode->pTables);
×
6501
}
6502

6503
static int32_t jsonToDropTableStmt(const SJson* pJson, void* pObj) {
×
6504
  SDropTableStmt* pNode = (SDropTableStmt*)pObj;
×
6505
  return jsonToNodeList(pJson, jkDropTableStmtTables, &pNode->pTables);
×
6506
}
6507

6508
static const char* jkDropSuperTableStmtDbName = "DbName";
6509
static const char* jkDropSuperTableStmtTableName = "TableName";
6510
static const char* jkDropSuperTableStmtIgnoreNotExists = "IgnoreNotExists";
6511
static const char* jkDropSuperTableStmtwithOpt = "withOpt";
6512

6513
static int32_t dropStableStmtToJson(const void* pObj, SJson* pJson) {
×
6514
  const SDropSuperTableStmt* pNode = (const SDropSuperTableStmt*)pObj;
×
6515

6516
  int32_t code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
×
6517
  if (TSDB_CODE_SUCCESS == code) {
×
6518
    code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
×
6519
  }
6520
  if (TSDB_CODE_SUCCESS == code) {
×
6521
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtIgnoreNotExists, pNode->ignoreNotExists);
×
6522
  }
6523
  if (TSDB_CODE_SUCCESS == code) {
×
6524
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtwithOpt, pNode->withOpt);
×
6525
  }
6526

6527
  return code;
×
6528
}
6529

6530
static int32_t jsonToDropStableStmt(const SJson* pJson, void* pObj) {
×
6531
  SDropSuperTableStmt* pNode = (SDropSuperTableStmt*)pObj;
×
6532

6533
  int32_t code = tjsonGetStringValue(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
×
6534
  if (TSDB_CODE_SUCCESS == code) {
×
6535
    code = tjsonGetStringValue(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
×
6536
  }
6537
  if (TSDB_CODE_SUCCESS == code) {
×
6538
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
6539
  }
6540
  if (TSDB_CODE_SUCCESS == code) {
×
6541
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtwithOpt, &pNode->withOpt);
×
6542
  }
6543

6544
  return code;
×
6545
}
6546

6547
static const char* jkAlterTableStmtDbName = "DbName";
6548
static const char* jkAlterTableStmtTableName = "TableName";
6549
static const char* jkAlterTableStmtAlterType = "AlterType";
6550
static const char* jkAlterTableStmtColName = "ColName";
6551
static const char* jkAlterTableStmtNewColName = "NewColName";
6552
static const char* jkAlterTableStmtOptions = "Options";
6553
static const char* jkAlterTableStmtNewDataType = "NewDataType";
6554
static const char* jkAlterTableStmtNewTagVal = "NewTagVal";
6555

6556
static int32_t alterTableStmtToJson(const void* pObj, SJson* pJson) {
×
6557
  const SAlterTableStmt* pNode = (const SAlterTableStmt*)pObj;
×
6558

6559
  int32_t code = tjsonAddStringToObject(pJson, jkAlterTableStmtDbName, pNode->dbName);
×
6560
  if (TSDB_CODE_SUCCESS == code) {
×
6561
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtTableName, pNode->tableName);
×
6562
  }
6563
  if (TSDB_CODE_SUCCESS == code) {
×
6564
    code = tjsonAddIntegerToObject(pJson, jkAlterTableStmtAlterType, pNode->alterType);
×
6565
  }
6566
  if (TSDB_CODE_SUCCESS == code) {
×
6567
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtColName, pNode->colName);
×
6568
  }
6569
  if (TSDB_CODE_SUCCESS == code) {
×
6570
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtNewColName, pNode->newColName);
×
6571
  }
6572
  if (TSDB_CODE_SUCCESS == code) {
×
6573
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pOptions);
×
6574
  }
6575
  if (TSDB_CODE_SUCCESS == code) {
×
6576
    code = tjsonAddObject(pJson, jkAlterTableStmtNewDataType, dataTypeToJson, &pNode->dataType);
×
6577
  }
6578
  if (TSDB_CODE_SUCCESS == code) {
×
6579
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pVal);
×
6580
  }
6581

6582
  return code;
×
6583
}
6584

6585
static int32_t jsonToAlterTableStmt(const SJson* pJson, void* pObj) {
×
6586
  SAlterTableStmt* pNode = (SAlterTableStmt*)pObj;
×
6587

6588
  int32_t code = tjsonGetStringValue(pJson, jkAlterTableStmtDbName, pNode->dbName);
×
6589
  if (TSDB_CODE_SUCCESS == code) {
×
6590
    code = tjsonGetStringValue(pJson, jkAlterTableStmtTableName, pNode->tableName);
×
6591
  }
6592
  if (TSDB_CODE_SUCCESS == code) {
×
6593
    code = tjsonGetTinyIntValue(pJson, jkAlterTableStmtAlterType, &pNode->alterType);
×
6594
  }
6595
  if (TSDB_CODE_SUCCESS == code) {
×
6596
    code = tjsonGetStringValue(pJson, jkAlterTableStmtColName, pNode->colName);
×
6597
  }
6598
  if (TSDB_CODE_SUCCESS == code) {
×
6599
    code = tjsonGetStringValue(pJson, jkAlterTableStmtNewColName, pNode->newColName);
×
6600
  }
6601
  if (TSDB_CODE_SUCCESS == code) {
×
6602
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pOptions);
×
6603
  }
6604
  if (TSDB_CODE_SUCCESS == code) {
×
6605
    code = tjsonToObject(pJson, jkAlterTableStmtNewDataType, jsonToDataType, &pNode->dataType);
×
6606
  }
6607
  if (TSDB_CODE_SUCCESS == code) {
×
6608
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pVal);
×
6609
  }
6610

6611
  return code;
×
6612
}
6613

6614
static int32_t alterStableStmtToJson(const void* pObj, SJson* pJson) { return alterTableStmtToJson(pObj, pJson); }
×
6615

6616
static int32_t jsonToAlterStableStmt(const SJson* pJson, void* pObj) { return jsonToAlterTableStmt(pJson, pObj); }
×
6617

6618
static const char* jkCreateUserStmtUserName = "UserName";
6619
static const char* jkCreateUserStmtPassword = "Password";
6620
static const char* jkCreateUserStmtSysinfo = "Sysinfo";
6621

6622
static int32_t createUserStmtToJson(const void* pObj, SJson* pJson) {
×
6623
  const SCreateUserStmt* pNode = (const SCreateUserStmt*)pObj;
×
6624

6625
  int32_t code = tjsonAddStringToObject(pJson, jkCreateUserStmtUserName, pNode->userName);
×
6626
  if (TSDB_CODE_SUCCESS == code) {
×
6627
    code = tjsonAddStringToObject(pJson, jkCreateUserStmtPassword, pNode->password);
×
6628
  }
6629
  if (TSDB_CODE_SUCCESS == code) {
×
6630
    code = tjsonAddIntegerToObject(pJson, jkCreateUserStmtSysinfo, pNode->sysinfo);
×
6631
  }
6632

6633
  return code;
×
6634
}
6635

6636
static int32_t jsonToCreateUserStmt(const SJson* pJson, void* pObj) {
×
6637
  SCreateUserStmt* pNode = (SCreateUserStmt*)pObj;
×
6638

6639
  int32_t code = tjsonGetStringValue(pJson, jkCreateUserStmtUserName, pNode->userName);
×
6640
  if (TSDB_CODE_SUCCESS == code) {
×
6641
    code = tjsonGetStringValue(pJson, jkCreateUserStmtPassword, pNode->password);
×
6642
  }
6643
  if (TSDB_CODE_SUCCESS == code) {
×
6644
    code = tjsonGetTinyIntValue(pJson, jkCreateUserStmtSysinfo, &pNode->sysinfo);
×
6645
  }
6646

6647
  return code;
×
6648
}
6649

6650
static const char* jkAlterUserStmtUserName = "UserName";
6651
static const char* jkAlterUserStmtAlterType = "AlterType";
6652
static const char* jkAlterUserStmtPassword = "Password";
6653
static const char* jkAlterUserStmtEnable = "Enable";
6654
static const char* jkAlterUserStmtSysinfo = "Sysinfo";
6655
static const char* jkAlterUserStmtCreatedb = "Createdb";
6656

6657
static int32_t alterUserStmtToJson(const void* pObj, SJson* pJson) {
×
6658
  const SAlterUserStmt* pNode = (const SAlterUserStmt*)pObj;
×
6659

6660
  int32_t code = tjsonAddStringToObject(pJson, jkAlterUserStmtUserName, pNode->userName);
×
6661
  if (TSDB_CODE_SUCCESS == code) {
×
6662
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtAlterType, pNode->alterType);
×
6663
  }
6664
  if (TSDB_CODE_SUCCESS == code) {
×
6665
    code = tjsonAddStringToObject(pJson, jkAlterUserStmtPassword, pNode->password);
×
6666
  }
6667
  if (TSDB_CODE_SUCCESS == code) {
×
6668
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtEnable, pNode->enable);
×
6669
  }
6670
  if (TSDB_CODE_SUCCESS == code) {
×
6671
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtSysinfo, pNode->sysinfo);
×
6672
  }
6673
  if (TSDB_CODE_SUCCESS == code) {
×
6674
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtCreatedb, pNode->createdb);
×
6675
  }
6676

6677
  return code;
×
6678
}
6679

6680
static int32_t jsonToAlterUserStmt(const SJson* pJson, void* pObj) {
×
6681
  SAlterUserStmt* pNode = (SAlterUserStmt*)pObj;
×
6682

6683
  int32_t code = tjsonGetStringValue(pJson, jkAlterUserStmtUserName, pNode->userName);
×
6684
  if (TSDB_CODE_SUCCESS == code) {
×
6685
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtAlterType, &pNode->alterType);
×
6686
  }
6687
  if (TSDB_CODE_SUCCESS == code) {
×
6688
    code = tjsonGetStringValue(pJson, jkAlterUserStmtPassword, pNode->password);
×
6689
  }
6690
  if (TSDB_CODE_SUCCESS == code) {
×
6691
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtEnable, &pNode->enable);
×
6692
  }
6693
  if (TSDB_CODE_SUCCESS == code) {
×
6694
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtSysinfo, &pNode->sysinfo);
×
6695
  }
6696
  if (TSDB_CODE_SUCCESS == code) {
×
6697
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtCreatedb, &pNode->createdb);
×
6698
  }
6699

6700
  return code;
×
6701
}
6702

6703
static const char* jkDropUserStmtUserName = "UserName";
6704

6705
static int32_t dropUserStmtToJson(const void* pObj, SJson* pJson) {
×
6706
  const SDropUserStmt* pNode = (const SDropUserStmt*)pObj;
×
6707
  return tjsonAddStringToObject(pJson, jkDropUserStmtUserName, pNode->userName);
×
6708
}
6709

6710
static int32_t jsonToDropUserStmt(const SJson* pJson, void* pObj) {
×
6711
  SDropUserStmt* pNode = (SDropUserStmt*)pObj;
×
6712
  return tjsonGetStringValue(pJson, jkDropUserStmtUserName, pNode->userName);
×
6713
}
6714

6715
static const char* jkUseDatabaseStmtDbName = "DbName";
6716

6717
static int32_t useDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6718
  const SUseDatabaseStmt* pNode = (const SUseDatabaseStmt*)pObj;
×
6719
  return tjsonAddStringToObject(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
×
6720
}
6721

6722
static int32_t jsonToUseDatabaseStmt(const SJson* pJson, void* pObj) {
×
6723
  SUseDatabaseStmt* pNode = (SUseDatabaseStmt*)pObj;
×
6724
  return tjsonGetStringValue(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
×
6725
}
6726

6727
static const char* jkCreateDnodeStmtFqdn = "Fqdn";
6728
static const char* jkCreateDnodeStmtPort = "Port";
6729

6730
static int32_t createDnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6731
  const SCreateDnodeStmt* pNode = (const SCreateDnodeStmt*)pObj;
×
6732

6733
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
×
6734
  if (TSDB_CODE_SUCCESS == code) {
×
6735
    code = tjsonAddIntegerToObject(pJson, jkCreateDnodeStmtPort, pNode->port);
×
6736
  }
6737

6738
  return code;
×
6739
}
6740

6741
static int32_t jsonToCreateDnodeStmt(const SJson* pJson, void* pObj) {
×
6742
  SCreateDnodeStmt* pNode = (SCreateDnodeStmt*)pObj;
×
6743

6744
  int32_t code = tjsonGetStringValue(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
×
6745
  if (TSDB_CODE_SUCCESS == code) {
×
6746
    code = tjsonGetIntValue(pJson, jkCreateDnodeStmtPort, &pNode->port);
×
6747
  }
6748

6749
  return code;
×
6750
}
6751

6752
static const char* jkAlterDnodeStmtDnodeId = "DnodeId";
6753
static const char* jkAlterDnodeStmtConfig = "Config";
6754
static const char* jkAlterDnodeStmtValue = "Value";
6755

6756
static int32_t alterDnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6757
  const SAlterDnodeStmt* pNode = (const SAlterDnodeStmt*)pObj;
×
6758

6759
  int32_t code = tjsonAddIntegerToObject(pJson, jkAlterDnodeStmtDnodeId, pNode->dnodeId);
×
6760
  if (TSDB_CODE_SUCCESS == code) {
×
6761
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtConfig, pNode->config);
×
6762
  }
6763
  if (TSDB_CODE_SUCCESS == code) {
×
6764
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtValue, pNode->value);
×
6765
  }
6766

6767
  return code;
×
6768
}
6769

6770
static int32_t jsonToAlterDnodeStmt(const SJson* pJson, void* pObj) {
×
6771
  SAlterDnodeStmt* pNode = (SAlterDnodeStmt*)pObj;
×
6772

6773
  int32_t code = tjsonGetIntValue(pJson, jkAlterDnodeStmtDnodeId, &pNode->dnodeId);
×
6774
  if (TSDB_CODE_SUCCESS == code) {
×
6775
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtConfig, pNode->config);
×
6776
  }
6777
  if (TSDB_CODE_SUCCESS == code) {
×
6778
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtValue, pNode->value);
×
6779
  }
6780

6781
  return code;
×
6782
}
6783

6784
static const char* jkCreateIndexStmtIndexType = "IndexType";
6785
static const char* jkCreateIndexStmtIgnoreExists = "IgnoreExists";
6786
static const char* jkCreateIndexStmtIndexDbName = "IndexDbName";
6787
static const char* jkCreateIndexStmtIndexName = "indexName";
6788
static const char* jkCreateIndexStmtDbName = "DbName";
6789
static const char* jkCreateIndexStmtTableName = "TableName";
6790
static const char* jkCreateIndexStmtCols = "Cols";
6791
static const char* jkCreateIndexStmtOptions = "Options";
6792

6793
static int32_t createIndexStmtToJson(const void* pObj, SJson* pJson) {
×
6794
  const SCreateIndexStmt* pNode = (const SCreateIndexStmt*)pObj;
×
6795

6796
  int32_t code = tjsonAddIntegerToObject(pJson, jkCreateIndexStmtIndexType, pNode->indexType);
×
6797
  if (TSDB_CODE_SUCCESS == code) {
×
6798
    code = tjsonAddBoolToObject(pJson, jkCreateIndexStmtIgnoreExists, pNode->ignoreExists);
×
6799
  }
6800
  if (TSDB_CODE_SUCCESS == code) {
×
6801
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
×
6802
  }
6803
  if (TSDB_CODE_SUCCESS == code) {
×
6804
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
×
6805
  }
6806
  if (TSDB_CODE_SUCCESS == code) {
×
6807
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtDbName, pNode->dbName);
×
6808
  }
6809
  if (TSDB_CODE_SUCCESS == code) {
×
6810
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtTableName, pNode->tableName);
×
6811
  }
6812
  if (TSDB_CODE_SUCCESS == code) {
×
6813
    code = nodeListToJson(pJson, jkCreateIndexStmtCols, pNode->pCols);
×
6814
  }
6815
  if (TSDB_CODE_SUCCESS == code) {
×
6816
    code = tjsonAddObject(pJson, jkCreateIndexStmtOptions, nodeToJson, pNode->pOptions);
×
6817
  }
6818

6819
  return code;
×
6820
}
6821

6822
static int32_t jsonToCreateIndexStmt(const SJson* pJson, void* pObj) {
×
6823
  SCreateIndexStmt* pNode = (SCreateIndexStmt*)pObj;
×
6824

6825
  int32_t code = TSDB_CODE_SUCCESS;
×
6826
  tjsonGetNumberValue(pJson, jkCreateIndexStmtIndexType, pNode->indexType, code);
×
6827
  if (TSDB_CODE_SUCCESS == code) {
×
6828
    code = tjsonGetBoolValue(pJson, jkCreateIndexStmtIgnoreExists, &pNode->ignoreExists);
×
6829
  }
6830
  if (TSDB_CODE_SUCCESS == code) {
×
6831
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
×
6832
  }
6833
  if (TSDB_CODE_SUCCESS == code) {
×
6834
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
×
6835
  }
6836
  if (TSDB_CODE_SUCCESS == code) {
×
6837
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtDbName, pNode->dbName);
×
6838
  }
6839
  if (TSDB_CODE_SUCCESS == code) {
×
6840
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtTableName, pNode->tableName);
×
6841
  }
6842
  if (TSDB_CODE_SUCCESS == code) {
×
6843
    code = jsonToNodeList(pJson, jkCreateIndexStmtCols, &pNode->pCols);
×
6844
  }
6845
  if (TSDB_CODE_SUCCESS == code) {
×
6846
    code = jsonToNodeObject(pJson, jkCreateIndexStmtOptions, (SNode**)&pNode->pOptions);
×
6847
  }
6848

6849
  return code;
×
6850
}
6851

6852
static const char* jkDropIndexStmtIgnoreNotExists = "IgnoreNotExists";
6853
static const char* jkDropIndexStmtIndexDbName = "IndexDbName";
6854
static const char* jkDropIndexStmtIndexName = "IndexName";
6855

6856
static int32_t dropIndexStmtToJson(const void* pObj, SJson* pJson) {
×
6857
  const SDropIndexStmt* pNode = (const SDropIndexStmt*)pObj;
×
6858

6859
  int32_t code = tjsonAddBoolToObject(pJson, jkDropIndexStmtIgnoreNotExists, pNode->ignoreNotExists);
×
6860
  if (TSDB_CODE_SUCCESS == code) {
×
6861
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
×
6862
  }
6863
  if (TSDB_CODE_SUCCESS == code) {
×
6864
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexName, pNode->indexName);
×
6865
  }
6866

6867
  return code;
×
6868
}
6869

6870
static int32_t jsonToDropIndexStmt(const SJson* pJson, void* pObj) {
×
6871
  SDropIndexStmt* pNode = (SDropIndexStmt*)pObj;
×
6872

6873
  int32_t code = tjsonGetBoolValue(pJson, jkDropIndexStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
6874
  if (TSDB_CODE_SUCCESS == code) {
×
6875
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
×
6876
  }
6877
  if (TSDB_CODE_SUCCESS == code) {
×
6878
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexName, pNode->indexName);
×
6879
  }
6880

6881
  return code;
×
6882
}
6883

6884
static const char* jkCreateComponentNodeStmtDnodeId = "DnodeId";
6885

6886
static int32_t createComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
6887
  const SCreateComponentNodeStmt* pNode = (const SCreateComponentNodeStmt*)pObj;
×
6888
  return tjsonAddIntegerToObject(pJson, jkCreateComponentNodeStmtDnodeId, pNode->dnodeId);
×
6889
}
6890

6891
static int32_t jsonToCreateComponentNodeStmt(const SJson* pJson, void* pObj) {
×
6892
  SCreateComponentNodeStmt* pNode = (SCreateComponentNodeStmt*)pObj;
×
6893
  return tjsonGetIntValue(pJson, jkCreateComponentNodeStmtDnodeId, &pNode->dnodeId);
×
6894
}
6895

6896
static const char* jkDropComponentNodeStmtDnodeId = "DnodeId";
6897

6898
static int32_t dropComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
6899
  const SDropComponentNodeStmt* pNode = (const SDropComponentNodeStmt*)pObj;
×
6900
  return tjsonAddIntegerToObject(pJson, jkDropComponentNodeStmtDnodeId, pNode->dnodeId);
×
6901
}
6902

6903
static int32_t jsonToDropComponentNodeStmt(const SJson* pJson, void* pObj) {
×
6904
  SDropComponentNodeStmt* pNode = (SDropComponentNodeStmt*)pObj;
×
6905
  return tjsonGetIntValue(pJson, jkDropComponentNodeStmtDnodeId, &pNode->dnodeId);
×
6906
}
6907

6908
static int32_t createQnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6909
  return createComponentNodeStmtToJson(pObj, pJson);
×
6910
}
6911

6912
static int32_t jsonToCreateQnodeStmt(const SJson* pJson, void* pObj) {
×
6913
  return jsonToCreateComponentNodeStmt(pJson, pObj);
×
6914
}
6915

6916
static int32_t dropQnodeStmtToJson(const void* pObj, SJson* pJson) { return dropComponentNodeStmtToJson(pObj, pJson); }
×
6917

6918
static int32_t jsonToDropQnodeStmt(const SJson* pJson, void* pObj) { return jsonToDropComponentNodeStmt(pJson, pObj); }
×
6919

6920
static const char* jkCreateAnodeStmtUrl = "Url";
6921
static const char* jkUpdateDropANodeStmtId = "AnodeId";
6922

6923
static int32_t createAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6924
  const SCreateAnodeStmt* pNode = (const SCreateAnodeStmt*)pObj;
×
6925
  return tjsonAddStringToObject(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
6926
}
6927

6928
static int32_t jsonToCreateAnodeStmt(const SJson* pJson, void* pObj) {
×
6929
  SCreateAnodeStmt* pNode = (SCreateAnodeStmt*)pObj;
×
6930
  return tjsonGetStringValue(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
6931
}
6932

6933
static int32_t updateAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6934
  const SUpdateAnodeStmt* pNode = (const SUpdateAnodeStmt*)pObj;
×
6935
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
6936
}
6937

6938
static int32_t jsonToUpdateAnodeStmt(const SJson* pJson, void* pObj) {
×
6939
  SUpdateAnodeStmt* pNode = (SUpdateAnodeStmt*)pObj;
×
6940
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
6941
}
6942

6943
static int32_t dropAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6944
  const SDropAnodeStmt* pNode = (const SDropAnodeStmt*)pObj;
×
6945
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
6946
}
6947

6948
static int32_t jsonToDropAnodeStmt(const SJson* pJson, void* pObj) {
×
6949
  SDropAnodeStmt* pNode = (SDropAnodeStmt*)pObj;
×
6950
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
6951
}
6952

6953
static int32_t createSnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6954
  return createComponentNodeStmtToJson(pObj, pJson);
×
6955
}
6956

6957
static int32_t jsonToCreateSnodeStmt(const SJson* pJson, void* pObj) {
×
6958
  return jsonToCreateComponentNodeStmt(pJson, pObj);
×
6959
}
6960

6961
static int32_t dropSnodeStmtToJson(const void* pObj, SJson* pJson) { return dropComponentNodeStmtToJson(pObj, pJson); }
×
6962

6963
static int32_t jsonToDropSnodeStmt(const SJson* pJson, void* pObj) { return jsonToDropComponentNodeStmt(pJson, pObj); }
×
6964

6965
static int32_t createMnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6966
  return createComponentNodeStmtToJson(pObj, pJson);
×
6967
}
6968

6969
static int32_t jsonToCreateMnodeStmt(const SJson* pJson, void* pObj) {
×
6970
  return jsonToCreateComponentNodeStmt(pJson, pObj);
×
6971
}
6972

6973
static int32_t dropMnodeStmtToJson(const void* pObj, SJson* pJson) { return dropComponentNodeStmtToJson(pObj, pJson); }
×
6974

6975
static int32_t jsonToDropMnodeStmt(const SJson* pJson, void* pObj) { return jsonToDropComponentNodeStmt(pJson, pObj); }
×
6976

6977
static const char* jkDropDnodeStmtDnodeId = "DnodeId";
6978
static const char* jkDropDnodeStmtFqdn = "Fqdn";
6979
static const char* jkDropDnodeStmtPort = "Port";
6980
static const char* jkDropDnodeStmtForce = "Force";
6981
static const char* jkDropDnodeStmtUnsafe = "Unsafe";
6982

6983
static int32_t dropDnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6984
  const SDropDnodeStmt* pNode = (const SDropDnodeStmt*)pObj;
×
6985

6986
  int32_t code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtDnodeId, pNode->dnodeId);
×
6987
  if (TSDB_CODE_SUCCESS == code) {
×
6988
    code = tjsonAddStringToObject(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
×
6989
  }
6990
  if (TSDB_CODE_SUCCESS == code) {
×
6991
    code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtPort, pNode->port);
×
6992
  }
6993
  if (TSDB_CODE_SUCCESS == code) {
×
6994
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtForce, pNode->force);
×
6995
  }
6996
  if (TSDB_CODE_SUCCESS == code) {
×
6997
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtUnsafe, pNode->unsafe);
×
6998
  }
6999

7000
  return code;
×
7001
}
7002

7003
static int32_t jsonToDropDnodeStmt(const SJson* pJson, void* pObj) {
×
7004
  SDropDnodeStmt* pNode = (SDropDnodeStmt*)pObj;
×
7005

7006
  int32_t code = tjsonGetIntValue(pJson, jkDropDnodeStmtDnodeId, &pNode->dnodeId);
×
7007
  if (TSDB_CODE_SUCCESS == code) {
×
7008
    code = tjsonGetStringValue(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
×
7009
  }
7010
  if (TSDB_CODE_SUCCESS == code) {
×
7011
    code = tjsonGetIntValue(pJson, jkDropDnodeStmtPort, &pNode->port);
×
7012
  }
7013
  if (TSDB_CODE_SUCCESS == code) {
×
7014
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtForce, &pNode->force);
×
7015
  }
7016
  if (TSDB_CODE_SUCCESS == code) {
×
7017
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtUnsafe, &pNode->unsafe);
×
7018
  }
7019

7020
  return code;
×
7021
}
7022

7023
static const char* jkRestoreComponentNodeStmtDnodeId = "DnodeId";
7024

7025
static int32_t restoreComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
7026
  const SRestoreComponentNodeStmt* pNode = (const SRestoreComponentNodeStmt*)pObj;
×
7027
  return tjsonAddIntegerToObject(pJson, jkRestoreComponentNodeStmtDnodeId, pNode->dnodeId);
×
7028
}
7029

7030
static int32_t jsonToRestoreComponentNodeStmt(const SJson* pJson, void* pObj) {
×
7031
  SRestoreComponentNodeStmt* pNode = (SRestoreComponentNodeStmt*)pObj;
×
7032
  return tjsonGetIntValue(pJson, jkRestoreComponentNodeStmtDnodeId, &pNode->dnodeId);
×
7033
}
7034

7035
static int32_t jsonToRestoreDnodeStmt(const SJson* pJson, void* pObj) {
×
7036
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
7037
}
7038
static int32_t jsonToRestoreQnodeStmt(const SJson* pJson, void* pObj) {
×
7039
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
7040
}
7041
static int32_t jsonToRestoreMnodeStmt(const SJson* pJson, void* pObj) {
×
7042
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
7043
}
7044
static int32_t jsonToRestoreVnodeStmt(const SJson* pJson, void* pObj) {
×
7045
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
7046
}
7047

7048
static const char* jkCreateTopicStmtTopicName = "TopicName";
7049
static const char* jkCreateTopicStmtSubscribeDbName = "SubscribeDbName";
7050
static const char* jkCreateTopicStmtIgnoreExists = "IgnoreExists";
7051
static const char* jkCreateTopicStmtQuery = "Query";
7052

7053
static int32_t createTopicStmtToJson(const void* pObj, SJson* pJson) {
×
7054
  const SCreateTopicStmt* pNode = (const SCreateTopicStmt*)pObj;
×
7055

7056
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
×
7057
  if (TSDB_CODE_SUCCESS == code) {
×
7058
    code = tjsonAddStringToObject(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
×
7059
  }
7060
  if (TSDB_CODE_SUCCESS == code) {
×
7061
    code = tjsonAddBoolToObject(pJson, jkCreateTopicStmtIgnoreExists, pNode->ignoreExists);
×
7062
  }
7063
  if (TSDB_CODE_SUCCESS == code) {
×
7064
    code = tjsonAddObject(pJson, jkCreateTopicStmtQuery, nodeToJson, pNode->pQuery);
×
7065
  }
7066

7067
  return code;
×
7068
}
7069

7070
static int32_t jsonToCreateTopicStmt(const SJson* pJson, void* pObj) {
×
7071
  SCreateTopicStmt* pNode = (SCreateTopicStmt*)pObj;
×
7072

7073
  int32_t code = tjsonGetStringValue(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
×
7074
  if (TSDB_CODE_SUCCESS == code) {
×
7075
    code = tjsonGetStringValue(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
×
7076
  }
7077
  if (TSDB_CODE_SUCCESS == code) {
×
7078
    code = tjsonGetBoolValue(pJson, jkCreateTopicStmtIgnoreExists, &pNode->ignoreExists);
×
7079
  }
7080
  if (TSDB_CODE_SUCCESS == code) {
×
7081
    code = jsonToNodeObject(pJson, jkCreateTopicStmtQuery, &pNode->pQuery);
×
7082
  }
7083

7084
  return code;
×
7085
}
7086

7087
static const char* jkDropTopicStmtTopicName = "TopicName";
7088
static const char* jkDropTopicStmtIgnoreNotExists = "IgnoreNotExists";
7089

7090
static int32_t dropTopicStmtToJson(const void* pObj, SJson* pJson) {
×
7091
  const SDropTopicStmt* pNode = (const SDropTopicStmt*)pObj;
×
7092

7093
  int32_t code = tjsonAddStringToObject(pJson, jkDropTopicStmtTopicName, pNode->topicName);
×
7094
  if (TSDB_CODE_SUCCESS == code) {
×
7095
    code = tjsonAddBoolToObject(pJson, jkDropTopicStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7096
  }
7097

7098
  return code;
×
7099
}
7100

7101
static int32_t jsonToDropTopicStmt(const SJson* pJson, void* pObj) {
×
7102
  SDropTopicStmt* pNode = (SDropTopicStmt*)pObj;
×
7103

7104
  int32_t code = tjsonGetStringValue(pJson, jkDropTopicStmtTopicName, pNode->topicName);
×
7105
  if (TSDB_CODE_SUCCESS == code) {
×
7106
    code = tjsonGetBoolValue(pJson, jkDropTopicStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7107
  }
7108

7109
  return code;
×
7110
}
7111

7112
static const char* jkDropCGroupStmtTopicName = "TopicName";
7113
static const char* jkDropCGroupStmtConsumerGroup = "ConsumerGroup";
7114
static const char* jkDropCGroupStmtIgnoreNotExists = "IgnoreNotExists";
7115

7116
static int32_t dropConsumerGroupStmtToJson(const void* pObj, SJson* pJson) {
×
7117
  const SDropCGroupStmt* pNode = (const SDropCGroupStmt*)pObj;
×
7118

7119
  int32_t code = tjsonAddStringToObject(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
×
7120
  if (TSDB_CODE_SUCCESS == code) {
×
7121
    code = tjsonAddStringToObject(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
×
7122
  }
7123
  if (TSDB_CODE_SUCCESS == code) {
×
7124
    code = tjsonAddBoolToObject(pJson, jkDropCGroupStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7125
  }
7126

7127
  return code;
×
7128
}
7129

7130
static int32_t jsonToDropConsumerGroupStmt(const SJson* pJson, void* pObj) {
×
7131
  SDropCGroupStmt* pNode = (SDropCGroupStmt*)pObj;
×
7132

7133
  int32_t code = tjsonGetStringValue(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
×
7134
  if (TSDB_CODE_SUCCESS == code) {
×
7135
    code = tjsonGetStringValue(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
×
7136
  }
7137
  if (TSDB_CODE_SUCCESS == code) {
×
7138
    code = tjsonGetBoolValue(pJson, jkDropCGroupStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7139
  }
7140

7141
  return code;
×
7142
}
7143

7144
static const char* jkAlterClusterStmtConfig = "Config";
7145
static const char* jkAlterClusterStmtValue = "Value";
7146

7147
static int32_t alterClusterStmtToJson(const void* pObj, SJson* pJson) {
×
7148
  const SAlterClusterStmt* pNode = (const SAlterClusterStmt*)pObj;
×
7149

7150
  int32_t code = tjsonAddStringToObject(pJson, jkAlterClusterStmtConfig, pNode->config);
×
7151
  if (TSDB_CODE_SUCCESS == code) {
×
7152
    code = tjsonAddStringToObject(pJson, jkAlterClusterStmtValue, pNode->value);
×
7153
  }
7154

7155
  return code;
×
7156
}
7157

7158
static int32_t jsonToAlterClusterStmt(const SJson* pJson, void* pObj) {
×
7159
  SAlterClusterStmt* pNode = (SAlterClusterStmt*)pObj;
×
7160

7161
  int32_t code = tjsonGetStringValue(pJson, jkAlterClusterStmtConfig, pNode->config);
×
7162
  if (TSDB_CODE_SUCCESS == code) {
×
7163
    code = tjsonGetStringValue(pJson, jkAlterClusterStmtValue, pNode->value);
×
7164
  }
7165

7166
  return code;
×
7167
}
7168

7169
static const char* jkAlterLocalStmtConfig = "Config";
7170
static const char* jkAlterLocalStmtValue = "Value";
7171

7172
static int32_t alterLocalStmtToJson(const void* pObj, SJson* pJson) {
×
7173
  const SAlterLocalStmt* pNode = (const SAlterLocalStmt*)pObj;
×
7174

7175
  int32_t code = tjsonAddStringToObject(pJson, jkAlterLocalStmtConfig, pNode->config);
×
7176
  if (TSDB_CODE_SUCCESS == code) {
×
7177
    code = tjsonAddStringToObject(pJson, jkAlterLocalStmtValue, pNode->value);
×
7178
  }
7179

7180
  return code;
×
7181
}
7182

7183
static int32_t jsonToAlterLocalStmt(const SJson* pJson, void* pObj) {
×
7184
  SAlterLocalStmt* pNode = (SAlterLocalStmt*)pObj;
×
7185

7186
  int32_t code = tjsonGetStringValue(pJson, jkAlterLocalStmtConfig, pNode->config);
×
7187
  if (TSDB_CODE_SUCCESS == code) {
×
7188
    code = tjsonGetStringValue(pJson, jkAlterLocalStmtValue, pNode->value);
×
7189
  }
7190

7191
  return code;
×
7192
}
7193

7194
static const char* jkExplainStmtAnalyze = "Analyze";
7195
static const char* jkExplainStmtOptions = "Options";
7196
static const char* jkExplainStmtQuery = "Query";
7197

7198
static int32_t explainStmtToJson(const void* pObj, SJson* pJson) {
×
7199
  const SExplainStmt* pNode = (const SExplainStmt*)pObj;
×
7200

7201
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainStmtAnalyze, pNode->analyze);
×
7202
  if (TSDB_CODE_SUCCESS == code) {
×
7203
    code = tjsonAddObject(pJson, jkExplainStmtOptions, nodeToJson, pNode->pOptions);
×
7204
  }
7205
  if (TSDB_CODE_SUCCESS == code) {
×
7206
    code = tjsonAddObject(pJson, jkExplainStmtQuery, nodeToJson, pNode->pQuery);
×
7207
  }
7208

7209
  return code;
×
7210
}
7211

7212
static int32_t jsonToExplainStmt(const SJson* pJson, void* pObj) {
×
7213
  SExplainStmt* pNode = (SExplainStmt*)pObj;
×
7214

7215
  int32_t code = tjsonGetBoolValue(pJson, jkExplainStmtAnalyze, &pNode->analyze);
×
7216
  if (TSDB_CODE_SUCCESS == code) {
×
7217
    code = jsonToNodeObject(pJson, jkExplainStmtOptions, (SNode**)&pNode->pOptions);
×
7218
  }
7219
  if (TSDB_CODE_SUCCESS == code) {
×
7220
    code = jsonToNodeObject(pJson, jkExplainStmtQuery, &pNode->pQuery);
×
7221
  }
7222

7223
  return code;
×
7224
}
7225

7226
static const char* jkDescribeStmtDbName = "DbName";
7227
static const char* jkDescribeStmtTableName = "TableName";
7228

7229
static int32_t describeStmtToJson(const void* pObj, SJson* pJson) {
×
7230
  const SDescribeStmt* pNode = (const SDescribeStmt*)pObj;
×
7231

7232
  int32_t code = tjsonAddStringToObject(pJson, jkDescribeStmtDbName, pNode->dbName);
×
7233
  if (TSDB_CODE_SUCCESS == code) {
×
7234
    code = tjsonAddStringToObject(pJson, jkDescribeStmtTableName, pNode->tableName);
×
7235
  }
7236

7237
  return code;
×
7238
}
7239

7240
static int32_t jsonToDescribeStmt(const SJson* pJson, void* pObj) {
×
7241
  SDescribeStmt* pNode = (SDescribeStmt*)pObj;
×
7242

7243
  int32_t code = tjsonGetStringValue(pJson, jkDescribeStmtDbName, pNode->dbName);
×
7244
  if (TSDB_CODE_SUCCESS == code) {
×
7245
    code = tjsonGetStringValue(pJson, jkDescribeStmtTableName, pNode->tableName);
×
7246
  }
7247

7248
  return code;
×
7249
}
7250

7251
static const char* jkCompactDatabaseStmtDbName = "DbName";
7252

7253
static int32_t compactDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
7254
  const SCompactDatabaseStmt* pNode = (const SCompactDatabaseStmt*)pObj;
×
7255
  return tjsonAddStringToObject(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
×
7256
}
7257

7258
static int32_t jsonToCompactDatabaseStmt(const SJson* pJson, void* pObj) {
×
7259
  SCompactDatabaseStmt* pNode = (SCompactDatabaseStmt*)pObj;
×
7260
  return tjsonGetStringValue(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
×
7261
}
7262

7263
static int32_t compactVgroupsStmtToJson(const void* pObj, SJson* pJson) {
×
7264
  const SCompactVgroupsStmt* pNode = (const SCompactVgroupsStmt*)pObj;
×
7265
  return 0;
×
7266
}
7267

7268
static int32_t jsonToCompactVgroupsStmt(const SJson* pJson, void* pObj) {
×
7269
  SCompactVgroupsStmt* pNode = (SCompactVgroupsStmt*)pObj;
×
7270
  return 0;
×
7271
}
7272

7273
static const char* jkCreateStreamStmtStreamName = "StreamName";
7274
static const char* jkCreateStreamStmtTargetDbName = "TargetDbName";
7275
static const char* jkCreateStreamStmtTargetTabName = "TargetTabName";
7276
static const char* jkCreateStreamStmtIgnoreExists = "IgnoreExists";
7277
static const char* jkCreateStreamStmtOptions = "Options";
7278
static const char* jkCreateStreamStmtQuery = "Query";
7279
static const char* jkCreateStreamStmtTags = "Tags";
7280
static const char* jkCreateStreamStmtSubtable = "Subtable";
7281
static const char* jkCreateStreamStmtNotifyOptions = "NotifyOptions";
7282

7283
static int32_t createStreamStmtToJson(const void* pObj, SJson* pJson) {
×
7284
  const SCreateStreamStmt* pNode = (const SCreateStreamStmt*)pObj;
×
7285

7286
  int32_t code = tjsonAddStringToObject(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
×
7287
  if (TSDB_CODE_SUCCESS == code) {
×
7288
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
×
7289
  }
7290
  if (TSDB_CODE_SUCCESS == code) {
×
7291
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
×
7292
  }
7293
  if (TSDB_CODE_SUCCESS == code) {
×
7294
    code = tjsonAddBoolToObject(pJson, jkCreateStreamStmtIgnoreExists, pNode->ignoreExists);
×
7295
  }
7296
  if (TSDB_CODE_SUCCESS == code) {
×
7297
    code = tjsonAddObject(pJson, jkCreateStreamStmtOptions, nodeToJson, pNode->pOptions);
×
7298
  }
7299
  if (TSDB_CODE_SUCCESS == code) {
×
7300
    code = tjsonAddObject(pJson, jkCreateStreamStmtQuery, nodeToJson, pNode->pQuery);
×
7301
  }
7302
  if (TSDB_CODE_SUCCESS == code) {
×
7303
    code = nodeListToJson(pJson, jkCreateStreamStmtTags, pNode->pTags);
×
7304
  }
7305
  if (TSDB_CODE_SUCCESS == code) {
×
7306
    code = tjsonAddObject(pJson, jkCreateStreamStmtSubtable, nodeToJson, pNode->pSubtable);
×
7307
  }
7308
  if (TSDB_CODE_SUCCESS == code) {
×
7309
    code = tjsonAddObject(pJson, jkCreateStreamStmtNotifyOptions, nodeToJson, pNode->pNotifyOptions);
×
7310
  }
7311

7312
  return code;
×
7313
}
7314

7315
static int32_t jsonToCreateStreamStmt(const SJson* pJson, void* pObj) {
×
7316
  SCreateStreamStmt* pNode = (SCreateStreamStmt*)pObj;
×
7317

7318
  int32_t code = tjsonGetStringValue(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
×
7319
  if (TSDB_CODE_SUCCESS == code) {
×
7320
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
×
7321
  }
7322
  if (TSDB_CODE_SUCCESS == code) {
×
7323
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
×
7324
  }
7325
  if (TSDB_CODE_SUCCESS == code) {
×
7326
    code = tjsonGetBoolValue(pJson, jkCreateStreamStmtIgnoreExists, &pNode->ignoreExists);
×
7327
  }
7328
  if (TSDB_CODE_SUCCESS == code) {
×
7329
    code = jsonToNodeObject(pJson, jkCreateStreamStmtOptions, (SNode**)&pNode->pOptions);
×
7330
  }
7331
  if (TSDB_CODE_SUCCESS == code) {
×
7332
    code = jsonToNodeObject(pJson, jkCreateStreamStmtQuery, &pNode->pQuery);
×
7333
  }
7334
  if (TSDB_CODE_SUCCESS == code) {
×
7335
    code = jsonToNodeList(pJson, jkCreateStreamStmtTags, &pNode->pTags);
×
7336
  }
7337
  if (TSDB_CODE_SUCCESS == code) {
×
7338
    code = jsonToNodeObject(pJson, jkCreateStreamStmtSubtable, &pNode->pSubtable);
×
7339
  }
7340
  if (TSDB_CODE_SUCCESS == code) {
×
7341
    code = jsonToNodeObject(pJson, jkCreateStreamStmtNotifyOptions, (SNode**)&pNode->pNotifyOptions);
×
7342
  }
7343

7344
  return code;
×
7345
}
7346

7347
static const char* jkDropStreamStmtStreamName = "StreamName";
7348
static const char* jkDropStreamStmtIgnoreNotExists = "IgnoreNotExists";
7349

7350
static int32_t dropStreamStmtToJson(const void* pObj, SJson* pJson) {
×
7351
  const SDropStreamStmt* pNode = (const SDropStreamStmt*)pObj;
×
7352

7353
  int32_t code = tjsonAddStringToObject(pJson, jkDropStreamStmtStreamName, pNode->streamName);
×
7354
  if (TSDB_CODE_SUCCESS == code) {
×
7355
    code = tjsonAddBoolToObject(pJson, jkDropStreamStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7356
  }
7357

7358
  return code;
×
7359
}
7360

7361
static int32_t jsonToDropStreamStmt(const SJson* pJson, void* pObj) {
×
7362
  SDropStreamStmt* pNode = (SDropStreamStmt*)pObj;
×
7363

7364
  int32_t code = tjsonGetStringValue(pJson, jkDropStreamStmtStreamName, pNode->streamName);
×
7365
  if (TSDB_CODE_SUCCESS == code) {
×
7366
    code = tjsonGetBoolValue(pJson, jkDropStreamStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7367
  }
7368

7369
  return code;
×
7370
}
7371

7372
static const char* jkResetStreamStmtStreamName = "StreamName";
7373
static const char* jkResetStreamStmtIgnoreNotExists = "IgnoreNotExists";
7374

7375
static int32_t resetStreamStmtToJson(const void* pObj, SJson* pJson) {
×
7376
  const SResetStreamStmt* pNode = (const SResetStreamStmt*)pObj;
×
7377

7378
  int32_t code = tjsonAddStringToObject(pJson, jkResetStreamStmtStreamName, pNode->streamName);
×
7379
  if (TSDB_CODE_SUCCESS == code) {
×
7380
    code = tjsonAddBoolToObject(pJson, jkResetStreamStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7381
  }
7382

7383
  return code;
×
7384
}
7385

7386
static int32_t jsonToResetStreamStmt(const SJson* pJson, void* pObj) {
×
7387
  SResetStreamStmt* pNode = (SResetStreamStmt*)pObj;
×
7388

7389
  int32_t code = tjsonGetStringValue(pJson, jkResetStreamStmtStreamName, pNode->streamName);
×
7390
  if (TSDB_CODE_SUCCESS == code) {
×
7391
    code = tjsonGetBoolValue(pJson, jkResetStreamStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7392
  }
7393

7394
  return code;
×
7395
}
7396

7397

7398
static const char* jkMergeVgroupStmtVgroupId1 = "VgroupId1";
7399
static const char* jkMergeVgroupStmtVgroupId2 = "VgroupId2";
7400

7401
static int32_t mergeVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
7402
  const SMergeVgroupStmt* pNode = (const SMergeVgroupStmt*)pObj;
×
7403

7404
  int32_t code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId1, pNode->vgId1);
×
7405
  if (TSDB_CODE_SUCCESS == code) {
×
7406
    code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId2, pNode->vgId2);
×
7407
  }
7408

7409
  return code;
×
7410
}
7411

7412
static int32_t jsonToMergeVgroupStmt(const SJson* pJson, void* pObj) {
×
7413
  SMergeVgroupStmt* pNode = (SMergeVgroupStmt*)pObj;
×
7414

7415
  int32_t code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId1, &pNode->vgId1);
×
7416
  if (TSDB_CODE_SUCCESS == code) {
×
7417
    code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId2, &pNode->vgId2);
×
7418
  }
7419

7420
  return code;
×
7421
}
7422

7423
static const char* jkRedistributeVgroupStmtVgroupId = "VgroupId";
7424
static const char* jkRedistributeVgroupStmtDnodeId1 = "DnodeId1";
7425
static const char* jkRedistributeVgroupStmtDnodeId2 = "DnodeId2";
7426
static const char* jkRedistributeVgroupStmtDnodeId3 = "DnodeId3";
7427
static const char* jkRedistributeVgroupStmtDnodes = "Dnodes";
7428

7429
static int32_t redistributeVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
7430
  const SRedistributeVgroupStmt* pNode = (const SRedistributeVgroupStmt*)pObj;
×
7431

7432
  int32_t code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtVgroupId, pNode->vgId);
×
7433
  if (TSDB_CODE_SUCCESS == code) {
×
7434
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId1, pNode->dnodeId1);
×
7435
  }
7436
  if (TSDB_CODE_SUCCESS == code) {
×
7437
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId2, pNode->dnodeId2);
×
7438
  }
7439
  if (TSDB_CODE_SUCCESS == code) {
×
7440
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId3, pNode->dnodeId3);
×
7441
  }
7442
  if (TSDB_CODE_SUCCESS == code) {
×
7443
    code = nodeListToJson(pJson, jkRedistributeVgroupStmtDnodes, pNode->pDnodes);
×
7444
  }
7445

7446
  return code;
×
7447
}
7448

7449
static int32_t jsonToRedistributeVgroupStmt(const SJson* pJson, void* pObj) {
×
7450
  SRedistributeVgroupStmt* pNode = (SRedistributeVgroupStmt*)pObj;
×
7451

7452
  int32_t code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtVgroupId, &pNode->vgId);
×
7453
  if (TSDB_CODE_SUCCESS == code) {
×
7454
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId1, &pNode->dnodeId1);
×
7455
  }
7456
  if (TSDB_CODE_SUCCESS == code) {
×
7457
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId2, &pNode->dnodeId2);
×
7458
  }
7459
  if (TSDB_CODE_SUCCESS == code) {
×
7460
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId3, &pNode->dnodeId3);
×
7461
  }
7462
  if (TSDB_CODE_SUCCESS == code) {
×
7463
    code = jsonToNodeList(pJson, jkRedistributeVgroupStmtDnodes, &pNode->pDnodes);
×
7464
  }
7465

7466
  return code;
×
7467
}
7468

7469
static const char* jkSplitVgroupStmtVgroupId = "VgroupId";
7470

7471
static int32_t splitVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
7472
  const SSplitVgroupStmt* pNode = (const SSplitVgroupStmt*)pObj;
×
7473
  return tjsonAddIntegerToObject(pJson, jkSplitVgroupStmtVgroupId, pNode->vgId);
×
7474
}
7475

7476
static int32_t jsonToSplitVgroupStmt(const SJson* pJson, void* pObj) {
×
7477
  SSplitVgroupStmt* pNode = (SSplitVgroupStmt*)pObj;
×
7478
  return tjsonGetIntValue(pJson, jkSplitVgroupStmtVgroupId, &pNode->vgId);
×
7479
}
7480

7481
static const char* jkGrantStmtUserName = "UserName";
7482
static const char* jkGrantStmtObjName = "ObjName";
7483
static const char* jkGrantStmtPrivileges = "Privileges";
7484

7485
static int32_t grantStmtToJson(const void* pObj, SJson* pJson) {
×
7486
  const SGrantStmt* pNode = (const SGrantStmt*)pObj;
×
7487

7488
  int32_t code = tjsonAddStringToObject(pJson, jkGrantStmtUserName, pNode->userName);
×
7489
  if (TSDB_CODE_SUCCESS == code) {
×
7490
    code = tjsonAddStringToObject(pJson, jkGrantStmtObjName, pNode->objName);
×
7491
  }
7492
  if (TSDB_CODE_SUCCESS == code) {
×
7493
    code = tjsonAddIntegerToObject(pJson, jkGrantStmtPrivileges, pNode->privileges);
×
7494
  }
7495

7496
  return code;
×
7497
}
7498

7499
static int32_t jsonToGrantStmt(const SJson* pJson, void* pObj) {
×
7500
  SGrantStmt* pNode = (SGrantStmt*)pObj;
×
7501

7502
  int32_t code = tjsonGetStringValue(pJson, jkGrantStmtUserName, pNode->userName);
×
7503
  if (TSDB_CODE_SUCCESS == code) {
×
7504
    code = tjsonGetStringValue(pJson, jkGrantStmtObjName, pNode->objName);
×
7505
  }
7506
  if (TSDB_CODE_SUCCESS == code) {
×
7507
    code = tjsonGetBigIntValue(pJson, jkGrantStmtPrivileges, &pNode->privileges);
×
7508
  }
7509

7510
  return code;
×
7511
}
7512

7513
static int32_t revokeStmtToJson(const void* pObj, SJson* pJson) { return grantStmtToJson(pObj, pJson); }
×
7514

7515
static int32_t jsonToRevokeStmt(const SJson* pJson, void* pObj) { return jsonToGrantStmt(pJson, pObj); }
×
7516

7517
static const char* jkShowStmtDbName = "DbName";
7518
static const char* jkShowStmtTbName = "TbName";
7519
static const char* jkShowStmtTableCondType = "TableCondType";
7520

7521
static int32_t showStmtToJson(const void* pObj, SJson* pJson) {
×
7522
  const SShowStmt* pNode = (const SShowStmt*)pObj;
×
7523

7524
  int32_t code = tjsonAddObject(pJson, jkShowStmtDbName, nodeToJson, pNode->pDbName);
×
7525
  if (TSDB_CODE_SUCCESS == code) {
×
7526
    code = tjsonAddObject(pJson, jkShowStmtTbName, nodeToJson, pNode->pTbName);
×
7527
  }
7528
  if (TSDB_CODE_SUCCESS == code) {
×
7529
    code = tjsonAddIntegerToObject(pJson, jkShowStmtTableCondType, pNode->tableCondType);
×
7530
  }
7531

7532
  return code;
×
7533
}
7534

7535
static int32_t jsonToShowStmt(const SJson* pJson, void* pObj) {
×
7536
  SShowStmt* pNode = (SShowStmt*)pObj;
×
7537

7538
  int32_t code = jsonToNodeObject(pJson, jkShowStmtDbName, &pNode->pDbName);
×
7539
  if (TSDB_CODE_SUCCESS == code) {
×
7540
    code = jsonToNodeObject(pJson, jkShowStmtTbName, &pNode->pTbName);
×
7541
  }
7542
  if (TSDB_CODE_SUCCESS == code) {
×
7543
    tjsonGetNumberValue(pJson, jkShowStmtTableCondType, pNode->tableCondType, code);
×
7544
  }
7545

7546
  return code;
×
7547
}
7548

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

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

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

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

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

7559
static int32_t jsonToShowQnodesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7560

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

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

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

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

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

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

7573
static int32_t showClusterStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7574

7575
static int32_t jsonToShowClusterStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7576

7577
static int32_t showDatabasesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7578

7579
static int32_t jsonToShowDatabasesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7580

7581
static int32_t showFunctionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7582

7583
static int32_t jsonToShowFunctionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7584

7585
static int32_t showIndexesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7586

7587
static int32_t jsonToShowIndexesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7588

7589
static int32_t showStablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7590

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

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

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

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

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

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

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

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

7607
static int32_t jsonToShowUsersStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7608

7609
static int32_t showVgroupsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7610

7611
static int32_t jsonToShowVgroupsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7612

7613
static int32_t showConsumersStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7614

7615
static int32_t jsonToShowConsumersStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7616

7617
static int32_t showVariablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7618

7619
static int32_t jsonToShowVariablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7620

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

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

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

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

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

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

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

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

7637
static int32_t showUsageStmtStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7638
static int32_t jsonToShowUsageStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7639

7640
static const char* jkShowDnodeVariablesStmtDnodeId = "DnodeId";
7641
static const char* jkShowDnodeVariablesStmtLikePattern = "LikePattern";
7642

7643
static int32_t showDnodeVariablesStmtToJson(const void* pObj, SJson* pJson) {
×
7644
  const SShowDnodeVariablesStmt* pNode = (const SShowDnodeVariablesStmt*)pObj;
×
7645

7646
  int32_t code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtDnodeId, nodeToJson, pNode->pDnodeId);
×
7647
  if (TSDB_CODE_SUCCESS == code) {
×
7648
    code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtLikePattern, nodeToJson, pNode->pLikePattern);
×
7649
  }
7650

7651
  return code;
×
7652
}
7653

7654
static int32_t jsonToShowDnodeVariablesStmt(const SJson* pJson, void* pObj) {
×
7655
  SShowDnodeVariablesStmt* pNode = (SShowDnodeVariablesStmt*)pObj;
×
7656

7657
  int32_t code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtDnodeId, &pNode->pDnodeId);
×
7658
  if (TSDB_CODE_SUCCESS == code) {
×
7659
    code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtLikePattern, &pNode->pLikePattern);
×
7660
  }
7661

7662
  return code;
×
7663
}
7664

7665
static int32_t showTransactionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7666

7667
static int32_t jsonToShowTransactionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7668

7669
static int32_t showSubscriptionsStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7670

7671
static int32_t jsonToShowSubscriptionsStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7672

7673
static const char* jkShowVnodesStmtDnodeId = "DnodeId";
7674
static const char* jkShowVnodesStmtDnodeEndpoint = "DnodeEndpoint";
7675

7676
static int32_t showVnodesStmtToJson(const void* pObj, SJson* pJson) {
×
7677
  const SShowVnodesStmt* pNode = (const SShowVnodesStmt*)pObj;
×
7678

7679
  int32_t code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeId, nodeToJson, pNode->pDnodeId);
×
7680
  if (TSDB_CODE_SUCCESS == code) {
×
7681
    code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeEndpoint, nodeToJson, pNode->pDnodeEndpoint);
×
7682
  }
7683

7684
  return code;
×
7685
}
7686

7687
static int32_t jsonToShowVnodesStmt(const SJson* pJson, void* pObj) {
×
7688
  SShowVnodesStmt* pNode = (SShowVnodesStmt*)pObj;
×
7689

7690
  int32_t code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeId, &pNode->pDnodeId);
×
7691
  if (TSDB_CODE_SUCCESS == code) {
×
7692
    code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeEndpoint, &pNode->pDnodeEndpoint);
×
7693
  }
7694

7695
  return code;
×
7696
}
7697

7698
static int32_t showUserPrivilegesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7699

7700
static int32_t jsonToShowUserPrivilegesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7701

7702
static const char* jkShowCreateDatabaseStmtDbName = "DbName";
7703

7704
static int32_t showCreateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
7705
  const SShowCreateDatabaseStmt* pNode = (const SShowCreateDatabaseStmt*)pObj;
×
7706
  return tjsonAddStringToObject(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
×
7707
}
7708

7709
static int32_t jsonToShowCreateDatabaseStmt(const SJson* pJson, void* pObj) {
×
7710
  SShowCreateDatabaseStmt* pNode = (SShowCreateDatabaseStmt*)pObj;
×
7711
  return tjsonGetStringValue(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
×
7712
}
7713

7714
static const char* jkShowCreateTableStmtDbName = "DbName";
7715
static const char* jkShowCreateTableStmtTableName = "TableName";
7716

7717
static int32_t showCreateTableStmtToJson(const void* pObj, SJson* pJson) {
×
7718
  const SShowCreateTableStmt* pNode = (const SShowCreateTableStmt*)pObj;
×
7719

7720
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
×
7721
  if (TSDB_CODE_SUCCESS == code) {
×
7722
    code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
×
7723
  }
7724

7725
  return code;
×
7726
}
7727

7728
static int32_t jsonToShowCreateTableStmt(const SJson* pJson, void* pObj) {
×
7729
  SShowCreateTableStmt* pNode = (SShowCreateTableStmt*)pObj;
×
7730

7731
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
×
7732
  if (TSDB_CODE_SUCCESS == code) {
×
7733
    code = tjsonGetStringValue(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
×
7734
  }
7735

7736
  return code;
×
7737
}
7738

7739
static int32_t showCreateStableStmtToJson(const void* pObj, SJson* pJson) {
×
7740
  return showCreateTableStmtToJson(pObj, pJson);
×
7741
}
7742

7743
static int32_t jsonToShowCreateStableStmt(const SJson* pJson, void* pObj) {
×
7744
  return jsonToShowCreateTableStmt(pJson, pObj);
×
7745
}
7746

7747
static const char* jkShowCreateViewStmtDbName = "DbName";
7748
static const char* jkShowCreateViewStmtViewName = "ViewName";
7749

7750
static int32_t showCreateViewStmtToJson(const void* pObj, SJson* pJson) {
×
7751
  const SShowCreateViewStmt* pNode = (const SShowCreateViewStmt*)pObj;
×
7752

7753
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
7754
  if (TSDB_CODE_SUCCESS == code) {
×
7755
    code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
7756
  }
7757

7758
  return code;
×
7759
}
7760

7761
static int32_t jsonToShowCreateViewStmt(const SJson* pJson, void* pObj) {
×
7762
  SShowCreateViewStmt* pNode = (SShowCreateViewStmt*)pObj;
×
7763

7764
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
7765
  if (TSDB_CODE_SUCCESS == code) {
×
7766
    code = tjsonGetStringValue(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
7767
  }
7768

7769
  return code;
×
7770
}
7771

7772
static const char* jkShowTableDistributedStmtDbName = "DbName";
7773
static const char* jkShowTableDistributedStmtTableName = "TableName";
7774

7775
static int32_t showTableDistributedStmtToJson(const void* pObj, SJson* pJson) {
×
7776
  const SShowTableDistributedStmt* pNode = (const SShowTableDistributedStmt*)pObj;
×
7777

7778
  int32_t code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
×
7779
  if (TSDB_CODE_SUCCESS == code) {
×
7780
    code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
×
7781
  }
7782

7783
  return code;
×
7784
}
7785

7786
static int32_t jsonToShowTableDistributedStmt(const SJson* pJson, void* pObj) {
×
7787
  SShowTableDistributedStmt* pNode = (SShowTableDistributedStmt*)pObj;
×
7788

7789
  int32_t code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
×
7790
  if (TSDB_CODE_SUCCESS == code) {
×
7791
    code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
×
7792
  }
7793

7794
  return code;
×
7795
}
7796

7797
static int32_t showLocalVariablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7798

7799
static int32_t jsonToShowLocalVariablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7800

7801
static const char* jkShowTableTagsStmtDbName = "DbName";
7802
static const char* jkShowTableTagsStmtTbName = "TbName";
7803
static const char* jkShowTableTagsStmtTags = "Tags";
7804

7805
static int32_t showTableTagsStmtToJson(const void* pObj, SJson* pJson) {
×
7806
  const SShowTableTagsStmt* pNode = (const SShowTableTagsStmt*)pObj;
×
7807

7808
  int32_t code = tjsonAddObject(pJson, jkShowTableTagsStmtDbName, nodeToJson, pNode->pDbName);
×
7809
  if (TSDB_CODE_SUCCESS == code) {
×
7810
    code = tjsonAddObject(pJson, jkShowTableTagsStmtTbName, nodeToJson, pNode->pTbName);
×
7811
  }
7812
  if (TSDB_CODE_SUCCESS == code) {
×
7813
    code = nodeListToJson(pJson, jkShowTableTagsStmtTags, pNode->pTags);
×
7814
  }
7815

7816
  return code;
×
7817
}
7818

7819
static int32_t jsonToShowTableTagsStmt(const SJson* pJson, void* pObj) {
×
7820
  SShowTableTagsStmt* pNode = (SShowTableTagsStmt*)pObj;
×
7821

7822
  int32_t code = jsonToNodeObject(pJson, jkShowTableTagsStmtDbName, &pNode->pDbName);
×
7823
  if (TSDB_CODE_SUCCESS == code) {
×
7824
    code = jsonToNodeObject(pJson, jkShowTableTagsStmtTbName, &pNode->pTbName);
×
7825
  }
7826
  if (TSDB_CODE_SUCCESS == code) {
×
7827
    code = jsonToNodeList(pJson, jkShowTableTagsStmtTags, &pNode->pTags);
×
7828
  }
7829

7830
  return code;
×
7831
}
7832

7833
static const char* jkDeleteStmtFromTable = "FromTable";
7834
static const char* jkDeleteStmtWhere = "Where";
7835
static const char* jkDeleteStmtCountFunc = "CountFunc";
7836
static const char* jkDeleteStmtTagIndexCond = "TagIndexCond";
7837
static const char* jkDeleteStmtTimeRangeStartKey = "TimeRangeStartKey";
7838
static const char* jkDeleteStmtTimeRangeEndKey = "TimeRangeEndKey";
7839
static const char* jkDeleteStmtPrecision = "Precision";
7840
static const char* jkDeleteStmtDeleteZeroRows = "DeleteZeroRows";
7841

7842
static int32_t deleteStmtToJson(const void* pObj, SJson* pJson) {
×
7843
  const SDeleteStmt* pNode = (const SDeleteStmt*)pObj;
×
7844

7845
  int32_t code = tjsonAddObject(pJson, jkDeleteStmtFromTable, nodeToJson, pNode->pFromTable);
×
7846
  if (TSDB_CODE_SUCCESS == code) {
×
7847
    code = tjsonAddObject(pJson, jkDeleteStmtWhere, nodeToJson, pNode->pWhere);
×
7848
  }
7849
  if (TSDB_CODE_SUCCESS == code) {
×
7850
    code = tjsonAddObject(pJson, jkDeleteStmtCountFunc, nodeToJson, pNode->pCountFunc);
×
7851
  }
7852
  if (TSDB_CODE_SUCCESS == code) {
×
7853
    code = tjsonAddObject(pJson, jkDeleteStmtTagIndexCond, nodeToJson, pNode->pTagCond);
×
7854
  }
7855
  if (TSDB_CODE_SUCCESS == code) {
×
7856
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeStartKey, pNode->timeRange.skey);
×
7857
  }
7858
  if (TSDB_CODE_SUCCESS == code) {
×
7859
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeEndKey, pNode->timeRange.ekey);
×
7860
  }
7861
  if (TSDB_CODE_SUCCESS == code) {
×
7862
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtPrecision, pNode->precision);
×
7863
  }
7864
  if (TSDB_CODE_SUCCESS == code) {
×
7865
    code = tjsonAddBoolToObject(pJson, jkDeleteStmtDeleteZeroRows, pNode->deleteZeroRows);
×
7866
  }
7867

7868
  return code;
×
7869
}
7870

7871
static int32_t jsonToDeleteStmt(const SJson* pJson, void* pObj) {
×
7872
  SDeleteStmt* pNode = (SDeleteStmt*)pObj;
×
7873

7874
  int32_t code = jsonToNodeObject(pJson, jkDeleteStmtFromTable, &pNode->pFromTable);
×
7875
  if (TSDB_CODE_SUCCESS == code) {
×
7876
    code = jsonToNodeObject(pJson, jkDeleteStmtWhere, &pNode->pWhere);
×
7877
  }
7878
  if (TSDB_CODE_SUCCESS == code) {
×
7879
    code = jsonToNodeObject(pJson, jkDeleteStmtCountFunc, &pNode->pCountFunc);
×
7880
  }
7881
  if (TSDB_CODE_SUCCESS == code) {
×
7882
    code = jsonToNodeObject(pJson, jkDeleteStmtTagIndexCond, &pNode->pTagCond);
×
7883
  }
7884
  if (TSDB_CODE_SUCCESS == code) {
×
7885
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeStartKey, &pNode->timeRange.skey);
×
7886
  }
7887
  if (TSDB_CODE_SUCCESS == code) {
×
7888
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeEndKey, &pNode->timeRange.ekey);
×
7889
  }
7890
  if (TSDB_CODE_SUCCESS == code) {
×
7891
    code = tjsonGetUTinyIntValue(pJson, jkDeleteStmtPrecision, &pNode->precision);
×
7892
  }
7893
  if (TSDB_CODE_SUCCESS == code) {
×
7894
    code = tjsonGetBoolValue(pJson, jkDeleteStmtDeleteZeroRows, &pNode->deleteZeroRows);
×
7895
  }
7896

7897
  return code;
×
7898
}
7899

7900
static const char* jkInsertStmtTable = "Table";
7901
static const char* jkInsertStmtCols = "Cols";
7902
static const char* jkInsertStmtQuery = "Query";
7903
static const char* jkInsertStmtPrecision = "Precision";
7904

7905
static int32_t insertStmtToJson(const void* pObj, SJson* pJson) {
×
7906
  const SInsertStmt* pNode = (const SInsertStmt*)pObj;
×
7907

7908
  int32_t code = tjsonAddObject(pJson, jkInsertStmtTable, nodeToJson, pNode->pTable);
×
7909
  if (TSDB_CODE_SUCCESS == code) {
×
7910
    code = nodeListToJson(pJson, jkInsertStmtCols, pNode->pCols);
×
7911
  }
7912
  if (TSDB_CODE_SUCCESS == code) {
×
7913
    code = tjsonAddObject(pJson, jkInsertStmtQuery, nodeToJson, pNode->pQuery);
×
7914
  }
7915
  if (TSDB_CODE_SUCCESS == code) {
×
7916
    code = tjsonAddIntegerToObject(pJson, jkInsertStmtPrecision, pNode->precision);
×
7917
  }
7918

7919
  return code;
×
7920
}
7921

7922
static int32_t jsonToInsertStmt(const SJson* pJson, void* pObj) {
×
7923
  SInsertStmt* pNode = (SInsertStmt*)pObj;
×
7924

7925
  int32_t code = jsonToNodeObject(pJson, jkInsertStmtTable, &pNode->pTable);
×
7926
  if (TSDB_CODE_SUCCESS == code) {
×
7927
    code = jsonToNodeList(pJson, jkInsertStmtCols, &pNode->pCols);
×
7928
  }
7929
  if (TSDB_CODE_SUCCESS == code) {
×
7930
    code = jsonToNodeObject(pJson, jkInsertStmtQuery, &pNode->pQuery);
×
7931
  }
7932
  if (TSDB_CODE_SUCCESS == code) {
×
7933
    code = tjsonGetUTinyIntValue(pJson, jkInsertStmtPrecision, &pNode->precision);
×
7934
  }
7935

7936
  return code;
×
7937
}
7938

7939
static const char* jkTSMAOptionFuncs = "Funcs";
7940
static const char* jkTSMAOptionCols = "Cols";
7941
static const char* jkTSMAOptionInterval = "Interval";
7942
static const char* jkTSMAOptionTsPrecision = "Precision";
7943

7944
static int32_t tsmaOptionToJson(const void* pObj, SJson* pJson) {
×
7945
  const STSMAOptions* pNode = (const STSMAOptions*)pObj;
×
7946
  int32_t             code = nodeListToJson(pJson, jkTSMAOptionFuncs, pNode->pFuncs);
×
7947
  if (TSDB_CODE_SUCCESS == code) {
×
7948
    code = tjsonAddObject(pJson, jkTSMAOptionInterval, nodeToJson, pNode->pInterval);
×
7949
  }
7950
  if (TSDB_CODE_SUCCESS == code) {
×
7951
    code = tjsonAddIntegerToObject(pJson, jkTSMAOptionTsPrecision, pNode->tsPrecision);
×
7952
  }
7953
  return code;
×
7954
}
7955

7956
static int32_t jsonToTSMAOption(const SJson* pJson, void* pObj) {
×
7957
  STSMAOptions* pNode = (STSMAOptions*)pObj;
×
7958
  int32_t       code = jsonToNodeList(pJson, jkTSMAOptionFuncs, &pNode->pFuncs);
×
7959
  if (TSDB_CODE_SUCCESS == code) {
×
7960
    code = jsonToNodeObject(pJson, jkTSMAOptionInterval, &pNode->pInterval);
×
7961
  }
7962
  if (TSDB_CODE_SUCCESS == code) {
×
7963
    code = tjsonGetUTinyIntValue(pJson, jkTSMAOptionTsPrecision, &pNode->tsPrecision);
×
7964
  }
7965
  return code;
×
7966
}
7967

7968
static const char* jkCreateTSMAStmtIgnoreExists = "IgnoreExists";
7969
static const char* jkCreateTSMAStmtTsmaName = "TSMAName";
7970
static const char* jkCreateTSMAStmtDbName = "DbName";
7971
static const char* jkCreateTSMAStmtTableName = "TableName";
7972
static const char* jkCreateTSMAStmtpOptions = "Options";
7973

7974
static int32_t createTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
7975
  const SCreateTSMAStmt* pNode = (const SCreateTSMAStmt*)pObj;
×
7976
  int32_t                code = tjsonAddBoolToObject(pJson, jkCreateTSMAStmtIgnoreExists, pNode->ignoreExists);
×
7977
  if (TSDB_CODE_SUCCESS == code) {
×
7978
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
7979
  }
7980
  if (TSDB_CODE_SUCCESS == code) {
×
7981
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
7982
  }
7983
  if (TSDB_CODE_SUCCESS == code) {
×
7984
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
7985
  }
7986
  if (TSDB_CODE_SUCCESS == code) {
×
7987
    code = tjsonAddObject(pJson, jkCreateTSMAStmtpOptions, nodeToJson, pNode->pOptions);
×
7988
  }
7989
  return code;
×
7990
}
7991

7992
static int32_t jsonToCreateTSMAStmt(const SJson* pJson, void* pObj) {
×
7993
  SCreateTSMAStmt* pNode = (SCreateTSMAStmt*)pObj;
×
7994
  int32_t          code = tjsonGetBoolValue(pJson, jkCreateTSMAStmtIgnoreExists, &pNode->ignoreExists);
×
7995
  if (TSDB_CODE_SUCCESS == code) {
×
7996
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
7997
  }
7998
  if (TSDB_CODE_SUCCESS == code) {
×
7999
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
8000
  }
8001
  if (TSDB_CODE_SUCCESS == code) {
×
8002
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
8003
  }
8004
  if (TSDB_CODE_SUCCESS == code) {
×
8005
    code = jsonToNodeObject(pJson, jkCreateTSMAStmtpOptions, (SNode**)&pNode->pOptions);
×
8006
  }
8007
  return code;
×
8008
}
8009

8010
static const char* jkDropTSMAStmtIgnoreNotExists = "IgnoreNotExists";
8011
static const char* jkDropTSMAStmtDbName = "DbName";
8012
static const char* jkDropTSMAStmtTsmaName = "TSMAName";
8013

8014
static int32_t dropTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
8015
  const SDropTSMAStmt* pNode = (const SDropTSMAStmt*)pObj;
×
8016
  int32_t              code = tjsonAddBoolToObject(pJson, jkDropTSMAStmtIgnoreNotExists, pNode->ignoreNotExists);
×
8017
  if (TSDB_CODE_SUCCESS == code) {
×
8018
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
8019
  }
8020
  if (TSDB_CODE_SUCCESS == code) {
×
8021
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
8022
  }
8023
  return code;
×
8024
}
8025

8026
static int32_t jsonToDropTSMAStmt(const SJson* pJson, void* pObj) {
×
8027
  SDropTSMAStmt* pNode = (SDropTSMAStmt*)pObj;
×
8028
  int32_t        code = tjsonGetBoolValue(pJson, jkDropTSMAStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
8029
  if (TSDB_CODE_SUCCESS == code) {
×
8030
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
8031
  }
8032
  if (TSDB_CODE_SUCCESS == code) {
×
8033
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
8034
  }
8035
  return code;
×
8036
}
8037

8038
static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
2,535,254✔
8039
  switch (nodeType(pObj)) {
2,535,254!
8040
    case QUERY_NODE_COLUMN:
764,890✔
8041
      return columnNodeToJson(pObj, pJson);
764,890✔
8042
    case QUERY_NODE_VALUE:
41,953✔
8043
      return valueNodeToJson(pObj, pJson);
41,953✔
8044
    case QUERY_NODE_OPERATOR:
9,130✔
8045
      return operatorNodeToJson(pObj, pJson);
9,130✔
8046
    case QUERY_NODE_LOGIC_CONDITION:
1,421✔
8047
      return logicConditionNodeToJson(pObj, pJson);
1,421✔
8048
    case QUERY_NODE_FUNCTION:
366,760✔
8049
      return functionNodeToJson(pObj, pJson);
366,760✔
8050
    case QUERY_NODE_REAL_TABLE:
1,607✔
8051
      return realTableNodeToJson(pObj, pJson);
1,607✔
8052
    case QUERY_NODE_TEMP_TABLE:
1✔
8053
      return tempTableNodeToJson(pObj, pJson);
1✔
8054
    case QUERY_NODE_JOIN_TABLE:
×
8055
      return joinTableNodeToJson(pObj, pJson);
×
8056
    case QUERY_NODE_GROUPING_SET:
×
8057
      return groupingSetNodeToJson(pObj, pJson);
×
8058
    case QUERY_NODE_ORDER_BY_EXPR:
×
8059
      return orderByExprNodeToJson(pObj, pJson);
×
8060
    case QUERY_NODE_LIMIT:
×
8061
      return limitNodeToJson(pObj, pJson);
×
8062
    case QUERY_NODE_STATE_WINDOW:
69✔
8063
      return stateWindowNodeToJson(pObj, pJson);
69✔
8064
    case QUERY_NODE_SESSION_WINDOW:
98✔
8065
      return sessionWindowNodeToJson(pObj, pJson);
98✔
8066
    case QUERY_NODE_INTERVAL_WINDOW:
729✔
8067
      return intervalWindowNodeToJson(pObj, pJson);
729✔
8068
    case QUERY_NODE_NODE_LIST:
3,267✔
8069
      return nodeListNodeToJson(pObj, pJson);
3,267✔
8070
    case QUERY_NODE_FILL:
243✔
8071
      return fillNodeToJson(pObj, pJson);
243✔
8072
    case QUERY_NODE_RAW_EXPR:
×
8073
      break;
×
8074
    case QUERY_NODE_TARGET:
623,146✔
8075
      return targetNodeToJson(pObj, pJson);
623,146✔
8076
    case QUERY_NODE_DATABLOCK_DESC:
28,982✔
8077
      return dataBlockDescNodeToJson(pObj, pJson);
28,982✔
8078
    case QUERY_NODE_SLOT_DESC:
641,683✔
8079
      return slotDescNodeToJson(pObj, pJson);
641,683✔
8080
    case QUERY_NODE_COLUMN_DEF:
×
8081
      return columnDefNodeToJson(pObj, pJson);
×
8082
    case QUERY_NODE_DOWNSTREAM_SOURCE:
948✔
8083
      return downstreamSourceNodeToJson(pObj, pJson);
948✔
8084
    case QUERY_NODE_DATABASE_OPTIONS:
×
8085
      return databaseOptionsToJson(pObj, pJson);
×
8086
    case QUERY_NODE_TABLE_OPTIONS:
×
8087
      return tableOptionsToJson(pObj, pJson);
×
8088
    case QUERY_NODE_COLUMN_OPTIONS:
×
8089
      return columnOptionsToJson(pObj, pJson);
×
8090
    case QUERY_NODE_INDEX_OPTIONS:
×
8091
      return indexOptionsToJson(pObj, pJson);
×
8092
    case QUERY_NODE_EXPLAIN_OPTIONS:
×
8093
      return explainOptionsToJson(pObj, pJson);
×
8094
    case QUERY_NODE_STREAM_OPTIONS:
×
8095
      return streamOptionsToJson(pObj, pJson);
×
8096
    case QUERY_NODE_LEFT_VALUE:
×
8097
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to serialize.
×
8098
    case QUERY_NODE_WHEN_THEN:
45✔
8099
      return whenThenNodeToJson(pObj, pJson);
45✔
8100
    case QUERY_NODE_CASE_WHEN:
45✔
8101
      return caseWhenNodeToJson(pObj, pJson);
45✔
8102
    case QUERY_NODE_EVENT_WINDOW:
17✔
8103
      return eventWindowNodeToJson(pObj, pJson);
17✔
8104
    case QUERY_NODE_WINDOW_OFFSET:
×
8105
      return windowOffsetNodeToJson(pObj, pJson);
×
8106
    case QUERY_NODE_COUNT_WINDOW:
15✔
8107
      return countWindowNodeToJson(pObj, pJson);
15✔
8108
    case QUERY_NODE_ANOMALY_WINDOW:
×
8109
      return anomalyWindowNodeToJson(pObj, pJson);
×
8110
    case QUERY_NODE_STREAM_NOTIFY_OPTIONS:
×
8111
      return streamNotifyOptionsToJson(pObj, pJson);
×
8112
    case QUERY_NODE_SET_OPERATOR:
×
8113
      return setOperatorToJson(pObj, pJson);
×
8114
    case QUERY_NODE_SELECT_STMT:
1,608✔
8115
      return selectStmtToJson(pObj, pJson);
1,608✔
8116
    case QUERY_NODE_VNODE_MODIFY_STMT:
×
8117
      return vnodeModifyStmtToJson(pObj, pJson);
×
8118
    case QUERY_NODE_CREATE_DATABASE_STMT:
×
8119
      return createDatabaseStmtToJson(pObj, pJson);
×
8120
    case QUERY_NODE_ALTER_DATABASE_STMT:
×
8121
      return alterDatabaseStmtToJson(pObj, pJson);
×
8122
    case QUERY_NODE_TRIM_DATABASE_STMT:
×
8123
      return trimDatabaseStmtToJson(pObj, pJson);
×
8124
    case QUERY_NODE_S3MIGRATE_DATABASE_STMT:
×
8125
      return s3migrateDatabaseStmtToJson(pObj, pJson);
×
8126
    case QUERY_NODE_CREATE_TABLE_STMT:
×
8127
      return createTableStmtToJson(pObj, pJson);
×
8128
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
×
8129
      return createSubTableClauseToJson(pObj, pJson);
×
8130
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
×
8131
      return createMultiTablesStmtToJson(pObj, pJson);
×
8132
    case QUERY_NODE_DROP_TABLE_CLAUSE:
×
8133
      return dropTableClauseToJson(pObj, pJson);
×
8134
    case QUERY_NODE_DROP_TABLE_STMT:
×
8135
      return dropTableStmtToJson(pObj, pJson);
×
8136
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
×
8137
      return dropStableStmtToJson(pObj, pJson);
×
8138
    case QUERY_NODE_ALTER_TABLE_STMT:
×
8139
      return alterTableStmtToJson(pObj, pJson);
×
8140
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
×
8141
      return alterStableStmtToJson(pObj, pJson);
×
8142
    case QUERY_NODE_CREATE_USER_STMT:
×
8143
      return createUserStmtToJson(pObj, pJson);
×
8144
    case QUERY_NODE_ALTER_USER_STMT:
×
8145
      return alterUserStmtToJson(pObj, pJson);
×
8146
    case QUERY_NODE_DROP_USER_STMT:
×
8147
      return dropUserStmtToJson(pObj, pJson);
×
8148
    case QUERY_NODE_USE_DATABASE_STMT:
×
8149
      return useDatabaseStmtToJson(pObj, pJson);
×
8150
    case QUERY_NODE_CREATE_DNODE_STMT:
×
8151
      return createDnodeStmtToJson(pObj, pJson);
×
8152
    case QUERY_NODE_DROP_DNODE_STMT:
×
8153
      return dropDnodeStmtToJson(pObj, pJson);
×
8154
    case QUERY_NODE_ALTER_DNODE_STMT:
×
8155
      return alterDnodeStmtToJson(pObj, pJson);
×
8156
    case QUERY_NODE_CREATE_INDEX_STMT:
×
8157
      return createIndexStmtToJson(pObj, pJson);
×
8158
    case QUERY_NODE_DROP_INDEX_STMT:
×
8159
      return dropIndexStmtToJson(pObj, pJson);
×
8160
    case QUERY_NODE_CREATE_QNODE_STMT:
×
8161
      return createQnodeStmtToJson(pObj, pJson);
×
8162
    case QUERY_NODE_DROP_QNODE_STMT:
×
8163
      return dropQnodeStmtToJson(pObj, pJson);
×
8164
    case QUERY_NODE_CREATE_ANODE_STMT:
×
8165
      return createAnodeStmtToJson(pObj, pJson);
×
8166
    case QUERY_NODE_DROP_ANODE_STMT:
×
8167
      return dropAnodeStmtToJson(pObj, pJson);
×
8168
    case QUERY_NODE_UPDATE_ANODE_STMT:
×
8169
      return updateAnodeStmtToJson(pObj, pJson);
×
8170
    case QUERY_NODE_CREATE_SNODE_STMT:
×
8171
      return createSnodeStmtToJson(pObj, pJson);
×
8172
    case QUERY_NODE_DROP_SNODE_STMT:
×
8173
      return dropSnodeStmtToJson(pObj, pJson);
×
8174
    case QUERY_NODE_CREATE_MNODE_STMT:
×
8175
      return createMnodeStmtToJson(pObj, pJson);
×
8176
    case QUERY_NODE_DROP_MNODE_STMT:
×
8177
      return dropMnodeStmtToJson(pObj, pJson);
×
8178
    case QUERY_NODE_CREATE_TOPIC_STMT:
×
8179
      return createTopicStmtToJson(pObj, pJson);
×
8180
    case QUERY_NODE_DROP_TOPIC_STMT:
×
8181
      return dropTopicStmtToJson(pObj, pJson);
×
8182
    case QUERY_NODE_DROP_CGROUP_STMT:
×
8183
      return dropConsumerGroupStmtToJson(pObj, pJson);
×
8184
    case QUERY_NODE_ALTER_LOCAL_STMT:
×
8185
      return alterLocalStmtToJson(pObj, pJson);
×
8186
    case QUERY_NODE_EXPLAIN_STMT:
×
8187
      return explainStmtToJson(pObj, pJson);
×
8188
    case QUERY_NODE_DESCRIBE_STMT:
×
8189
      return describeStmtToJson(pObj, pJson);
×
8190
    case QUERY_NODE_COMPACT_DATABASE_STMT:
×
8191
      return compactDatabaseStmtToJson(pObj, pJson);
×
8192
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
×
8193
      return compactVgroupsStmtToJson(pObj, pJson);
×
8194
    case QUERY_NODE_CREATE_STREAM_STMT:
×
8195
      return createStreamStmtToJson(pObj, pJson);
×
8196
    case QUERY_NODE_DROP_STREAM_STMT:
×
8197
      return dropStreamStmtToJson(pObj, pJson);
×
8198
    case QUERY_NODE_BALANCE_VGROUP_STMT:
×
8199
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to serialize.
×
8200
    case QUERY_NODE_ASSIGN_LEADER_STMT:
×
8201
      return TSDB_CODE_SUCCESS;
×
8202
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
×
8203
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to serialize.
×
8204
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
8205
      return TSDB_CODE_SUCCESS;
×
8206
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
8207
      return mergeVgroupStmtToJson(pObj, pJson);
×
8208
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
×
8209
      return redistributeVgroupStmtToJson(pObj, pJson);
×
8210
    case QUERY_NODE_SPLIT_VGROUP_STMT:
×
8211
      return splitVgroupStmtToJson(pObj, pJson);
×
8212
    case QUERY_NODE_GRANT_STMT:
×
8213
      return grantStmtToJson(pObj, pJson);
×
8214
    case QUERY_NODE_REVOKE_STMT:
×
8215
      return revokeStmtToJson(pObj, pJson);
×
8216
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
8217
      return alterClusterStmtToJson(pObj, pJson);
×
8218
    case QUERY_NODE_SHOW_DNODES_STMT:
×
8219
      return showDnodesStmtToJson(pObj, pJson);
×
8220
    case QUERY_NODE_SHOW_MNODES_STMT:
×
8221
      return showMnodesStmtToJson(pObj, pJson);
×
8222
    case QUERY_NODE_SHOW_QNODES_STMT:
×
8223
      return showQnodesStmtToJson(pObj, pJson);
×
8224
    case QUERY_NODE_SHOW_ANODES_STMT:
×
8225
      return showAnodesStmtToJson(pObj, pJson);
×
8226
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
8227
      return showAnodesFullStmtToJson(pObj, pJson);
×
8228
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
8229
      return showArbGroupsStmtToJson(pObj, pJson);
×
8230
    case QUERY_NODE_SHOW_CLUSTER_STMT:
×
8231
      return showClusterStmtToJson(pObj, pJson);
×
8232
    case QUERY_NODE_SHOW_DATABASES_STMT:
×
8233
      return showDatabasesStmtToJson(pObj, pJson);
×
8234
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
×
8235
      return showFunctionsStmtToJson(pObj, pJson);
×
8236
    case QUERY_NODE_SHOW_INDEXES_STMT:
×
8237
      return showIndexesStmtToJson(pObj, pJson);
×
8238
    case QUERY_NODE_SHOW_STABLES_STMT:
×
8239
      return showStablesStmtToJson(pObj, pJson);
×
8240
    case QUERY_NODE_SHOW_STREAMS_STMT:
×
8241
      return showStreamsStmtToJson(pObj, pJson);
×
8242
    case QUERY_NODE_SHOW_TABLES_STMT:
×
8243
      return showTablesStmtToJson(pObj, pJson);
×
8244
    case QUERY_NODE_SHOW_TAGS_STMT:
×
8245
      return showTagsStmtToJson(pObj, pJson);
×
8246
    case QUERY_NODE_SHOW_USERS_STMT:
×
8247
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
8248
      return showUsersStmtToJson(pObj, pJson);
×
8249
    case QUERY_NODE_SHOW_VGROUPS_STMT:
×
8250
      return showVgroupsStmtToJson(pObj, pJson);
×
8251
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
×
8252
      return showConsumersStmtToJson(pObj, pJson);
×
8253
    case QUERY_NODE_SHOW_VARIABLES_STMT:
×
8254
      return showVariablesStmtToJson(pObj, pJson);
×
8255
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
8256
      return showGrantsFullStmtToJson(pObj, pJson);
×
8257
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
8258
      return showGrantsLogsStmtToJson(pObj, pJson);
×
8259
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
8260
      return showClusterMachinesStmtToJson(pObj, pJson);
×
8261
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
8262
      return showEncryptionsStmtToJson(pObj, pJson);
×
8263
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
×
8264
      return showDnodeVariablesStmtToJson(pObj, pJson);
×
8265
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
×
8266
      return showTransactionsStmtToJson(pObj, pJson);
×
8267
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
×
8268
      return showSubscriptionsStmtToJson(pObj, pJson);
×
8269
    case QUERY_NODE_SHOW_VNODES_STMT:
×
8270
      return showVnodesStmtToJson(pObj, pJson);
×
8271
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
×
8272
      return showUserPrivilegesStmtToJson(pObj, pJson);
×
8273
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
×
8274
      return showCreateDatabaseStmtToJson(pObj, pJson);
×
8275
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
×
8276
      return showCreateTableStmtToJson(pObj, pJson);
×
8277
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
×
8278
      return showCreateStableStmtToJson(pObj, pJson);
×
8279
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
8280
      return showCreateViewStmtToJson(pObj, pJson);
×
8281
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
×
8282
      return showTableDistributedStmtToJson(pObj, pJson);
×
8283
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
×
8284
      return showLocalVariablesStmtToJson(pObj, pJson);
×
8285
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
×
8286
      return showTableTagsStmtToJson(pObj, pJson);
×
8287
    case QUERY_NODE_SHOW_USAGE_STMT:
×
8288
      return showUsageStmtStmtToJson(pObj, pJson);
×
8289
    case QUERY_NODE_DELETE_STMT:
×
8290
      return deleteStmtToJson(pObj, pJson);
×
8291
    case QUERY_NODE_INSERT_STMT:
×
8292
      return insertStmtToJson(pObj, pJson);
×
8293
    case QUERY_NODE_LOGIC_PLAN_SCAN:
1,580✔
8294
      return logicScanNodeToJson(pObj, pJson);
1,580✔
8295
    case QUERY_NODE_LOGIC_PLAN_JOIN:
×
8296
      return logicJoinNodeToJson(pObj, pJson);
×
8297
    case QUERY_NODE_LOGIC_PLAN_AGG:
×
8298
      return logicAggNodeToJson(pObj, pJson);
×
8299
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
632✔
8300
      return logicProjectNodeToJson(pObj, pJson);
632✔
8301
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
×
8302
      return logicVnodeModifyNodeToJson(pObj, pJson);
×
8303
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
316✔
8304
      return logicExchangeNodeToJson(pObj, pJson);
316✔
8305
    case QUERY_NODE_LOGIC_PLAN_MERGE:
×
8306
      return logicMergeNodeToJson(pObj, pJson);
×
8307
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
×
8308
      return logicWindowNodeToJson(pObj, pJson);
×
8309
    case QUERY_NODE_LOGIC_PLAN_FILL:
×
8310
      return logicFillNodeToJson(pObj, pJson);
×
8311
    case QUERY_NODE_LOGIC_PLAN_SORT:
×
8312
      return logicSortNodeToJson(pObj, pJson);
×
8313
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
×
8314
      return logicPartitionNodeToJson(pObj, pJson);
×
8315
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
×
8316
      return logicIndefRowsFuncNodeToJson(pObj, pJson);
×
8317
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
×
8318
      return logicInterpFuncNodeToJson(pObj, pJson);
×
8319
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
8320
      return logicForecastFuncNodeToJson(pObj, pJson);
×
8321
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
8322
      return logicGroupCacheNodeToJson(pObj, pJson);
×
8323
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
8324
      return logicDynQueryCtrlNodeToJson(pObj, pJson);
×
8325
    case QUERY_NODE_LOGIC_SUBPLAN:
1,896✔
8326
      return logicSubplanToJson(pObj, pJson);
1,896✔
8327
    case QUERY_NODE_LOGIC_PLAN:
×
8328
      return logicPlanToJson(pObj, pJson);
×
8329
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
3✔
8330
      return physiTagScanNodeToJson(pObj, pJson);
3✔
8331
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
×
8332
      return physiScanNodeToJson(pObj, pJson);
×
8333
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
×
8334
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
8335
      return physiLastRowScanNodeToJson(pObj, pJson);
×
8336
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
10,555✔
8337
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
8338
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
8339
      return physiTableScanNodeToJson(pObj, pJson);
10,555✔
8340
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
1,896✔
8341
      return physiSysTableScanNodeToJson(pObj, pJson);
1,896✔
8342
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
6,067✔
8343
      return physiProjectNodeToJson(pObj, pJson);
6,067✔
8344
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
×
8345
      return physiMergeJoinNodeToJson(pObj, pJson);
×
8346
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
8347
      return physiHashJoinNodeToJson(pObj, pJson);
×
8348
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
48✔
8349
      return physiAggNodeToJson(pObj, pJson);
48✔
8350
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
632✔
8351
      return physiExchangeNodeToJson(pObj, pJson);
632✔
8352
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
×
8353
      return physiMergeNodeToJson(pObj, pJson);
×
8354
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
×
8355
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
8356
      return physiSortNodeToJson(pObj, pJson);
×
8357
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
4,296✔
8358
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
8359
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
8360
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
8361
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
8362
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
8363
      return physiIntervalNodeToJson(pObj, pJson);
4,296✔
8364
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
398✔
8365
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
8366
      return physiFillNodeToJson(pObj, pJson);
398✔
8367
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
739✔
8368
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
8369
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
8370
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
8371
      return physiSessionWindowNodeToJson(pObj, pJson);
739✔
8372
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
400✔
8373
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
8374
      return physiStateWindowNodeToJson(pObj, pJson);
400✔
8375
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
77✔
8376
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
8377
      return physiEventWindowNodeToJson(pObj, pJson);
77✔
8378
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
46✔
8379
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
8380
      return physiCountWindowNodeToJson(pObj, pJson);
46✔
8381
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
8382
      return physiAnomalyWindowNodeToJson(pObj, pJson);
×
8383
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
×
8384
      return physiPartitionNodeToJson(pObj, pJson);
×
8385
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
1,055✔
8386
      return physiStreamPartitionNodeToJson(pObj, pJson);
1,055✔
8387
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
×
8388
      return physiIndefRowsFuncNodeToJson(pObj, pJson);
×
8389
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
245✔
8390
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
8391
      return physiInterpFuncNodeToJson(pObj, pJson);
245✔
8392
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
8393
      return physiForecastFuncNodeToJson(pObj, pJson);
×
8394
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
2,525✔
8395
      return physiDispatchNodeToJson(pObj, pJson);
2,525✔
8396
    case QUERY_NODE_PHYSICAL_PLAN_INSERT:
×
8397
      break;
×
8398
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
×
8399
      return physiQueryInsertNodeToJson(pObj, pJson);
×
8400
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
×
8401
      return physiDeleteNodeToJson(pObj, pJson);
×
8402
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
8403
      return physiGroupCacheNodeToJson(pObj, pJson);
×
8404
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
8405
      return physiDynQueryCtrlNodeToJson(pObj, pJson);
×
8406
    case QUERY_NODE_PHYSICAL_SUBPLAN:
13,083✔
8407
      return subplanToJson(pObj, pJson);
13,083✔
8408
    case QUERY_NODE_PHYSICAL_PLAN:
2,164✔
8409
      return planToJson(pObj, pJson);
2,164✔
8410
    default:
×
8411
      break;
×
8412
  }
8413
  nodesWarn("specificNodeToJson unknown node = %s", nodesNodeName(nodeType(pObj)));
×
8414
  return TSDB_CODE_SUCCESS;
×
8415
}
8416

8417
static int32_t jsonToSpecificNode(const SJson* pJson, void* pObj) {
3,338,299✔
8418
  switch (nodeType(pObj)) {
3,338,299!
8419
    case QUERY_NODE_COLUMN:
1,174,956✔
8420
      return jsonToColumnNode(pJson, pObj);
1,174,956✔
8421
    case QUERY_NODE_VALUE:
46,395✔
8422
      return jsonToValueNode(pJson, pObj);
46,395✔
8423
    case QUERY_NODE_OPERATOR:
7,558✔
8424
      return jsonToOperatorNode(pJson, pObj);
7,558✔
8425
    case QUERY_NODE_LOGIC_CONDITION:
2,000✔
8426
      return jsonToLogicConditionNode(pJson, pObj);
2,000✔
8427
    case QUERY_NODE_FUNCTION:
801,446✔
8428
      return jsonToFunctionNode(pJson, pObj);
801,446✔
8429
    case QUERY_NODE_REAL_TABLE:
5,053✔
8430
      return jsonToRealTableNode(pJson, pObj);
5,053✔
8431
    case QUERY_NODE_TEMP_TABLE:
×
8432
      return jsonToTempTableNode(pJson, pObj);
×
8433
    case QUERY_NODE_JOIN_TABLE:
×
8434
      return jsonToJoinTableNode(pJson, pObj);
×
8435
    case QUERY_NODE_GROUPING_SET:
×
8436
      return jsonToGroupingSetNode(pJson, pObj);
×
8437
    case QUERY_NODE_ORDER_BY_EXPR:
×
8438
      return jsonToOrderByExprNode(pJson, pObj);
×
8439
    case QUERY_NODE_LIMIT:
×
8440
      return jsonToLimitNode(pJson, pObj);
×
8441
    case QUERY_NODE_STATE_WINDOW:
97✔
8442
      return jsonToStateWindowNode(pJson, pObj);
97✔
8443
    case QUERY_NODE_SESSION_WINDOW:
163✔
8444
      return jsonToSessionWindowNode(pJson, pObj);
163✔
8445
    case QUERY_NODE_INTERVAL_WINDOW:
2,892✔
8446
      return jsonToIntervalWindowNode(pJson, pObj);
2,892✔
8447
    case QUERY_NODE_NODE_LIST:
2,783✔
8448
      return jsonToNodeListNode(pJson, pObj);
2,783✔
8449
    case QUERY_NODE_FILL:
235✔
8450
      return jsonToFillNode(pJson, pObj);
235✔
8451
    case QUERY_NODE_TARGET:
616,099✔
8452
      return jsonToTargetNode(pJson, pObj);
616,099✔
8453
    case QUERY_NODE_DATABLOCK_DESC:
23,671✔
8454
      return jsonToDataBlockDescNode(pJson, pObj);
23,671✔
8455
    case QUERY_NODE_SLOT_DESC:
615,611✔
8456
      return jsonToSlotDescNode(pJson, pObj);
615,611✔
8457
    case QUERY_NODE_COLUMN_DEF:
×
8458
      return jsonToColumnDefNode(pJson, pObj);
×
8459
    case QUERY_NODE_DOWNSTREAM_SOURCE:
×
8460
      return jsonToDownstreamSourceNode(pJson, pObj);
×
8461
    case QUERY_NODE_DATABASE_OPTIONS:
×
8462
      return jsonToDatabaseOptions(pJson, pObj);
×
8463
    case QUERY_NODE_TABLE_OPTIONS:
×
8464
      return jsonToTableOptions(pJson, pObj);
×
8465
    case QUERY_NODE_COLUMN_OPTIONS:
×
8466
      return jsonToColumnOptions(pJson, pObj);
×
8467
    case QUERY_NODE_INDEX_OPTIONS:
×
8468
      return jsonToIndexOptions(pJson, pObj);
×
8469
    case QUERY_NODE_EXPLAIN_OPTIONS:
×
8470
      return jsonToExplainOptions(pJson, pObj);
×
8471
    case QUERY_NODE_STREAM_OPTIONS:
×
8472
      return jsonToStreamOptions(pJson, pObj);
×
8473
    case QUERY_NODE_LEFT_VALUE:
×
8474
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to deserialize.
×
8475
    case QUERY_NODE_WHEN_THEN:
45✔
8476
      return jsonToWhenThenNode(pJson, pObj);
45✔
8477
    case QUERY_NODE_CASE_WHEN:
45✔
8478
      return jsonToCaseWhenNode(pJson, pObj);
45✔
8479
    case QUERY_NODE_EVENT_WINDOW:
23✔
8480
      return jsonToEventWindowNode(pJson, pObj);
23✔
8481
    case QUERY_NODE_WINDOW_OFFSET:
×
8482
      return jsonToWindowOffsetNode(pJson, pObj);
×
8483
    case QUERY_NODE_COUNT_WINDOW:
15✔
8484
      return jsonToCountWindowNode(pJson, pObj);
15✔
8485
    case QUERY_NODE_ANOMALY_WINDOW:
×
8486
      return jsonToAnomalyWindowNode(pJson, pObj);
×
8487
    case QUERY_NODE_STREAM_NOTIFY_OPTIONS:
×
8488
      return jsonToStreamNotifyOptions(pJson, pObj);
×
8489
    case QUERY_NODE_SET_OPERATOR:
×
8490
      return jsonToSetOperator(pJson, pObj);
×
8491
    case QUERY_NODE_SELECT_STMT:
5,053✔
8492
      return jsonToSelectStmt(pJson, pObj);
5,053✔
8493
    case QUERY_NODE_VNODE_MODIFY_STMT:
×
8494
      return jsonToVnodeModifyStmt(pJson, pObj);
×
8495
    case QUERY_NODE_CREATE_DATABASE_STMT:
×
8496
      return jsonToCreateDatabaseStmt(pJson, pObj);
×
8497
    case QUERY_NODE_ALTER_DATABASE_STMT:
×
8498
      return jsonToAlterDatabaseStmt(pJson, pObj);
×
8499
    case QUERY_NODE_TRIM_DATABASE_STMT:
×
8500
      return jsonToTrimDatabaseStmt(pJson, pObj);
×
8501
    case QUERY_NODE_S3MIGRATE_DATABASE_STMT:
×
8502
      return jsonToS3MigrateDatabaseStmt(pJson, pObj);
×
8503
    case QUERY_NODE_CREATE_TABLE_STMT:
×
8504
      return jsonToCreateTableStmt(pJson, pObj);
×
8505
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
×
8506
      return jsonToCreateSubTableClause(pJson, pObj);
×
8507
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
×
8508
      return jsonToCreateMultiTablesStmt(pJson, pObj);
×
8509
    case QUERY_NODE_DROP_TABLE_CLAUSE:
×
8510
      return jsonToDropTableClause(pJson, pObj);
×
8511
    case QUERY_NODE_DROP_TABLE_STMT:
×
8512
      return jsonToDropTableStmt(pJson, pObj);
×
8513
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
×
8514
      return jsonToDropStableStmt(pJson, pObj);
×
8515
    case QUERY_NODE_ALTER_TABLE_STMT:
×
8516
      return jsonToAlterTableStmt(pJson, pObj);
×
8517
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
×
8518
      return jsonToAlterStableStmt(pJson, pObj);
×
8519
    case QUERY_NODE_CREATE_USER_STMT:
×
8520
      return jsonToCreateUserStmt(pJson, pObj);
×
8521
    case QUERY_NODE_ALTER_USER_STMT:
×
8522
      return jsonToAlterUserStmt(pJson, pObj);
×
8523
    case QUERY_NODE_DROP_USER_STMT:
×
8524
      return jsonToDropUserStmt(pJson, pObj);
×
8525
    case QUERY_NODE_USE_DATABASE_STMT:
×
8526
      return jsonToUseDatabaseStmt(pJson, pObj);
×
8527
    case QUERY_NODE_CREATE_DNODE_STMT:
×
8528
      return jsonToCreateDnodeStmt(pJson, pObj);
×
8529
    case QUERY_NODE_DROP_DNODE_STMT:
×
8530
      return jsonToDropDnodeStmt(pJson, pObj);
×
8531
    case QUERY_NODE_ALTER_DNODE_STMT:
×
8532
      return jsonToAlterDnodeStmt(pJson, pObj);
×
8533
    case QUERY_NODE_CREATE_INDEX_STMT:
×
8534
      return jsonToCreateIndexStmt(pJson, pObj);
×
8535
    case QUERY_NODE_DROP_INDEX_STMT:
×
8536
      return jsonToDropIndexStmt(pJson, pObj);
×
8537
    case QUERY_NODE_CREATE_QNODE_STMT:
×
8538
      return jsonToCreateQnodeStmt(pJson, pObj);
×
8539
    case QUERY_NODE_DROP_QNODE_STMT:
×
8540
      return jsonToDropQnodeStmt(pJson, pObj);
×
8541
    case QUERY_NODE_CREATE_SNODE_STMT:
×
8542
      return jsonToCreateSnodeStmt(pJson, pObj);
×
8543
    case QUERY_NODE_DROP_SNODE_STMT:
×
8544
      return jsonToDropSnodeStmt(pJson, pObj);
×
8545
    case QUERY_NODE_CREATE_MNODE_STMT:
×
8546
      return jsonToCreateMnodeStmt(pJson, pObj);
×
8547
    case QUERY_NODE_DROP_MNODE_STMT:
×
8548
      return jsonToDropMnodeStmt(pJson, pObj);
×
8549
    case QUERY_NODE_CREATE_TOPIC_STMT:
×
8550
      return jsonToCreateTopicStmt(pJson, pObj);
×
8551
    case QUERY_NODE_DROP_TOPIC_STMT:
×
8552
      return jsonToDropTopicStmt(pJson, pObj);
×
8553
    case QUERY_NODE_DROP_CGROUP_STMT:
×
8554
      return jsonToDropConsumerGroupStmt(pJson, pObj);
×
8555
    case QUERY_NODE_ALTER_LOCAL_STMT:
×
8556
      return jsonToAlterLocalStmt(pJson, pObj);
×
8557
    case QUERY_NODE_EXPLAIN_STMT:
×
8558
      return jsonToExplainStmt(pJson, pObj);
×
8559
    case QUERY_NODE_DESCRIBE_STMT:
×
8560
      return jsonToDescribeStmt(pJson, pObj);
×
8561
    case QUERY_NODE_COMPACT_DATABASE_STMT:
×
8562
      return jsonToCompactDatabaseStmt(pJson, pObj);
×
8563
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
×
8564
      return jsonToCompactVgroupsStmt(pJson, pObj);
×
8565
    case QUERY_NODE_CREATE_STREAM_STMT:
×
8566
      return jsonToCreateStreamStmt(pJson, pObj);
×
8567
    case QUERY_NODE_DROP_STREAM_STMT:
×
8568
      return jsonToDropStreamStmt(pJson, pObj);
×
8569
    case QUERY_NODE_BALANCE_VGROUP_STMT:
×
8570
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to deserialize.
×
8571
    case QUERY_NODE_ASSIGN_LEADER_STMT:
×
8572
      return TSDB_CODE_SUCCESS;
×
8573
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
×
8574
      return TSDB_CODE_SUCCESS;
×
8575
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
8576
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to deserialize.
×
8577
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
8578
      return jsonToMergeVgroupStmt(pJson, pObj);
×
8579
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
×
8580
      return jsonToRedistributeVgroupStmt(pJson, pObj);
×
8581
    case QUERY_NODE_SPLIT_VGROUP_STMT:
×
8582
      return jsonToSplitVgroupStmt(pJson, pObj);
×
8583
    case QUERY_NODE_GRANT_STMT:
×
8584
      return jsonToGrantStmt(pJson, pObj);
×
8585
    case QUERY_NODE_REVOKE_STMT:
×
8586
      return jsonToRevokeStmt(pJson, pObj);
×
8587
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
8588
      return jsonToAlterClusterStmt(pJson, pObj);
×
8589
    case QUERY_NODE_SHOW_DNODES_STMT:
×
8590
      return jsonToShowDnodesStmt(pJson, pObj);
×
8591
    case QUERY_NODE_SHOW_MNODES_STMT:
×
8592
      return jsonToShowMnodesStmt(pJson, pObj);
×
8593
    case QUERY_NODE_SHOW_QNODES_STMT:
×
8594
      return jsonToShowQnodesStmt(pJson, pObj);
×
8595
    case QUERY_NODE_SHOW_ANODES_STMT:
×
8596
      return jsonToShowAnodesStmt(pJson, pObj);
×
8597
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
8598
      return jsonToShowAnodesFullStmt(pJson, pObj);
×
8599
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
8600
      return jsonToShowArbGroupsStmt(pJson, pObj);
×
8601
    case QUERY_NODE_SHOW_CLUSTER_STMT:
×
8602
      return jsonToShowClusterStmt(pJson, pObj);
×
8603
    case QUERY_NODE_SHOW_DATABASES_STMT:
×
8604
      return jsonToShowDatabasesStmt(pJson, pObj);
×
8605
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
×
8606
      return jsonToShowFunctionsStmt(pJson, pObj);
×
8607
    case QUERY_NODE_SHOW_INDEXES_STMT:
×
8608
      return jsonToShowIndexesStmt(pJson, pObj);
×
8609
    case QUERY_NODE_SHOW_STABLES_STMT:
×
8610
      return jsonToShowStablesStmt(pJson, pObj);
×
8611
    case QUERY_NODE_SHOW_STREAMS_STMT:
×
8612
      return jsonToShowStreamsStmt(pJson, pObj);
×
8613
    case QUERY_NODE_SHOW_TABLES_STMT:
×
8614
      return jsonToShowTablesStmt(pJson, pObj);
×
8615
    case QUERY_NODE_SHOW_TAGS_STMT:
×
8616
      return jsonToShowTagsStmt(pJson, pObj);
×
8617
    case QUERY_NODE_SHOW_USERS_STMT:
×
8618
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
8619
      return jsonToShowUsersStmt(pJson, pObj);
×
8620
    case QUERY_NODE_SHOW_VGROUPS_STMT:
×
8621
      return jsonToShowVgroupsStmt(pJson, pObj);
×
8622
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
×
8623
      return jsonToShowConsumersStmt(pJson, pObj);
×
8624
    case QUERY_NODE_SHOW_VARIABLES_STMT:
×
8625
      return jsonToShowVariablesStmt(pJson, pObj);
×
8626
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
8627
      return jsonToShowGrantsFullStmt(pJson, pObj);
×
8628
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
8629
      return jsonToShowGrantsLogsStmt(pJson, pObj);
×
8630
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
8631
      return jsonToShowClusterMachinesStmt(pJson, pObj);
×
8632
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
8633
      return jsonToShowEncryptionsStmt(pJson, pObj);
×
8634
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
×
8635
      return jsonToShowDnodeVariablesStmt(pJson, pObj);
×
8636
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
×
8637
      return jsonToShowTransactionsStmt(pJson, pObj);
×
8638
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
×
8639
      return jsonToShowSubscriptionsStmt(pJson, pObj);
×
8640
    case QUERY_NODE_SHOW_VNODES_STMT:
×
8641
      return jsonToShowVnodesStmt(pJson, pObj);
×
8642
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
×
8643
      return jsonToShowUserPrivilegesStmt(pJson, pObj);
×
8644
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
×
8645
      return jsonToShowCreateDatabaseStmt(pJson, pObj);
×
8646
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
×
8647
      return jsonToShowCreateTableStmt(pJson, pObj);
×
8648
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
×
8649
      return jsonToShowCreateStableStmt(pJson, pObj);
×
8650
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
8651
      return jsonToShowCreateViewStmt(pJson, pObj);
×
8652
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
×
8653
      return jsonToShowTableDistributedStmt(pJson, pObj);
×
8654
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
×
8655
      return jsonToShowLocalVariablesStmt(pJson, pObj);
×
8656
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
×
8657
      return jsonToShowTableTagsStmt(pJson, pObj);
×
8658
    case QUERY_NODE_SHOW_USAGE_STMT:
×
8659
      return jsonToShowUsageStmt(pJson, pObj);
×
8660
    case QUERY_NODE_DELETE_STMT:
×
8661
      return jsonToDeleteStmt(pJson, pObj);
×
8662
    case QUERY_NODE_INSERT_STMT:
×
8663
      return jsonToInsertStmt(pJson, pObj);
×
8664
    case QUERY_NODE_RESTORE_DNODE_STMT:
×
8665
      return jsonToRestoreDnodeStmt(pJson, pObj);
×
8666
    case QUERY_NODE_RESTORE_QNODE_STMT:
×
8667
      return jsonToRestoreQnodeStmt(pJson, pObj);
×
8668
    case QUERY_NODE_RESTORE_MNODE_STMT:
×
8669
      return jsonToRestoreMnodeStmt(pJson, pObj);
×
8670
    case QUERY_NODE_RESTORE_VNODE_STMT:
×
8671
      return jsonToRestoreVnodeStmt(pJson, pObj);
×
8672
    case QUERY_NODE_LOGIC_PLAN_SCAN:
×
8673
      return jsonToLogicScanNode(pJson, pObj);
×
8674
    case QUERY_NODE_LOGIC_PLAN_JOIN:
×
8675
      return jsonToLogicJoinNode(pJson, pObj);
×
8676
    case QUERY_NODE_LOGIC_PLAN_AGG:
×
8677
      return jsonToLogicAggNode(pJson, pObj);
×
8678
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
×
8679
      return jsonToLogicProjectNode(pJson, pObj);
×
8680
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
×
8681
      return jsonToLogicVnodeModifyNode(pJson, pObj);
×
8682
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
×
8683
      return jsonToLogicExchangeNode(pJson, pObj);
×
8684
    case QUERY_NODE_LOGIC_PLAN_MERGE:
×
8685
      return jsonToLogicMergeNode(pJson, pObj);
×
8686
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
×
8687
      return jsonToLogicWindowNode(pJson, pObj);
×
8688
    case QUERY_NODE_LOGIC_PLAN_FILL:
×
8689
      return jsonToLogicFillNode(pJson, pObj);
×
8690
    case QUERY_NODE_LOGIC_PLAN_SORT:
×
8691
      return jsonToLogicSortNode(pJson, pObj);
×
8692
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
×
8693
      return jsonToLogicPartitionNode(pJson, pObj);
×
8694
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
×
8695
      return jsonToLogicIndefRowsFuncNode(pJson, pObj);
×
8696
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
×
8697
      return jsonToLogicInterpFuncNode(pJson, pObj);
×
8698
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
8699
      return jsonToLogicForecastFuncNode(pJson, pObj);
×
8700
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
8701
      return jsonToLogicGroupCacheNode(pJson, pObj);
×
8702
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
8703
      return jsonToLogicDynQueryCtrlNode(pJson, pObj);
×
8704
    case QUERY_NODE_LOGIC_SUBPLAN:
×
8705
      return jsonToLogicSubplan(pJson, pObj);
×
8706
    case QUERY_NODE_LOGIC_PLAN:
×
8707
      return jsonToLogicPlan(pJson, pObj);
×
8708
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
3✔
8709
      return jsonToPhysiTagScanNode(pJson, pObj);
3✔
8710
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
×
8711
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
8712
      return jsonToPhysiScanNode(pJson, pObj);
×
8713
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
×
8714
      return jsonToPhysiLastRowScanNode(pJson, pObj);
×
8715
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
10,409✔
8716
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
8717
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
8718
      return jsonToPhysiTableScanNode(pJson, pObj);
10,409✔
8719
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
×
8720
      return jsonToPhysiSysTableScanNode(pJson, pObj);
×
8721
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
5,863✔
8722
      return jsonToPhysiProjectNode(pJson, pObj);
5,863✔
8723
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
×
8724
      return jsonToPhysiMergeJoinNode(pJson, pObj);
×
8725
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
8726
      return jsonToPhysiHashJoinNode(pJson, pObj);
×
8727
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
33✔
8728
      return jsonToPhysiAggNode(pJson, pObj);
33✔
8729
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
×
8730
      return jsonToPhysiExchangeNode(pJson, pObj);
×
8731
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
×
8732
      return jsonToPhysiMergeNode(pJson, pObj);
×
8733
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
×
8734
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
8735
      return jsonToPhysiSortNode(pJson, pObj);
×
8736
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
4,384✔
8737
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
8738
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
8739
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
8740
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
8741
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
8742
      return jsonToPhysiIntervalNode(pJson, pObj);
4,384✔
8743
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
399✔
8744
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
8745
      return jsonToPhysiFillNode(pJson, pObj);
399✔
8746
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
744✔
8747
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
8748
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
8749
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
8750
      return jsonToPhysiSessionWindowNode(pJson, pObj);
744✔
8751
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
405✔
8752
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
8753
      return jsonToPhysiStateWindowNode(pJson, pObj);
405✔
8754
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
81✔
8755
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
8756
      return jsonToPhysiEventWindowNode(pJson, pObj);
81✔
8757
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
50✔
8758
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
8759
      return jsonToPhysiCountWindowNode(pJson, pObj);
50✔
8760
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
8761
      return jsonToPhysiAnomalyWindowNode(pJson, pObj);
×
8762
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
×
8763
      return jsonToPhysiPartitionNode(pJson, pObj);
×
8764
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
1,055✔
8765
      return jsonToPhysiStreamPartitionNode(pJson, pObj);
1,055✔
8766
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
×
8767
      return jsonToPhysiIndefRowsFuncNode(pJson, pObj);
×
8768
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
246✔
8769
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
8770
      return jsonToPhysiInterpFuncNode(pJson, pObj);
246✔
8771
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
8772
      return jsonToPhysiForecastFuncNode(pJson, pObj);
×
8773
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
×
8774
      return jsonToPhysiDispatchNode(pJson, pObj);
×
8775
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
×
8776
      return jsonToPhysiQueryInsertNode(pJson, pObj);
×
8777
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
×
8778
      return jsonToPhysiDeleteNode(pJson, pObj);
×
8779
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
8780
      return jsonToPhysiGroupCacheNode(pJson, pObj);
×
8781
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
8782
      return jsonToPhysiDynQueryCtrlNode(pJson, pObj);
×
8783
    case QUERY_NODE_PHYSICAL_SUBPLAN:
10,411✔
8784
      return jsonToSubplan(pJson, pObj);
10,411✔
8785
    case QUERY_NODE_PHYSICAL_PLAN:
1,850✔
8786
      return jsonToPlan(pJson, pObj);
1,850✔
8787
    default:
×
8788
      break;
×
8789
  }
8790
  nodesWarn("jsonToSpecificNode unknown node = %s", nodesNodeName(nodeType(pObj)));
×
8791
  return TSDB_CODE_SUCCESS;
×
8792
}
8793

8794
static const char* jkNodeType = "NodeType";
8795
static const char* jkNodeName = "Name";
8796

8797
static int32_t nodeToJson(const void* pObj, SJson* pJson) {
2,535,207✔
8798
  const SNode* pNode = (const SNode*)pObj;
2,535,207✔
8799

8800
  int32_t code = tjsonAddIntegerToObject(pJson, jkNodeType, pNode->type);
2,535,207✔
8801
  if (TSDB_CODE_SUCCESS == code) {
2,535,177!
8802
    code = tjsonAddStringToObject(pJson, jkNodeName, nodesNodeName(pNode->type));
2,535,184✔
8803
  }
8804
  if (TSDB_CODE_SUCCESS == code) {
2,535,168!
8805
    code = tjsonAddObject(pJson, nodesNodeName(pNode->type), specificNodeToJson, pNode);
2,535,168✔
8806
    if (TSDB_CODE_SUCCESS != code) {
2,535,155!
8807
      nodesError("%s ToJson error", nodesNodeName(pNode->type));
×
8808
    }
8809
  }
8810

8811
  return code;
2,535,156✔
8812
}
8813

8814
static int32_t jsonToNode(const SJson* pJson, void* pObj) {
3,337,600✔
8815
  SNode* pNode = (SNode*)pObj;
3,337,600✔
8816

8817
  int32_t code;
8818
  tjsonGetNumberValue(pJson, jkNodeType, pNode->type, code);
3,337,600✔
8819
  if (TSDB_CODE_SUCCESS == code) {
3,337,683!
8820
    code = tjsonToObject(pJson, nodesNodeName(pNode->type), jsonToSpecificNode, pNode);
3,337,684✔
8821
    if (TSDB_CODE_SUCCESS != code) {
3,337,678!
8822
      nodesError("%s toNode error", nodesNodeName(pNode->type));
×
8823
    }
8824
  }
8825

8826
  return code;
3,337,690✔
8827
}
8828

8829
static int32_t makeNodeByJson(const SJson* pJson, SNode** pNode) {
3,337,384✔
8830
  int32_t val = 0;
3,337,384✔
8831
  int32_t code = tjsonGetIntValue(pJson, jkNodeType, &val);
3,337,384✔
8832
  if (TSDB_CODE_SUCCESS == code) {
3,337,769!
8833
    code = nodesMakeNode(val, pNode);
3,337,772✔
8834
    if (NULL == *pNode) {
3,337,670!
8835
      return code;
×
8836
    }
8837
    code = jsonToNode(pJson, *pNode);
3,337,670✔
8838
  }
8839

8840
  return code;
3,337,696✔
8841
}
8842

8843
static int32_t jsonToNodeObject(const SJson* pJson, const char* pName, SNode** pNode) {
853,193✔
8844
  SJson* pJsonNode = tjsonGetObjectItem(pJson, pName);
853,193✔
8845
  if (NULL == pJsonNode) {
853,017✔
8846
    return TSDB_CODE_SUCCESS;
157,732✔
8847
  }
8848
  return makeNodeByJson(pJsonNode, pNode);
695,285✔
8849
}
8850

8851
int32_t nodesNodeToString(const SNode* pNode, bool format, char** pStr, int32_t* pLen) {
15,019✔
8852
  if (NULL == pNode || NULL == pStr) {
15,019!
8853
    terrno = TSDB_CODE_FAILED;
×
8854
    return TSDB_CODE_FAILED;
×
8855
  }
8856

8857
  SJson* pJson = tjsonCreateObject();
15,020✔
8858
  if (NULL == pJson) {
15,021!
8859
    return terrno;
×
8860
  }
8861

8862
  int32_t code = nodeToJson(pNode, pJson);
15,021✔
8863
  if (TSDB_CODE_SUCCESS != code) {
15,019!
8864
    terrno = code;
×
8865
    return code;
×
8866
  }
8867

8868
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
15,021!
8869
  tjsonDelete(pJson);
15,016✔
8870

8871
  if (NULL != pLen) {
15,021✔
8872
    *pLen = strlen(*pStr) + 1;
9,944✔
8873
  }
8874

8875
  return TSDB_CODE_SUCCESS;
15,021✔
8876
}
8877

8878
int32_t nodesStringToNode(const char* pStr, SNode** pNode) {
15,165✔
8879
  if (NULL == pStr || NULL == pNode) {
15,165!
8880
    return TSDB_CODE_SUCCESS;
×
8881
  }
8882
  SJson* pJson = tjsonParse(pStr);
15,165✔
8883
  if (NULL == pJson) {
15,166!
8884
    return TSDB_CODE_FAILED;
×
8885
  }
8886
  int32_t code = makeNodeByJson(pJson, pNode);
15,166✔
8887
  tjsonDelete(pJson);
15,166✔
8888
  if (TSDB_CODE_SUCCESS != code) {
15,166!
8889
    nodesDestroyNode(*pNode);
×
8890
    *pNode = NULL;
×
8891
    terrno = code;
×
8892
    return code;
×
8893
  }
8894
  return TSDB_CODE_SUCCESS;
15,166✔
8895
}
8896

8897
int32_t nodesListToString(const SNodeList* pList, bool format, char** pStr, int32_t* pLen) {
268✔
8898
  if (NULL == pList || NULL == pStr || NULL == pLen) {
268!
8899
    terrno = TSDB_CODE_FAILED;
×
8900
    return TSDB_CODE_FAILED;
×
8901
  }
8902

8903
  if (0 == LIST_LENGTH(pList)) {
268!
8904
    return TSDB_CODE_SUCCESS;
×
8905
  }
8906

8907
  SJson* pJson = tjsonCreateArray();
268✔
8908
  if (NULL == pJson) {
268!
8909
    return terrno;
×
8910
  }
8911

8912
  SNode* pNode;
8913
  FOREACH(pNode, pList) {
34,623!
8914
    int32_t code = tjsonAddItem(pJson, nodeToJson, pNode);
34,355✔
8915
    if (TSDB_CODE_SUCCESS != code) {
34,355!
8916
      terrno = code;
×
8917
      return code;
×
8918
    }
8919
  }
8920

8921
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
268!
8922
  tjsonDelete(pJson);
268✔
8923

8924
  *pLen = strlen(*pStr) + 1;
268✔
8925
  return TSDB_CODE_SUCCESS;
268✔
8926
}
8927

8928
int32_t nodesStringToList(const char* pStr, SNodeList** pList) {
239✔
8929
  if (NULL == pStr || NULL == pList) {
239!
8930
    return TSDB_CODE_SUCCESS;
×
8931
  }
8932
  SJson* pJson = tjsonParse(pStr);
239✔
8933
  if (NULL == pJson) {
239!
8934
    return TSDB_CODE_FAILED;
×
8935
  }
8936
  int32_t code = jsonToNodeListImpl(pJson, pList);
239✔
8937
  tjsonDelete(pJson);
239✔
8938
  if (TSDB_CODE_SUCCESS != code) {
239!
8939
    nodesDestroyList(*pList);
×
8940
    *pList = NULL;
×
8941
    terrno = code;
×
8942
    return code;
×
8943
  }
8944
  return TSDB_CODE_SUCCESS;
239✔
8945
}
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