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

taosdata / TDengine / #3542

27 Nov 2024 02:52AM UTC coverage: 60.819% (+0.04%) from 60.776%
#3542

push

travis-ci

web-flow
Merge pull request #28931 from taosdata/enh/jdbc-demo-3.0

update jdbc demo, and version history

120305 of 252779 branches covered (47.59%)

Branch coverage included in aggregate %.

201010 of 275538 relevant lines covered (72.95%)

19989893.51 hits per line

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

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

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

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

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

461
static int32_t nodeListToJson(SJson* pJson, const char* pName, const SNodeList* pList) {
570,346✔
462
  if (LIST_LENGTH(pList) > 0) {
570,346!
463
    SJson* jList = tjsonAddArrayToObject(pJson, pName);
478,709✔
464
    if (NULL == jList) {
478,709!
465
      return terrno;
×
466
    }
467
    SNode* pNode;
468
    FOREACH(pNode, pList) {
2,434,725!
469
      int32_t code = tjsonAddItem(jList, nodeToJson, pNode);
1,956,016✔
470
      if (TSDB_CODE_SUCCESS != code) {
1,956,016!
471
        return code;
×
472
      }
473
    }
474
  }
475
  return TSDB_CODE_SUCCESS;
570,346✔
476
}
477

478
static int32_t jsonToNodeListImpl(const SJson* pJsonArray, SNodeList** pList) {
1,176,849✔
479
  int32_t size = (NULL == pJsonArray ? 0 : tjsonGetArraySize(pJsonArray));
1,176,849✔
480
  if (size > 0) {
1,176,817✔
481
    int32_t code = nodesMakeList(pList);
1,028,021✔
482
    if (NULL == *pList) {
1,028,156!
483
      return code;
×
484
    }
485
  }
486

487
  int32_t code = TSDB_CODE_SUCCESS;
1,176,952✔
488
  for (int32_t i = 0; i < size; ++i) {
4,311,429✔
489
    SJson* pJsonItem = tjsonGetArrayItem(pJsonArray, i);
3,134,420✔
490
    SNode* pNode = NULL;
3,132,756✔
491
    code = makeNodeByJson(pJsonItem, &pNode);
3,132,756✔
492
    if (TSDB_CODE_SUCCESS == code) {
3,132,176!
493
      code = nodesListAppend(*pList, pNode);
3,132,186✔
494
    }
495
    if (TSDB_CODE_SUCCESS != code) {
3,134,477!
496
      break;
×
497
    }
498
  }
499
  return code;
1,177,009✔
500
}
501

502
static int32_t jsonToNodeList(const SJson* pJson, const char* pName, SNodeList** pList) {
1,176,294✔
503
  return jsonToNodeListImpl(tjsonGetObjectItem(pJson, pName), pList);
1,176,294✔
504
}
505

506
static const char* jkTableComInfoNumOfTags = "NumOfTags";
507
static const char* jkTableComInfoPrecision = "Precision";
508
static const char* jkTableComInfoNumOfColumns = "NumOfColumns";
509
static const char* jkTableComInfoRowSize = "RowSize";
510

511
static int32_t tableComInfoToJson(const void* pObj, SJson* pJson) {
1,472✔
512
  const STableComInfo* pNode = (const STableComInfo*)pObj;
1,472✔
513

514
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableComInfoNumOfTags, pNode->numOfTags);
1,472✔
515
  if (TSDB_CODE_SUCCESS == code) {
1,472!
516
    code = tjsonAddIntegerToObject(pJson, jkTableComInfoPrecision, pNode->precision);
1,472✔
517
  }
518
  if (TSDB_CODE_SUCCESS == code) {
1,472!
519
    code = tjsonAddIntegerToObject(pJson, jkTableComInfoNumOfColumns, pNode->numOfColumns);
1,472✔
520
  }
521
  if (TSDB_CODE_SUCCESS == code) {
1,472!
522
    code = tjsonAddIntegerToObject(pJson, jkTableComInfoRowSize, pNode->rowSize);
1,472✔
523
  }
524

525
  return code;
1,472✔
526
}
527

528
static int32_t jsonToTableComInfo(const SJson* pJson, void* pObj) {
11,315✔
529
  STableComInfo* pNode = (STableComInfo*)pObj;
11,315✔
530

531
  int32_t code;
532
  tjsonGetNumberValue(pJson, jkTableComInfoNumOfTags, pNode->numOfTags, code);
11,315✔
533
  if (TSDB_CODE_SUCCESS == code) {
11,315!
534
    tjsonGetNumberValue(pJson, jkTableComInfoPrecision, pNode->precision, code);
11,315✔
535
  }
536
  if (TSDB_CODE_SUCCESS == code) {
11,315!
537
    tjsonGetNumberValue(pJson, jkTableComInfoNumOfColumns, pNode->numOfColumns, code);
11,315✔
538
  }
539
  if (TSDB_CODE_SUCCESS == code) {
11,315!
540
    tjsonGetNumberValue(pJson, jkTableComInfoRowSize, pNode->rowSize, code);
11,315✔
541
  }
542

543
  return code;
11,315✔
544
}
545

546
static const char* jkSchemaType = "Type";
547
static const char* jkSchemaColId = "ColId";
548
static const char* jkSchemaBytes = "bytes";
549
static const char* jkSchemaName = "Name";
550
static const char* jkSchemaFlags = "Flags";
551

552
static int32_t schemaToJson(const void* pObj, SJson* pJson) {
50,195✔
553
  const SSchema* pNode = (const SSchema*)pObj;
50,195✔
554

555
  int32_t code = tjsonAddIntegerToObject(pJson, jkSchemaType, pNode->type);
50,195✔
556
  if (TSDB_CODE_SUCCESS == code) {
50,195!
557
    code = tjsonAddIntegerToObject(pJson, jkSchemaColId, pNode->colId);
50,195✔
558
  }
559
  if (TSDB_CODE_SUCCESS == code) {
50,195!
560
    code = tjsonAddIntegerToObject(pJson, jkSchemaBytes, pNode->bytes);
50,195✔
561
  }
562
  if (TSDB_CODE_SUCCESS == code) {
50,195!
563
    code = tjsonAddStringToObject(pJson, jkSchemaName, pNode->name);
50,195✔
564
  }
565
  if (TSDB_CODE_SUCCESS == code) {
50,195!
566
    code = tjsonAddIntegerToObject(pJson, jkSchemaFlags, pNode->flags);
50,195✔
567
  }
568

569
  return code;
50,195✔
570
}
571

572
static int32_t jsonToSchema(const SJson* pJson, void* pObj) {
616,789✔
573
  SSchema* pNode = (SSchema*)pObj;
616,789✔
574

575
  int32_t code;
576
  tjsonGetNumberValue(pJson, jkSchemaType, pNode->type, code);
616,789✔
577
  if (TSDB_CODE_SUCCESS == code) {
616,803✔
578
    tjsonGetNumberValue(pJson, jkSchemaColId, pNode->colId, code);
616,801✔
579
  }
580
  if (TSDB_CODE_SUCCESS == code) {
616,834✔
581
    tjsonGetNumberValue(pJson, jkSchemaBytes, pNode->bytes, code);
616,830✔
582
  }
583
  if (TSDB_CODE_SUCCESS == code) {
616,830✔
584
    code = tjsonGetStringValue(pJson, jkSchemaName, pNode->name);
616,825✔
585
  }
586
  if (TSDB_CODE_SUCCESS == code) {
616,824!
587
    tjsonGetNumberValue(pJson, jkSchemaFlags, pNode->flags, code);
616,824✔
588
  }
589

590
  return code;
616,836✔
591
}
592

593
static const char* jkTableMetaVgId = "VgId";
594
static const char* jkTableMetaTableType = "TableType";
595
static const char* jkTableMetaUid = "Uid";
596
static const char* jkTableMetaSuid = "Suid";
597
static const char* jkTableMetaSversion = "Sversion";
598
static const char* jkTableMetaTversion = "Tversion";
599
static const char* jkTableMetaComInfo = "ComInfo";
600
static const char* jkTableMetaColSchemas = "ColSchemas";
601

602
static int32_t tableMetaToJson(const void* pObj, SJson* pJson) {
1,472✔
603
  const STableMeta* pNode = (const STableMeta*)pObj;
1,472✔
604

605
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableMetaVgId, pNode->vgId);
1,472✔
606
  if (TSDB_CODE_SUCCESS == code) {
1,472!
607
    code = tjsonAddIntegerToObject(pJson, jkTableMetaTableType, pNode->tableType);
1,472✔
608
  }
609
  if (TSDB_CODE_SUCCESS == code) {
1,472!
610
    code = tjsonAddIntegerToObject(pJson, jkTableMetaUid, pNode->uid);
1,472✔
611
  }
612
  if (TSDB_CODE_SUCCESS == code) {
1,472!
613
    code = tjsonAddIntegerToObject(pJson, jkTableMetaSuid, pNode->suid);
1,472✔
614
  }
615
  if (TSDB_CODE_SUCCESS == code) {
1,472!
616
    code = tjsonAddIntegerToObject(pJson, jkTableMetaSversion, pNode->sversion);
1,472✔
617
  }
618
  if (TSDB_CODE_SUCCESS == code) {
1,472!
619
    code = tjsonAddIntegerToObject(pJson, jkTableMetaTversion, pNode->tversion);
1,472✔
620
  }
621
  if (TSDB_CODE_SUCCESS == code) {
1,472!
622
    code = tjsonAddObject(pJson, jkTableMetaComInfo, tableComInfoToJson, &pNode->tableInfo);
1,472✔
623
  }
624
  if (TSDB_CODE_SUCCESS == code) {
1,472!
625
    code = tjsonAddArray(pJson, jkTableMetaColSchemas, schemaToJson, pNode->schema, sizeof(SSchema),
1,472✔
626
                         TABLE_TOTAL_COL_NUM(pNode));
1,472✔
627
  }
628

629
  return code;
1,472✔
630
}
631

632
static int32_t jsonToTableMeta(const SJson* pJson, void* pObj) {
11,315✔
633
  STableMeta* pNode = (STableMeta*)pObj;
11,315✔
634

635
  int32_t code;
636
  tjsonGetNumberValue(pJson, jkTableMetaVgId, pNode->vgId, code);
11,315✔
637
  if (TSDB_CODE_SUCCESS == code) {
11,315!
638
    tjsonGetNumberValue(pJson, jkTableMetaTableType, pNode->tableType, code);
11,315✔
639
  }
640
  if (TSDB_CODE_SUCCESS == code) {
11,315!
641
    tjsonGetNumberValue(pJson, jkTableMetaUid, pNode->uid, code);
11,315✔
642
  }
643
  if (TSDB_CODE_SUCCESS == code) {
11,315!
644
    tjsonGetNumberValue(pJson, jkTableMetaSuid, pNode->suid, code);
11,315✔
645
  }
646
  if (TSDB_CODE_SUCCESS == code) {
11,315!
647
    tjsonGetNumberValue(pJson, jkTableMetaSversion, pNode->sversion, code);
11,315✔
648
  }
649
  if (TSDB_CODE_SUCCESS == code) {
11,315!
650
    tjsonGetNumberValue(pJson, jkTableMetaTversion, pNode->tversion, code);
11,315✔
651
  }
652
  if (TSDB_CODE_SUCCESS == code) {
11,315!
653
    code = tjsonToObject(pJson, jkTableMetaComInfo, jsonToTableComInfo, &pNode->tableInfo);
11,315✔
654
  }
655
  if (TSDB_CODE_SUCCESS == code) {
11,315!
656
    code = tjsonToArray(pJson, jkTableMetaColSchemas, jsonToSchema, pNode->schema, sizeof(SSchema));
11,315✔
657
  }
658

659
  return code;
11,315✔
660
}
661

662
static const char* jkLogicPlanTargets = "Targets";
663
static const char* jkLogicPlanConditions = "Conditions";
664
static const char* jkLogicPlanChildren = "Children";
665
static const char* jkLogicPlanLimit = "Limit";
666
static const char* jkLogicPlanSlimit = "SLimit";
667
static const char* jkLogicPlanRequireDataOrder = "RequireDataOrder";
668
static const char* jkLogicPlanResultDataOrder = "ResultDataOrder";
669
static const char* jkLogicPlanGroupAction = "GroupAction";
670

671
static int32_t logicPlanNodeToJson(const void* pObj, SJson* pJson) {
×
672
  const SLogicNode* pNode = (const SLogicNode*)pObj;
×
673

674
  int32_t code = nodeListToJson(pJson, jkLogicPlanTargets, pNode->pTargets);
×
675
  if (TSDB_CODE_SUCCESS == code) {
×
676
    code = tjsonAddObject(pJson, jkLogicPlanConditions, nodeToJson, pNode->pConditions);
×
677
  }
678
  if (TSDB_CODE_SUCCESS == code) {
×
679
    code = nodeListToJson(pJson, jkLogicPlanChildren, pNode->pChildren);
×
680
  }
681
  if (TSDB_CODE_SUCCESS == code) {
×
682
    code = tjsonAddObject(pJson, jkLogicPlanLimit, nodeToJson, pNode->pLimit);
×
683
  }
684
  if (TSDB_CODE_SUCCESS == code) {
×
685
    code = tjsonAddObject(pJson, jkLogicPlanSlimit, nodeToJson, pNode->pSlimit);
×
686
  }
687
  if (TSDB_CODE_SUCCESS == code) {
×
688
    code = tjsonAddIntegerToObject(pJson, jkLogicPlanRequireDataOrder, pNode->requireDataOrder);
×
689
  }
690
  if (TSDB_CODE_SUCCESS == code) {
×
691
    code = tjsonAddIntegerToObject(pJson, jkLogicPlanResultDataOrder, pNode->resultDataOrder);
×
692
  }
693
  if (TSDB_CODE_SUCCESS == code) {
×
694
    code = tjsonAddIntegerToObject(pJson, jkLogicPlanGroupAction, pNode->groupAction);
×
695
  }
696

697
  return code;
×
698
}
699

700
static int32_t jsonToLogicPlanNode(const SJson* pJson, void* pObj) {
×
701
  SLogicNode* pNode = (SLogicNode*)pObj;
×
702

703
  int32_t code = jsonToNodeList(pJson, jkLogicPlanTargets, &pNode->pTargets);
×
704
  if (TSDB_CODE_SUCCESS == code) {
×
705
    code = jsonToNodeObject(pJson, jkLogicPlanConditions, &pNode->pConditions);
×
706
  }
707
  if (TSDB_CODE_SUCCESS == code) {
×
708
    code = jsonToNodeList(pJson, jkLogicPlanChildren, &pNode->pChildren);
×
709
  }
710
  if (TSDB_CODE_SUCCESS == code) {
×
711
    code = jsonToNodeObject(pJson, jkLogicPlanLimit, &pNode->pLimit);
×
712
  }
713
  if (TSDB_CODE_SUCCESS == code) {
×
714
    code = jsonToNodeObject(pJson, jkLogicPlanSlimit, &pNode->pSlimit);
×
715
  }
716
  if (TSDB_CODE_SUCCESS == code) {
×
717
    tjsonGetNumberValue(pJson, jkLogicPlanRequireDataOrder, pNode->requireDataOrder, code);
×
718
  }
719
  if (TSDB_CODE_SUCCESS == code) {
×
720
    tjsonGetNumberValue(pJson, jkLogicPlanResultDataOrder, pNode->resultDataOrder, code);
×
721
  }
722
  if (TSDB_CODE_SUCCESS == code) {
×
723
    tjsonGetNumberValue(pJson, jkLogicPlanGroupAction, pNode->groupAction, code);
×
724
  }
725

726
  return code;
×
727
}
728

729
static const char* jkScanLogicPlanScanCols = "ScanCols";
730
static const char* jkScanLogicPlanScanPseudoCols = "ScanPseudoCols";
731
static const char* jkScanLogicPlanTableType = "TableType";
732
static const char* jkScanLogicPlanTableId = "TableId";
733
static const char* jkScanLogicPlanStableId = "StableId";
734
static const char* jkScanLogicPlanScanType = "ScanType";
735
static const char* jkScanLogicPlanScanCount = "ScanCount";
736
static const char* jkScanLogicPlanReverseScanCount = "ReverseScanCount";
737
static const char* jkScanLogicPlanDynamicScanFuncs = "DynamicScanFuncs";
738
static const char* jkScanLogicPlanDataRequired = "DataRequired";
739
static const char* jkScanLogicPlanTagCond = "TagCond";
740
static const char* jkScanLogicPlanGroupTags = "GroupTags";
741
static const char* jkScanLogicPlanOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
742
static const char* jkScanLogicPlanFilesetDelimited = "FilesetDelimited";
743
static const char* jkScanLogicPlanParaTablesSort = "ParaTablesSort";
744
static const char* jkScanLogicPlanSmallDataTsSort = "SmallDataTsSort";
745

746
static int32_t logicScanNodeToJson(const void* pObj, SJson* pJson) {
×
747
  const SScanLogicNode* pNode = (const SScanLogicNode*)pObj;
×
748

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

801
static int32_t jsonToLogicScanNode(const SJson* pJson, void* pObj) {
×
802
  SScanLogicNode* pNode = (SScanLogicNode*)pObj;
×
803

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

857
static const char* jkProjectLogicPlanProjections = "Projections";
858
static const char* jkProjectLogicPlanIgnoreGroupId = "IgnoreGroupId";
859
static const char* jkProjectLogicPlanInputIgnoreGroup = "InputIgnoreGroup";
860

861
static int32_t logicProjectNodeToJson(const void* pObj, SJson* pJson) {
×
862
  const SProjectLogicNode* pNode = (const SProjectLogicNode*)pObj;
×
863

864
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
865
  if (TSDB_CODE_SUCCESS == code) {
×
866
    code = nodeListToJson(pJson, jkProjectLogicPlanProjections, pNode->pProjections);
×
867
  }
868
  if (TSDB_CODE_SUCCESS == code) {
×
869
    code = tjsonAddBoolToObject(pJson, jkProjectLogicPlanIgnoreGroupId, pNode->ignoreGroupId);
×
870
  }
871
  if (TSDB_CODE_SUCCESS == code) {
×
872
    code = tjsonAddBoolToObject(pJson, jkProjectLogicPlanInputIgnoreGroup, pNode->inputIgnoreGroup);
×
873
  }
874

875
  return code;
×
876
}
877

878
static int32_t jsonToLogicProjectNode(const SJson* pJson, void* pObj) {
×
879
  SProjectLogicNode* pNode = (SProjectLogicNode*)pObj;
×
880

881
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
882
  if (TSDB_CODE_SUCCESS == code) {
×
883
    code = jsonToNodeList(pJson, jkProjectLogicPlanProjections, &pNode->pProjections);
×
884
  }
885
  if (TSDB_CODE_SUCCESS == code) {
×
886
    code = tjsonGetBoolValue(pJson, jkProjectLogicPlanIgnoreGroupId, &pNode->ignoreGroupId);
×
887
  }
888
  if (TSDB_CODE_SUCCESS == code) {
×
889
    code = tjsonGetBoolValue(pJson, jkProjectLogicPlanInputIgnoreGroup, &pNode->inputIgnoreGroup);
×
890
  }
891
  return code;
×
892
}
893

894
static const char* jkVnodeModifyLogicPlanModifyType = "ModifyType";
895
static const char* jkVnodeModifyLogicPlanMsgType = "MsgType";
896
static const char* jkVnodeModifyLogicPlanAffectedRows = "AffectedRows";
897

898
static int32_t logicVnodeModifyNodeToJson(const void* pObj, SJson* pJson) {
×
899
  const SVnodeModifyLogicNode* pNode = (const SVnodeModifyLogicNode*)pObj;
×
900

901
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
902
  if (TSDB_CODE_SUCCESS == code) {
×
903
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyLogicPlanModifyType, pNode->modifyType);
×
904
  }
905
  if (TSDB_CODE_SUCCESS == code) {
×
906
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyLogicPlanMsgType, pNode->msgType);
×
907
  }
908
  if (TSDB_CODE_SUCCESS == code) {
×
909
    code = tjsonAddObject(pJson, jkVnodeModifyLogicPlanAffectedRows, nodeToJson, pNode->pAffectedRows);
×
910
  }
911

912
  return code;
×
913
}
914

915
static int32_t jsonToLogicVnodeModifyNode(const SJson* pJson, void* pObj) {
×
916
  SVnodeModifyLogicNode* pNode = (SVnodeModifyLogicNode*)pObj;
×
917

918
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
919
  if (TSDB_CODE_SUCCESS == code) {
×
920
    tjsonGetNumberValue(pJson, jkVnodeModifyLogicPlanModifyType, pNode->modifyType, code);
×
921
  }
922
  if (TSDB_CODE_SUCCESS == code) {
×
923
    code = tjsonGetIntValue(pJson, jkVnodeModifyLogicPlanMsgType, &pNode->msgType);
×
924
  }
925
  if (TSDB_CODE_SUCCESS == code) {
×
926
    code = jsonToNodeObject(pJson, jkVnodeModifyLogicPlanAffectedRows, &pNode->pAffectedRows);
×
927
  }
928

929
  return code;
×
930
}
931

932
static const char* jkExchangeLogicPlanSrcStartGroupId = "SrcStartGroupId";
933
static const char* jkExchangeLogicPlanSrcEndGroupId = "SrcEndGroupId";
934

935
static int32_t logicExchangeNodeToJson(const void* pObj, SJson* pJson) {
×
936
  const SExchangeLogicNode* pNode = (const SExchangeLogicNode*)pObj;
×
937

938
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
939
  if (TSDB_CODE_SUCCESS == code) {
×
940
    code = tjsonAddIntegerToObject(pJson, jkExchangeLogicPlanSrcStartGroupId, pNode->srcStartGroupId);
×
941
  }
942
  if (TSDB_CODE_SUCCESS == code) {
×
943
    code = tjsonAddIntegerToObject(pJson, jkExchangeLogicPlanSrcEndGroupId, pNode->srcEndGroupId);
×
944
  }
945

946
  return code;
×
947
}
948

949
static int32_t jsonToLogicExchangeNode(const SJson* pJson, void* pObj) {
×
950
  SExchangeLogicNode* pNode = (SExchangeLogicNode*)pObj;
×
951

952
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
953
  if (TSDB_CODE_SUCCESS == code) {
×
954
    code = tjsonGetIntValue(pJson, jkExchangeLogicPlanSrcStartGroupId, &pNode->srcStartGroupId);
×
955
  }
956
  if (TSDB_CODE_SUCCESS == code) {
×
957
    code = tjsonGetIntValue(pJson, jkExchangeLogicPlanSrcEndGroupId, &pNode->srcEndGroupId);
×
958
  }
959

960
  return code;
×
961
}
962

963
static const char* jkMergeLogicPlanMergeKeys = "MergeKeys";
964
static const char* jkMergeLogicPlanInputs = "Inputs";
965
static const char* jkMergeLogicPlanNumOfChannels = "NumOfChannels";
966
static const char* jkMergeLogicPlanSrcGroupId = "SrcGroupId";
967

968
static int32_t logicMergeNodeToJson(const void* pObj, SJson* pJson) {
×
969
  const SMergeLogicNode* pNode = (const SMergeLogicNode*)pObj;
×
970

971
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
972
  if (TSDB_CODE_SUCCESS == code) {
×
973
    code = nodeListToJson(pJson, jkMergeLogicPlanMergeKeys, pNode->pMergeKeys);
×
974
  }
975
  if (TSDB_CODE_SUCCESS == code) {
×
976
    code = nodeListToJson(pJson, jkMergeLogicPlanInputs, pNode->pInputs);
×
977
  }
978
  if (TSDB_CODE_SUCCESS == code) {
×
979
    code = tjsonAddIntegerToObject(pJson, jkMergeLogicPlanNumOfChannels, pNode->numOfChannels);
×
980
  }
981
  if (TSDB_CODE_SUCCESS == code) {
×
982
    code = tjsonAddIntegerToObject(pJson, jkMergeLogicPlanSrcGroupId, pNode->srcGroupId);
×
983
  }
984

985
  return code;
×
986
}
987

988
static int32_t jsonToLogicMergeNode(const SJson* pJson, void* pObj) {
×
989
  SMergeLogicNode* pNode = (SMergeLogicNode*)pObj;
×
990

991
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
992
  if (TSDB_CODE_SUCCESS == code) {
×
993
    code = jsonToNodeList(pJson, jkMergeLogicPlanMergeKeys, &pNode->pMergeKeys);
×
994
  }
995
  if (TSDB_CODE_SUCCESS == code) {
×
996
    code = jsonToNodeList(pJson, jkMergeLogicPlanInputs, &pNode->pInputs);
×
997
  }
998
  if (TSDB_CODE_SUCCESS == code) {
×
999
    code = tjsonGetIntValue(pJson, jkMergeLogicPlanNumOfChannels, &pNode->numOfChannels);
×
1000
  }
1001
  if (TSDB_CODE_SUCCESS == code) {
×
1002
    code = tjsonGetIntValue(pJson, jkMergeLogicPlanSrcGroupId, &pNode->srcGroupId);
×
1003
  }
1004

1005
  return code;
×
1006
}
1007

1008
static const char* jkWindowLogicPlanWinType = "WinType";
1009
static const char* jkWindowLogicPlanFuncs = "Funcs";
1010
static const char* jkWindowLogicPlanInterval = "Interval";
1011
static const char* jkWindowLogicPlanOffset = "Offset";
1012
static const char* jkWindowLogicPlanSliding = "Sliding";
1013
static const char* jkWindowLogicPlanIntervalUnit = "IntervalUnit";
1014
static const char* jkWindowLogicPlanSlidingUnit = "SlidingUnit";
1015
static const char* jkWindowLogicPlanSessionGap = "SessionGap";
1016
static const char* jkWindowLogicPlanTspk = "Tspk";
1017
static const char* jkWindowLogicPlanStateExpr = "StateExpr";
1018
static const char* jkWindowLogicPlanTriggerType = "TriggerType";
1019
static const char* jkWindowLogicPlanWatermark = "Watermark";
1020
static const char* jkWindowLogicPlanDeleteMark = "DeleteMark";
1021

1022
static int32_t logicWindowNodeToJson(const void* pObj, SJson* pJson) {
×
1023
  const SWindowLogicNode* pNode = (const SWindowLogicNode*)pObj;
×
1024

1025
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1026
  if (TSDB_CODE_SUCCESS == code) {
×
1027
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanWinType, pNode->winType);
×
1028
  }
1029
  if (TSDB_CODE_SUCCESS == code) {
×
1030
    code = nodeListToJson(pJson, jkWindowLogicPlanFuncs, pNode->pFuncs);
×
1031
  }
1032
  if (TSDB_CODE_SUCCESS == code) {
×
1033
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanInterval, pNode->interval);
×
1034
  }
1035
  if (TSDB_CODE_SUCCESS == code) {
×
1036
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanOffset, pNode->offset);
×
1037
  }
1038
  if (TSDB_CODE_SUCCESS == code) {
×
1039
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanSliding, pNode->sliding);
×
1040
  }
1041
  if (TSDB_CODE_SUCCESS == code) {
×
1042
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanIntervalUnit, pNode->intervalUnit);
×
1043
  }
1044
  if (TSDB_CODE_SUCCESS == code) {
×
1045
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanSlidingUnit, pNode->slidingUnit);
×
1046
  }
1047
  if (TSDB_CODE_SUCCESS == code) {
×
1048
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanSessionGap, pNode->sessionGap);
×
1049
  }
1050
  if (TSDB_CODE_SUCCESS == code) {
×
1051
    code = tjsonAddObject(pJson, jkWindowLogicPlanTspk, nodeToJson, pNode->pTspk);
×
1052
  }
1053
  if (TSDB_CODE_SUCCESS == code) {
×
1054
    code = tjsonAddObject(pJson, jkWindowLogicPlanStateExpr, nodeToJson, pNode->pStateExpr);
×
1055
  }
1056
  if (TSDB_CODE_SUCCESS == code) {
×
1057
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanTriggerType, pNode->triggerType);
×
1058
  }
1059
  if (TSDB_CODE_SUCCESS == code) {
×
1060
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanWatermark, pNode->watermark);
×
1061
  }
1062
  if (TSDB_CODE_SUCCESS == code) {
×
1063
    code = tjsonAddIntegerToObject(pJson, jkWindowLogicPlanDeleteMark, pNode->deleteMark);
×
1064
  }
1065

1066
  return code;
×
1067
}
1068

1069
static int32_t jsonToLogicWindowNode(const SJson* pJson, void* pObj) {
×
1070
  SWindowLogicNode* pNode = (SWindowLogicNode*)pObj;
×
1071

1072
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1073
  if (TSDB_CODE_SUCCESS == code) {
×
1074
    tjsonGetNumberValue(pJson, jkWindowLogicPlanWinType, pNode->winType, code);
×
1075
  }
1076
  if (TSDB_CODE_SUCCESS == code) {
×
1077
    code = jsonToNodeList(pJson, jkWindowLogicPlanFuncs, &pNode->pFuncs);
×
1078
  }
1079
  if (TSDB_CODE_SUCCESS == code) {
×
1080
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanInterval, &pNode->interval);
×
1081
  }
1082
  if (TSDB_CODE_SUCCESS == code) {
×
1083
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanOffset, &pNode->offset);
×
1084
  }
1085
  if (TSDB_CODE_SUCCESS == code) {
×
1086
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanSliding, &pNode->sliding);
×
1087
  }
1088
  if (TSDB_CODE_SUCCESS == code) {
×
1089
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanIntervalUnit, &pNode->intervalUnit);
×
1090
  }
1091
  if (TSDB_CODE_SUCCESS == code) {
×
1092
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanSlidingUnit, &pNode->slidingUnit);
×
1093
  }
1094
  if (TSDB_CODE_SUCCESS == code) {
×
1095
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanSessionGap, &pNode->sessionGap);
×
1096
  }
1097
  if (TSDB_CODE_SUCCESS == code) {
×
1098
    code = jsonToNodeObject(pJson, jkWindowLogicPlanTspk, &pNode->pTspk);
×
1099
  }
1100
  if (TSDB_CODE_SUCCESS == code) {
×
1101
    code = jsonToNodeObject(pJson, jkWindowLogicPlanStateExpr, &pNode->pStateExpr);
×
1102
  }
1103
  if (TSDB_CODE_SUCCESS == code) {
×
1104
    code = tjsonGetTinyIntValue(pJson, jkWindowLogicPlanTriggerType, &pNode->triggerType);
×
1105
  }
1106
  if (TSDB_CODE_SUCCESS == code) {
×
1107
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanWatermark, &pNode->watermark);
×
1108
  }
1109
  if (TSDB_CODE_SUCCESS == code) {
×
1110
    code = tjsonGetBigIntValue(pJson, jkWindowLogicPlanDeleteMark, &pNode->deleteMark);
×
1111
  }
1112

1113
  return code;
×
1114
}
1115

1116
static const char* jkFillLogicPlanMode = "Mode";
1117
static const char* jkFillLogicPlanWStartTs = "WStartTs";
1118
static const char* jkFillLogicPlanValues = "Values";
1119
static const char* jkFillLogicPlanStartTime = "StartTime";
1120
static const char* jkFillLogicPlanEndTime = "EndTime";
1121

1122
static int32_t logicFillNodeToJson(const void* pObj, SJson* pJson) {
×
1123
  const SFillLogicNode* pNode = (const SFillLogicNode*)pObj;
×
1124

1125
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1126
  if (TSDB_CODE_SUCCESS == code) {
×
1127
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanMode, pNode->mode);
×
1128
  }
1129
  if (TSDB_CODE_SUCCESS == code) {
×
1130
    code = tjsonAddObject(pJson, jkFillLogicPlanWStartTs, nodeToJson, pNode->pWStartTs);
×
1131
  }
1132
  if (TSDB_CODE_SUCCESS == code) {
×
1133
    code = tjsonAddObject(pJson, jkFillLogicPlanValues, nodeToJson, pNode->pValues);
×
1134
  }
1135
  if (TSDB_CODE_SUCCESS == code) {
×
1136
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanStartTime, pNode->timeRange.skey);
×
1137
  }
1138
  if (TSDB_CODE_SUCCESS == code) {
×
1139
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanEndTime, pNode->timeRange.ekey);
×
1140
  }
1141

1142
  return code;
×
1143
}
1144

1145
static int32_t jsonToLogicFillNode(const SJson* pJson, void* pObj) {
×
1146
  SFillLogicNode* pNode = (SFillLogicNode*)pObj;
×
1147

1148
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1149
  if (TSDB_CODE_SUCCESS == code) {
×
1150
    tjsonGetNumberValue(pJson, jkFillLogicPlanMode, pNode->mode, code);
×
1151
  }
1152
  if (TSDB_CODE_SUCCESS == code) {
×
1153
    code = jsonToNodeObject(pJson, jkFillLogicPlanWStartTs, &pNode->pWStartTs);
×
1154
  }
1155
  if (TSDB_CODE_SUCCESS == code) {
×
1156
    code = jsonToNodeObject(pJson, jkFillLogicPlanValues, &pNode->pValues);
×
1157
  }
1158
  if (TSDB_CODE_SUCCESS == code) {
×
1159
    code = tjsonGetBigIntValue(pJson, jkFillLogicPlanStartTime, &pNode->timeRange.skey);
×
1160
  }
1161
  if (TSDB_CODE_SUCCESS == code) {
×
1162
    code = tjsonGetBigIntValue(pJson, jkFillLogicPlanEndTime, &pNode->timeRange.ekey);
×
1163
  }
1164

1165
  return code;
×
1166
}
1167

1168
static const char* jkSortLogicPlanSortKeys = "SortKeys";
1169

1170
static int32_t logicSortNodeToJson(const void* pObj, SJson* pJson) {
×
1171
  const SSortLogicNode* pNode = (const SSortLogicNode*)pObj;
×
1172

1173
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1174
  if (TSDB_CODE_SUCCESS == code) {
×
1175
    code = nodeListToJson(pJson, jkSortLogicPlanSortKeys, pNode->pSortKeys);
×
1176
  }
1177

1178
  return code;
×
1179
}
1180

1181
static int32_t jsonToLogicSortNode(const SJson* pJson, void* pObj) {
×
1182
  SSortLogicNode* pNode = (SSortLogicNode*)pObj;
×
1183

1184
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1185
  if (TSDB_CODE_SUCCESS == code) {
×
1186
    code = jsonToNodeList(pJson, jkSortLogicPlanSortKeys, &pNode->pSortKeys);
×
1187
  }
1188

1189
  return code;
×
1190
}
1191

1192
static const char* jkPartitionLogicPlanPartitionKeys = "PartitionKeys";
1193

1194
static int32_t logicPartitionNodeToJson(const void* pObj, SJson* pJson) {
×
1195
  const SPartitionLogicNode* pNode = (const SPartitionLogicNode*)pObj;
×
1196

1197
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1198
  if (TSDB_CODE_SUCCESS == code) {
×
1199
    code = nodeListToJson(pJson, jkPartitionLogicPlanPartitionKeys, pNode->pPartitionKeys);
×
1200
  }
1201

1202
  return code;
×
1203
}
1204

1205
static int32_t jsonToLogicPartitionNode(const SJson* pJson, void* pObj) {
×
1206
  SPartitionLogicNode* pNode = (SPartitionLogicNode*)pObj;
×
1207

1208
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1209
  if (TSDB_CODE_SUCCESS == code) {
×
1210
    code = jsonToNodeList(pJson, jkPartitionLogicPlanPartitionKeys, &pNode->pPartitionKeys);
×
1211
  }
1212

1213
  return code;
×
1214
}
1215

1216
static const char* jkIndefRowsFuncLogicPlanFuncs = "Funcs";
1217

1218
static int32_t logicIndefRowsFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1219
  const SIndefRowsFuncLogicNode* pNode = (const SIndefRowsFuncLogicNode*)pObj;
×
1220

1221
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1222
  if (TSDB_CODE_SUCCESS == code) {
×
1223
    code = nodeListToJson(pJson, jkIndefRowsFuncLogicPlanFuncs, pNode->pFuncs);
×
1224
  }
1225

1226
  return code;
×
1227
}
1228

1229
static int32_t jsonToLogicIndefRowsFuncNode(const SJson* pJson, void* pObj) {
×
1230
  SIndefRowsFuncLogicNode* pNode = (SIndefRowsFuncLogicNode*)pObj;
×
1231

1232
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1233
  if (TSDB_CODE_SUCCESS == code) {
×
1234
    code = jsonToNodeList(pJson, jkIndefRowsFuncLogicPlanFuncs, &pNode->pFuncs);
×
1235
  }
1236

1237
  return code;
×
1238
}
1239

1240
static const char* jkStreamOption_triggerType = "StreamOptionTriggerType";
1241
static const char* jkStreamOption_watermark = "StreamOptionWatermark";
1242
static const char* jkStreamOption_deleteMark = "StreamOptionDeleteMark";
1243
static const char* jkStreamOption_igExpired = "StreamOptionIgExpired";
1244
static const char* jkStreamOption_igCheckUpdate = "StreamOption_igCheckUpdate";
1245
static const char* jkStreamOption_destHasPrimaryKey = "StreamOptionDestHasPrimaryKey";
1246

1247
static int32_t streamNodeOptionToJson(const void* pObj, SJson* pJson) {
20✔
1248
  const SStreamNodeOption* pNode = (const SStreamNodeOption*)pObj;
20✔
1249
  int32_t              code = tjsonAddIntegerToObject(pJson, jkStreamOption_triggerType, pNode->triggerType);
20✔
1250

1251
  if (TSDB_CODE_SUCCESS == code) {
20!
1252
    code = tjsonAddIntegerToObject(pJson, jkStreamOption_watermark, pNode->watermark);
20✔
1253
  }
1254
  if (TSDB_CODE_SUCCESS == code) {
20!
1255
    code = tjsonAddIntegerToObject(pJson, jkStreamOption_deleteMark, pNode->deleteMark);
20✔
1256
  }
1257
  if (TSDB_CODE_SUCCESS == code) {
20!
1258
    code = tjsonAddIntegerToObject(pJson, jkStreamOption_igExpired, pNode->igExpired);
20✔
1259
  }
1260
  if (TSDB_CODE_SUCCESS == code) {
20!
1261
    code = tjsonAddIntegerToObject(pJson, jkStreamOption_igCheckUpdate, pNode->igCheckUpdate);
20✔
1262
  }
1263
  if (TSDB_CODE_SUCCESS == code) {
20!
1264
    code = tjsonAddIntegerToObject(pJson, jkStreamOption_destHasPrimaryKey, pNode->destHasPrimaryKey);
20✔
1265
  }
1266
  return code;
20✔
1267
}
1268

1269
static int32_t jsonToStreamNodeOption(const SJson* pJson, void* pObj) {
20✔
1270
  SStreamNodeOption* pNode = (SStreamNodeOption*)pObj;
20✔
1271
  int32_t        code = tjsonGetTinyIntValue(pJson, jkStreamOption_triggerType, &pNode->triggerType);
20✔
1272

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

1291
static const char* jkInterpFuncLogicPlanFuncs = "Funcs";
1292
static const char* jkInterpFuncLogicPlanStartTime = "StartTime";
1293
static const char* jkInterpFuncLogicPlanEndTime = "EndTime";
1294
static const char* jkInterpFuncLogicPlanInterval = "Interval";
1295
static const char* jkInterpFuncLogicPlanIntervalUnit = "IntervalUnit";
1296
static const char* jkInterpFuncLogicPlanPrecision = "Precision";
1297
static const char* jkInterpFuncLogicPlanFillMode = "fillMode";
1298
static const char* jkInterpFuncLogicPlanFillValues = "FillValues";
1299
static const char* jkInterpFuncLogicPlanTimeSeries = "TimeSeries";
1300
static const char* jkInterpFuncLogicPlanStreamNodeOption = "StreamNodeOption";
1301

1302
static int32_t logicInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1303
  const SInterpFuncLogicNode* pNode = (const SInterpFuncLogicNode*)pObj;
×
1304

1305
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1306
  if (TSDB_CODE_SUCCESS == code) {
×
1307
    code = nodeListToJson(pJson, jkInterpFuncLogicPlanFuncs, pNode->pFuncs);
×
1308
  }
1309
  if (TSDB_CODE_SUCCESS == code) {
×
1310
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanStartTime, pNode->timeRange.skey);
×
1311
  }
1312
  if (TSDB_CODE_SUCCESS == code) {
×
1313
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanEndTime, pNode->timeRange.ekey);
×
1314
  }
1315
  if (TSDB_CODE_SUCCESS == code) {
×
1316
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanInterval, pNode->interval);
×
1317
  }
1318
  if (TSDB_CODE_SUCCESS == code) {
×
1319
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanIntervalUnit, pNode->intervalUnit);
×
1320
  }
1321
  if (TSDB_CODE_SUCCESS == code) {
×
1322
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanPrecision, pNode->precision);
×
1323
  }
1324
  if (TSDB_CODE_SUCCESS == code) {
×
1325
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncLogicPlanFillMode, pNode->fillMode);
×
1326
  }
1327
  if (TSDB_CODE_SUCCESS == code) {
×
1328
    code = tjsonAddObject(pJson, jkInterpFuncLogicPlanFillValues, nodeToJson, pNode->pFillValues);
×
1329
  }
1330
  if (TSDB_CODE_SUCCESS == code) {
×
1331
    code = tjsonAddObject(pJson, jkInterpFuncLogicPlanTimeSeries, nodeToJson, pNode->pTimeSeries);
×
1332
  }
1333
  if (TSDB_CODE_SUCCESS == code) {
×
1334
    code = tjsonAddObject(pJson, jkInterpFuncLogicPlanStreamNodeOption, streamNodeOptionToJson, &pNode->streamNodeOption);
×
1335
  }
1336

1337
  return code;
×
1338
}
1339

1340
static int32_t jsonToLogicInterpFuncNode(const SJson* pJson, void* pObj) {
×
1341
  SInterpFuncLogicNode* pNode = (SInterpFuncLogicNode*)pObj;
×
1342

1343
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1344
  if (TSDB_CODE_SUCCESS == code) {
×
1345
    code = jsonToNodeList(pJson, jkInterpFuncLogicPlanFuncs, &pNode->pFuncs);
×
1346
  }
1347
  if (TSDB_CODE_SUCCESS == code) {
×
1348
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanStartTime, &pNode->timeRange.skey);
×
1349
  }
1350
  if (TSDB_CODE_SUCCESS == code) {
×
1351
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanEndTime, &pNode->timeRange.ekey);
×
1352
  }
1353
  if (TSDB_CODE_SUCCESS == code) {
×
1354
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanInterval, &pNode->interval);
×
1355
  }
1356
  if (TSDB_CODE_SUCCESS == code) {
×
1357
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanIntervalUnit, &pNode->intervalUnit);
×
1358
  }
1359
  if (TSDB_CODE_SUCCESS == code) {
×
1360
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanPrecision, &pNode->precision);
×
1361
  }
1362
  if (TSDB_CODE_SUCCESS == code) {
×
1363
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanFillMode, (int8_t*)&pNode->fillMode);
×
1364
  }
1365
  if (TSDB_CODE_SUCCESS == code) {
×
1366
    code = tjsonToObject(pJson, jkInterpFuncLogicPlanFillValues, jsonToNode, pNode->pFillValues);
×
1367
  }
1368
  if (TSDB_CODE_SUCCESS == code) {
×
1369
    code = jsonToNodeObject(pJson, jkInterpFuncLogicPlanTimeSeries, &pNode->pTimeSeries);
×
1370
  }
1371
  if (TSDB_CODE_SUCCESS == code) {
×
1372
    code = tjsonToObject(pJson, jkInterpFuncLogicPlanStreamNodeOption, jsonToStreamNodeOption, &pNode->streamNodeOption);
×
1373
  }
1374

1375
  return code;
×
1376
}
1377

1378
static const char* jkForecastFuncLogicPlanFuncs = "Funcs";
1379

1380
static int32_t logicForecastFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1381
  const SForecastFuncLogicNode* pNode = (const SForecastFuncLogicNode*)pObj;
×
1382

1383
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1384
  if (TSDB_CODE_SUCCESS == code) {
×
1385
    code = nodeListToJson(pJson, jkForecastFuncLogicPlanFuncs, pNode->pFuncs);
×
1386
  }
1387

1388
  return code;
×
1389
}
1390

1391
static int32_t jsonToLogicForecastFuncNode(const SJson* pJson, void* pObj) {
×
1392
  SForecastFuncLogicNode* pNode = (SForecastFuncLogicNode*)pObj;
×
1393

1394
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1395
  if (TSDB_CODE_SUCCESS == code) {
×
1396
    code = jsonToNodeList(pJson, jkForecastFuncLogicPlanFuncs, &pNode->pFuncs);
×
1397
  }
1398

1399
  return code;
×
1400
}
1401

1402
static const char* jkGroupCacheLogicPlanGrpColsMayBeNull = "GroupColsMayBeNull";
1403
static const char* jkGroupCacheLogicPlanGroupByUid = "GroupByUid";
1404
static const char* jkGroupCacheLogicPlanGlobalGroup = "GlobalGroup";
1405
static const char* jkGroupCacheLogicPlanGroupCols = "GroupCols";
1406

1407
static int32_t logicGroupCacheNodeToJson(const void* pObj, SJson* pJson) {
×
1408
  const SGroupCacheLogicNode* pNode = (const SGroupCacheLogicNode*)pObj;
×
1409

1410
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1411
  if (TSDB_CODE_SUCCESS == code) {
×
1412
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGrpColsMayBeNull, pNode->grpColsMayBeNull);
×
1413
  }
1414
  if (TSDB_CODE_SUCCESS == code) {
×
1415
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGroupByUid, pNode->grpByUid);
×
1416
  }
1417
  if (TSDB_CODE_SUCCESS == code) {
×
1418
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGlobalGroup, pNode->globalGrp);
×
1419
  }
1420
  if (TSDB_CODE_SUCCESS == code) {
×
1421
    code = nodeListToJson(pJson, jkGroupCacheLogicPlanGroupCols, pNode->pGroupCols);
×
1422
  }
1423

1424
  return code;
×
1425
}
1426

1427
static int32_t jsonToLogicGroupCacheNode(const SJson* pJson, void* pObj) {
×
1428
  SGroupCacheLogicNode* pNode = (SGroupCacheLogicNode*)pObj;
×
1429

1430
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1431
  if (TSDB_CODE_SUCCESS == code) {
×
1432
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGrpColsMayBeNull, &pNode->grpColsMayBeNull);
×
1433
  }
1434
  if (TSDB_CODE_SUCCESS == code) {
×
1435
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGroupByUid, &pNode->grpByUid);
×
1436
  }
1437
  if (TSDB_CODE_SUCCESS == code) {
×
1438
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGlobalGroup, &pNode->globalGrp);
×
1439
  }
1440
  if (TSDB_CODE_SUCCESS == code) {
×
1441
    code = jsonToNodeList(pJson, jkGroupCacheLogicPlanGroupCols, &pNode->pGroupCols);
×
1442
  }
1443

1444
  return code;
×
1445
}
1446

1447
static const char* jkDynQueryCtrlLogicPlanQueryType = "QueryType";
1448
static const char* jkDynQueryCtrlLogicPlanStbJoinBatchFetch = "BatchFetch";
1449
static const char* jkDynQueryCtrlLogicPlanStbJoinVgList = "VgroupList";
1450
static const char* jkDynQueryCtrlLogicPlanStbJoinUidList = "UidList";
1451

1452
static int32_t logicDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
×
1453
  const SDynQueryCtrlLogicNode* pNode = (const SDynQueryCtrlLogicNode*)pObj;
×
1454

1455
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1456
  if (TSDB_CODE_SUCCESS == code) {
×
1457
    code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlLogicPlanQueryType, pNode->qType);
×
1458
  }
1459
  if (TSDB_CODE_SUCCESS == code) {
×
1460
    code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlLogicPlanStbJoinBatchFetch, pNode->stbJoin.batchFetch);
×
1461
  }
1462
  if (TSDB_CODE_SUCCESS == code) {
×
1463
    code = nodeListToJson(pJson, jkDynQueryCtrlLogicPlanStbJoinVgList, pNode->stbJoin.pVgList);
×
1464
  }
1465
  if (TSDB_CODE_SUCCESS == code) {
×
1466
    code = nodeListToJson(pJson, jkDynQueryCtrlLogicPlanStbJoinUidList, pNode->stbJoin.pUidList);
×
1467
  }
1468

1469
  return code;
×
1470
}
1471

1472
static int32_t jsonToLogicDynQueryCtrlNode(const SJson* pJson, void* pObj) {
×
1473
  SDynQueryCtrlLogicNode* pNode = (SDynQueryCtrlLogicNode*)pObj;
×
1474

1475
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1476
  if (TSDB_CODE_SUCCESS == code) {
×
1477
    tjsonGetNumberValue(pJson, jkDynQueryCtrlLogicPlanQueryType, pNode->qType, code);
×
1478
  }
1479
  if (TSDB_CODE_SUCCESS == code) {
×
1480
    code = tjsonGetBoolValue(pJson, jkDynQueryCtrlLogicPlanStbJoinBatchFetch, &pNode->stbJoin.batchFetch);
×
1481
  }
1482
  if (TSDB_CODE_SUCCESS == code) {
×
1483
    code = jsonToNodeList(pJson, jkDynQueryCtrlLogicPlanStbJoinVgList, &pNode->stbJoin.pVgList);
×
1484
  }
1485
  if (TSDB_CODE_SUCCESS == code) {
×
1486
    code = jsonToNodeList(pJson, jkDynQueryCtrlLogicPlanStbJoinUidList, &pNode->stbJoin.pUidList);
×
1487
  }
1488

1489
  return code;
×
1490
}
1491

1492
static const char* jkSubplanIdQueryId = "QueryId";
1493
static const char* jkSubplanIdGroupId = "GroupId";
1494
static const char* jkSubplanIdSubplanId = "SubplanId";
1495

1496
static int32_t subplanIdToJson(const void* pObj, SJson* pJson) {
12,353✔
1497
  const SSubplanId* pNode = (const SSubplanId*)pObj;
12,353✔
1498

1499
  int32_t code = tjsonAddIntegerToObject(pJson, jkSubplanIdQueryId, pNode->queryId);
12,353✔
1500
  if (TSDB_CODE_SUCCESS == code) {
12,353!
1501
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdGroupId, pNode->groupId);
12,353✔
1502
  }
1503
  if (TSDB_CODE_SUCCESS == code) {
12,353!
1504
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdSubplanId, pNode->subplanId);
12,353✔
1505
  }
1506

1507
  return code;
12,353✔
1508
}
1509

1510
static int32_t jsonToSubplanId(const SJson* pJson, void* pObj) {
11,844✔
1511
  SSubplanId* pNode = (SSubplanId*)pObj;
11,844✔
1512

1513
  int32_t code = tjsonGetUBigIntValue(pJson, jkSubplanIdQueryId, &pNode->queryId);
11,844✔
1514
  if (TSDB_CODE_SUCCESS == code) {
11,846!
1515
    code = tjsonGetIntValue(pJson, jkSubplanIdGroupId, &pNode->groupId);
11,846✔
1516
  }
1517
  if (TSDB_CODE_SUCCESS == code) {
11,846!
1518
    code = tjsonGetIntValue(pJson, jkSubplanIdSubplanId, &pNode->subplanId);
11,846✔
1519
  }
1520

1521
  return code;
11,846✔
1522
}
1523

1524
static const char* jkEndPointFqdn = "Fqdn";
1525
static const char* jkEndPointPort = "Port";
1526

1527
static int32_t epToJson(const void* pObj, SJson* pJson) {
14,169✔
1528
  const SEp* pNode = (const SEp*)pObj;
14,169✔
1529

1530
  int32_t code = tjsonAddStringToObject(pJson, jkEndPointFqdn, pNode->fqdn);
14,169✔
1531
  if (TSDB_CODE_SUCCESS == code) {
14,169!
1532
    code = tjsonAddIntegerToObject(pJson, jkEndPointPort, pNode->port);
14,169✔
1533
  }
1534

1535
  return code;
14,169✔
1536
}
1537

1538
static int32_t jsonToEp(const SJson* pJson, void* pObj) {
31,859✔
1539
  SEp* pNode = (SEp*)pObj;
31,859✔
1540

1541
  int32_t code = tjsonGetStringValue(pJson, jkEndPointFqdn, pNode->fqdn);
31,859✔
1542
  if (TSDB_CODE_SUCCESS == code) {
31,863!
1543
    code = tjsonGetSmallIntValue(pJson, jkEndPointPort, &pNode->port);
31,863✔
1544
  }
1545

1546
  return code;
31,861✔
1547
}
1548

1549
static const char* jkEpSetInUse = "InUse";
1550
static const char* jkEpSetNumOfEps = "NumOfEps";
1551
static const char* jkEpSetEps = "Eps";
1552

1553
static int32_t epSetToJson(const void* pObj, SJson* pJson) {
2,175✔
1554
  const SEpSet* pNode = (const SEpSet*)pObj;
2,175✔
1555

1556
  int32_t code = tjsonAddIntegerToObject(pJson, jkEpSetInUse, pNode->inUse);
2,175✔
1557
  if (TSDB_CODE_SUCCESS == code) {
2,175!
1558
    code = tjsonAddIntegerToObject(pJson, jkEpSetNumOfEps, pNode->numOfEps);
2,175✔
1559
  }
1560
  if (TSDB_CODE_SUCCESS == code) {
2,175!
1561
    code = tjsonAddArray(pJson, jkEpSetEps, epToJson, pNode->eps, sizeof(SEp), pNode->numOfEps);
2,175✔
1562
  }
1563

1564
  return code;
2,175✔
1565
}
1566

1567
static int32_t jsonToEpSet(const SJson* pJson, void* pObj) {
21,388✔
1568
  SEpSet* pNode = (SEpSet*)pObj;
21,388✔
1569

1570
  int32_t code = tjsonGetTinyIntValue(pJson, jkEpSetInUse, &pNode->inUse);
21,388✔
1571
  if (TSDB_CODE_SUCCESS == code) {
21,388!
1572
    code = tjsonGetTinyIntValue(pJson, jkEpSetNumOfEps, &pNode->numOfEps);
21,388✔
1573
  }
1574
  if (TSDB_CODE_SUCCESS == code) {
21,388!
1575
    code = tjsonToArray(pJson, jkEpSetEps, jsonToEp, pNode->eps, sizeof(SEp));
21,388✔
1576
  }
1577

1578
  return code;
21,388✔
1579
}
1580

1581
static const char* jkVgroupInfoVgId = "VgId";
1582
static const char* jkVgroupInfoHashBegin = "HashBegin";
1583
static const char* jkVgroupInfoHashEnd = "HashEnd";
1584
static const char* jkVgroupInfoEpSet = "EpSet";
1585
static const char* jkVgroupInfoNumOfTable = "NumOfTable";
1586

1587
static int32_t vgroupInfoToJson(const void* pObj, SJson* pJson) {
2,175✔
1588
  const SVgroupInfo* pNode = (const SVgroupInfo*)pObj;
2,175✔
1589

1590
  int32_t code = tjsonAddIntegerToObject(pJson, jkVgroupInfoVgId, pNode->vgId);
2,175✔
1591
  if (TSDB_CODE_SUCCESS == code) {
2,175!
1592
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoHashBegin, pNode->hashBegin);
2,175✔
1593
  }
1594
  if (TSDB_CODE_SUCCESS == code) {
2,175!
1595
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoHashEnd, pNode->hashEnd);
2,175✔
1596
  }
1597
  if (TSDB_CODE_SUCCESS == code) {
2,175!
1598
    code = tjsonAddObject(pJson, jkVgroupInfoEpSet, epSetToJson, &pNode->epSet);
2,175✔
1599
  }
1600
  if (TSDB_CODE_SUCCESS == code) {
2,175!
1601
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoNumOfTable, pNode->numOfTable);
2,175✔
1602
  }
1603

1604
  return code;
2,175✔
1605
}
1606

1607
static int32_t jsonToVgroupInfo(const SJson* pJson, void* pObj) {
21,388✔
1608
  SVgroupInfo* pNode = (SVgroupInfo*)pObj;
21,388✔
1609

1610
  int32_t code = tjsonGetIntValue(pJson, jkVgroupInfoVgId, &pNode->vgId);
21,388✔
1611
  if (TSDB_CODE_SUCCESS == code) {
21,388!
1612
    code = tjsonGetUIntValue(pJson, jkVgroupInfoHashBegin, &pNode->hashBegin);
21,388✔
1613
  }
1614
  if (TSDB_CODE_SUCCESS == code) {
21,388!
1615
    code = tjsonGetUIntValue(pJson, jkVgroupInfoHashEnd, &pNode->hashEnd);
21,388✔
1616
  }
1617
  if (TSDB_CODE_SUCCESS == code) {
21,388!
1618
    code = tjsonToObject(pJson, jkVgroupInfoEpSet, jsonToEpSet, &pNode->epSet);
21,388✔
1619
  }
1620
  if (TSDB_CODE_SUCCESS == code) {
21,388!
1621
    code = tjsonGetIntValue(pJson, jkVgroupInfoNumOfTable, &pNode->numOfTable);
21,388✔
1622
  }
1623

1624
  return code;
21,388✔
1625
}
1626

1627
static const char* jkVgroupsInfoNum = "Num";
1628
static const char* jkVgroupsInfoVgroups = "Vgroups";
1629

1630
static int32_t vgroupsInfoToJson(const void* pObj, SJson* pJson) {
1,047✔
1631
  const SVgroupsInfo* pNode = (const SVgroupsInfo*)pObj;
1,047✔
1632

1633
  int32_t code = tjsonAddIntegerToObject(pJson, jkVgroupsInfoNum, pNode->numOfVgroups);
1,047✔
1634
  if (TSDB_CODE_SUCCESS == code) {
1,047!
1635
    code = tjsonAddArray(pJson, jkVgroupsInfoVgroups, vgroupInfoToJson, pNode->vgroups, sizeof(SVgroupInfo),
1,047✔
1636
                         pNode->numOfVgroups);
1,047✔
1637
  }
1638

1639
  return code;
1,047✔
1640
}
1641

1642
static int32_t jsonToVgroupsInfo(const SJson* pJson, void* pObj) {
9,859✔
1643
  SVgroupsInfo* pNode = (SVgroupsInfo*)pObj;
9,859✔
1644

1645
  int32_t code = tjsonGetIntValue(pJson, jkVgroupsInfoNum, &pNode->numOfVgroups);
9,859✔
1646
  if (TSDB_CODE_SUCCESS == code) {
9,859!
1647
    code = tjsonToArray(pJson, jkVgroupsInfoVgroups, jsonToVgroupInfo, pNode->vgroups, sizeof(SVgroupInfo));
9,859✔
1648
  }
1649

1650
  return code;
9,859✔
1651
}
1652

1653
static const char* jkLogicSubplanId = "Id";
1654
static const char* jkLogicSubplanChildren = "Children";
1655
static const char* jkLogicSubplanRootNode = "RootNode";
1656
static const char* jkLogicSubplanType = "SubplanType";
1657
static const char* jkLogicSubplanVgroupsSize = "VgroupsSize";
1658
static const char* jkLogicSubplanVgroups = "Vgroups";
1659
static const char* jkLogicSubplanLevel = "Level";
1660
static const char* jkLogicSubplanSplitFlag = "SplitFlag";
1661
static const char* jkLogicSubplanNumOfComputeNodes = "NumOfComputeNodes";
1662

1663
static int32_t logicSubplanToJson(const void* pObj, SJson* pJson) {
×
1664
  const SLogicSubplan* pNode = (const SLogicSubplan*)pObj;
×
1665

1666
  int32_t code = tjsonAddObject(pJson, jkLogicSubplanId, subplanIdToJson, &pNode->id);
×
1667
  if (TSDB_CODE_SUCCESS == code) {
×
1668
    code = nodeListToJson(pJson, jkLogicSubplanChildren, pNode->pChildren);
×
1669
  }
1670
  if (TSDB_CODE_SUCCESS == code) {
×
1671
    code = tjsonAddObject(pJson, jkLogicSubplanRootNode, nodeToJson, pNode->pNode);
×
1672
  }
1673
  if (TSDB_CODE_SUCCESS == code) {
×
1674
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanType, pNode->subplanType);
×
1675
  }
1676
  if (TSDB_CODE_SUCCESS == code) {
×
1677
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanVgroupsSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
×
1678
  }
1679
  if (TSDB_CODE_SUCCESS == code) {
×
1680
    code = tjsonAddObject(pJson, jkLogicSubplanVgroups, vgroupsInfoToJson, pNode->pVgroupList);
×
1681
  }
1682
  if (TSDB_CODE_SUCCESS == code) {
×
1683
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanLevel, pNode->level);
×
1684
  }
1685
  if (TSDB_CODE_SUCCESS == code) {
×
1686
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanSplitFlag, pNode->splitFlag);
×
1687
  }
1688
  if (TSDB_CODE_SUCCESS == code) {
×
1689
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanNumOfComputeNodes, pNode->numOfComputeNodes);
×
1690
  }
1691

1692
  return code;
×
1693
}
1694

1695
static int32_t jsonToLogicSubplan(const SJson* pJson, void* pObj) {
×
1696
  SLogicSubplan* pNode = (SLogicSubplan*)pObj;
×
1697

1698
  int32_t code = tjsonToObject(pJson, jkLogicSubplanId, jsonToSubplanId, &pNode->id);
×
1699
  if (TSDB_CODE_SUCCESS == code) {
×
1700
    code = jsonToNodeList(pJson, jkLogicSubplanChildren, &pNode->pChildren);
×
1701
  }
1702
  if (TSDB_CODE_SUCCESS == code) {
×
1703
    code = jsonToNodeObject(pJson, jkLogicSubplanRootNode, (SNode**)&pNode->pNode);
×
1704
  }
1705
  if (TSDB_CODE_SUCCESS == code) {
×
1706
    tjsonGetNumberValue(pJson, jkLogicSubplanType, pNode->subplanType, code);
×
1707
  }
1708
  int32_t objSize = 0;
×
1709
  if (TSDB_CODE_SUCCESS == code) {
×
1710
    code = tjsonGetIntValue(pJson, jkLogicSubplanVgroupsSize, &objSize);
×
1711
  }
1712
  if (TSDB_CODE_SUCCESS == code) {
×
1713
    code = tjsonMakeObject(pJson, jkLogicSubplanVgroups, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
×
1714
  }
1715
  if (TSDB_CODE_SUCCESS == code) {
×
1716
    code = tjsonGetIntValue(pJson, jkLogicSubplanLevel, &pNode->level);
×
1717
  }
1718
  if (TSDB_CODE_SUCCESS == code) {
×
1719
    code = tjsonGetIntValue(pJson, jkLogicSubplanSplitFlag, &pNode->splitFlag);
×
1720
  }
1721
  if (TSDB_CODE_SUCCESS == code) {
×
1722
    code = tjsonGetIntValue(pJson, jkLogicSubplanNumOfComputeNodes, &pNode->numOfComputeNodes);
×
1723
  }
1724

1725
  return code;
×
1726
}
1727

1728
static const char* jkLogicPlanSubplans = "Subplans";
1729

1730
static int32_t logicPlanToJson(const void* pObj, SJson* pJson) {
×
1731
  const SQueryLogicPlan* pNode = (const SQueryLogicPlan*)pObj;
×
1732
  return tjsonAddObject(pJson, jkLogicPlanSubplans, nodeToJson, nodesListGetNode(pNode->pTopSubplans, 0));
×
1733
}
1734

1735
static int32_t jsonToLogicPlan(const SJson* pJson, void* pObj) {
×
1736
  SQueryLogicPlan* pNode = (SQueryLogicPlan*)pObj;
×
1737
  SNode*           pChild = NULL;
×
1738
  int32_t          code = jsonToNodeObject(pJson, jkLogicPlanSubplans, &pChild);
×
1739
  if (TSDB_CODE_SUCCESS == code) {
×
1740
    code = nodesListMakeStrictAppend(&pNode->pTopSubplans, pChild);
×
1741
  }
1742
  return code;
×
1743
}
1744

1745
static const char* jkJoinLogicPlanJoinType = "JoinType";
1746
static const char* jkJoinLogicPlanJoinAlgo = "JoinAlgo";
1747
static const char* jkJoinLogicPlanOnConditions = "OtherOnCond";
1748
static const char* jkJoinLogicPlanPrimKeyEqCondition = "PrimKeyEqCond";
1749
static const char* jkJoinLogicPlanColEqCondition = "ColumnEqCond";
1750
static const char* jkJoinLogicPlanTagEqCondition = "TagEqCond";
1751

1752
static int32_t logicJoinNodeToJson(const void* pObj, SJson* pJson) {
×
1753
  const SJoinLogicNode* pNode = (const SJoinLogicNode*)pObj;
×
1754

1755
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1756
  if (TSDB_CODE_SUCCESS == code) {
×
1757
    code = tjsonAddIntegerToObject(pJson, jkJoinLogicPlanJoinType, pNode->joinType);
×
1758
  }
1759
  if (TSDB_CODE_SUCCESS == code) {
×
1760
    code = tjsonAddIntegerToObject(pJson, jkJoinLogicPlanJoinAlgo, pNode->joinAlgo);
×
1761
  }
1762
  if (TSDB_CODE_SUCCESS == code) {
×
1763
    code = tjsonAddObject(pJson, jkJoinLogicPlanPrimKeyEqCondition, nodeToJson, pNode->pPrimKeyEqCond);
×
1764
  }
1765
  if (TSDB_CODE_SUCCESS == code) {
×
1766
    code = tjsonAddObject(pJson, jkJoinLogicPlanColEqCondition, nodeToJson, pNode->pColEqCond);
×
1767
  }
1768
  if (TSDB_CODE_SUCCESS == code) {
×
1769
    code = tjsonAddObject(pJson, jkJoinLogicPlanTagEqCondition, nodeToJson, pNode->pTagEqCond);
×
1770
  }
1771
  if (TSDB_CODE_SUCCESS == code) {
×
1772
    code = tjsonAddObject(pJson, jkJoinLogicPlanOnConditions, nodeToJson, pNode->pFullOnCond);
×
1773
  }
1774
  return code;
×
1775
}
1776

1777
static int32_t jsonToLogicJoinNode(const SJson* pJson, void* pObj) {
×
1778
  SJoinLogicNode* pNode = (SJoinLogicNode*)pObj;
×
1779

1780
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1781
  if (TSDB_CODE_SUCCESS == code) {
×
1782
    tjsonGetNumberValue(pJson, jkJoinLogicPlanJoinType, pNode->joinType, code);
×
1783
  }
1784
  if (TSDB_CODE_SUCCESS == code) {
×
1785
    tjsonGetNumberValue(pJson, jkJoinLogicPlanJoinAlgo, pNode->joinAlgo, code);
×
1786
  }
1787
  if (TSDB_CODE_SUCCESS == code) {
×
1788
    code = jsonToNodeObject(pJson, jkJoinLogicPlanPrimKeyEqCondition, &pNode->pPrimKeyEqCond);
×
1789
  }
1790
  if (TSDB_CODE_SUCCESS == code) {
×
1791
    code = jsonToNodeObject(pJson, jkJoinLogicPlanColEqCondition, &pNode->pColEqCond);
×
1792
  }
1793
  if (TSDB_CODE_SUCCESS == code) {
×
1794
    code = jsonToNodeObject(pJson, jkJoinLogicPlanTagEqCondition, &pNode->pTagEqCond);
×
1795
  }
1796
  if (TSDB_CODE_SUCCESS == code) {
×
1797
    code = jsonToNodeObject(pJson, jkJoinLogicPlanOnConditions, &pNode->pFullOnCond);
×
1798
  }
1799

1800
  return code;
×
1801
}
1802

1803
static const char* jkPhysiPlanOutputDataBlockDesc = "OutputDataBlockDesc";
1804
static const char* jkPhysiPlanConditions = "Conditions";
1805
static const char* jkPhysiPlanChildren = "Children";
1806
static const char* jkPhysiPlanLimit = "Limit";
1807
static const char* jkPhysiPlanSlimit = "SLimit";
1808

1809
static int32_t physicPlanNodeToJson(const void* pObj, SJson* pJson) {
29,282✔
1810
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
29,282✔
1811

1812
  int32_t code = tjsonAddObject(pJson, jkPhysiPlanOutputDataBlockDesc, nodeToJson, pNode->pOutputDataBlockDesc);
29,282✔
1813
  if (TSDB_CODE_SUCCESS == code) {
29,282!
1814
    code = tjsonAddObject(pJson, jkPhysiPlanConditions, nodeToJson, pNode->pConditions);
29,282✔
1815
  }
1816
  if (TSDB_CODE_SUCCESS == code) {
29,282!
1817
    code = nodeListToJson(pJson, jkPhysiPlanChildren, pNode->pChildren);
29,282✔
1818
  }
1819
  if (TSDB_CODE_SUCCESS == code) {
29,282!
1820
    code = tjsonAddObject(pJson, jkPhysiPlanLimit, nodeToJson, pNode->pLimit);
29,282✔
1821
  }
1822
  if (TSDB_CODE_SUCCESS == code) {
29,282!
1823
    code = tjsonAddObject(pJson, jkPhysiPlanSlimit, nodeToJson, pNode->pSlimit);
29,282✔
1824
  }
1825

1826
  return code;
29,282✔
1827
}
1828

1829
static int32_t jsonToPhysicPlanNode(const SJson* pJson, void* pObj) {
28,356✔
1830
  SPhysiNode* pNode = (SPhysiNode*)pObj;
28,356✔
1831

1832
  int32_t code = jsonToNodeObject(pJson, jkPhysiPlanOutputDataBlockDesc, (SNode**)&pNode->pOutputDataBlockDesc);
28,356✔
1833
  if (TSDB_CODE_SUCCESS == code) {
28,355!
1834
    code = jsonToNodeObject(pJson, jkPhysiPlanConditions, &pNode->pConditions);
28,355✔
1835
  }
1836
  if (TSDB_CODE_SUCCESS == code) {
28,345!
1837
    code = jsonToNodeList(pJson, jkPhysiPlanChildren, &pNode->pChildren);
28,345✔
1838
  }
1839
  if (TSDB_CODE_SUCCESS == code) {
28,350!
1840
    code = jsonToNodeObject(pJson, jkPhysiPlanLimit, &pNode->pLimit);
28,350✔
1841
  }
1842
  if (TSDB_CODE_SUCCESS == code) {
28,352!
1843
    code = jsonToNodeObject(pJson, jkPhysiPlanSlimit, &pNode->pSlimit);
28,352✔
1844
  }
1845

1846
  return code;
28,355✔
1847
}
1848

1849
static const char* jkNameType = "NameType";
1850
static const char* jkNameAcctId = "AcctId";
1851
static const char* jkNameDbName = "DbName";
1852
static const char* jkNameTableName = "TableName";
1853

1854
static int32_t nameToJson(const void* pObj, SJson* pJson) {
12,353✔
1855
  const SName* pNode = (const SName*)pObj;
12,353✔
1856

1857
  int32_t code = tjsonAddIntegerToObject(pJson, jkNameType, pNode->type);
12,353✔
1858
  if (TSDB_CODE_SUCCESS == code) {
12,353!
1859
    code = tjsonAddIntegerToObject(pJson, jkNameAcctId, pNode->acctId);
12,353✔
1860
  }
1861
  if (TSDB_CODE_SUCCESS == code) {
12,353!
1862
    code = tjsonAddStringToObject(pJson, jkNameDbName, pNode->dbname);
12,353✔
1863
  }
1864
  if (TSDB_CODE_SUCCESS == code) {
12,353!
1865
    code = tjsonAddStringToObject(pJson, jkNameTableName, pNode->tname);
12,353✔
1866
  }
1867

1868
  return code;
12,353✔
1869
}
1870

1871
static int32_t jsonToName(const SJson* pJson, void* pObj) {
11,845✔
1872
  SName* pNode = (SName*)pObj;
11,845✔
1873

1874
  int32_t code = tjsonGetUTinyIntValue(pJson, jkNameType, &pNode->type);
11,845✔
1875
  if (TSDB_CODE_SUCCESS == code) {
11,846!
1876
    code = tjsonGetIntValue(pJson, jkNameAcctId, &pNode->acctId);
11,846✔
1877
  }
1878
  if (TSDB_CODE_SUCCESS == code) {
11,847!
1879
    code = tjsonGetStringValue(pJson, jkNameDbName, pNode->dbname);
11,847✔
1880
  }
1881
  if (TSDB_CODE_SUCCESS == code) {
11,847!
1882
    code = tjsonGetStringValue(pJson, jkNameTableName, pNode->tname);
11,847✔
1883
  }
1884

1885
  return code;
11,846✔
1886
}
1887

1888
static const char* jkScanPhysiPlanScanCols = "ScanCols";
1889
static const char* jkScanPhysiPlanScanPseudoCols = "ScanPseudoCols";
1890
static const char* jkScanPhysiPlanTableId = "TableId";
1891
static const char* jkScanPhysiPlanSTableId = "STableId";
1892
static const char* jkScanPhysiPlanTableType = "TableType";
1893
static const char* jkScanPhysiPlanTableName = "TableName";
1894
static const char* jkScanPhysiPlanGroupOrderScan = "GroupOrderScan";
1895

1896
static int32_t physiScanNodeToJson(const void* pObj, SJson* pJson) {
12,353✔
1897
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
12,353✔
1898

1899
  int32_t code = physicPlanNodeToJson(pObj, pJson);
12,353✔
1900
  if (TSDB_CODE_SUCCESS == code) {
12,353!
1901
    code = nodeListToJson(pJson, jkScanPhysiPlanScanCols, pNode->pScanCols);
12,353✔
1902
  }
1903
  if (TSDB_CODE_SUCCESS == code) {
12,353!
1904
    code = nodeListToJson(pJson, jkScanPhysiPlanScanPseudoCols, pNode->pScanPseudoCols);
12,353✔
1905
  }
1906
  if (TSDB_CODE_SUCCESS == code) {
12,353!
1907
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableId, pNode->uid);
12,353✔
1908
  }
1909
  if (TSDB_CODE_SUCCESS == code) {
12,353!
1910
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanSTableId, pNode->suid);
12,353✔
1911
  }
1912
  if (TSDB_CODE_SUCCESS == code) {
12,353!
1913
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableType, pNode->tableType);
12,353✔
1914
  }
1915
  if (TSDB_CODE_SUCCESS == code) {
12,353!
1916
    code = tjsonAddObject(pJson, jkScanPhysiPlanTableName, nameToJson, &pNode->tableName);
12,353✔
1917
  }
1918
  if (TSDB_CODE_SUCCESS == code) {
12,353!
1919
    code = tjsonAddBoolToObject(pJson, jkScanPhysiPlanGroupOrderScan, pNode->groupOrderScan);
12,353✔
1920
  }
1921

1922
  return code;
12,353✔
1923
}
1924

1925
static int32_t jsonToPhysiScanNode(const SJson* pJson, void* pObj) {
11,846✔
1926
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
11,846✔
1927

1928
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
11,846✔
1929
  if (TSDB_CODE_SUCCESS == code) {
11,845!
1930
    code = jsonToNodeList(pJson, jkScanPhysiPlanScanCols, &pNode->pScanCols);
11,845✔
1931
  }
1932
  if (TSDB_CODE_SUCCESS == code) {
11,846!
1933
    code = jsonToNodeList(pJson, jkScanPhysiPlanScanPseudoCols, &pNode->pScanPseudoCols);
11,846✔
1934
  }
1935
  if (TSDB_CODE_SUCCESS == code) {
11,845!
1936
    code = tjsonGetUBigIntValue(pJson, jkScanPhysiPlanTableId, &pNode->uid);
11,845✔
1937
  }
1938
  if (TSDB_CODE_SUCCESS == code) {
11,847✔
1939
    code = tjsonGetUBigIntValue(pJson, jkScanPhysiPlanSTableId, &pNode->suid);
11,846✔
1940
  }
1941
  if (TSDB_CODE_SUCCESS == code) {
11,848✔
1942
    code = tjsonGetTinyIntValue(pJson, jkScanPhysiPlanTableType, &pNode->tableType);
11,847✔
1943
  }
1944
  if (TSDB_CODE_SUCCESS == code) {
11,847✔
1945
    code = tjsonToObject(pJson, jkScanPhysiPlanTableName, jsonToName, &pNode->tableName);
11,846✔
1946
  }
1947
  if (TSDB_CODE_SUCCESS == code) {
11,847✔
1948
    code = tjsonGetBoolValue(pJson, jkScanPhysiPlanGroupOrderScan, &pNode->groupOrderScan);
11,846✔
1949
  }
1950

1951
  return code;
11,847✔
1952
}
1953

1954
static const char* jkTagScanPhysiOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
1955

1956
static int32_t physiTagScanNodeToJson(const void* pObj, SJson* pJson) {
3✔
1957
  const STagScanPhysiNode* pNode = (const STagScanPhysiNode*)pObj;
3✔
1958

1959
  int32_t code = physiScanNodeToJson(pObj, pJson);
3✔
1960

1961
  if (TSDB_CODE_SUCCESS == code) {
3!
1962
    code = tjsonAddBoolToObject(pJson, jkTagScanPhysiOnlyMetaCtbIdx, pNode->onlyMetaCtbIdx);
3✔
1963
  }
1964
  return code;
3✔
1965
}
1966

1967
static int32_t jsonToPhysiTagScanNode(const SJson* pJson, void* pObj) {
3✔
1968
  STagScanPhysiNode* pNode = (STagScanPhysiNode*)pObj;
3✔
1969

1970
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
3✔
1971

1972
  if (TSDB_CODE_SUCCESS == code) {
3!
1973
    code = tjsonGetBoolValue(pJson, jkTagScanPhysiOnlyMetaCtbIdx, &pNode->onlyMetaCtbIdx);
3✔
1974
  }
1975
  return code;
3✔
1976
}
1977

1978
static const char* jkLastRowScanPhysiPlanGroupTags = "GroupTags";
1979
static const char* jkLastRowScanPhysiPlanGroupSort = "GroupSort";
1980
static const char* jkLastRowScanPhysiPlanTargets = "Targets";
1981
static const char* jkLastRowScanPhysiPlanFuncType = "FuncType";
1982
static const char* jkLastRowScanPhysiPlanFuncTypes = "FuncTypes";
1983

1984
static int32_t funcTypeToJson(const void* pObj, SJson* pJson) {
×
1985
  const int32_t* pNode = (const int32_t*)pObj;
×
1986

1987
  int32_t code = tjsonAddIntegerToObject(pJson, jkLastRowScanPhysiPlanFuncType, *pNode);
×
1988
  return code;
×
1989
}
1990

1991
static int32_t jsonToFuncType(const SJson* pJson, void* pObj) {
×
1992
  int32_t* pNode = (int32_t*)pObj;
×
1993

1994
  int32_t code = tjsonGetIntValue(pJson, jkLastRowScanPhysiPlanFuncType, pNode);
×
1995
  return code;
×
1996
}
1997

1998
static int32_t physiLastRowScanNodeToJson(const void* pObj, SJson* pJson) {
×
1999
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
×
2000

2001
  int32_t code = physiScanNodeToJson(pObj, pJson);
×
2002
  if (TSDB_CODE_SUCCESS == code) {
×
2003
    code = nodeListToJson(pJson, jkLastRowScanPhysiPlanGroupTags, pNode->pGroupTags);
×
2004
  }
2005
  if (TSDB_CODE_SUCCESS == code) {
×
2006
    code = tjsonAddBoolToObject(pJson, jkLastRowScanPhysiPlanGroupSort, pNode->groupSort);
×
2007
  }
2008
  if (TSDB_CODE_SUCCESS == code) {
×
2009
    code = nodeListToJson(pJson, jkLastRowScanPhysiPlanTargets, pNode->pTargets);
×
2010
  }
2011
  if (TSDB_CODE_SUCCESS == code) {
×
2012
    code = tjsonAddTArray(pJson, jkLastRowScanPhysiPlanFuncTypes, funcTypeToJson, pNode->pFuncTypes);
×
2013
  }
2014

2015
  return code;
×
2016
}
2017

2018
static int32_t jsonToPhysiLastRowScanNode(const SJson* pJson, void* pObj) {
×
2019
  SLastRowScanPhysiNode* pNode = (SLastRowScanPhysiNode*)pObj;
×
2020

2021
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
×
2022
  if (TSDB_CODE_SUCCESS == code) {
×
2023
    code = jsonToNodeList(pJson, jkLastRowScanPhysiPlanGroupTags, &pNode->pGroupTags);
×
2024
  }
2025
  if (TSDB_CODE_SUCCESS == code) {
×
2026
    code = tjsonGetBoolValue(pJson, jkLastRowScanPhysiPlanGroupSort, &pNode->groupSort);
×
2027
  }
2028
  if (TSDB_CODE_SUCCESS == code) {
×
2029
    code = jsonToNodeList(pJson, jkLastRowScanPhysiPlanTargets, &pNode->pTargets);
×
2030
  }
2031
  if (TSDB_CODE_SUCCESS == code) {
×
2032
    code = tjsonToTArray(pJson, jkLastRowScanPhysiPlanFuncTypes, jsonToFuncType, &pNode->pFuncTypes, sizeof(int32_t));
×
2033
  }
2034

2035
  return code;
×
2036
}
2037

2038
static const char* jkTableScanPhysiPlanScanCount = "ScanCount";
2039
static const char* jkTableScanPhysiPlanReverseScanCount = "ReverseScanCount";
2040
static const char* jkTableScanPhysiPlanStartKey = "StartKey";
2041
static const char* jkTableScanPhysiPlanEndKey = "EndKey";
2042
static const char* jkTableScanPhysiPlanRatio = "Ratio";
2043
static const char* jkTableScanPhysiPlanDataRequired = "DataRequired";
2044
static const char* jkTableScanPhysiPlanDynamicScanFuncs = "DynamicScanFuncs";
2045
static const char* jkTableScanPhysiPlanInterval = "Interval";
2046
static const char* jkTableScanPhysiPlanOffset = "Offset";
2047
static const char* jkTableScanPhysiPlanSliding = "Sliding";
2048
static const char* jkTableScanPhysiPlanIntervalUnit = "IntervalUnit";
2049
static const char* jkTableScanPhysiPlanSlidingUnit = "SlidingUnit";
2050
static const char* jkTableScanPhysiPlanTriggerType = "TriggerType";
2051
static const char* jkTableScanPhysiPlanWatermark = "Watermark";
2052
static const char* jkTableScanPhysiPlanIgnoreExpired = "IgnoreExpired";
2053
static const char* jkTableScanPhysiPlanGroupTags = "GroupTags";
2054
static const char* jkTableScanPhysiPlanGroupSort = "GroupSort";
2055
static const char* jkTableScanPhysiPlanTags = "Tags";
2056
static const char* jkTableScanPhysiPlanSubtable = "Subtable";
2057
static const char* jkTableScanPhysiPlanAssignBlockUid = "AssignBlockUid";
2058
static const char* jkTableScanPhysiPlanIgnoreUpdate = "IgnoreUpdate";
2059
static const char* jkTableScanPhysiPlanFilesetDelimited = "FilesetDelimited";
2060
static const char* jkTableScanPhysiPlanNeedCountEmptyTable = "NeedCountEmptyTable";
2061
static const char* jkTableScanPhysiPlanParaTablesSort = "ParaTablesSort";
2062
static const char* jkTableScanPhysiPlanSmallDataTsSort = "SmallDataTsSort";
2063

2064
static int32_t physiTableScanNodeToJson(const void* pObj, SJson* pJson) {
12,350✔
2065
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
12,350✔
2066

2067
  int32_t code = physiScanNodeToJson(pObj, pJson);
12,350✔
2068
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2069
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanScanCount, pNode->scanSeq[0]);
12,350✔
2070
  }
2071
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2072
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanReverseScanCount, pNode->scanSeq[1]);
12,350✔
2073
  }
2074
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2075
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanStartKey, pNode->scanRange.skey);
12,350✔
2076
  }
2077
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2078
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanEndKey, pNode->scanRange.ekey);
12,350✔
2079
  }
2080
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2081
    code = tjsonAddDoubleToObject(pJson, jkTableScanPhysiPlanRatio, pNode->ratio);
12,350✔
2082
  }
2083
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2084
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanDataRequired, pNode->dataRequired);
12,350✔
2085
  }
2086
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2087
    code = nodeListToJson(pJson, jkTableScanPhysiPlanDynamicScanFuncs, pNode->pDynamicScanFuncs);
12,350✔
2088
  }
2089
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2090
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanInterval, pNode->interval);
12,350✔
2091
  }
2092
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2093
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanOffset, pNode->offset);
12,350✔
2094
  }
2095
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2096
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanSliding, pNode->sliding);
12,350✔
2097
  }
2098
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2099
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanIntervalUnit, pNode->intervalUnit);
12,350✔
2100
  }
2101
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2102
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanSlidingUnit, pNode->slidingUnit);
12,350✔
2103
  }
2104
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2105
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanTriggerType, pNode->triggerType);
12,350✔
2106
  }
2107
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2108
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanWatermark, pNode->watermark);
12,350✔
2109
  }
2110
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2111
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanIgnoreExpired, pNode->igExpired);
12,350✔
2112
  }
2113
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2114
    code = nodeListToJson(pJson, jkTableScanPhysiPlanGroupTags, pNode->pGroupTags);
12,350✔
2115
  }
2116
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2117
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanGroupSort, pNode->groupSort);
12,350✔
2118
  }
2119
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2120
    code = nodeListToJson(pJson, jkTableScanPhysiPlanTags, pNode->pTags);
12,350✔
2121
  }
2122
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2123
    code = tjsonAddObject(pJson, jkTableScanPhysiPlanSubtable, nodeToJson, pNode->pSubtable);
12,350✔
2124
  }
2125
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2126
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanAssignBlockUid, pNode->assignBlockUid);
12,350✔
2127
  }
2128
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2129
    code = tjsonAddIntegerToObject(pJson, jkTableScanPhysiPlanIgnoreUpdate, pNode->igCheckUpdate);
12,350✔
2130
  }
2131
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2132
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanFilesetDelimited, pNode->filesetDelimited);
12,350✔
2133
  }
2134
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2135
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanNeedCountEmptyTable, pNode->needCountEmptyTable);
12,350✔
2136
  }
2137
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2138
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanParaTablesSort, pNode->paraTablesSort);
12,350✔
2139
  }
2140
  if (TSDB_CODE_SUCCESS == code) {
12,350!
2141
    code = tjsonAddBoolToObject(pJson, jkTableScanPhysiPlanSmallDataTsSort, pNode->smallDataTsSort);
12,350✔
2142
  }
2143
  return code;
12,350✔
2144
}
2145

2146
static int32_t jsonToPhysiTableScanNode(const SJson* pJson, void* pObj) {
11,843✔
2147
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
11,843✔
2148

2149
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
11,843✔
2150
  if (TSDB_CODE_SUCCESS == code) {
11,844!
2151
    code = tjsonGetUTinyIntValue(pJson, jkTableScanPhysiPlanScanCount, &pNode->scanSeq[0]);
11,844✔
2152
  }
2153
  if (TSDB_CODE_SUCCESS == code) {
11,844✔
2154
    code = tjsonGetUTinyIntValue(pJson, jkTableScanPhysiPlanReverseScanCount, &pNode->scanSeq[1]);
11,843✔
2155
  }
2156
  if (TSDB_CODE_SUCCESS == code) {
11,843✔
2157
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanStartKey, &pNode->scanRange.skey);
11,842✔
2158
  }
2159
  if (TSDB_CODE_SUCCESS == code) {
11,845✔
2160
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanEndKey, &pNode->scanRange.ekey);
11,844✔
2161
  }
2162
  if (TSDB_CODE_SUCCESS == code) {
11,845✔
2163
    code = tjsonGetDoubleValue(pJson, jkTableScanPhysiPlanRatio, &pNode->ratio);
11,844✔
2164
  }
2165
  if (TSDB_CODE_SUCCESS == code) {
11,844✔
2166
    code = tjsonGetIntValue(pJson, jkTableScanPhysiPlanDataRequired, &pNode->dataRequired);
11,843✔
2167
  }
2168
  if (TSDB_CODE_SUCCESS == code) {
11,845✔
2169
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanDynamicScanFuncs, &pNode->pDynamicScanFuncs);
11,844✔
2170
  }
2171
  if (TSDB_CODE_SUCCESS == code) {
11,845✔
2172
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanInterval, &pNode->interval);
11,844✔
2173
  }
2174
  if (TSDB_CODE_SUCCESS == code) {
11,844✔
2175
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanOffset, &pNode->offset);
11,843✔
2176
  }
2177
  if (TSDB_CODE_SUCCESS == code) {
11,844✔
2178
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanSliding, &pNode->sliding);
11,840✔
2179
  }
2180
  if (TSDB_CODE_SUCCESS == code) {
11,847✔
2181
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIntervalUnit, &pNode->intervalUnit);
11,843✔
2182
  }
2183
  if (TSDB_CODE_SUCCESS == code) {
11,847✔
2184
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanSlidingUnit, &pNode->slidingUnit);
11,843✔
2185
  }
2186
  if (TSDB_CODE_SUCCESS == code) {
11,848✔
2187
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanTriggerType, &pNode->triggerType);
11,844✔
2188
  }
2189
  if (TSDB_CODE_SUCCESS == code) {
11,847✔
2190
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanWatermark, &pNode->watermark);
11,843✔
2191
  }
2192
  if (TSDB_CODE_SUCCESS == code) {
11,848✔
2193
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIgnoreExpired, &pNode->igExpired);
11,844✔
2194
  }
2195
  if (TSDB_CODE_SUCCESS == code) {
11,847✔
2196
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanGroupTags, &pNode->pGroupTags);
11,843✔
2197
  }
2198
  if (TSDB_CODE_SUCCESS == code) {
11,847✔
2199
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanGroupSort, &pNode->groupSort);
11,843✔
2200
  }
2201
  if (TSDB_CODE_SUCCESS == code) {
11,847✔
2202
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanTags, &pNode->pTags);
11,842✔
2203
  }
2204
  if (TSDB_CODE_SUCCESS == code) {
11,847✔
2205
    code = jsonToNodeObject(pJson, jkTableScanPhysiPlanSubtable, &pNode->pSubtable);
11,842✔
2206
  }
2207
  if (TSDB_CODE_SUCCESS == code) {
11,847✔
2208
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanAssignBlockUid, &pNode->assignBlockUid);
11,842✔
2209
  }
2210
  if (TSDB_CODE_SUCCESS == code) {
11,849✔
2211
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIgnoreUpdate, &pNode->igCheckUpdate);
11,844✔
2212
  }
2213
  if (TSDB_CODE_SUCCESS == code) {
11,849✔
2214
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanFilesetDelimited, &pNode->filesetDelimited);
11,844✔
2215
  }
2216
  if (TSDB_CODE_SUCCESS == code) {
11,849✔
2217
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanNeedCountEmptyTable, &pNode->needCountEmptyTable);
11,844✔
2218
  }
2219
  if (TSDB_CODE_SUCCESS == code) {
11,849✔
2220
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanParaTablesSort, &pNode->paraTablesSort);
11,844✔
2221
  }
2222
  if (TSDB_CODE_SUCCESS == code) {
11,849✔
2223
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanSmallDataTsSort, &pNode->smallDataTsSort);
11,844✔
2224
  }
2225
  return code;
11,843✔
2226
}
2227

2228
static const char* jkSysTableScanPhysiPlanMnodeEpSet = "MnodeEpSet";
2229
static const char* jkSysTableScanPhysiPlanShowRewrite = "ShowRewrite";
2230
static const char* jkSysTableScanPhysiPlanAccountId = "AccountId";
2231
static const char* jkSysTableScanPhysiPlanSysInfo = "SysInfo";
2232

2233
static int32_t physiSysTableScanNodeToJson(const void* pObj, SJson* pJson) {
×
2234
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
×
2235

2236
  int32_t code = physiScanNodeToJson(pObj, pJson);
×
2237
  if (TSDB_CODE_SUCCESS == code) {
×
2238
    code = tjsonAddObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, epSetToJson, &pNode->mgmtEpSet);
×
2239
  }
2240
  if (TSDB_CODE_SUCCESS == code) {
×
2241
    code = tjsonAddBoolToObject(pJson, jkSysTableScanPhysiPlanShowRewrite, pNode->showRewrite);
×
2242
  }
2243
  if (TSDB_CODE_SUCCESS == code) {
×
2244
    code = tjsonAddIntegerToObject(pJson, jkSysTableScanPhysiPlanAccountId, pNode->accountId);
×
2245
  }
2246
  if (TSDB_CODE_SUCCESS == code) {
×
2247
    code = tjsonAddBoolToObject(pJson, jkSysTableScanPhysiPlanSysInfo, pNode->sysInfo);
×
2248
  }
2249

2250
  return code;
×
2251
}
2252

2253
static int32_t jsonToPhysiSysTableScanNode(const SJson* pJson, void* pObj) {
×
2254
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
×
2255

2256
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
×
2257
  if (TSDB_CODE_SUCCESS == code) {
×
2258
    code = tjsonToObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, jsonToEpSet, &pNode->mgmtEpSet);
×
2259
  }
2260
  if (TSDB_CODE_SUCCESS == code) {
×
2261
    code = tjsonGetBoolValue(pJson, jkSysTableScanPhysiPlanShowRewrite, &pNode->showRewrite);
×
2262
  }
2263
  if (TSDB_CODE_SUCCESS == code) {
×
2264
    tjsonGetNumberValue(pJson, jkSysTableScanPhysiPlanAccountId, pNode->accountId, code);
×
2265
  }
2266
  if (TSDB_CODE_SUCCESS == code) {
×
2267
    code = tjsonGetBoolValue(pJson, jkSysTableScanPhysiPlanSysInfo, &pNode->sysInfo);
×
2268
  }
2269

2270
  return code;
×
2271
}
2272

2273
static const char* jkProjectPhysiPlanProjections = "Projections";
2274
static const char* jkProjectPhysiPlanMergeDataBlock = "MergeDataBlock";
2275
static const char* jkProjectPhysiPlanIgnoreGroupId = "IgnoreGroupId";
2276
static const char* jkProjectPhysiPlanInputIgnoreGroup = "InputIgnoreGroup";
2277

2278
static int32_t physiProjectNodeToJson(const void* pObj, SJson* pJson) {
7,615✔
2279
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
7,615✔
2280

2281
  int32_t code = physicPlanNodeToJson(pObj, pJson);
7,615✔
2282
  if (TSDB_CODE_SUCCESS == code) {
7,615!
2283
    code = nodeListToJson(pJson, jkProjectPhysiPlanProjections, pNode->pProjections);
7,615✔
2284
  }
2285
  if (TSDB_CODE_SUCCESS == code) {
7,615!
2286
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
7,615✔
2287
  }
2288
  if (TSDB_CODE_SUCCESS == code) {
7,615!
2289
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanIgnoreGroupId, pNode->ignoreGroupId);
7,615✔
2290
  }
2291
  if (TSDB_CODE_SUCCESS == code) {
7,615!
2292
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanInputIgnoreGroup, pNode->inputIgnoreGroup);
7,615✔
2293
  }
2294
  return code;
7,615✔
2295
}
2296

2297
static int32_t jsonToPhysiProjectNode(const SJson* pJson, void* pObj) {
7,138✔
2298
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
7,138✔
2299

2300
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
7,138✔
2301
  if (TSDB_CODE_SUCCESS == code) {
7,139!
2302
    code = jsonToNodeList(pJson, jkProjectPhysiPlanProjections, &pNode->pProjections);
7,139✔
2303
  }
2304
  if (TSDB_CODE_SUCCESS == code) {
7,140!
2305
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
7,140✔
2306
  }
2307
  if (TSDB_CODE_SUCCESS == code) {
7,139!
2308
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanIgnoreGroupId, &pNode->ignoreGroupId);
7,139✔
2309
  }
2310
  if (TSDB_CODE_SUCCESS == code) {
7,140!
2311
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanInputIgnoreGroup, &pNode->inputIgnoreGroup);
7,140✔
2312
  }
2313
  return code;
7,140✔
2314
}
2315

2316
static const char* jkJoinPhysiPlanJoinType = "JoinType";
2317
static const char* jkJoinPhysiPlanSubType = "SubType";
2318
static const char* jkJoinPhysiPlanWinOffset = "WindowOffset";
2319
static const char* jkJoinPhysiPlanJoinLimit = "JoinLimit";
2320
static const char* jkJoinPhysiPlanAsofOp = "AsofOp";
2321
static const char* jkJoinPhysiPlanLeftPrimExpr = "LeftPrimExpr";
2322
static const char* jkJoinPhysiPlanRightPrimExpr = "RightPrimExpr";
2323
static const char* jkJoinPhysiPlanLeftPrimSlotId = "LeftPrimSlotId";
2324
static const char* jkJoinPhysiPlanRightPrimSlotId = "RightPrimSlotId";
2325
static const char* jkJoinPhysiPlanLeftEqCols = "LeftEqCols";
2326
static const char* jkJoinPhysiPlanRightEqCols = "RightEqCols";
2327
static const char* jkJoinPhysiPlanInputTsOrder = "InputTsOrder";
2328
static const char* jkJoinPhysiPlanOnLeftCols = "OnLeftColumns";
2329
static const char* jkJoinPhysiPlanOnRightCols = "OnRightColumns";
2330
static const char* jkJoinPhysiPlanPrimKeyCondition = "PrimKeyCondition";
2331
static const char* jkJoinPhysiPlanOnConditions = "OnConditions";
2332
static const char* jkJoinPhysiPlanTargets = "Targets";
2333
static const char* jkJoinPhysiPlanColOnConditions = "ColumnOnConditions";
2334
static const char* jkJoinPhysiPlanLeftInputRowNum = "LeftInputRowNum";
2335
static const char* jkJoinPhysiPlanRightInputRowNum = "RightInputRowNum";
2336
static const char* jkJoinPhysiPlanLeftInputRowSize = "LeftInputRowSize";
2337
static const char* jkJoinPhysiPlanRightInputRowSize = "RightInputRowSize";
2338
static const char* jkJoinPhysiPlanSeqWinGroup = "SeqWinGroup";
2339
static const char* jkJoinPhysiPlanGroupJoin = "GroupJoin";
2340
static const char* jkJoinPhysiPlanLeftOnCond = "LeftOnCond";
2341
static const char* jkJoinPhysiPlanRightOnCond = "RightOnCond";
2342
static const char* jkJoinPhysiPlanTimeRangeSKey = "TimeRangeSKey";
2343
static const char* jkJoinPhysiPlanTimeRangeEKey = "TimeRangeEKey";
2344
static const char* jkJoinPhysiPlanTimeRangeTarget = "TimeRangeTarget";
2345

2346
static int32_t physiMergeJoinNodeToJson(const void* pObj, SJson* pJson) {
×
2347
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
×
2348

2349
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
2350
  if (TSDB_CODE_SUCCESS == code) {
×
2351
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanJoinType, pNode->joinType);
×
2352
  }
2353
  if (TSDB_CODE_SUCCESS == code) {
×
2354
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanSubType, pNode->subType);
×
2355
  }
2356
  if (TSDB_CODE_SUCCESS == code) {
×
2357
    code = tjsonAddObject(pJson, jkJoinPhysiPlanWinOffset, nodeToJson, pNode->pWindowOffset);
×
2358
  }
2359
  if (TSDB_CODE_SUCCESS == code) {
×
2360
    code = tjsonAddObject(pJson, jkJoinPhysiPlanJoinLimit, nodeToJson, pNode->pJLimit);
×
2361
  }
2362
  if (TSDB_CODE_SUCCESS == code) {
×
2363
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanAsofOp, pNode->asofOpType);
×
2364
  }  
2365
  if (TSDB_CODE_SUCCESS == code) {
×
2366
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftPrimExpr, nodeToJson, pNode->leftPrimExpr);
×
2367
  }
2368
  if (TSDB_CODE_SUCCESS == code) {
×
2369
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightPrimExpr, nodeToJson, pNode->rightPrimExpr);
×
2370
  }
2371
  if (TSDB_CODE_SUCCESS == code) {
×
2372
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId);
×
2373
  }  
2374
  if (TSDB_CODE_SUCCESS == code) {
×
2375
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId);
×
2376
  } 
2377
  if (TSDB_CODE_SUCCESS == code) {
×
2378
    code = nodeListToJson(pJson, jkJoinPhysiPlanLeftEqCols, pNode->pEqLeft);
×
2379
  }
2380
  if (TSDB_CODE_SUCCESS == code) {
×
2381
    code = nodeListToJson(pJson, jkJoinPhysiPlanRightEqCols, pNode->pEqRight);
×
2382
  }
2383
  if (TSDB_CODE_SUCCESS == code) {
×
2384
    code = tjsonAddObject(pJson, jkJoinPhysiPlanOnConditions, nodeToJson, pNode->pFullOnCond);
×
2385
  }
2386
  if (TSDB_CODE_SUCCESS == code) {
×
2387
    code = nodeListToJson(pJson, jkJoinPhysiPlanTargets, pNode->pTargets);
×
2388
  }
2389
  if (TSDB_CODE_SUCCESS == code) {
×
2390
    code = tjsonAddObject(pJson, jkJoinPhysiPlanColOnConditions, nodeToJson, pNode->pColOnCond);
×
2391
  }
2392
  if (TSDB_CODE_SUCCESS == code) {
×
2393
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum);
×
2394
  }
2395
  if (TSDB_CODE_SUCCESS == code) {
×
2396
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize);
×
2397
  }
2398
  if (TSDB_CODE_SUCCESS == code) {
×
2399
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum);
×
2400
  }
2401
  if (TSDB_CODE_SUCCESS == code) {
×
2402
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize);
×
2403
  }
2404
  if (TSDB_CODE_SUCCESS == code) {
×
2405
    code = tjsonAddBoolToObject(pJson, jkJoinPhysiPlanSeqWinGroup, pNode->seqWinGroup);
×
2406
  }
2407
  if (TSDB_CODE_SUCCESS == code) {
×
2408
    code = tjsonAddBoolToObject(pJson, jkJoinPhysiPlanGroupJoin, pNode->grpJoin);
×
2409
  }
2410

2411
  return code;
×
2412
}
2413

2414
static int32_t jsonToPhysiMergeJoinNode(const SJson* pJson, void* pObj) {
×
2415
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
×
2416

2417
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
2418
  if (TSDB_CODE_SUCCESS == code) {
×
2419
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanJoinType, pNode->joinType, code);
×
2420
  }
2421
  if (TSDB_CODE_SUCCESS == code) {
×
2422
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanSubType, pNode->subType, code);
×
2423
  }
2424
  if (TSDB_CODE_SUCCESS == code) {
×
2425
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanWinOffset, &pNode->pWindowOffset);
×
2426
  }
2427
  if (TSDB_CODE_SUCCESS == code) {
×
2428
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanJoinLimit, &pNode->pJLimit);
×
2429
  }
2430
  if (TSDB_CODE_SUCCESS == code) {
×
2431
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanAsofOp, pNode->asofOpType, code);
×
2432
  }
2433
  if (TSDB_CODE_SUCCESS == code) {
×
2434
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftPrimExpr, &pNode->leftPrimExpr);
×
2435
  }
2436
  if (TSDB_CODE_SUCCESS == code) {
×
2437
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightPrimExpr, &pNode->rightPrimExpr);
×
2438
  }
2439
  if (TSDB_CODE_SUCCESS == code) {
×
2440
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId, code);
×
2441
  }
2442
  if (TSDB_CODE_SUCCESS == code) {
×
2443
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId, code);
×
2444
  }
2445
  if (TSDB_CODE_SUCCESS == code) {
×
2446
    code = jsonToNodeList(pJson, jkJoinPhysiPlanLeftEqCols, &pNode->pEqLeft);
×
2447
  }
2448
  if (TSDB_CODE_SUCCESS == code) {
×
2449
    code = jsonToNodeList(pJson, jkJoinPhysiPlanRightEqCols, &pNode->pEqRight);
×
2450
  }
2451
  if (TSDB_CODE_SUCCESS == code) {
×
2452
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanOnConditions, &pNode->pFullOnCond);
×
2453
  }
2454
  if (TSDB_CODE_SUCCESS == code) {
×
2455
    code = jsonToNodeList(pJson, jkJoinPhysiPlanTargets, &pNode->pTargets);
×
2456
  }
2457
  if (TSDB_CODE_SUCCESS == code) {
×
2458
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanColOnConditions, &pNode->pColOnCond);
×
2459
  }
2460
  if (TSDB_CODE_SUCCESS == code) {
×
2461
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum, code);
×
2462
  }
2463
  if (TSDB_CODE_SUCCESS == code) {
×
2464
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize, code);
×
2465
  }
2466
  if (TSDB_CODE_SUCCESS == code) {
×
2467
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum, code);
×
2468
  }
2469
  if (TSDB_CODE_SUCCESS == code) {
×
2470
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize, code);
×
2471
  }
2472
  if (TSDB_CODE_SUCCESS == code) {
×
2473
    code = tjsonGetBoolValue(pJson, jkJoinPhysiPlanSeqWinGroup, &pNode->seqWinGroup);
×
2474
  }
2475
  if (TSDB_CODE_SUCCESS == code) {
×
2476
    code = tjsonGetBoolValue(pJson, jkJoinPhysiPlanGroupJoin, &pNode->grpJoin);
×
2477
  }
2478
  
2479
  return code;
×
2480
}
2481

2482
static int32_t physiHashJoinNodeToJson(const void* pObj, SJson* pJson) {
×
2483
  const SHashJoinPhysiNode* pNode = (const SHashJoinPhysiNode*)pObj;
×
2484

2485
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
2486
  if (TSDB_CODE_SUCCESS == code) {
×
2487
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanJoinType, pNode->joinType);
×
2488
  }
2489
  if (TSDB_CODE_SUCCESS == code) {
×
2490
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanSubType, pNode->subType);
×
2491
  }  
2492
  if (TSDB_CODE_SUCCESS == code) {
×
2493
    code = nodeListToJson(pJson, jkJoinPhysiPlanOnLeftCols, pNode->pOnLeft);
×
2494
  }
2495
  if (TSDB_CODE_SUCCESS == code) {
×
2496
    code = nodeListToJson(pJson, jkJoinPhysiPlanOnRightCols, pNode->pOnRight);
×
2497
  }
2498
  if (TSDB_CODE_SUCCESS == code) {
×
2499
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftPrimExpr, nodeToJson, pNode->leftPrimExpr);
×
2500
  }
2501
  if (TSDB_CODE_SUCCESS == code) {
×
2502
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightPrimExpr, nodeToJson, pNode->rightPrimExpr);
×
2503
  }
2504
  if (TSDB_CODE_SUCCESS == code) {
×
2505
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId);
×
2506
  }  
2507
  if (TSDB_CODE_SUCCESS == code) {
×
2508
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId);
×
2509
  }   
2510
  if (TSDB_CODE_SUCCESS == code) {
×
2511
    code = tjsonAddObject(pJson, jkJoinPhysiPlanOnConditions, nodeToJson, pNode->pFullOnCond);
×
2512
  }
2513
  if (TSDB_CODE_SUCCESS == code) {
×
2514
    code = nodeListToJson(pJson, jkJoinPhysiPlanTargets, pNode->pTargets);
×
2515
  }
2516
  if (TSDB_CODE_SUCCESS == code) {
×
2517
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum);
×
2518
  }
2519
  if (TSDB_CODE_SUCCESS == code) {
×
2520
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize);
×
2521
  }
2522
  if (TSDB_CODE_SUCCESS == code) {
×
2523
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum);
×
2524
  }
2525
  if (TSDB_CODE_SUCCESS == code) {
×
2526
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize);
×
2527
  }
2528
  if (TSDB_CODE_SUCCESS == code) {
×
2529
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftOnCond, nodeToJson, pNode->pLeftOnCond);
×
2530
  }
2531
  if (TSDB_CODE_SUCCESS == code) {
×
2532
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightOnCond, nodeToJson, pNode->pRightOnCond);
×
2533
  }
2534
  if (TSDB_CODE_SUCCESS == code) {
×
2535
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeTarget, pNode->timeRangeTarget);
×
2536
  }
2537
  if (TSDB_CODE_SUCCESS == code) {
×
2538
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeSKey, pNode->timeRange.skey);
×
2539
  }
2540
  if (TSDB_CODE_SUCCESS == code) {
×
2541
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeEKey, pNode->timeRange.ekey);
×
2542
  }
2543

2544
  return code;
×
2545
}
2546

2547
static int32_t jsonToPhysiHashJoinNode(const SJson* pJson, void* pObj) {
×
2548
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
×
2549

2550
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
2551
  if (TSDB_CODE_SUCCESS == code) {
×
2552
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanJoinType, pNode->joinType, code);
×
2553
  }
2554
  if (TSDB_CODE_SUCCESS == code) {
×
2555
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanSubType, pNode->subType, code);
×
2556
  }  
2557
  if (TSDB_CODE_SUCCESS == code) {
×
2558
    code = jsonToNodeList(pJson, jkJoinPhysiPlanOnLeftCols, &pNode->pOnLeft);
×
2559
  }
2560
  if (TSDB_CODE_SUCCESS == code) {
×
2561
    code = jsonToNodeList(pJson, jkJoinPhysiPlanOnRightCols, &pNode->pOnRight);
×
2562
  }
2563
  if (TSDB_CODE_SUCCESS == code) {
×
2564
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftPrimExpr, &pNode->leftPrimExpr);
×
2565
  }
2566
  if (TSDB_CODE_SUCCESS == code) {
×
2567
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightPrimExpr, &pNode->rightPrimExpr);
×
2568
  }
2569
  if (TSDB_CODE_SUCCESS == code) {
×
2570
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId, code);
×
2571
  }
2572
  if (TSDB_CODE_SUCCESS == code) {
×
2573
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId, code);
×
2574
  }  
2575
  if (TSDB_CODE_SUCCESS == code) {
×
2576
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanOnConditions, &pNode->pFullOnCond);
×
2577
  }
2578
  if (TSDB_CODE_SUCCESS == code) {
×
2579
    code = jsonToNodeList(pJson, jkJoinPhysiPlanTargets, &pNode->pTargets);
×
2580
  }
2581
  if (TSDB_CODE_SUCCESS == code) {
×
2582
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum, code);
×
2583
  }
2584
  if (TSDB_CODE_SUCCESS == code) {
×
2585
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize, code);
×
2586
  }
2587
  if (TSDB_CODE_SUCCESS == code) {
×
2588
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum, code);
×
2589
  }
2590
  if (TSDB_CODE_SUCCESS == code) {
×
2591
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize, code);
×
2592
  }
2593
  if (TSDB_CODE_SUCCESS == code) {
×
2594
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftOnCond, &pNode->pLeftOnCond);
×
2595
  }
2596
  if (TSDB_CODE_SUCCESS == code) {
×
2597
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightOnCond, &pNode->pRightOnCond);
×
2598
  }
2599
  if (TSDB_CODE_SUCCESS == code) {
×
2600
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanTimeRangeTarget, pNode->timeRangeTarget, code);
×
2601
  }  
2602
  if (TSDB_CODE_SUCCESS == code) {
×
2603
    code = tjsonGetBigIntValue(pJson, jkJoinPhysiPlanTimeRangeSKey, &pNode->timeRange.skey);
×
2604
  }
2605
  if (TSDB_CODE_SUCCESS == code) {
×
2606
    code = tjsonGetBigIntValue(pJson, jkJoinPhysiPlanTimeRangeEKey, &pNode->timeRange.ekey);
×
2607
  }
2608

2609
  return code;
×
2610
}
2611

2612
static const char* jkAggPhysiPlanExprs = "Exprs";
2613
static const char* jkAggPhysiPlanGroupKeys = "GroupKeys";
2614
static const char* jkAggPhysiPlanAggFuncs = "AggFuncs";
2615
static const char* jkAggPhysiPlanMergeDataBlock = "MergeDataBlock";
2616
static const char* jkAggPhysiPlanGroupKeyOptimized = "GroupKeyOptimized";
2617
static const char* jkAggPhysiPlanHasCountLikeFunc = "HasCountFunc";
2618

2619
static int32_t physiAggNodeToJson(const void* pObj, SJson* pJson) {
48✔
2620
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
48✔
2621

2622
  int32_t code = physicPlanNodeToJson(pObj, pJson);
48✔
2623
  if (TSDB_CODE_SUCCESS == code) {
48!
2624
    code = nodeListToJson(pJson, jkAggPhysiPlanExprs, pNode->pExprs);
48✔
2625
  }
2626
  if (TSDB_CODE_SUCCESS == code) {
48!
2627
    code = nodeListToJson(pJson, jkAggPhysiPlanGroupKeys, pNode->pGroupKeys);
48✔
2628
  }
2629
  if (TSDB_CODE_SUCCESS == code) {
48!
2630
    code = nodeListToJson(pJson, jkAggPhysiPlanAggFuncs, pNode->pAggFuncs);
48✔
2631
  }
2632
  if (TSDB_CODE_SUCCESS == code) {
48!
2633
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
48✔
2634
  }
2635
  if (TSDB_CODE_SUCCESS == code) {
48!
2636
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanGroupKeyOptimized, pNode->groupKeyOptimized);
48✔
2637
  }
2638
  if (TSDB_CODE_SUCCESS == code) {
48!
2639
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanHasCountLikeFunc, pNode->hasCountLikeFunc);
48✔
2640
  }
2641

2642
  return code;
48✔
2643
}
2644

2645
static int32_t jsonToPhysiAggNode(const SJson* pJson, void* pObj) {
33✔
2646
  SAggPhysiNode* pNode = (SAggPhysiNode*)pObj;
33✔
2647

2648
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
33✔
2649
  if (TSDB_CODE_SUCCESS == code) {
33!
2650
    code = jsonToNodeList(pJson, jkAggPhysiPlanExprs, &pNode->pExprs);
33✔
2651
  }
2652
  if (TSDB_CODE_SUCCESS == code) {
33!
2653
    code = jsonToNodeList(pJson, jkAggPhysiPlanGroupKeys, &pNode->pGroupKeys);
33✔
2654
  }
2655
  if (TSDB_CODE_SUCCESS == code) {
33!
2656
    code = jsonToNodeList(pJson, jkAggPhysiPlanAggFuncs, &pNode->pAggFuncs);
33✔
2657
  }
2658
  if (TSDB_CODE_SUCCESS == code) {
33!
2659
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
33✔
2660
  }
2661
  if (TSDB_CODE_SUCCESS == code) {
33!
2662
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanGroupKeyOptimized, &pNode->groupKeyOptimized);
33✔
2663
  }
2664
  if (TSDB_CODE_SUCCESS == code) {
33!
2665
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanHasCountLikeFunc, &pNode->hasCountLikeFunc);
33✔
2666
  }
2667

2668
  return code;
33✔
2669
}
2670

2671
static const char* jkExchangePhysiPlanSrcStartGroupId = "SrcStartGroupId";
2672
static const char* jkExchangePhysiPlanSrcEndGroupId = "SrcEndGroupId";
2673
static const char* jkExchangePhysiPlanSrcEndPoints = "SrcEndPoints";
2674
static const char* jkExchangePhysiPlanSeqRecvData = "SeqRecvData";
2675

2676
static int32_t physiExchangeNodeToJson(const void* pObj, SJson* pJson) {
×
2677
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
×
2678

2679
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
2680
  if (TSDB_CODE_SUCCESS == code) {
×
2681
    code = tjsonAddIntegerToObject(pJson, jkExchangePhysiPlanSrcStartGroupId, pNode->srcStartGroupId);
×
2682
  }
2683
  if (TSDB_CODE_SUCCESS == code) {
×
2684
    code = tjsonAddIntegerToObject(pJson, jkExchangePhysiPlanSrcEndGroupId, pNode->srcEndGroupId);
×
2685
  }
2686
  if (TSDB_CODE_SUCCESS == code) {
×
2687
    code = nodeListToJson(pJson, jkExchangePhysiPlanSrcEndPoints, pNode->pSrcEndPoints);
×
2688
  }
2689
  if (TSDB_CODE_SUCCESS == code) {
×
2690
    code = tjsonAddBoolToObject(pJson, jkExchangePhysiPlanSeqRecvData, pNode->seqRecvData);
×
2691
  }
2692

2693
  return code;
×
2694
}
2695

2696
static int32_t jsonToPhysiExchangeNode(const SJson* pJson, void* pObj) {
×
2697
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
×
2698

2699
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
2700
  if (TSDB_CODE_SUCCESS == code) {
×
2701
    code = tjsonGetIntValue(pJson, jkExchangePhysiPlanSrcStartGroupId, &pNode->srcStartGroupId);
×
2702
  }
2703
  if (TSDB_CODE_SUCCESS == code) {
×
2704
    code = tjsonGetIntValue(pJson, jkExchangePhysiPlanSrcEndGroupId, &pNode->srcEndGroupId);
×
2705
  }
2706
  if (TSDB_CODE_SUCCESS == code) {
×
2707
    code = jsonToNodeList(pJson, jkExchangePhysiPlanSrcEndPoints, &pNode->pSrcEndPoints);
×
2708
  }
2709
  if (TSDB_CODE_SUCCESS == code) {
×
2710
    code = tjsonGetBoolValue(pJson, jkExchangePhysiPlanSeqRecvData, &pNode->seqRecvData);
×
2711
  }
2712

2713
  return code;
×
2714
}
2715

2716
static const char* jkMergePhysiPlanMergeKeys = "MergeKeys";
2717
static const char* jkMergePhysiPlanTargets = "Targets";
2718
static const char* jkMergePhysiPlanNumOfChannels = "NumOfChannels";
2719
static const char* jkMergePhysiPlanSrcGroupId = "SrcGroupId";
2720
static const char* jkMergePhysiPlanGroupSort = "GroupSort";
2721
static const char* jkMergePhysiPlanIgnoreGroupID = "IgnoreGroupID";
2722
static const char* jkMergePhysiPlanInputWithGroupId = "InputWithGroupId";
2723
static const char* jkMergePhysiPlanType = "Type";
2724

2725
static int32_t physiMergeNodeToJson(const void* pObj, SJson* pJson) {
×
2726
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
×
2727

2728
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
2729
  if (TSDB_CODE_SUCCESS == code) {
×
2730
    code = nodeListToJson(pJson, jkMergePhysiPlanMergeKeys, pNode->pMergeKeys);
×
2731
  }
2732
  if (TSDB_CODE_SUCCESS == code) {
×
2733
    code = nodeListToJson(pJson, jkMergePhysiPlanTargets, pNode->pTargets);
×
2734
  }
2735
  if (TSDB_CODE_SUCCESS == code) {
×
2736
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanNumOfChannels, pNode->numOfChannels);
×
2737
  }
2738
  if (TSDB_CODE_SUCCESS == code) {
×
2739
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanSrcGroupId, pNode->srcGroupId);
×
2740
  }
2741
  if (TSDB_CODE_SUCCESS == code) {
×
2742
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanGroupSort, pNode->groupSort);
×
2743
  }
2744
  if (TSDB_CODE_SUCCESS == code) {
×
2745
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanIgnoreGroupID, pNode->ignoreGroupId);
×
2746
  }
2747
  if (TSDB_CODE_SUCCESS == code) {
×
2748
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanInputWithGroupId, pNode->inputWithGroupId);
×
2749
  }
2750
  if (TSDB_CODE_SUCCESS == code) {
×
2751
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanType, pNode->type);
×
2752
  }
2753

2754
  return code;
×
2755
}
2756

2757
static int32_t jsonToPhysiMergeNode(const SJson* pJson, void* pObj) {
×
2758
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
×
2759

2760
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
2761
  if (TSDB_CODE_SUCCESS == code) {
×
2762
    code = jsonToNodeList(pJson, jkMergePhysiPlanMergeKeys, &pNode->pMergeKeys);
×
2763
  }
2764
  if (TSDB_CODE_SUCCESS == code) {
×
2765
    code = jsonToNodeList(pJson, jkMergePhysiPlanTargets, &pNode->pTargets);
×
2766
  }
2767
  if (TSDB_CODE_SUCCESS == code) {
×
2768
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanNumOfChannels, &pNode->numOfChannels);
×
2769
  }
2770
  if (TSDB_CODE_SUCCESS == code) {
×
2771
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanSrcGroupId, &pNode->srcGroupId);
×
2772
  }
2773
  if (TSDB_CODE_SUCCESS == code) {
×
2774
    code = tjsonGetBoolValue(pJson, jkMergePhysiPlanGroupSort, &pNode->groupSort);
×
2775
  }
2776
  if (TSDB_CODE_SUCCESS == code) {
×
2777
    code = tjsonGetBoolValue(pJson, jkMergePhysiPlanIgnoreGroupID, &pNode->ignoreGroupId);
×
2778
  }
2779
  if (TSDB_CODE_SUCCESS == code) {
×
2780
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanType, (int32_t*)&pNode->type);
×
2781
  }
2782

2783
  return code;
×
2784
}
2785

2786
static const char* jkSortPhysiPlanExprs = "Exprs";
2787
static const char* jkSortPhysiPlanSortKeys = "SortKeys";
2788
static const char* jkSortPhysiPlanTargets = "Targets";
2789
static const char* jkSortPhysiPlanCalcGroupIds = "CalcGroupIds";
2790
static const char* jkSortPhysiPlanExcludePKCol = "ExcludePKCol";
2791

2792
static int32_t physiSortNodeToJson(const void* pObj, SJson* pJson) {
×
2793
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
×
2794

2795
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
2796
  if (TSDB_CODE_SUCCESS == code) {
×
2797
    code = nodeListToJson(pJson, jkSortPhysiPlanExprs, pNode->pExprs);
×
2798
  }
2799
  if (TSDB_CODE_SUCCESS == code) {
×
2800
    code = nodeListToJson(pJson, jkSortPhysiPlanSortKeys, pNode->pSortKeys);
×
2801
  }
2802
  if (TSDB_CODE_SUCCESS == code) {
×
2803
    code = nodeListToJson(pJson, jkSortPhysiPlanTargets, pNode->pTargets);
×
2804
  }
2805
  if (TSDB_CODE_SUCCESS == code) {
×
2806
    code = tjsonAddBoolToObject(pJson, jkSortPhysiPlanCalcGroupIds, pNode->calcGroupId);
×
2807
  }
2808
  if (TSDB_CODE_SUCCESS == code) {
×
2809
    code = tjsonAddBoolToObject(pJson, jkSortPhysiPlanExcludePKCol, pNode->excludePkCol);
×
2810
  }
2811

2812
  return code;
×
2813
}
2814

2815
static int32_t jsonToPhysiSortNode(const SJson* pJson, void* pObj) {
×
2816
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
×
2817

2818
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
2819
  if (TSDB_CODE_SUCCESS == code) {
×
2820
    code = jsonToNodeList(pJson, jkSortPhysiPlanExprs, &pNode->pExprs);
×
2821
  }
2822
  if (TSDB_CODE_SUCCESS == code) {
×
2823
    code = jsonToNodeList(pJson, jkSortPhysiPlanSortKeys, &pNode->pSortKeys);
×
2824
  }
2825
  if (TSDB_CODE_SUCCESS == code) {
×
2826
    code = jsonToNodeList(pJson, jkSortPhysiPlanTargets, &pNode->pTargets);
×
2827
  }
2828
  if (TSDB_CODE_SUCCESS == code) {
×
2829
    code = tjsonGetBoolValue(pJson, jkSortPhysiPlanCalcGroupIds, &pNode->calcGroupId);
×
2830
  }
2831
  if (TSDB_CODE_SUCCESS == code) {
×
2832
    code = tjsonGetBoolValue(pJson, jkSortPhysiPlanExcludePKCol, &pNode->excludePkCol);
×
2833
  }
2834

2835
  return code;
×
2836
}
2837

2838
static const char* jkWindowPhysiPlanExprs = "Exprs";
2839
static const char* jkWindowPhysiPlanFuncs = "Funcs";
2840
static const char* jkWindowPhysiPlanTsPk = "TsPk";
2841
static const char* jkWindowPhysiPlanTsEnd = "TsEnd";
2842
static const char* jkWindowPhysiPlanTriggerType = "TriggerType";
2843
static const char* jkWindowPhysiPlanWatermark = "Watermark";
2844
static const char* jkWindowPhysiPlanDeleteMark = "DeleteMark";
2845
static const char* jkWindowPhysiPlanIgnoreExpired = "IgnoreExpired";
2846
static const char* jkWindowPhysiPlanInputTsOrder = "InputTsOrder";
2847
static const char* jkWindowPhysiPlanMergeDataBlock = "MergeDataBlock";
2848
static const char* jkWindowPhysiPlanDestHasPrimaryKey = "DestHasPrimaryKey";
2849

2850
static int32_t physiWindowNodeToJson(const void* pObj, SJson* pJson) {
7,219✔
2851
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
7,219✔
2852

2853
  int32_t code = physicPlanNodeToJson(pObj, pJson);
7,219✔
2854
  if (TSDB_CODE_SUCCESS == code) {
7,219!
2855
    code = nodeListToJson(pJson, jkWindowPhysiPlanExprs, pNode->pExprs);
7,219✔
2856
  }
2857
  if (TSDB_CODE_SUCCESS == code) {
7,219!
2858
    code = nodeListToJson(pJson, jkWindowPhysiPlanFuncs, pNode->pFuncs);
7,219✔
2859
  }
2860
  if (TSDB_CODE_SUCCESS == code) {
7,219!
2861
    code = tjsonAddObject(pJson, jkWindowPhysiPlanTsPk, nodeToJson, pNode->pTspk);
7,219✔
2862
  }
2863
  if (TSDB_CODE_SUCCESS == code) {
7,219!
2864
    code = tjsonAddObject(pJson, jkWindowPhysiPlanTsEnd, nodeToJson, pNode->pTsEnd);
7,219✔
2865
  }
2866
  if (TSDB_CODE_SUCCESS == code) {
7,219!
2867
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanTriggerType, pNode->triggerType);
7,219✔
2868
  }
2869
  if (TSDB_CODE_SUCCESS == code) {
7,219!
2870
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanWatermark, pNode->watermark);
7,219✔
2871
  }
2872
  if (TSDB_CODE_SUCCESS == code) {
7,219!
2873
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanDeleteMark, pNode->deleteMark);
7,219✔
2874
  }
2875
  if (TSDB_CODE_SUCCESS == code) {
7,219!
2876
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanIgnoreExpired, pNode->igExpired);
7,219✔
2877
  }
2878
  if (TSDB_CODE_SUCCESS == code) {
7,219!
2879
    code = tjsonAddBoolToObject(pJson, jkWindowPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
7,219✔
2880
  }
2881
  if (TSDB_CODE_SUCCESS == code) {
7,219!
2882
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanDestHasPrimaryKey, pNode->destHasPrimaryKey);
7,219✔
2883
  }
2884

2885
  return code;
7,219✔
2886
}
2887

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

2891
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
7,294✔
2892
  if (TSDB_CODE_SUCCESS == code) {
7,293!
2893
    code = jsonToNodeList(pJson, jkWindowPhysiPlanExprs, &pNode->pExprs);
7,293✔
2894
  }
2895
  if (TSDB_CODE_SUCCESS == code) {
7,294!
2896
    code = jsonToNodeList(pJson, jkWindowPhysiPlanFuncs, &pNode->pFuncs);
7,294✔
2897
  }
2898
  if (TSDB_CODE_SUCCESS == code) {
7,294!
2899
    code = jsonToNodeObject(pJson, jkWindowPhysiPlanTsPk, (SNode**)&pNode->pTspk);
7,294✔
2900
  }
2901
  if (TSDB_CODE_SUCCESS == code) {
7,294!
2902
    code = jsonToNodeObject(pJson, jkWindowPhysiPlanTsEnd, (SNode**)&pNode->pTsEnd);
7,294✔
2903
  }
2904
  if (TSDB_CODE_SUCCESS == code) {
7,294!
2905
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanTriggerType, &pNode->triggerType);
7,294✔
2906
  }
2907
  if (TSDB_CODE_SUCCESS == code) {
7,294!
2908
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanWatermark, &pNode->watermark);
7,294✔
2909
  }
2910
  if (TSDB_CODE_SUCCESS == code) {
7,294!
2911
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanDeleteMark, &pNode->deleteMark);
7,294✔
2912
  }
2913
  if (TSDB_CODE_SUCCESS == code) {
7,294!
2914
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanIgnoreExpired, &pNode->igExpired);
7,294✔
2915
  }
2916
  if (TSDB_CODE_SUCCESS == code) {
7,294!
2917
    code = tjsonGetBoolValue(pJson, jkWindowPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
7,294✔
2918
  }
2919
  if (TSDB_CODE_SUCCESS == code) {
7,294!
2920
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanDestHasPrimaryKey, &pNode->destHasPrimaryKey);
7,294✔
2921
  }
2922

2923
  return code;
7,294✔
2924
}
2925

2926
static const char* jkIntervalPhysiPlanInterval = "Interval";
2927
static const char* jkIntervalPhysiPlanOffset = "Offset";
2928
static const char* jkIntervalPhysiPlanSliding = "Sliding";
2929
static const char* jkIntervalPhysiPlanIntervalUnit = "intervalUnit";
2930
static const char* jkIntervalPhysiPlanSlidingUnit = "slidingUnit";
2931

2932
static int32_t physiIntervalNodeToJson(const void* pObj, SJson* pJson) {
5,199✔
2933
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
5,199✔
2934

2935
  int32_t code = physiWindowNodeToJson(pObj, pJson);
5,199✔
2936
  if (TSDB_CODE_SUCCESS == code) {
5,199!
2937
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanInterval, pNode->interval);
5,199✔
2938
  }
2939
  if (TSDB_CODE_SUCCESS == code) {
5,199!
2940
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanOffset, pNode->offset);
5,199✔
2941
  }
2942
  if (TSDB_CODE_SUCCESS == code) {
5,199!
2943
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanSliding, pNode->sliding);
5,199✔
2944
  }
2945
  if (TSDB_CODE_SUCCESS == code) {
5,199!
2946
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanIntervalUnit, pNode->intervalUnit);
5,199✔
2947
  }
2948
  if (TSDB_CODE_SUCCESS == code) {
5,199!
2949
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanSlidingUnit, pNode->slidingUnit);
5,199✔
2950
  }
2951

2952
  return code;
5,199✔
2953
}
2954

2955
static int32_t jsonToPhysiIntervalNode(const SJson* pJson, void* pObj) {
5,256✔
2956
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
5,256✔
2957

2958
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
5,256✔
2959
  if (TSDB_CODE_SUCCESS == code) {
5,256!
2960
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanInterval, &pNode->interval);
5,256✔
2961
  }
2962
  if (TSDB_CODE_SUCCESS == code) {
5,255!
2963
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanOffset, &pNode->offset);
5,255✔
2964
  }
2965
  if (TSDB_CODE_SUCCESS == code) {
5,256!
2966
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanSliding, &pNode->sliding);
5,256✔
2967
  }
2968
  if (TSDB_CODE_SUCCESS == code) {
5,256!
2969
    code = tjsonGetTinyIntValue(pJson, jkIntervalPhysiPlanIntervalUnit, &pNode->intervalUnit);
5,256✔
2970
  }
2971
  if (TSDB_CODE_SUCCESS == code) {
5,256!
2972
    code = tjsonGetTinyIntValue(pJson, jkIntervalPhysiPlanSlidingUnit, &pNode->slidingUnit);
5,256✔
2973
  }
2974

2975
  return code;
5,256✔
2976
}
2977

2978
static const char* jkFillPhysiPlanMode = "Mode";
2979
static const char* jkFillPhysiPlanFillExprs = "FillExprs";
2980
static const char* jkFillPhysiPlanNotFillExprs = "NotFillExprs";
2981
static const char* jkFillPhysiPlanWStartTs = "WStartTs";
2982
static const char* jkFillPhysiPlanValues = "Values";
2983
static const char* jkFillPhysiPlanStartTime = "StartTime";
2984
static const char* jkFillPhysiPlanEndTime = "EndTime";
2985
static const char* jkFillPhysiPlanFillNullExprs = "FillNullExprs";
2986

2987
static int32_t physiFillNodeToJson(const void* pObj, SJson* pJson) {
627✔
2988
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
627✔
2989

2990
  int32_t code = physicPlanNodeToJson(pObj, pJson);
627✔
2991
  if (TSDB_CODE_SUCCESS == code) {
627!
2992
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanMode, pNode->mode);
627✔
2993
  }
2994
  if (TSDB_CODE_SUCCESS == code) {
627!
2995
    code = nodeListToJson(pJson, jkFillPhysiPlanFillExprs, pNode->pFillExprs);
627✔
2996
  }
2997
  if (TSDB_CODE_SUCCESS == code) {
627!
2998
    code = nodeListToJson(pJson, jkFillPhysiPlanNotFillExprs, pNode->pNotFillExprs);
627✔
2999
  }
3000
  if (TSDB_CODE_SUCCESS == code) {
627!
3001
    code = tjsonAddObject(pJson, jkFillPhysiPlanWStartTs, nodeToJson, pNode->pWStartTs);
627✔
3002
  }
3003
  if (TSDB_CODE_SUCCESS == code) {
627!
3004
    code = tjsonAddObject(pJson, jkFillPhysiPlanValues, nodeToJson, pNode->pValues);
627✔
3005
  }
3006
  if (TSDB_CODE_SUCCESS == code) {
627!
3007
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanStartTime, pNode->timeRange.skey);
627✔
3008
  }
3009
  if (TSDB_CODE_SUCCESS == code) {
627!
3010
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanEndTime, pNode->timeRange.ekey);
627✔
3011
  }
3012
  if (TSDB_CODE_SUCCESS == code) {
627!
3013
    code = nodeListToJson(pJson, jkFillPhysiPlanFillNullExprs, pNode->pFillNullExprs);
627✔
3014
  }
3015

3016
  return code;
627✔
3017
}
3018

3019
static int32_t jsonToPhysiFillNode(const SJson* pJson, void* pObj) {
627✔
3020
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
627✔
3021

3022
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
627✔
3023
  if (TSDB_CODE_SUCCESS == code) {
627!
3024
    tjsonGetNumberValue(pJson, jkFillPhysiPlanMode, pNode->mode, code);
627✔
3025
  }
3026
  if (TSDB_CODE_SUCCESS == code) {
627!
3027
    code = jsonToNodeList(pJson, jkFillPhysiPlanFillExprs, &pNode->pFillExprs);
627✔
3028
  }
3029
  if (TSDB_CODE_SUCCESS == code) {
627!
3030
    code = jsonToNodeList(pJson, jkFillPhysiPlanNotFillExprs, &pNode->pNotFillExprs);
627✔
3031
  }
3032
  if (TSDB_CODE_SUCCESS == code) {
627!
3033
    code = jsonToNodeObject(pJson, jkFillPhysiPlanWStartTs, &pNode->pWStartTs);
627✔
3034
  }
3035
  if (TSDB_CODE_SUCCESS == code) {
627!
3036
    code = jsonToNodeObject(pJson, jkFillPhysiPlanValues, &pNode->pValues);
627✔
3037
  }
3038
  if (TSDB_CODE_SUCCESS == code) {
627!
3039
    code = tjsonGetBigIntValue(pJson, jkFillPhysiPlanStartTime, &pNode->timeRange.skey);
627✔
3040
  }
3041
  if (TSDB_CODE_SUCCESS == code) {
627!
3042
    code = tjsonGetBigIntValue(pJson, jkFillPhysiPlanEndTime, &pNode->timeRange.ekey);
627✔
3043
  }
3044
  if (TSDB_CODE_SUCCESS == code) {
627!
3045
    code = jsonToNodeList(pJson, jkFillPhysiPlanFillNullExprs, &pNode->pFillNullExprs);
627✔
3046
  }
3047

3048
  return code;
627✔
3049
}
3050

3051
static const char* jkSessionWindowPhysiPlanGap = "Gap";
3052

3053
static int32_t physiSessionWindowNodeToJson(const void* pObj, SJson* pJson) {
966✔
3054
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
966✔
3055

3056
  int32_t code = physiWindowNodeToJson(pObj, pJson);
966✔
3057
  if (TSDB_CODE_SUCCESS == code) {
966!
3058
    code = tjsonAddIntegerToObject(pJson, jkSessionWindowPhysiPlanGap, pNode->gap);
966✔
3059
  }
3060

3061
  return code;
966✔
3062
}
3063

3064
static int32_t jsonToPhysiSessionWindowNode(const SJson* pJson, void* pObj) {
966✔
3065
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
966✔
3066

3067
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
966✔
3068
  if (TSDB_CODE_SUCCESS == code) {
966!
3069
    tjsonGetNumberValue(pJson, jkSessionWindowPhysiPlanGap, pNode->gap, code);
966✔
3070
  }
3071

3072
  return code;
966✔
3073
}
3074

3075
static const char* jkStateWindowPhysiPlanStateKey = "StateKey";
3076

3077
static int32_t physiStateWindowNodeToJson(const void* pObj, SJson* pJson) {
427✔
3078
  const SStateWinodwPhysiNode* pNode = (const SStateWinodwPhysiNode*)pObj;
427✔
3079

3080
  int32_t code = physiWindowNodeToJson(pObj, pJson);
427✔
3081
  if (TSDB_CODE_SUCCESS == code) {
427!
3082
    code = tjsonAddObject(pJson, jkStateWindowPhysiPlanStateKey, nodeToJson, pNode->pStateKey);
427✔
3083
  }
3084

3085
  return code;
427✔
3086
}
3087

3088
static int32_t jsonToPhysiStateWindowNode(const SJson* pJson, void* pObj) {
427✔
3089
  SStateWinodwPhysiNode* pNode = (SStateWinodwPhysiNode*)pObj;
427✔
3090

3091
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
427✔
3092
  if (TSDB_CODE_SUCCESS == code) {
427!
3093
    code = jsonToNodeObject(pJson, jkStateWindowPhysiPlanStateKey, &pNode->pStateKey);
427✔
3094
  }
3095

3096
  return code;
427✔
3097
}
3098

3099
static const char* jkEventWindowPhysiPlanStartCond = "StartCond";
3100
static const char* jkEventWindowPhysiPlanEndCond = "EndCond";
3101

3102
static int32_t physiEventWindowNodeToJson(const void* pObj, SJson* pJson) {
261✔
3103
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
261✔
3104

3105
  int32_t code = physiWindowNodeToJson(pObj, pJson);
261✔
3106
  if (TSDB_CODE_SUCCESS == code) {
261!
3107
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanStartCond, nodeToJson, pNode->pStartCond);
261✔
3108
  }
3109
  if (TSDB_CODE_SUCCESS == code) {
261!
3110
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanEndCond, nodeToJson, pNode->pEndCond);
261✔
3111
  }
3112

3113
  return code;
261✔
3114
}
3115

3116
static int32_t jsonToPhysiEventWindowNode(const SJson* pJson, void* pObj) {
261✔
3117
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
261✔
3118

3119
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
261✔
3120
  if (TSDB_CODE_SUCCESS == code) {
261!
3121
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanStartCond, &pNode->pStartCond);
261✔
3122
  }
3123
  if (TSDB_CODE_SUCCESS == code) {
261!
3124
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanEndCond, &pNode->pEndCond);
261✔
3125
  }
3126

3127
  return code;
261✔
3128
}
3129

3130
static const char* jkCountWindowPhysiPlanWindowCount = "WindowCount";
3131
static const char* jkCountWindowPhysiPlanWindowSliding = "WindowSliding";
3132

3133
static int32_t physiCountWindowNodeToJson(const void* pObj, SJson* pJson) {
366✔
3134
  const SCountWinodwPhysiNode* pNode = (const SCountWinodwPhysiNode*)pObj;
366✔
3135

3136
  int32_t code = physiWindowNodeToJson(pObj, pJson);
366✔
3137
  if (TSDB_CODE_SUCCESS == code) {
366!
3138
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowCount, pNode->windowCount);
366✔
3139
  }
3140
  if (TSDB_CODE_SUCCESS == code) {
366!
3141
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowSliding, pNode->windowSliding);
366✔
3142
  }
3143
  return code;
366✔
3144
}
3145

3146
static int32_t jsonToPhysiCountWindowNode(const SJson* pJson, void* pObj) {
384✔
3147
  SCountWinodwPhysiNode* pNode = (SCountWinodwPhysiNode*)pObj;
384✔
3148

3149
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
384✔
3150
  if (TSDB_CODE_SUCCESS == code) {
384!
3151
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowCount, &pNode->windowCount);
384✔
3152
  }
3153
  if (TSDB_CODE_SUCCESS == code) {
384!
3154
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowSliding, &pNode->windowSliding);
384✔
3155
  }
3156

3157
  return code;
384✔
3158
}
3159

3160
static const char* jkAnomalyWindowPhysiPlanAnomalyKey = "AnomalyKey";
3161
static const char* jkAnomalyWindowPhysiPlanAnomalyOption = "AnomalyOpt";
3162

3163
static int32_t physiAnomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
3164
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3165

3166
  int32_t code = physiWindowNodeToJson(pObj, pJson);
×
3167
  if (TSDB_CODE_SUCCESS == code) {
×
3168
    code = tjsonAddObject(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, nodeToJson, pNode->pAnomalyKey);
×
3169
  }
3170
  if (TSDB_CODE_SUCCESS == code) {
×
3171
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt);
×
3172
  }
3173
  return code;
×
3174
}
3175

3176
static int32_t jsonToPhysiAnomalyWindowNode(const SJson* pJson, void* pObj) {
×
3177
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3178

3179
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
×
3180
  if (TSDB_CODE_SUCCESS == code) {
×
3181
    code = jsonToNodeObject(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, &pNode->pAnomalyKey);
×
3182
  }
3183
  if (TSDB_CODE_SUCCESS == code) {
×
3184
    code = tjsonGetStringValue(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt);
×
3185
  }
3186

3187
  return code;
×
3188
}
3189

3190
static const char* jkPartitionPhysiPlanExprs = "Exprs";
3191
static const char* jkPartitionPhysiPlanPartitionKeys = "PartitionKeys";
3192
static const char* jkPartitionPhysiPlanTargets = "Targets";
3193
static const char* jkPartitionPhysiPlanNeedBlockOutputTsOrder = "NeedBlockOutputTsOrder";
3194
static const char* jkPartitionPhysiPlanTsSlotId = "tsSlotId";
3195

3196
static int32_t physiPartitionNodeToJson(const void* pObj, SJson* pJson) {
1,400✔
3197
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
1,400✔
3198

3199
  int32_t code = physicPlanNodeToJson(pObj, pJson);
1,400✔
3200
  if (TSDB_CODE_SUCCESS == code) {
1,400!
3201
    code = nodeListToJson(pJson, jkPartitionPhysiPlanExprs, pNode->pExprs);
1,400✔
3202
  }
3203
  if (TSDB_CODE_SUCCESS == code) {
1,400!
3204
    code = nodeListToJson(pJson, jkPartitionPhysiPlanPartitionKeys, pNode->pPartitionKeys);
1,400✔
3205
  }
3206
  if (TSDB_CODE_SUCCESS == code) {
1,400!
3207
    code = nodeListToJson(pJson, jkPartitionPhysiPlanTargets, pNode->pTargets);
1,400✔
3208
  }
3209
  if (TSDB_CODE_SUCCESS == code) {
1,400!
3210
    code = tjsonAddBoolToObject(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, pNode->needBlockOutputTsOrder);
1,400✔
3211
  }
3212
  if (TSDB_CODE_SUCCESS == code) {
1,400!
3213
    code = tjsonAddIntegerToObject(pJson, jkPartitionPhysiPlanTsSlotId, pNode->tsSlotId);
1,400✔
3214
  }
3215

3216
  return code;
1,400✔
3217
}
3218

3219
static int32_t jsonToPhysiPartitionNode(const SJson* pJson, void* pObj) {
1,397✔
3220
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
1,397✔
3221

3222
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
1,397✔
3223
  if (TSDB_CODE_SUCCESS == code) {
1,397!
3224
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanExprs, &pNode->pExprs);
1,397✔
3225
  }
3226
  if (TSDB_CODE_SUCCESS == code) {
1,397!
3227
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanPartitionKeys, &pNode->pPartitionKeys);
1,397✔
3228
  }
3229
  if (TSDB_CODE_SUCCESS == code) {
1,397!
3230
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanTargets, &pNode->pTargets);
1,397✔
3231
  }
3232
  if (TSDB_CODE_SUCCESS == code) {
1,397!
3233
    code = tjsonGetBoolValue(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, &pNode->needBlockOutputTsOrder);
1,397✔
3234
  }
3235
  if (TSDB_CODE_SUCCESS == code) {
1,397!
3236
    code = tjsonGetIntValue(pJson, jkPartitionPhysiPlanTsSlotId, &pNode->tsSlotId);
1,397✔
3237
  }
3238

3239
  return code;
1,397✔
3240
}
3241

3242
static const char* jkStreamPartitionPhysiPlanTags = "Tags";
3243
static const char* jkStreamPartitionPhysiPlanSubtable = "Subtable";
3244

3245
static int32_t physiStreamPartitionNodeToJson(const void* pObj, SJson* pJson) {
1,400✔
3246
  const SStreamPartitionPhysiNode* pNode = (const SStreamPartitionPhysiNode*)pObj;
1,400✔
3247

3248
  int32_t code = physiPartitionNodeToJson(pObj, pJson);
1,400✔
3249
  if (TSDB_CODE_SUCCESS == code) {
1,400!
3250
    code = nodeListToJson(pJson, jkStreamPartitionPhysiPlanTags, pNode->pTags);
1,400✔
3251
  }
3252
  if (TSDB_CODE_SUCCESS == code) {
1,400!
3253
    code = tjsonAddObject(pJson, jkStreamPartitionPhysiPlanSubtable, nodeToJson, pNode->pSubtable);
1,400✔
3254
  }
3255

3256
  return code;
1,400✔
3257
}
3258

3259
static int32_t jsonToPhysiStreamPartitionNode(const SJson* pJson, void* pObj) {
1,397✔
3260
  SStreamPartitionPhysiNode* pNode = (SStreamPartitionPhysiNode*)pObj;
1,397✔
3261

3262
  int32_t code = jsonToPhysiPartitionNode(pJson, pObj);
1,397✔
3263
  if (TSDB_CODE_SUCCESS == code) {
1,397!
3264
    code = jsonToNodeList(pJson, jkStreamPartitionPhysiPlanTags, &pNode->pTags);
1,397✔
3265
  }
3266
  if (TSDB_CODE_SUCCESS == code) {
1,397!
3267
    code = jsonToNodeObject(pJson, jkStreamPartitionPhysiPlanSubtable, &pNode->pSubtable);
1,397✔
3268
  }
3269

3270
  return code;
1,397✔
3271
}
3272

3273
static const char* jkIndefRowsFuncPhysiPlanExprs = "Exprs";
3274
static const char* jkIndefRowsFuncPhysiPlanFuncs = "Funcs";
3275

3276
static int32_t physiIndefRowsFuncNodeToJson(const void* pObj, SJson* pJson) {
×
3277
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
×
3278

3279
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3280
  if (TSDB_CODE_SUCCESS == code) {
×
3281
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanExprs, pNode->pExprs);
×
3282
  }
3283
  if (TSDB_CODE_SUCCESS == code) {
×
3284
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanFuncs, pNode->pFuncs);
×
3285
  }
3286

3287
  return code;
×
3288
}
3289

3290
static int32_t jsonToPhysiIndefRowsFuncNode(const SJson* pJson, void* pObj) {
×
3291
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
×
3292

3293
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3294
  if (TSDB_CODE_SUCCESS == code) {
×
3295
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanExprs, &pNode->pExprs);
×
3296
  }
3297
  if (TSDB_CODE_SUCCESS == code) {
×
3298
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanFuncs, &pNode->pFuncs);
×
3299
  }
3300

3301
  return code;
×
3302
}
3303

3304
static const char* jkInterpFuncPhysiPlanExprs = "Exprs";
3305
static const char* jkInterpFuncPhysiPlanFuncs = "Funcs";
3306
static const char* jkInterpFuncPhysiPlanStartTime = "StartTime";
3307
static const char* jkInterpFuncPhysiPlanEndTime = "EndTime";
3308
static const char* jkInterpFuncPhysiPlanInterval = "Interval";
3309
static const char* jkInterpFuncPhysiPlanIntervalUnit = "intervalUnit";
3310
static const char* jkInterpFuncPhysiPlanPrecision = "precision";
3311
static const char* jkInterpFuncPhysiPlanFillMode = "FillMode";
3312
static const char* jkInterpFuncPhysiPlanFillValues = "FillValues";
3313
static const char* jkInterpFuncPhysiPlanTimeSeries = "TimeSeries";
3314
static const char* jkInterpFuncPhysiPlanStreamNodeOption = "StreamNodeOption";
3315

3316
static int32_t physiInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
20✔
3317
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
20✔
3318

3319
  int32_t code = physicPlanNodeToJson(pObj, pJson);
20✔
3320
  if (TSDB_CODE_SUCCESS == code) {
20!
3321
    code = nodeListToJson(pJson, jkInterpFuncPhysiPlanExprs, pNode->pExprs);
20✔
3322
  }
3323
  if (TSDB_CODE_SUCCESS == code) {
20!
3324
    code = nodeListToJson(pJson, jkInterpFuncPhysiPlanFuncs, pNode->pFuncs);
20✔
3325
  }
3326
  if (TSDB_CODE_SUCCESS == code) {
20!
3327
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanStartTime, pNode->timeRange.skey);
20✔
3328
  }
3329
  if (TSDB_CODE_SUCCESS == code) {
20!
3330
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanEndTime, pNode->timeRange.ekey);
20✔
3331
  }
3332
  if (TSDB_CODE_SUCCESS == code) {
20!
3333
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanInterval, pNode->interval);
20✔
3334
  }
3335
  if (TSDB_CODE_SUCCESS == code) {
20!
3336
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanIntervalUnit, pNode->intervalUnit);
20✔
3337
  }
3338
  if (TSDB_CODE_SUCCESS == code) {
20!
3339
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanPrecision, pNode->precision);
20✔
3340
  }
3341
  if (TSDB_CODE_SUCCESS == code) {
20!
3342
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanFillMode, pNode->fillMode);
20✔
3343
  }
3344
  if (TSDB_CODE_SUCCESS == code) {
20!
3345
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanFillValues, nodeToJson, pNode->pFillValues);
20✔
3346
  }
3347
  if (TSDB_CODE_SUCCESS == code) {
20!
3348
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanTimeSeries, nodeToJson, pNode->pTimeSeries);
20✔
3349
  }
3350
  if (TSDB_CODE_SUCCESS == code) {
20!
3351
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanStreamNodeOption, streamNodeOptionToJson, &pNode->streamNodeOption);
20✔
3352
  }
3353

3354
  return code;
20✔
3355
}
3356

3357
static int32_t jsonToPhysiInterpFuncNode(const SJson* pJson, void* pObj) {
20✔
3358
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
20✔
3359

3360
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
20✔
3361
  if (TSDB_CODE_SUCCESS == code) {
20!
3362
    code = jsonToNodeList(pJson, jkInterpFuncPhysiPlanExprs, &pNode->pExprs);
20✔
3363
  }
3364
  if (TSDB_CODE_SUCCESS == code) {
20!
3365
    code = jsonToNodeList(pJson, jkInterpFuncPhysiPlanFuncs, &pNode->pFuncs);
20✔
3366
  }
3367
  if (TSDB_CODE_SUCCESS == code) {
20!
3368
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanStartTime, &pNode->timeRange.skey);
20✔
3369
  }
3370
  if (TSDB_CODE_SUCCESS == code) {
20!
3371
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanEndTime, &pNode->timeRange.ekey);
20✔
3372
  }
3373
  if (TSDB_CODE_SUCCESS == code) {
20!
3374
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanInterval, &pNode->interval);
20✔
3375
  }
3376
  if (TSDB_CODE_SUCCESS == code) {
20!
3377
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanIntervalUnit, &pNode->intervalUnit);
20✔
3378
  }
3379
  if (TSDB_CODE_SUCCESS == code) {
20!
3380
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanPrecision, &pNode->precision);
20✔
3381
  }
3382
  if (TSDB_CODE_SUCCESS == code) {
20!
3383
    tjsonGetNumberValue(pJson, jkInterpFuncPhysiPlanFillMode, pNode->fillMode, code);
20✔
3384
  }
3385
  if (TSDB_CODE_SUCCESS == code) {
20!
3386
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanFillValues, &pNode->pFillValues);
20✔
3387
  }
3388
  if (TSDB_CODE_SUCCESS == code) {
20!
3389
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanTimeSeries, &pNode->pTimeSeries);
20✔
3390
  }
3391
  if (TSDB_CODE_SUCCESS == code) {
20!
3392
    code = tjsonToObject(pJson, jkInterpFuncPhysiPlanStreamNodeOption, jsonToStreamNodeOption, &pNode->streamNodeOption);
20✔
3393
  }
3394

3395
  return code;
20✔
3396
}
3397

3398
static const char* jkForecastFuncPhysiPlanExprs = "Exprs";
3399
static const char* jkForecastFuncPhysiPlanFuncs = "Funcs";
3400

3401
static int32_t physiForecastFuncNodeToJson(const void* pObj, SJson* pJson) {
×
3402
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
3403

3404
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3405
  if (TSDB_CODE_SUCCESS == code) {
×
3406
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanExprs, pNode->pExprs);
×
3407
  }
3408
  if (TSDB_CODE_SUCCESS == code) {
×
3409
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanFuncs, pNode->pFuncs);
×
3410
  }
3411

3412
  return code;
×
3413
}
3414

3415
static int32_t jsonToPhysiForecastFuncNode(const SJson* pJson, void* pObj) {
×
3416
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
3417

3418
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3419
  if (TSDB_CODE_SUCCESS == code) {
×
3420
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanExprs, &pNode->pExprs);
×
3421
  }
3422
  if (TSDB_CODE_SUCCESS == code) {
×
3423
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanFuncs, &pNode->pFuncs);
×
3424
  }
3425

3426
  return code;
×
3427
}
3428

3429
static const char* jkDataSinkInputDataBlockDesc = "InputDataBlockDesc";
3430

3431
static int32_t physicDataSinkNodeToJson(const void* pObj, SJson* pJson) {
×
3432
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
×
3433
  return tjsonAddObject(pJson, jkDataSinkInputDataBlockDesc, nodeToJson, pNode->pInputDataBlockDesc);
×
3434
}
3435

3436
static int32_t jsonToPhysicDataSinkNode(const SJson* pJson, void* pObj) {
×
3437
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
×
3438
  return jsonToNodeObject(pJson, jkDataSinkInputDataBlockDesc, (SNode**)&pNode->pInputDataBlockDesc);
×
3439
}
3440

3441
static int32_t physiDispatchNodeToJson(const void* pObj, SJson* pJson) { return physicDataSinkNodeToJson(pObj, pJson); }
×
3442

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

3445
static const char* jkQueryInsertPhysiPlanInsertCols = "InsertCols";
3446
static const char* jkQueryInsertPhysiPlanStableId = "StableId";
3447
static const char* jkQueryInsertPhysiPlanTableId = "TableId";
3448
static const char* jkQueryInsertPhysiPlanTableType = "TableType";
3449
static const char* jkQueryInsertPhysiPlanTableFName = "TableFName";
3450
static const char* jkQueryInsertPhysiPlanVgId = "VgId";
3451
static const char* jkQueryInsertPhysiPlanEpSet = "EpSet";
3452
static const char* jkQueryInsertPhysiPlanExplain = "Explain";
3453

3454
static int32_t physiQueryInsertNodeToJson(const void* pObj, SJson* pJson) {
×
3455
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
×
3456

3457
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
×
3458
  if (TSDB_CODE_SUCCESS == code) {
×
3459
    code = nodeListToJson(pJson, jkQueryInsertPhysiPlanInsertCols, pNode->pCols);
×
3460
  }
3461
  if (TSDB_CODE_SUCCESS == code) {
×
3462
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanStableId, pNode->stableId);
×
3463
  }
3464
  if (TSDB_CODE_SUCCESS == code) {
×
3465
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableId, pNode->tableId);
×
3466
  }
3467
  if (TSDB_CODE_SUCCESS == code) {
×
3468
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableType, pNode->tableType);
×
3469
  }
3470
  if (TSDB_CODE_SUCCESS == code) {
×
3471
    code = tjsonAddStringToObject(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName);
×
3472
  }
3473
  if (TSDB_CODE_SUCCESS == code) {
×
3474
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanVgId, pNode->vgId);
×
3475
  }
3476
  if (TSDB_CODE_SUCCESS == code) {
×
3477
    code = tjsonAddObject(pJson, jkQueryInsertPhysiPlanEpSet, epSetToJson, &pNode->epSet);
×
3478
  }
3479
  if (TSDB_CODE_SUCCESS == code) {
×
3480
    code = tjsonAddBoolToObject(pJson, jkQueryInsertPhysiPlanExplain, pNode->explain);
×
3481
  }
3482

3483
  return code;
×
3484
}
3485

3486
static int32_t jsonToPhysiQueryInsertNode(const SJson* pJson, void* pObj) {
×
3487
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
×
3488

3489
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
×
3490
  if (TSDB_CODE_SUCCESS == code) {
×
3491
    code = jsonToNodeList(pJson, jkQueryInsertPhysiPlanInsertCols, &pNode->pCols);
×
3492
  }
3493
  if (TSDB_CODE_SUCCESS == code) {
×
3494
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanStableId, &pNode->stableId);
×
3495
  }
3496
  if (TSDB_CODE_SUCCESS == code) {
×
3497
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanTableId, &pNode->tableId);
×
3498
  }
3499
  if (TSDB_CODE_SUCCESS == code) {
×
3500
    code = tjsonGetTinyIntValue(pJson, jkQueryInsertPhysiPlanTableType, &pNode->tableType);
×
3501
  }
3502
  if (TSDB_CODE_SUCCESS == code) {
×
3503
    code = tjsonGetStringValue(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName);
×
3504
  }
3505
  if (TSDB_CODE_SUCCESS == code) {
×
3506
    code = tjsonGetIntValue(pJson, jkQueryInsertPhysiPlanVgId, &pNode->vgId);
×
3507
  }
3508
  if (TSDB_CODE_SUCCESS == code) {
×
3509
    code = tjsonToObject(pJson, jkQueryInsertPhysiPlanEpSet, jsonToEpSet, &pNode->epSet);
×
3510
  }
3511
  if (TSDB_CODE_SUCCESS == code) {
×
3512
    code = tjsonGetBoolValue(pJson, jkQueryInsertPhysiPlanExplain, &pNode->explain);
×
3513
  }
3514

3515
  return code;
×
3516
}
3517

3518
static const char* jkDeletePhysiPlanTableId = "TableId";
3519
static const char* jkDeletePhysiPlanTableType = "TableType";
3520
static const char* jkDeletePhysiPlanTableFName = "TableFName";
3521
static const char* jkDeletePhysiPlanTsColName = "TsColName";
3522
static const char* jkDeletePhysiPlanDeleteTimeRangeStartKey = "DeleteTimeRangeStartKey";
3523
static const char* jkDeletePhysiPlanDeleteTimeRangeEndKey = "DeleteTimeRangeEndKey";
3524
static const char* jkDeletePhysiPlanAffectedRows = "AffectedRows";
3525
static const char* jkDeletePhysiPlanStartTs = "StartTs";
3526
static const char* jkDeletePhysiPlanEndTs = "EndTs";
3527

3528
static int32_t physiDeleteNodeToJson(const void* pObj, SJson* pJson) {
×
3529
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
×
3530

3531
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
×
3532
  if (TSDB_CODE_SUCCESS == code) {
×
3533
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableId, pNode->tableId);
×
3534
  }
3535
  if (TSDB_CODE_SUCCESS == code) {
×
3536
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableType, pNode->tableType);
×
3537
  }
3538
  if (TSDB_CODE_SUCCESS == code) {
×
3539
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName);
×
3540
  }
3541
  if (TSDB_CODE_SUCCESS == code) {
×
3542
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName);
×
3543
  }
3544
  if (TSDB_CODE_SUCCESS == code) {
×
3545
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, pNode->deleteTimeRange.skey);
×
3546
  }
3547
  if (TSDB_CODE_SUCCESS == code) {
×
3548
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, pNode->deleteTimeRange.ekey);
×
3549
  }
3550
  if (TSDB_CODE_SUCCESS == code) {
×
3551
    code = tjsonAddObject(pJson, jkDeletePhysiPlanAffectedRows, nodeToJson, pNode->pAffectedRows);
×
3552
  }
3553
  if (TSDB_CODE_SUCCESS == code) {
×
3554
    code = tjsonAddObject(pJson, jkDeletePhysiPlanStartTs, nodeToJson, pNode->pStartTs);
×
3555
  }
3556
  if (TSDB_CODE_SUCCESS == code) {
×
3557
    code = tjsonAddObject(pJson, jkDeletePhysiPlanEndTs, nodeToJson, pNode->pEndTs);
×
3558
  }
3559

3560
  return code;
×
3561
}
3562

3563
static int32_t jsonToPhysiDeleteNode(const SJson* pJson, void* pObj) {
×
3564
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
×
3565

3566
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
×
3567
  if (TSDB_CODE_SUCCESS == code) {
×
3568
    code = tjsonGetUBigIntValue(pJson, jkDeletePhysiPlanTableId, &pNode->tableId);
×
3569
  }
3570
  if (TSDB_CODE_SUCCESS == code) {
×
3571
    code = tjsonGetTinyIntValue(pJson, jkDeletePhysiPlanTableType, &pNode->tableType);
×
3572
  }
3573
  if (TSDB_CODE_SUCCESS == code) {
×
3574
    code = tjsonGetStringValue(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName);
×
3575
  }
3576
  if (TSDB_CODE_SUCCESS == code) {
×
3577
    code = tjsonGetStringValue(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName);
×
3578
  }
3579
  if (TSDB_CODE_SUCCESS == code) {
×
3580
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, &pNode->deleteTimeRange.skey);
×
3581
  }
3582
  if (TSDB_CODE_SUCCESS == code) {
×
3583
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, &pNode->deleteTimeRange.ekey);
×
3584
  }
3585
  if (TSDB_CODE_SUCCESS == code) {
×
3586
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanAffectedRows, &pNode->pAffectedRows);
×
3587
  }
3588
  if (TSDB_CODE_SUCCESS == code) {
×
3589
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanStartTs, &pNode->pStartTs);
×
3590
  }
3591
  if (TSDB_CODE_SUCCESS == code) {
×
3592
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanEndTs, &pNode->pEndTs);
×
3593
  }
3594

3595
  return code;
×
3596
}
3597

3598
static const char* jkGroupCachePhysiPlanGroupCols = "GroupColumns";
3599
static const char* jkGroupCachePhysiPlanGrpColsMayBeNull = "GroupColumnsMayBeNull";
3600
static const char* jkGroupCachePhysiPlanGroupByUid = "GroupByUid";
3601
static const char* jkGroupCachePhysiPlanGlobalGroup = "GlobalGroup";
3602
static const char* jkGroupCachePhysiPlanBatchFetch = "BatchFetch";
3603

3604
static int32_t physiGroupCacheNodeToJson(const void* pObj, SJson* pJson) {
×
3605
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
×
3606

3607
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3608
  if (TSDB_CODE_SUCCESS == code) {
×
3609
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, pNode->grpColsMayBeNull);
×
3610
  }
3611
  if (TSDB_CODE_SUCCESS == code) {
×
3612
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGroupByUid, pNode->grpByUid);
×
3613
  }
3614
  if (TSDB_CODE_SUCCESS == code) {
×
3615
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGlobalGroup, pNode->globalGrp);
×
3616
  }
3617
  if (TSDB_CODE_SUCCESS == code) {
×
3618
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanBatchFetch, pNode->batchFetch);
×
3619
  }
3620
  if (TSDB_CODE_SUCCESS == code) {
×
3621
    code = nodeListToJson(pJson, jkGroupCachePhysiPlanGroupCols, pNode->pGroupCols);
×
3622
  }
3623
  return code;
×
3624
}
3625

3626
static int32_t jsonToPhysiGroupCacheNode(const SJson* pJson, void* pObj) {
×
3627
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
×
3628

3629
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3630
  if (TSDB_CODE_SUCCESS == code) {
×
3631
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, &pNode->grpColsMayBeNull);
×
3632
  }
3633
  if (TSDB_CODE_SUCCESS == code) {
×
3634
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGroupByUid, &pNode->grpByUid);
×
3635
  }
3636
  if (TSDB_CODE_SUCCESS == code) {
×
3637
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGlobalGroup, &pNode->globalGrp);
×
3638
  }
3639
  if (TSDB_CODE_SUCCESS == code) {
×
3640
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanBatchFetch, &pNode->batchFetch);
×
3641
  }
3642
  if (TSDB_CODE_SUCCESS == code) {
×
3643
    code = jsonToNodeList(pJson, jkGroupCachePhysiPlanGroupCols, &pNode->pGroupCols);
×
3644
  }
3645
  return code;
×
3646
}
3647

3648
static const char* jkDynQueryCtrlPhysiPlanQueryType = "QueryType";
3649
static const char* jkDynQueryCtrlPhysiPlanBatchFetch = "BatchFetch";
3650
static const char* jkDynQueryCtrlPhysiPlanVgSlot0 = "VgSlot[0]";
3651
static const char* jkDynQueryCtrlPhysiPlanVgSlot1 = "VgSlot[1]";
3652
static const char* jkDynQueryCtrlPhysiPlanUidSlot0 = "UidSlot[0]";
3653
static const char* jkDynQueryCtrlPhysiPlanUidSlot1 = "UidSlot[1]";
3654
static const char* jkDynQueryCtrlPhysiPlanSrcScan0 = "SrcScan[0]";
3655
static const char* jkDynQueryCtrlPhysiPlanSrcScan1 = "SrcScan[1]";
3656

3657
static int32_t physiDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
×
3658
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
×
3659

3660
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3661
  if (TSDB_CODE_SUCCESS == code) {
×
3662
    code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType);
×
3663
  }
3664
  if (TSDB_CODE_SUCCESS == code) {
×
3665
    switch (pNode->qType) {
×
3666
      case DYN_QTYPE_STB_HASH: {
×
3667
        code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanBatchFetch, pNode->stbJoin.batchFetch);
×
3668
        if (TSDB_CODE_SUCCESS == code) {
×
3669
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot0, pNode->stbJoin.vgSlot[0]);
×
3670
        }
3671
        if (TSDB_CODE_SUCCESS == code) {
×
3672
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot1, pNode->stbJoin.vgSlot[1]);
×
3673
        }
3674
        if (TSDB_CODE_SUCCESS == code) {
×
3675
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot0, pNode->stbJoin.uidSlot[0]);
×
3676
        }
3677
        if (TSDB_CODE_SUCCESS == code) {
×
3678
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot1, pNode->stbJoin.uidSlot[1]);
×
3679
        }
3680
        if (TSDB_CODE_SUCCESS == code) {
×
3681
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan0, pNode->stbJoin.srcScan[0]);
×
3682
        }
3683
        if (TSDB_CODE_SUCCESS == code) {
×
3684
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan1, pNode->stbJoin.srcScan[1]);
×
3685
        }
3686
        break;
×
3687
      }
3688
      default:
×
3689
        return TSDB_CODE_INVALID_PARA;
×
3690
    }
3691
  }
3692
  return code;
×
3693
}
3694

3695
static int32_t jsonToPhysiDynQueryCtrlNode(const SJson* pJson, void* pObj) {
×
3696
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
×
3697

3698
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3699
  if (TSDB_CODE_SUCCESS == code) {
×
3700
    tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType, code);
×
3701
  }
3702
  if (TSDB_CODE_SUCCESS == code) {
×
3703
    switch (pNode->qType) {
×
3704
      case DYN_QTYPE_STB_HASH: {
×
3705
        tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType, code);
×
3706
        if (TSDB_CODE_SUCCESS == code) {
×
3707
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanBatchFetch, &pNode->stbJoin.batchFetch);
×
3708
        }
3709
        if (TSDB_CODE_SUCCESS == code) {
×
3710
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanVgSlot0, pNode->stbJoin.vgSlot[0], code);
×
3711
        }
3712
        if (TSDB_CODE_SUCCESS == code) {
×
3713
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanVgSlot1, pNode->stbJoin.vgSlot[1], code);
×
3714
        }
3715
        if (TSDB_CODE_SUCCESS == code) {
×
3716
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanUidSlot0, pNode->stbJoin.uidSlot[0], code);
×
3717
        }
3718
        if (TSDB_CODE_SUCCESS == code) {
×
3719
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanUidSlot1, pNode->stbJoin.uidSlot[1], code);
×
3720
        }
3721
        if (TSDB_CODE_SUCCESS == code) {
×
3722
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanSrcScan0, &pNode->stbJoin.srcScan[0]);
×
3723
        }
3724
        if (TSDB_CODE_SUCCESS == code) {
×
3725
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanSrcScan1, &pNode->stbJoin.srcScan[1]);
×
3726
        }
3727
        break;
×
3728
      }
3729
      default:
×
3730
        return TSDB_CODE_INVALID_PARA;
×
3731
    }
3732
  }
3733

3734
  return code;
×
3735
}
3736

3737
static const char* jkQueryNodeAddrId = "Id";
3738
static const char* jkQueryNodeAddrInUse = "InUse";
3739
static const char* jkQueryNodeAddrNumOfEps = "NumOfEps";
3740
static const char* jkQueryNodeAddrEps = "Eps";
3741

3742
static int32_t queryNodeAddrToJson(const void* pObj, SJson* pJson) {
12,353✔
3743
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
12,353✔
3744

3745
  int32_t code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrId, pNode->nodeId);
12,353✔
3746
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3747
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrInUse, pNode->epSet.inUse);
12,353✔
3748
  }
3749
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3750
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrNumOfEps, pNode->epSet.numOfEps);
12,353✔
3751
  }
3752
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3753
    code = tjsonAddArray(pJson, jkQueryNodeAddrEps, epToJson, pNode->epSet.eps, sizeof(SEp), pNode->epSet.numOfEps);
12,353✔
3754
  }
3755

3756
  return code;
12,353✔
3757
}
3758

3759
static int32_t jsonToQueryNodeAddr(const SJson* pJson, void* pObj) {
11,845✔
3760
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
11,845✔
3761

3762
  int32_t code = tjsonGetIntValue(pJson, jkQueryNodeAddrId, &pNode->nodeId);
11,845✔
3763
  if (TSDB_CODE_SUCCESS == code) {
11,846!
3764
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrInUse, &pNode->epSet.inUse);
11,846✔
3765
  }
3766
  if (TSDB_CODE_SUCCESS == code) {
11,847!
3767
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrNumOfEps, &pNode->epSet.numOfEps);
11,847✔
3768
  }
3769
  if (TSDB_CODE_SUCCESS == code) {
11,845!
3770
    code = tjsonToArray(pJson, jkQueryNodeAddrEps, jsonToEp, pNode->epSet.eps, sizeof(SEp));
11,845✔
3771
  }
3772

3773
  return code;
11,844✔
3774
}
3775

3776
static const char* jkSubplanId = "Id";
3777
static const char* jkSubplanType = "SubplanType";
3778
static const char* jkSubplanMsgType = "MsgType";
3779
static const char* jkSubplanLevel = "Level";
3780
static const char* jkSubplanDbFName = "DbFName";
3781
static const char* jkSubplanUser = "User";
3782
static const char* jkSubplanNodeAddr = "NodeAddr";
3783
static const char* jkSubplanRootNode = "RootNode";
3784
static const char* jkSubplanDataSink = "DataSink";
3785
static const char* jkSubplanTagCond = "TagCond";
3786
static const char* jkSubplanTagIndexCond = "TagIndexCond";
3787
static const char* jkSubplanShowRewrite = "ShowRewrite";
3788
static const char* jkSubplanRowsThreshold = "RowThreshold";
3789
static const char* jkSubplanDynamicRowsThreshold = "DyRowThreshold";
3790
static const char* jkSubplanIsView = "IsView";
3791
static const char* jkSubplanIsAudit = "IsAudit";
3792

3793
static int32_t subplanToJson(const void* pObj, SJson* pJson) {
12,353✔
3794
  const SSubplan* pNode = (const SSubplan*)pObj;
12,353✔
3795

3796
  int32_t code = tjsonAddObject(pJson, jkSubplanId, subplanIdToJson, &pNode->id);
12,353✔
3797
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3798
    code = tjsonAddIntegerToObject(pJson, jkSubplanType, pNode->subplanType);
12,353✔
3799
  }
3800
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3801
    code = tjsonAddIntegerToObject(pJson, jkSubplanMsgType, pNode->msgType);
12,353✔
3802
  }
3803
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3804
    code = tjsonAddIntegerToObject(pJson, jkSubplanLevel, pNode->level);
12,353✔
3805
  }
3806
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3807
    code = tjsonAddStringToObject(pJson, jkSubplanDbFName, pNode->dbFName);
12,353✔
3808
  }
3809
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3810
    code = tjsonAddStringToObject(pJson, jkSubplanUser, pNode->user);
12,353✔
3811
  }
3812
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3813
    code = tjsonAddObject(pJson, jkSubplanNodeAddr, queryNodeAddrToJson, &pNode->execNode);
12,353✔
3814
  }
3815
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3816
    code = tjsonAddObject(pJson, jkSubplanRootNode, nodeToJson, pNode->pNode);
12,353✔
3817
  }
3818
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3819
    code = tjsonAddObject(pJson, jkSubplanDataSink, nodeToJson, pNode->pDataSink);
12,353✔
3820
  }
3821
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3822
    code = tjsonAddObject(pJson, jkSubplanTagCond, nodeToJson, pNode->pTagCond);
12,353✔
3823
  }
3824
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3825
    code = tjsonAddObject(pJson, jkSubplanTagIndexCond, nodeToJson, pNode->pTagIndexCond);
12,353✔
3826
  }
3827
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3828
    code = tjsonAddBoolToObject(pJson, jkSubplanShowRewrite, pNode->showRewrite);
12,353✔
3829
  }
3830
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3831
    code = tjsonAddBoolToObject(pJson, jkSubplanIsView, pNode->isView);
12,353✔
3832
  }
3833
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3834
    code = tjsonAddBoolToObject(pJson, jkSubplanIsAudit, pNode->isAudit);
12,353✔
3835
  }
3836
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3837
    code = tjsonAddIntegerToObject(pJson, jkSubplanRowsThreshold, pNode->rowsThreshold);
12,353✔
3838
  }
3839
  if (TSDB_CODE_SUCCESS == code) {
12,353!
3840
    code = tjsonAddBoolToObject(pJson, jkSubplanDynamicRowsThreshold, pNode->dynamicRowThreshold);
12,353✔
3841
  }
3842

3843
  return code;
12,353✔
3844
}
3845

3846
static int32_t jsonToSubplan(const SJson* pJson, void* pObj) {
11,844✔
3847
  SSubplan* pNode = (SSubplan*)pObj;
11,844✔
3848

3849
  int32_t code = tjsonToObject(pJson, jkSubplanId, jsonToSubplanId, &pNode->id);
11,844✔
3850
  if (TSDB_CODE_SUCCESS == code) {
11,846!
3851
    tjsonGetNumberValue(pJson, jkSubplanType, pNode->subplanType, code);
11,846✔
3852
  }
3853
  if (TSDB_CODE_SUCCESS == code) {
11,847!
3854
    code = tjsonGetIntValue(pJson, jkSubplanMsgType, &pNode->msgType);
11,847✔
3855
  }
3856
  if (TSDB_CODE_SUCCESS == code) {
11,847!
3857
    code = tjsonGetIntValue(pJson, jkSubplanLevel, &pNode->level);
11,847✔
3858
  }
3859
  if (TSDB_CODE_SUCCESS == code) {
11,846!
3860
    code = tjsonGetStringValue(pJson, jkSubplanDbFName, pNode->dbFName);
11,846✔
3861
  }
3862
  if (TSDB_CODE_SUCCESS == code) {
11,844!
3863
    code = tjsonGetStringValue(pJson, jkSubplanUser, pNode->user);
11,844✔
3864
  }
3865
  if (TSDB_CODE_SUCCESS == code) {
11,842!
3866
    code = tjsonToObject(pJson, jkSubplanNodeAddr, jsonToQueryNodeAddr, &pNode->execNode);
11,842✔
3867
  }
3868
  if (TSDB_CODE_SUCCESS == code) {
11,844!
3869
    code = jsonToNodeObject(pJson, jkSubplanRootNode, (SNode**)&pNode->pNode);
11,844✔
3870
  }
3871
  if (TSDB_CODE_SUCCESS == code) {
11,847!
3872
    code = jsonToNodeObject(pJson, jkSubplanDataSink, (SNode**)&pNode->pDataSink);
11,847✔
3873
  }
3874
  if (TSDB_CODE_SUCCESS == code) {
11,845!
3875
    code = jsonToNodeObject(pJson, jkSubplanTagCond, (SNode**)&pNode->pTagCond);
11,845✔
3876
  }
3877
  if (TSDB_CODE_SUCCESS == code) {
11,846!
3878
    code = jsonToNodeObject(pJson, jkSubplanTagIndexCond, (SNode**)&pNode->pTagIndexCond);
11,846✔
3879
  }
3880
  if (TSDB_CODE_SUCCESS == code) {
11,845!
3881
    code = tjsonGetBoolValue(pJson, jkSubplanShowRewrite, &pNode->showRewrite);
11,845✔
3882
  }
3883
  if (TSDB_CODE_SUCCESS == code) {
11,847!
3884
    code = tjsonGetBoolValue(pJson, jkSubplanIsView, &pNode->isView);
11,847✔
3885
  }
3886
  if (TSDB_CODE_SUCCESS == code) {
11,847!
3887
    code = tjsonGetBoolValue(pJson, jkSubplanIsAudit, &pNode->isAudit);
11,847✔
3888
  }
3889
  if (TSDB_CODE_SUCCESS == code) {
11,847!
3890
    code = tjsonGetIntValue(pJson, jkSubplanRowsThreshold, &pNode->rowsThreshold);
11,847✔
3891
  }
3892
  if (TSDB_CODE_SUCCESS == code) {
11,847!
3893
    code = tjsonGetBoolValue(pJson, jkSubplanDynamicRowsThreshold, &pNode->dynamicRowThreshold);
11,847✔
3894
  }
3895

3896
  return code;
11,847✔
3897
}
3898

3899
static const char* jkPlanQueryId = "QueryId";
3900
static const char* jkPlanNumOfSubplans = "NumOfSubplans";
3901
static const char* jkPlanSubplans = "Subplans";
3902

3903
static int32_t planToJson(const void* pObj, SJson* pJson) {
2,037✔
3904
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
2,037✔
3905

3906
  int32_t code = tjsonAddIntegerToObject(pJson, jkPlanQueryId, pNode->queryId);
2,037✔
3907
  if (TSDB_CODE_SUCCESS == code) {
2,037!
3908
    code = tjsonAddIntegerToObject(pJson, jkPlanNumOfSubplans, pNode->numOfSubplans);
2,037✔
3909
  }
3910
  if (TSDB_CODE_SUCCESS == code) {
2,037!
3911
    code = nodeListToJson(pJson, jkPlanSubplans, pNode->pSubplans);
2,037✔
3912
  }
3913

3914
  return code;
2,037✔
3915
}
3916

3917
static int32_t jsonToPlan(const SJson* pJson, void* pObj) {
2,028✔
3918
  SQueryPlan* pNode = (SQueryPlan*)pObj;
2,028✔
3919

3920
  int32_t code = tjsonGetUBigIntValue(pJson, jkPlanQueryId, &pNode->queryId);
2,028✔
3921
  if (TSDB_CODE_SUCCESS == code) {
2,028!
3922
    code = tjsonGetIntValue(pJson, jkPlanNumOfSubplans, &pNode->numOfSubplans);
2,028✔
3923
  }
3924
  if (TSDB_CODE_SUCCESS == code) {
2,028!
3925
    code = jsonToNodeList(pJson, jkPlanSubplans, &pNode->pSubplans);
2,028✔
3926
  }
3927

3928
  return code;
2,028✔
3929
}
3930

3931
static const char* jkAggLogicPlanGroupKeys = "GroupKeys";
3932
static const char* jkAggLogicPlanAggFuncs = "AggFuncs";
3933

3934
static int32_t logicAggNodeToJson(const void* pObj, SJson* pJson) {
×
3935
  const SAggLogicNode* pNode = (const SAggLogicNode*)pObj;
×
3936

3937
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
3938
  if (TSDB_CODE_SUCCESS == code) {
×
3939
    code = nodeListToJson(pJson, jkAggLogicPlanGroupKeys, pNode->pGroupKeys);
×
3940
  }
3941
  if (TSDB_CODE_SUCCESS == code) {
×
3942
    code = nodeListToJson(pJson, jkAggLogicPlanAggFuncs, pNode->pAggFuncs);
×
3943
  }
3944

3945
  return code;
×
3946
}
3947

3948
static int32_t jsonToLogicAggNode(const SJson* pJson, void* pObj) {
×
3949
  SAggLogicNode* pNode = (SAggLogicNode*)pObj;
×
3950

3951
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
3952
  if (TSDB_CODE_SUCCESS == code) {
×
3953
    code = jsonToNodeList(pJson, jkAggLogicPlanGroupKeys, &pNode->pGroupKeys);
×
3954
  }
3955
  if (TSDB_CODE_SUCCESS == code) {
×
3956
    code = jsonToNodeList(pJson, jkAggLogicPlanAggFuncs, &pNode->pAggFuncs);
×
3957
  }
3958

3959
  return code;
×
3960
}
3961

3962
static const char* jkDataTypeType = "Type";
3963
static const char* jkDataTypePrecision = "Precision";
3964
static const char* jkDataTypeScale = "Scale";
3965
static const char* jkDataTypeDataBytes = "Bytes";
3966

3967
static int32_t dataTypeToJson(const void* pObj, SJson* pJson) {
2,003,915✔
3968
  const SDataType* pNode = (const SDataType*)pObj;
2,003,915✔
3969

3970
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataTypeType, pNode->type);
2,003,915✔
3971
  if (TSDB_CODE_SUCCESS == code) {
2,003,915!
3972
    code = tjsonAddIntegerToObject(pJson, jkDataTypePrecision, pNode->precision);
2,003,915✔
3973
  }
3974
  if (TSDB_CODE_SUCCESS == code) {
2,003,915!
3975
    code = tjsonAddIntegerToObject(pJson, jkDataTypeScale, pNode->scale);
2,003,915✔
3976
  }
3977
  if (TSDB_CODE_SUCCESS == code) {
2,003,915!
3978
    code = tjsonAddIntegerToObject(pJson, jkDataTypeDataBytes, pNode->bytes);
2,003,915✔
3979
  }
3980

3981
  return code;
2,003,915✔
3982
}
3983

3984
static int32_t jsonToDataType(const SJson* pJson, void* pObj) {
3,206,246✔
3985
  SDataType* pNode = (SDataType*)pObj;
3,206,246✔
3986

3987
  int32_t code = tjsonGetUTinyIntValue(pJson, jkDataTypeType, &pNode->type);
3,206,246✔
3988
  if (TSDB_CODE_SUCCESS == code) {
3,205,170!
3989
    code = tjsonGetUTinyIntValue(pJson, jkDataTypePrecision, &pNode->precision);
3,205,173✔
3990
  }
3991
  if (TSDB_CODE_SUCCESS == code) {
3,205,267✔
3992
    code = tjsonGetUTinyIntValue(pJson, jkDataTypeScale, &pNode->scale);
3,205,263✔
3993
  }
3994
  if (TSDB_CODE_SUCCESS == code) {
3,204,144✔
3995
    code = tjsonGetIntValue(pJson, jkDataTypeDataBytes, &pNode->bytes);
3,204,143✔
3996
  }
3997

3998
  return TSDB_CODE_SUCCESS;
3,203,964✔
3999
}
4000

4001
static const char* jkExprDataType = "DataType";
4002
static const char* jkExprAliasName = "AliasName";
4003
static const char* jkExprUserAlias = "UserAlias";
4004

4005
static int32_t exprNodeToJson(const void* pObj, SJson* pJson) {
1,297,605✔
4006
  const SExprNode* pNode = (const SExprNode*)pObj;
1,297,605✔
4007

4008
  int32_t code = tjsonAddObject(pJson, jkExprDataType, dataTypeToJson, &pNode->resType);
1,297,605✔
4009
  if (TSDB_CODE_SUCCESS == code) {
1,297,605!
4010
    code = tjsonAddStringToObject(pJson, jkExprAliasName, pNode->aliasName);
1,297,605✔
4011
  }
4012
  if (TSDB_CODE_SUCCESS == code) {
1,297,605!
4013
    code = tjsonAddStringToObject(pJson, jkExprUserAlias, pNode->userAlias);
1,297,605✔
4014
  }
4015

4016
  return code;
1,297,605✔
4017
}
4018

4019
static int32_t jsonToExprNode(const SJson* pJson, void* pObj) {
2,496,736✔
4020
  SExprNode* pNode = (SExprNode*)pObj;
2,496,736✔
4021

4022
  int32_t code = tjsonToObject(pJson, jkExprDataType, jsonToDataType, &pNode->resType);
2,496,736✔
4023
  if (TSDB_CODE_SUCCESS == code) {
2,496,010!
4024
    code = tjsonGetStringValue(pJson, jkExprAliasName, pNode->aliasName);
2,496,011✔
4025
  }
4026
  if (TSDB_CODE_SUCCESS == code) {
2,497,049!
4027
    code = tjsonGetStringValue(pJson, jkExprUserAlias, pNode->userAlias);
2,497,050✔
4028
  }
4029

4030
  return code;
2,497,050✔
4031
}
4032

4033
static const char* jkColumnTableId = "TableId";
4034
static const char* jkColumnTableType = "TableType";
4035
static const char* jkColumnColId = "ColId";
4036
static const char* jkColumnColType = "ColType";
4037
static const char* jkColumnProjId = "ProjId";
4038
static const char* jkColumnDbName = "DbName";
4039
static const char* jkColumnTableName = "TableName";
4040
static const char* jkColumnTableAlias = "TableAlias";
4041
static const char* jkColumnColName = "ColName";
4042
static const char* jkColumnDataBlockId = "DataBlockId";
4043
static const char* jkColumnSlotId = "SlotId";
4044
static const char* jkColumnTableHasPk = "TableHasPk";
4045
static const char* jkColumnIsPk = "IsPk";
4046
static const char* jkColumnNumOfPKs = "NumOfPKs";
4047

4048
static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
820,933✔
4049
  const SColumnNode* pNode = (const SColumnNode*)pObj;
820,933✔
4050

4051
  int32_t code = exprNodeToJson(pObj, pJson);
820,933✔
4052
  if (TSDB_CODE_SUCCESS == code) {
820,933!
4053
    code = tjsonAddIntegerToObject(pJson, jkColumnTableId, pNode->tableId);
820,933✔
4054
  }
4055
  if (TSDB_CODE_SUCCESS == code) {
820,933!
4056
    code = tjsonAddIntegerToObject(pJson, jkColumnTableType, pNode->tableType);
820,933✔
4057
  }
4058
  if (TSDB_CODE_SUCCESS == code) {
820,933!
4059
    code = tjsonAddIntegerToObject(pJson, jkColumnColId, pNode->colId);
820,933✔
4060
  }
4061
  if (TSDB_CODE_SUCCESS == code) {
820,933!
4062
    code = tjsonAddIntegerToObject(pJson, jkColumnProjId, pNode->projIdx);
820,933✔
4063
  }
4064
  if (TSDB_CODE_SUCCESS == code) {
820,933!
4065
    code = tjsonAddIntegerToObject(pJson, jkColumnColType, pNode->colType);
820,933✔
4066
  }
4067
  if (TSDB_CODE_SUCCESS == code) {
820,933!
4068
    code = tjsonAddStringToObject(pJson, jkColumnDbName, pNode->dbName);
820,933✔
4069
  }
4070
  if (TSDB_CODE_SUCCESS == code) {
820,933!
4071
    code = tjsonAddStringToObject(pJson, jkColumnTableName, pNode->tableName);
820,933✔
4072
  }
4073
  if (TSDB_CODE_SUCCESS == code) {
820,933!
4074
    code = tjsonAddStringToObject(pJson, jkColumnTableAlias, pNode->tableAlias);
820,933✔
4075
  }
4076
  if (TSDB_CODE_SUCCESS == code) {
820,933!
4077
    code = tjsonAddStringToObject(pJson, jkColumnColName, pNode->colName);
820,933✔
4078
  }
4079
  if (TSDB_CODE_SUCCESS == code) {
820,933!
4080
    code = tjsonAddIntegerToObject(pJson, jkColumnDataBlockId, pNode->dataBlockId);
820,933✔
4081
  }
4082
  if (TSDB_CODE_SUCCESS == code) {
820,933!
4083
    code = tjsonAddIntegerToObject(pJson, jkColumnSlotId, pNode->slotId);
820,933✔
4084
  }
4085
  if (TSDB_CODE_SUCCESS == code) {
820,933!
4086
    code = tjsonAddBoolToObject(pJson, jkColumnTableHasPk, pNode->tableHasPk);
820,933✔
4087
  }
4088
  if (TSDB_CODE_SUCCESS == code) {
820,933!
4089
    code = tjsonAddBoolToObject(pJson, jkColumnIsPk, pNode->isPk);
820,933✔
4090
  }  
4091
  if (TSDB_CODE_SUCCESS == code) {
820,933!
4092
    code = tjsonAddIntegerToObject(pJson, jkColumnNumOfPKs, pNode->numOfPKs);
820,933✔
4093
  }
4094
  return code;
820,933✔
4095
}
4096

4097
static int32_t jsonToColumnNode(const SJson* pJson, void* pObj) {
1,406,398✔
4098
  SColumnNode* pNode = (SColumnNode*)pObj;
1,406,398✔
4099

4100
  int32_t code = jsonToExprNode(pJson, pObj);
1,406,398✔
4101
  if (TSDB_CODE_SUCCESS == code) {
1,406,467!
4102
    code = tjsonGetUBigIntValue(pJson, jkColumnTableId, &pNode->tableId);
1,406,468✔
4103
  }
4104
  if (TSDB_CODE_SUCCESS == code) {
1,406,445✔
4105
    code = tjsonGetTinyIntValue(pJson, jkColumnTableType, &pNode->tableType);
1,406,439✔
4106
  }
4107
  if (TSDB_CODE_SUCCESS == code) {
1,406,487✔
4108
    code = tjsonGetSmallIntValue(pJson, jkColumnColId, &pNode->colId);
1,406,482✔
4109
  }
4110
  if (TSDB_CODE_SUCCESS == code) {
1,406,179✔
4111
    code = tjsonGetSmallIntValue(pJson, jkColumnProjId, &pNode->projIdx);
1,406,174✔
4112
  }
4113
  if (TSDB_CODE_SUCCESS == code) {
1,406,383✔
4114
    tjsonGetNumberValue(pJson, jkColumnColType, pNode->colType, code);
1,406,381✔
4115
  }
4116
  if (TSDB_CODE_SUCCESS == code) {
1,406,565✔
4117
    code = tjsonGetStringValue(pJson, jkColumnDbName, pNode->dbName);
1,406,561✔
4118
  }
4119
  if (TSDB_CODE_SUCCESS == code) {
1,406,493✔
4120
    code = tjsonGetStringValue(pJson, jkColumnTableName, pNode->tableName);
1,406,489✔
4121
  }
4122
  if (TSDB_CODE_SUCCESS == code) {
1,406,601✔
4123
    code = tjsonGetStringValue(pJson, jkColumnTableAlias, pNode->tableAlias);
1,406,597✔
4124
  }
4125
  if (TSDB_CODE_SUCCESS == code) {
1,406,630✔
4126
    code = tjsonGetStringValue(pJson, jkColumnColName, pNode->colName);
1,406,627✔
4127
  }
4128
  if (TSDB_CODE_SUCCESS == code) {
1,406,582✔
4129
    code = tjsonGetSmallIntValue(pJson, jkColumnDataBlockId, &pNode->dataBlockId);
1,406,578✔
4130
  }
4131
  if (TSDB_CODE_SUCCESS == code) {
1,406,561✔
4132
    code = tjsonGetSmallIntValue(pJson, jkColumnSlotId, &pNode->slotId);
1,406,558✔
4133
  }
4134
  if (TSDB_CODE_SUCCESS == code) {
1,406,478✔
4135
    code = tjsonGetBoolValue(pJson, jkColumnTableHasPk, &pNode->tableHasPk);
1,406,476✔
4136
  }
4137
  if (TSDB_CODE_SUCCESS == code) {
1,406,561✔
4138
    code = tjsonGetBoolValue(pJson, jkColumnIsPk, &pNode->isPk);
1,406,559✔
4139
  }    
4140
  if (TSDB_CODE_SUCCESS == code) {
1,406,297✔
4141
    code = tjsonGetSmallIntValue(pJson, jkColumnNumOfPKs, &pNode->numOfPKs);
1,406,289✔
4142
  }  
4143
  return code;
1,406,607✔
4144
}
4145

4146
static const char* jkValueLiteralSize = "LiteralSize";
4147
static const char* jkValueLiteral = "Literal";
4148
static const char* jkValueFlag = "Flag";
4149
static const char* jkValueTranslate = "Translate";
4150
static const char* jkValueNotReserved = "NotReserved";
4151
static const char* jkValueIsNull = "IsNull";
4152
static const char* jkValueUnit = "Unit";
4153
static const char* jkValueDatum = "Datum";
4154

4155
static int32_t datumToJson(const void* pObj, SJson* pJson) {
54,320✔
4156
  const SValueNode* pNode = (const SValueNode*)pObj;
54,320✔
4157

4158
  int32_t code = TSDB_CODE_SUCCESS;
54,320✔
4159
  switch (pNode->node.resType.type) {
54,320!
4160
    case TSDB_DATA_TYPE_NULL:
×
4161
      break;
×
4162
    case TSDB_DATA_TYPE_BOOL:
130✔
4163
      code = tjsonAddBoolToObject(pJson, jkValueDatum, pNode->datum.b);
130✔
4164
      break;
130✔
4165
    case TSDB_DATA_TYPE_TINYINT:
37,968✔
4166
    case TSDB_DATA_TYPE_SMALLINT:
4167
    case TSDB_DATA_TYPE_INT:
4168
    case TSDB_DATA_TYPE_BIGINT:
4169
    case TSDB_DATA_TYPE_TIMESTAMP:
4170
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.i);
37,968✔
4171
      break;
37,968✔
4172
    case TSDB_DATA_TYPE_UTINYINT:
178✔
4173
    case TSDB_DATA_TYPE_USMALLINT:
4174
    case TSDB_DATA_TYPE_UINT:
4175
    case TSDB_DATA_TYPE_UBIGINT:
4176
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.u);
178✔
4177
      break;
178✔
4178
    case TSDB_DATA_TYPE_FLOAT:
750✔
4179
    case TSDB_DATA_TYPE_DOUBLE:
4180
      code = tjsonAddDoubleToObject(pJson, jkValueDatum, pNode->datum.d);
750✔
4181
      break;
750✔
4182
    case TSDB_DATA_TYPE_NCHAR: {
×
4183
      // cJSON only support utf-8 encoding. Convert memory content to hex string.
4184
      int32_t bufSize = varDataLen(pNode->datum.p) * 2 + 1;
×
4185
      char* buf = taosMemoryCalloc(bufSize, sizeof(char));
×
4186
      if (!buf) return terrno;
×
4187
      code = taosHexEncode(varDataVal(pNode->datum.p), buf, varDataLen(pNode->datum.p), bufSize);
×
4188
      if (code != TSDB_CODE_SUCCESS) {
×
4189
        taosMemoryFree(buf);
×
4190
        return TSDB_CODE_TSC_INVALID_VALUE;
×
4191
      }
4192
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
×
4193
      taosMemoryFree(buf);
×
4194
      break;
×
4195
    }
4196
    case TSDB_DATA_TYPE_VARCHAR:
15,294✔
4197
    case TSDB_DATA_TYPE_VARBINARY:
4198
    case TSDB_DATA_TYPE_GEOMETRY:
4199
      code = tjsonAddStringToObject(pJson, jkValueDatum, varDataVal(pNode->datum.p));
15,294✔
4200
      break;
15,294✔
4201
    case TSDB_DATA_TYPE_JSON: {
×
4202
      int32_t len = getJsonValueLen(pNode->datum.p);
×
4203
      int32_t bufSize = len * 2 + 1;
×
4204
      char*   buf = taosMemoryCalloc(bufSize, sizeof(char));
×
4205
      if (!buf) return terrno;
×
4206
      code = taosHexEncode(pNode->datum.p, buf, len, bufSize);
×
4207
      if (code != TSDB_CODE_SUCCESS) {
×
4208
        taosMemoryFree(buf);
×
4209
        return TSDB_CODE_TSC_INVALID_VALUE;
×
4210
      }
4211
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
×
4212
      taosMemoryFree(buf);
×
4213
      break;
×
4214
    }
4215
    case TSDB_DATA_TYPE_DECIMAL:
×
4216
    case TSDB_DATA_TYPE_BLOB:
4217
      // todo
4218
    default:
4219
      break;
×
4220
  }
4221

4222
  return code;
54,320✔
4223
}
4224

4225
static int32_t valueNodeToJson(const void* pObj, SJson* pJson) {
60,657✔
4226
  const SValueNode* pNode = (const SValueNode*)pObj;
60,657✔
4227

4228
  int32_t code = exprNodeToJson(pObj, pJson);
60,657✔
4229
  if (TSDB_CODE_SUCCESS == code) {
60,657!
4230
    code = tjsonAddIntegerToObject(pJson, jkValueLiteralSize, NULL != pNode->literal ? strlen(pNode->literal) : 0);
60,657✔
4231
  }
4232
  if (TSDB_CODE_SUCCESS == code && NULL != pNode->literal) {
60,657!
4233
    code = tjsonAddStringToObject(pJson, jkValueLiteral, pNode->literal);
40,404✔
4234
  }
4235
  if (TSDB_CODE_SUCCESS == code) {
60,657!
4236
    code = tjsonAddBoolToObject(pJson, jkValueFlag, pNode->flag);
60,657✔
4237
  }
4238
  if (TSDB_CODE_SUCCESS == code) {
60,657!
4239
    code = tjsonAddBoolToObject(pJson, jkValueTranslate, pNode->translate);
60,657✔
4240
  }
4241
  if (TSDB_CODE_SUCCESS == code) {
60,657!
4242
    code = tjsonAddBoolToObject(pJson, jkValueNotReserved, pNode->notReserved);
60,657✔
4243
  }
4244
  if (TSDB_CODE_SUCCESS == code) {
60,657!
4245
    code = tjsonAddBoolToObject(pJson, jkValueIsNull, pNode->isNull);
60,657✔
4246
  }
4247
  if (TSDB_CODE_SUCCESS == code) {
60,657!
4248
    code = tjsonAddIntegerToObject(pJson, jkValueUnit, pNode->unit);
60,657✔
4249
  }
4250
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
60,657!
4251
    code = datumToJson(pNode, pJson);
54,320✔
4252
  }
4253

4254
  return code;
60,657✔
4255
}
4256

4257
static int32_t jsonToDatum(const SJson* pJson, void* pObj) {
86,535✔
4258
  SValueNode* pNode = (SValueNode*)pObj;
86,535✔
4259

4260
  int32_t code = TSDB_CODE_SUCCESS;
86,535✔
4261
  switch (pNode->node.resType.type) {
86,535!
4262
    case TSDB_DATA_TYPE_NULL:
×
4263
      break;
×
4264
    case TSDB_DATA_TYPE_BOOL:
185✔
4265
      code = tjsonGetBoolValue(pJson, jkValueDatum, &pNode->datum.b);
185✔
4266
      *(bool*)&pNode->typeData = pNode->datum.b;
185✔
4267
      break;
185✔
4268
    case TSDB_DATA_TYPE_TINYINT:
16,307✔
4269
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
16,307✔
4270
      *(int8_t*)&pNode->typeData = pNode->datum.i;
16,308✔
4271
      break;
16,308✔
4272
    case TSDB_DATA_TYPE_SMALLINT:
210✔
4273
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
210✔
4274
      *(int16_t*)&pNode->typeData = pNode->datum.i;
210✔
4275
      break;
210✔
4276
    case TSDB_DATA_TYPE_INT:
27✔
4277
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
27✔
4278
      *(int32_t*)&pNode->typeData = pNode->datum.i;
27✔
4279
      break;
27✔
4280
    case TSDB_DATA_TYPE_BIGINT:
44,819✔
4281
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
44,819✔
4282
      *(int64_t*)&pNode->typeData = pNode->datum.i;
44,819✔
4283
      break;
44,819✔
4284
    case TSDB_DATA_TYPE_TIMESTAMP:
×
4285
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
×
4286
      *(int64_t*)&pNode->typeData = pNode->datum.i;
×
4287
      break;
×
4288
    case TSDB_DATA_TYPE_UTINYINT:
198✔
4289
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
198✔
4290
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
198✔
4291
      break;
198✔
4292
    case TSDB_DATA_TYPE_USMALLINT:
×
4293
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
4294
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
×
4295
      break;
×
4296
    case TSDB_DATA_TYPE_UINT:
×
4297
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
4298
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
×
4299
      break;
×
4300
    case TSDB_DATA_TYPE_UBIGINT:
×
4301
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
4302
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
×
4303
      break;
×
4304
    case TSDB_DATA_TYPE_FLOAT:
×
4305
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
×
4306
      *(float*)&pNode->typeData = pNode->datum.d;
×
4307
      break;
×
4308
    case TSDB_DATA_TYPE_DOUBLE:
830✔
4309
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
830✔
4310
      *(double*)&pNode->typeData = pNode->datum.d;
830✔
4311
      break;
830✔
4312
    case TSDB_DATA_TYPE_NCHAR:
23,959✔
4313
    case TSDB_DATA_TYPE_VARCHAR:
4314
    case TSDB_DATA_TYPE_VARBINARY:
4315
    case TSDB_DATA_TYPE_GEOMETRY: {
4316
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
23,959✔
4317
      if (NULL == pNode->datum.p) {
23,959!
4318
        code = terrno;
×
4319
        break;
×
4320
      }
4321
      varDataSetLen(pNode->datum.p, pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
23,960✔
4322
      if (TSDB_DATA_TYPE_NCHAR == pNode->node.resType.type) {
23,960!
4323
        char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + VARSTR_HEADER_SIZE + 1);
×
4324
        if (NULL == buf) {
×
4325
          code = terrno;
×
4326
          break;
×
4327
        }
4328
        code = tjsonGetStringValue(pJson, jkValueDatum, buf);
×
4329
        if (code != TSDB_CODE_SUCCESS) {
×
4330
          taosMemoryFree(buf);
×
4331
          break;
×
4332
        }
4333
        code = taosHexDecode(buf, varDataVal(pNode->datum.p), pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
×
4334
        if (code != TSDB_CODE_SUCCESS) {
×
4335
          taosMemoryFree(buf);
×
4336
          break;
×
4337
        }
4338
        taosMemoryFree(buf);
×
4339
      } else {
4340
        code = tjsonGetStringValue(pJson, jkValueDatum, varDataVal(pNode->datum.p));
23,960✔
4341
      }
4342
      break;
23,959✔
4343
    }
4344
    case TSDB_DATA_TYPE_JSON: {
×
4345
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes);
×
4346
      if (NULL == pNode->datum.p) {
×
4347
        code = terrno;
×
4348
        break;
×
4349
      }
4350
      char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + 1);
×
4351
      if (NULL == buf) {
×
4352
        code = terrno;
×
4353
        break;
×
4354
      }
4355
      code = tjsonGetStringValue(pJson, jkValueDatum, buf);
×
4356
      if (code != TSDB_CODE_SUCCESS) {
×
4357
        taosMemoryFree(buf);
×
4358
        break;
×
4359
      }
4360
      code = taosHexDecode(buf, pNode->datum.p, pNode->node.resType.bytes);
×
4361
      if (code != TSDB_CODE_SUCCESS) {
×
4362
        taosMemoryFree(buf);
×
4363
        break;
×
4364
      }
4365
      taosMemoryFree(buf);
×
4366
      break;
×
4367
    }
4368
    case TSDB_DATA_TYPE_DECIMAL:
×
4369
    case TSDB_DATA_TYPE_BLOB:
4370
      // todo
4371
    default:
4372
      break;
×
4373
  }
4374

4375
  return code;
86,536✔
4376
}
4377

4378
static int32_t jsonToValueNode(const SJson* pJson, void* pObj) {
93,423✔
4379
  SValueNode* pNode = (SValueNode*)pObj;
93,423✔
4380

4381
  int32_t code = jsonToExprNode(pJson, pObj);
93,423✔
4382
  int32_t literalSize = 0;
93,423✔
4383
  if (TSDB_CODE_SUCCESS == code) {
93,423!
4384
    code = tjsonGetIntValue(pJson, jkValueLiteralSize, &literalSize);
93,423✔
4385
  }
4386
  if (TSDB_CODE_SUCCESS == code && literalSize > 0) {
93,421!
4387
    code = tjsonDupStringValue(pJson, jkValueLiteral, &pNode->literal);
68,964✔
4388
  }
4389
  if (TSDB_CODE_SUCCESS == code) {
93,422✔
4390
    code = tjsonGetIntValue(pJson, jkValueFlag, &pNode->flag);
93,421✔
4391
  }
4392
  if (TSDB_CODE_SUCCESS == code) {
93,416✔
4393
    code = tjsonGetBoolValue(pJson, jkValueTranslate, &pNode->translate);
93,415✔
4394
  }
4395
  if (TSDB_CODE_SUCCESS == code) {
93,427✔
4396
    code = tjsonGetBoolValue(pJson, jkValueNotReserved, &pNode->notReserved);
93,425✔
4397
  }
4398
  if (TSDB_CODE_SUCCESS == code) {
93,427✔
4399
    code = tjsonGetBoolValue(pJson, jkValueIsNull, &pNode->isNull);
93,425✔
4400
  }
4401
  if (TSDB_CODE_SUCCESS == code) {
93,422✔
4402
    code = tjsonGetTinyIntValue(pJson, jkValueUnit, &pNode->unit);
93,420✔
4403
  }
4404
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
93,426!
4405
    code = jsonToDatum(pJson, pNode);
86,535✔
4406
  }
4407

4408
  return code;
93,419✔
4409
}
4410

4411
static const char* jkOperatorType = "OpType";
4412
static const char* jkOperatorLeft = "Left";
4413
static const char* jkOperatorRight = "Right";
4414

4415
static int32_t operatorNodeToJson(const void* pObj, SJson* pJson) {
6,587✔
4416
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
6,587✔
4417

4418
  int32_t code = exprNodeToJson(pObj, pJson);
6,587✔
4419
  if (TSDB_CODE_SUCCESS == code) {
6,587!
4420
    code = tjsonAddIntegerToObject(pJson, jkOperatorType, pNode->opType);
6,587✔
4421
  }
4422
  if (TSDB_CODE_SUCCESS == code) {
6,587!
4423
    code = tjsonAddObject(pJson, jkOperatorLeft, nodeToJson, pNode->pLeft);
6,587✔
4424
  }
4425
  if (TSDB_CODE_SUCCESS == code) {
6,587!
4426
    code = tjsonAddObject(pJson, jkOperatorRight, nodeToJson, pNode->pRight);
6,587✔
4427
  }
4428

4429
  return code;
6,587✔
4430
}
4431

4432
static int32_t jsonToOperatorNode(const SJson* pJson, void* pObj) {
16,598✔
4433
  SOperatorNode* pNode = (SOperatorNode*)pObj;
16,598✔
4434

4435
  int32_t code = jsonToExprNode(pJson, pObj);
16,598✔
4436
  if (TSDB_CODE_SUCCESS == code) {
16,600!
4437
    tjsonGetNumberValue(pJson, jkOperatorType, pNode->opType, code);
16,600✔
4438
  }
4439
  if (TSDB_CODE_SUCCESS == code) {
16,599!
4440
    code = jsonToNodeObject(pJson, jkOperatorLeft, &pNode->pLeft);
16,599✔
4441
  }
4442
  if (TSDB_CODE_SUCCESS == code) {
16,599!
4443
    code = jsonToNodeObject(pJson, jkOperatorRight, &pNode->pRight);
16,599✔
4444
  }
4445

4446
  return code;
16,599✔
4447
}
4448

4449
static const char* jkLogicCondType = "CondType";
4450
static const char* jkLogicCondParameters = "Parameters";
4451

4452
static int32_t logicConditionNodeToJson(const void* pObj, SJson* pJson) {
1,944✔
4453
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
1,944✔
4454

4455
  int32_t code = exprNodeToJson(pObj, pJson);
1,944✔
4456
  if (TSDB_CODE_SUCCESS == code) {
1,944!
4457
    code = tjsonAddIntegerToObject(pJson, jkLogicCondType, pNode->condType);
1,944✔
4458
  }
4459
  if (TSDB_CODE_SUCCESS == code) {
1,944!
4460
    code = nodeListToJson(pJson, jkLogicCondParameters, pNode->pParameterList);
1,944✔
4461
  }
4462

4463
  return code;
1,944✔
4464
}
4465

4466
static int32_t jsonToLogicConditionNode(const SJson* pJson, void* pObj) {
6,574✔
4467
  SLogicConditionNode* pNode = (SLogicConditionNode*)pObj;
6,574✔
4468

4469
  int32_t code = jsonToExprNode(pJson, pObj);
6,574✔
4470
  if (TSDB_CODE_SUCCESS == code) {
6,574!
4471
    tjsonGetNumberValue(pJson, jkLogicCondType, pNode->condType, code);
6,574✔
4472
  }
4473
  if (TSDB_CODE_SUCCESS == code) {
6,574!
4474
    code = jsonToNodeList(pJson, jkLogicCondParameters, &pNode->pParameterList);
6,574✔
4475
  }
4476

4477
  return code;
6,574✔
4478
}
4479

4480
static const char* jkFunctionName = "Name";
4481
static const char* jkFunctionId = "Id";
4482
static const char* jkFunctionType = "Type";
4483
static const char* jkFunctionParameter = "Parameters";
4484
static const char* jkFunctionUdfBufSize = "UdfBufSize";
4485
static const char* jkFunctionHasPk = "HasPk";
4486
static const char* jkFunctionPkBytes = "PkBytes";
4487
static const char* jkFunctionIsMergeFunc = "IsMergeFunc";
4488
static const char* jkFunctionMergeFuncOf = "MergeFuncOf";
4489
static const char* jkFunctionTrimType = "TrimType";
4490

4491
static int32_t functionNodeToJson(const void* pObj, SJson* pJson) {
405,841✔
4492
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
405,841✔
4493

4494
  int32_t code = exprNodeToJson(pObj, pJson);
405,841✔
4495
  if (TSDB_CODE_SUCCESS == code) {
405,841!
4496
    code = tjsonAddStringToObject(pJson, jkFunctionName, pNode->functionName);
405,841✔
4497
  }
4498
  if (TSDB_CODE_SUCCESS == code) {
405,841!
4499
    code = tjsonAddIntegerToObject(pJson, jkFunctionId, pNode->funcId);
405,841✔
4500
  }
4501
  if (TSDB_CODE_SUCCESS == code) {
405,841!
4502
    code = tjsonAddIntegerToObject(pJson, jkFunctionType, pNode->funcType);
405,841✔
4503
  }
4504
  if (TSDB_CODE_SUCCESS == code) {
405,841!
4505
    code = nodeListToJson(pJson, jkFunctionParameter, pNode->pParameterList);
405,841✔
4506
  }
4507
  if (TSDB_CODE_SUCCESS == code) {
405,841!
4508
    code = tjsonAddIntegerToObject(pJson, jkFunctionUdfBufSize, pNode->udfBufSize);
405,841✔
4509
  }
4510
  if (TSDB_CODE_SUCCESS == code) {
405,841!
4511
    code = tjsonAddBoolToObject(pJson, jkFunctionHasPk, pNode->hasPk);
405,841✔
4512
  }
4513
  if (TSDB_CODE_SUCCESS == code) {
405,841!
4514
    code = tjsonAddIntegerToObject(pJson, jkFunctionPkBytes, pNode->pkBytes);
405,841✔
4515
  }
4516
  if (TSDB_CODE_SUCCESS == code) {
405,841!
4517
    code = tjsonAddBoolToObject(pJson, jkFunctionIsMergeFunc, pNode->hasOriginalFunc);
405,841✔
4518
  }
4519
  if (TSDB_CODE_SUCCESS == code) {
405,841!
4520
    code = tjsonAddIntegerToObject(pJson, jkFunctionMergeFuncOf, pNode->originalFuncId);
405,841✔
4521
  }
4522
  if (TSDB_CODE_SUCCESS == code) {
405,841!
4523
    code = tjsonAddIntegerToObject(pJson, jkFunctionTrimType, pNode->trimType);
405,841✔
4524
  }
4525
  return code;
405,841✔
4526
}
4527

4528
static int32_t jsonToFunctionNode(const SJson* pJson, void* pObj) {
962,936✔
4529
  SFunctionNode* pNode = (SFunctionNode*)pObj;
962,936✔
4530

4531
  int32_t code = jsonToExprNode(pJson, pObj);
962,936✔
4532
  if (TSDB_CODE_SUCCESS == code) {
962,855!
4533
    code = tjsonGetStringValue(pJson, jkFunctionName, pNode->functionName);
962,855✔
4534
  }
4535
  if (TSDB_CODE_SUCCESS == code) {
962,627✔
4536
    code = tjsonGetIntValue(pJson, jkFunctionId, &pNode->funcId);
962,625✔
4537
  }
4538
  if (TSDB_CODE_SUCCESS == code) {
962,456✔
4539
    code = tjsonGetIntValue(pJson, jkFunctionType, &pNode->funcType);
962,454✔
4540
  }
4541
  if (TSDB_CODE_SUCCESS == code) {
962,603✔
4542
    code = jsonToNodeList(pJson, jkFunctionParameter, &pNode->pParameterList);
962,601✔
4543
  }
4544
  if (TSDB_CODE_SUCCESS == code) {
962,997✔
4545
    code = tjsonGetIntValue(pJson, jkFunctionUdfBufSize, &pNode->udfBufSize);
962,995✔
4546
  }
4547
  if (TSDB_CODE_SUCCESS == code) {
962,969✔
4548
    code = tjsonGetBoolValue(pJson, jkFunctionHasPk, &pNode->hasPk);
962,966✔
4549
  }
4550
  if (TSDB_CODE_SUCCESS == code) {
962,891✔
4551
    code = tjsonGetIntValue(pJson, jkFunctionPkBytes, &pNode->pkBytes);
962,888✔
4552
  }  
4553
  if (TSDB_CODE_SUCCESS == code) {
962,958✔
4554
    code = tjsonGetBoolValue(pJson, jkFunctionIsMergeFunc, &pNode->hasOriginalFunc);
962,955✔
4555
  }
4556
  if (TSDB_CODE_SUCCESS == code) {
962,971✔
4557
    code = tjsonGetIntValue(pJson, jkFunctionMergeFuncOf, &pNode->originalFuncId);
962,968✔
4558
  }
4559
  if (TSDB_CODE_SUCCESS == code) {
962,933✔
4560
    tjsonGetNumberValue(pJson, jkFunctionTrimType, pNode->trimType, code);
962,932✔
4561
  }
4562

4563
  return code;
962,973✔
4564
}
4565

4566
static const char* jkTableDbName = "DbName";
4567
static const char* jkTableTableName = "tableName";
4568
static const char* jkTableTableAlias = "tableAlias";
4569

4570
static int32_t tableNodeToJson(const void* pObj, SJson* pJson) {
1,473✔
4571
  const STableNode* pNode = (const STableNode*)pObj;
1,473✔
4572

4573
  int32_t code = exprNodeToJson(pObj, pJson);
1,473✔
4574
  if (TSDB_CODE_SUCCESS == code) {
1,473!
4575
    code = tjsonAddStringToObject(pJson, jkTableDbName, pNode->dbName);
1,473✔
4576
  }
4577
  if (TSDB_CODE_SUCCESS == code) {
1,473!
4578
    code = tjsonAddStringToObject(pJson, jkTableTableName, pNode->tableName);
1,473✔
4579
  }
4580
  if (TSDB_CODE_SUCCESS == code) {
1,473!
4581
    code = tjsonAddStringToObject(pJson, jkTableTableAlias, pNode->tableAlias);
1,473✔
4582
  }
4583

4584
  return code;
1,473✔
4585
}
4586

4587
static int32_t jsonToTableNode(const SJson* pJson, void* pObj) {
11,316✔
4588
  STableNode* pNode = (STableNode*)pObj;
11,316✔
4589

4590
  int32_t code = jsonToExprNode(pJson, pObj);
11,316✔
4591
  if (TSDB_CODE_SUCCESS == code) {
11,316!
4592
    code = tjsonGetStringValue(pJson, jkTableDbName, pNode->dbName);
11,316✔
4593
  }
4594
  if (TSDB_CODE_SUCCESS == code) {
11,316!
4595
    code = tjsonGetStringValue(pJson, jkTableTableName, pNode->tableName);
11,316✔
4596
  }
4597
  if (TSDB_CODE_SUCCESS == code) {
11,316!
4598
    code = tjsonGetStringValue(pJson, jkTableTableAlias, pNode->tableAlias);
11,316✔
4599
  }
4600

4601
  return code;
11,316✔
4602
}
4603

4604
static const char* jkTableIndexInfoIntervalUnit = "IntervalUnit";
4605
static const char* jkTableIndexInfoSlidingUnit = "SlidingUnit";
4606
static const char* jkTableIndexInfoInterval = "Interval";
4607
static const char* jkTableIndexInfoOffset = "Offset";
4608
static const char* jkTableIndexInfoSliding = "Sliding";
4609
static const char* jkTableIndexInfoDstTbUid = "DstTbUid";
4610
static const char* jkTableIndexInfoDstVgId = "DstVgId";
4611
static const char* jkTableIndexInfoEpSet = "EpSet";
4612
static const char* jkTableIndexInfoExpr = "Expr";
4613

4614
static int32_t tableIndexInfoToJson(const void* pObj, SJson* pJson) {
×
4615
  const STableIndexInfo* pNode = (const STableIndexInfo*)pObj;
×
4616

4617
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoIntervalUnit, pNode->intervalUnit);
×
4618
  if (TSDB_CODE_SUCCESS == code) {
×
4619
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoSlidingUnit, pNode->slidingUnit);
×
4620
  }
4621
  if (TSDB_CODE_SUCCESS == code) {
×
4622
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoInterval, pNode->interval);
×
4623
  }
4624
  if (TSDB_CODE_SUCCESS == code) {
×
4625
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoOffset, pNode->offset);
×
4626
  }
4627
  if (TSDB_CODE_SUCCESS == code) {
×
4628
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoSliding, pNode->sliding);
×
4629
  }
4630
  if (TSDB_CODE_SUCCESS == code) {
×
4631
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoDstTbUid, pNode->dstTbUid);
×
4632
  }
4633
  if (TSDB_CODE_SUCCESS == code) {
×
4634
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoDstVgId, pNode->dstVgId);
×
4635
  }
4636
  if (TSDB_CODE_SUCCESS == code) {
×
4637
    code = tjsonAddObject(pJson, jkTableIndexInfoEpSet, epSetToJson, &pNode->epSet);
×
4638
  }
4639
  if (TSDB_CODE_SUCCESS == code) {
×
4640
    code = tjsonAddStringToObject(pJson, jkTableIndexInfoExpr, pNode->expr);
×
4641
  }
4642

4643
  return code;
×
4644
}
4645

4646
static int32_t jsonToTableIndexInfo(const SJson* pJson, void* pObj) {
×
4647
  STableIndexInfo* pNode = (STableIndexInfo*)pObj;
×
4648

4649
  int32_t code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoIntervalUnit, &pNode->intervalUnit);
×
4650
  if (TSDB_CODE_SUCCESS == code) {
×
4651
    code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoSlidingUnit, &pNode->slidingUnit);
×
4652
  }
4653
  if (TSDB_CODE_SUCCESS == code) {
×
4654
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoInterval, &pNode->interval);
×
4655
  }
4656
  if (TSDB_CODE_SUCCESS == code) {
×
4657
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoOffset, &pNode->offset);
×
4658
  }
4659
  if (TSDB_CODE_SUCCESS == code) {
×
4660
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoSliding, &pNode->sliding);
×
4661
  }
4662
  if (TSDB_CODE_SUCCESS == code) {
×
4663
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoDstTbUid, &pNode->dstTbUid);
×
4664
  }
4665
  if (TSDB_CODE_SUCCESS == code) {
×
4666
    code = tjsonGetIntValue(pJson, jkTableIndexInfoDstVgId, &pNode->dstVgId);
×
4667
  }
4668
  if (TSDB_CODE_SUCCESS == code) {
×
4669
    code = tjsonToObject(pJson, jkTableIndexInfoEpSet, jsonToEpSet, &pNode->epSet);
×
4670
  }
4671
  if (TSDB_CODE_SUCCESS == code) {
×
4672
    code = tjsonDupStringValue(pJson, jkTableIndexInfoExpr, &pNode->expr);
×
4673
  }
4674

4675
  return code;
×
4676
}
4677

4678
static const char* jkRealTableMetaSize = "MetaSize";
4679
static const char* jkRealTableMeta = "Meta";
4680
static const char* jkRealTableVgroupsInfoSize = "VgroupsInfoSize";
4681
static const char* jkRealTableVgroupsInfo = "VgroupsInfo";
4682
static const char* jkRealTableSmaIndexes = "SmaIndexes";
4683

4684
static int32_t realTableNodeToJson(const void* pObj, SJson* pJson) {
1,472✔
4685
  const SRealTableNode* pNode = (const SRealTableNode*)pObj;
1,472✔
4686

4687
  int32_t code = tableNodeToJson(pObj, pJson);
1,472✔
4688
  if (TSDB_CODE_SUCCESS == code) {
1,472!
4689
    code = tjsonAddIntegerToObject(pJson, jkRealTableMetaSize, TABLE_META_SIZE(pNode->pMeta));
1,472!
4690
  }
4691
  if (TSDB_CODE_SUCCESS == code) {
1,472!
4692
    code = tjsonAddObject(pJson, jkRealTableMeta, tableMetaToJson, pNode->pMeta);
1,472✔
4693
  }
4694
  if (TSDB_CODE_SUCCESS == code) {
1,472!
4695
    code = tjsonAddIntegerToObject(pJson, jkRealTableVgroupsInfoSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
1,472✔
4696
  }
4697
  if (TSDB_CODE_SUCCESS == code) {
1,472!
4698
    code = tjsonAddObject(pJson, jkRealTableVgroupsInfo, vgroupsInfoToJson, pNode->pVgroupList);
1,472✔
4699
  }
4700
  if (TSDB_CODE_SUCCESS == code) {
1,472!
4701
    code = tjsonAddTArray(pJson, jkRealTableSmaIndexes, tableIndexInfoToJson, pNode->pSmaIndexes);
1,472✔
4702
  }
4703

4704
  return code;
1,472✔
4705
}
4706

4707
static int32_t jsonToRealTableNode(const SJson* pJson, void* pObj) {
11,315✔
4708
  SRealTableNode* pNode = (SRealTableNode*)pObj;
11,315✔
4709

4710
  int32_t objSize = 0;
11,315✔
4711
  int32_t code = jsonToTableNode(pJson, pObj);
11,315✔
4712
  if (TSDB_CODE_SUCCESS == code) {
11,315!
4713
    code = tjsonGetIntValue(pJson, jkRealTableMetaSize, &objSize);
11,315✔
4714
  }
4715
  if (TSDB_CODE_SUCCESS == code) {
11,315!
4716
    code = tjsonMakeObject(pJson, jkRealTableMeta, jsonToTableMeta, (void**)&pNode->pMeta, objSize);
11,315✔
4717
  }
4718
  if (TSDB_CODE_SUCCESS == code) {
11,315!
4719
    code = tjsonGetIntValue(pJson, jkRealTableVgroupsInfoSize, &objSize);
11,315✔
4720
  }
4721
  if (TSDB_CODE_SUCCESS == code) {
11,315!
4722
    code = tjsonMakeObject(pJson, jkRealTableVgroupsInfo, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
11,315✔
4723
  }
4724
  if (TSDB_CODE_SUCCESS == code) {
11,315!
4725
    code =
4726
        tjsonToTArray(pJson, jkRealTableSmaIndexes, jsonToTableIndexInfo, &pNode->pSmaIndexes, sizeof(STableIndexInfo));
11,315✔
4727
  }
4728

4729
  return code;
11,315✔
4730
}
4731

4732
static const char* jkTempTableSubquery = "Subquery";
4733

4734
static int32_t tempTableNodeToJson(const void* pObj, SJson* pJson) {
1✔
4735
  const STempTableNode* pNode = (const STempTableNode*)pObj;
1✔
4736

4737
  int32_t code = tableNodeToJson(pObj, pJson);
1✔
4738
  if (TSDB_CODE_SUCCESS == code) {
1!
4739
    code = tjsonAddObject(pJson, jkTempTableSubquery, nodeToJson, pNode->pSubquery);
1✔
4740
  }
4741

4742
  return code;
1✔
4743
}
4744

4745
static int32_t jsonToTempTableNode(const SJson* pJson, void* pObj) {
1✔
4746
  STempTableNode* pNode = (STempTableNode*)pObj;
1✔
4747

4748
  int32_t code = jsonToTableNode(pJson, pObj);
1✔
4749
  if (TSDB_CODE_SUCCESS == code) {
1!
4750
    code = jsonToNodeObject(pJson, jkTempTableSubquery, &pNode->pSubquery);
1✔
4751
  }
4752

4753
  return code;
1✔
4754
}
4755

4756
static const char* jkJoinTableJoinType = "JoinType";
4757
static const char* jkJoinTableSubType = "SubType";
4758
static const char* jkJoinTableLeft = "Left";
4759
static const char* jkJoinTableRight = "Right";
4760
static const char* jkJoinTableOnCond = "OnCond";
4761

4762
static int32_t joinTableNodeToJson(const void* pObj, SJson* pJson) {
×
4763
  const SJoinTableNode* pNode = (const SJoinTableNode*)pObj;
×
4764

4765
  int32_t code = tableNodeToJson(pObj, pJson);
×
4766
  if (TSDB_CODE_SUCCESS == code) {
×
4767
    code = tjsonAddIntegerToObject(pJson, jkJoinTableJoinType, pNode->joinType);
×
4768
  }
4769
  if (TSDB_CODE_SUCCESS == code) {
×
4770
    code = tjsonAddIntegerToObject(pJson, jkJoinTableSubType, pNode->subType);
×
4771
  }
4772
  if (TSDB_CODE_SUCCESS == code) {
×
4773
    code = tjsonAddObject(pJson, jkJoinTableLeft, nodeToJson, pNode->pLeft);
×
4774
  }
4775
  if (TSDB_CODE_SUCCESS == code) {
×
4776
    code = tjsonAddObject(pJson, jkJoinTableRight, nodeToJson, pNode->pRight);
×
4777
  }
4778
  if (TSDB_CODE_SUCCESS == code) {
×
4779
    code = tjsonAddObject(pJson, jkJoinTableOnCond, nodeToJson, pNode->pOnCond);
×
4780
  }
4781

4782
  return code;
×
4783
}
4784

4785
static int32_t jsonToJoinTableNode(const SJson* pJson, void* pObj) {
×
4786
  SJoinTableNode* pNode = (SJoinTableNode*)pObj;
×
4787

4788
  int32_t code = jsonToTableNode(pJson, pObj);
×
4789
  if (TSDB_CODE_SUCCESS == code) {
×
4790
    tjsonGetNumberValue(pJson, jkJoinTableJoinType, pNode->joinType, code);
×
4791
  }
4792
  if (TSDB_CODE_SUCCESS == code) {
×
4793
    tjsonGetNumberValue(pJson, jkJoinTableSubType, pNode->subType, code);
×
4794
  }
4795
  if (TSDB_CODE_SUCCESS == code) {
×
4796
    code = jsonToNodeObject(pJson, jkJoinTableLeft, &pNode->pLeft);
×
4797
  }
4798
  if (TSDB_CODE_SUCCESS == code) {
×
4799
    code = jsonToNodeObject(pJson, jkJoinTableRight, &pNode->pRight);
×
4800
  }
4801
  if (TSDB_CODE_SUCCESS == code) {
×
4802
    code = jsonToNodeObject(pJson, jkJoinTableOnCond, &pNode->pOnCond);
×
4803
  }
4804

4805
  return code;
×
4806
}
4807

4808
static const char* jkGroupingSetType = "GroupingSetType";
4809
static const char* jkGroupingSetParameter = "Parameters";
4810

4811
static int32_t groupingSetNodeToJson(const void* pObj, SJson* pJson) {
×
4812
  const SGroupingSetNode* pNode = (const SGroupingSetNode*)pObj;
×
4813

4814
  int32_t code = tjsonAddIntegerToObject(pJson, jkGroupingSetType, pNode->groupingSetType);
×
4815
  if (TSDB_CODE_SUCCESS == code) {
×
4816
    code = nodeListToJson(pJson, jkGroupingSetParameter, pNode->pParameterList);
×
4817
  }
4818

4819
  return code;
×
4820
}
4821

4822
static int32_t jsonToGroupingSetNode(const SJson* pJson, void* pObj) {
×
4823
  SGroupingSetNode* pNode = (SGroupingSetNode*)pObj;
×
4824

4825
  int32_t code = TSDB_CODE_SUCCESS;
×
4826
  tjsonGetNumberValue(pJson, jkGroupingSetType, pNode->groupingSetType, code);
×
4827
  if (TSDB_CODE_SUCCESS == code) {
×
4828
    code = jsonToNodeList(pJson, jkGroupingSetParameter, &pNode->pParameterList);
×
4829
  }
4830

4831
  return code;
×
4832
}
4833

4834
static const char* jkOrderByExprExpr = "Expr";
4835
static const char* jkOrderByExprOrder = "Order";
4836
static const char* jkOrderByExprNullOrder = "NullOrder";
4837

4838
static int32_t orderByExprNodeToJson(const void* pObj, SJson* pJson) {
×
4839
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
×
4840

4841
  int32_t code = tjsonAddObject(pJson, jkOrderByExprExpr, nodeToJson, pNode->pExpr);
×
4842
  if (TSDB_CODE_SUCCESS == code) {
×
4843
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprOrder, pNode->order);
×
4844
  }
4845
  if (TSDB_CODE_SUCCESS == code) {
×
4846
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprNullOrder, pNode->nullOrder);
×
4847
  }
4848

4849
  return code;
×
4850
}
4851

4852
static int32_t jsonToOrderByExprNode(const SJson* pJson, void* pObj) {
×
4853
  SOrderByExprNode* pNode = (SOrderByExprNode*)pObj;
×
4854

4855
  int32_t code = jsonToNodeObject(pJson, jkOrderByExprExpr, &pNode->pExpr);
×
4856
  if (TSDB_CODE_SUCCESS == code) {
×
4857
    tjsonGetNumberValue(pJson, jkOrderByExprOrder, pNode->order, code);
×
4858
  }
4859
  if (TSDB_CODE_SUCCESS == code) {
×
4860
    tjsonGetNumberValue(pJson, jkOrderByExprNullOrder, pNode->nullOrder, code);
×
4861
  }
4862

4863
  return code;
×
4864
}
4865

4866
static const char* jkLimitLimit = "Limit";
4867
static const char* jkLimitOffset = "Offset";
4868

4869
static int32_t limitNodeToJson(const void* pObj, SJson* pJson) {
×
4870
  const SLimitNode* pNode = (const SLimitNode*)pObj;
×
4871

4872
  int32_t code = tjsonAddIntegerToObject(pJson, jkLimitLimit, pNode->limit);
×
4873
  if (TSDB_CODE_SUCCESS == code) {
×
4874
    code = tjsonAddIntegerToObject(pJson, jkLimitOffset, pNode->offset);
×
4875
  }
4876

4877
  return code;
×
4878
}
4879

4880
static int32_t jsonToLimitNode(const SJson* pJson, void* pObj) {
×
4881
  SLimitNode* pNode = (SLimitNode*)pObj;
×
4882

4883
  int32_t code = tjsonGetBigIntValue(pJson, jkLimitLimit, &pNode->limit);
×
4884
  if (TSDB_CODE_SUCCESS == code) {
×
4885
    code = tjsonGetBigIntValue(pJson, jkLimitOffset, &pNode->offset);
×
4886
  }
4887

4888
  return code;
×
4889
}
4890

4891
static const char* jkStateWindowCol = "StateWindowCol";
4892
static const char* jkStateWindowExpr = "StateWindowExpr";
4893

4894
static int32_t stateWindowNodeToJson(const void* pObj, SJson* pJson) {
60✔
4895
  const SStateWindowNode* pNode = (const SStateWindowNode*)pObj;
60✔
4896
  int32_t                 code = tjsonAddObject(pJson, jkStateWindowCol, nodeToJson, pNode->pCol);
60✔
4897
  if (TSDB_CODE_SUCCESS == code) {
60!
4898
    code = tjsonAddObject(pJson, jkStateWindowExpr, nodeToJson, pNode->pExpr);
60✔
4899
  }
4900
  return code;
60✔
4901
}
4902

4903
static int32_t jsonToStateWindowNode(const SJson* pJson, void* pObj) {
2,081✔
4904
  SStateWindowNode* pNode = (SStateWindowNode*)pObj;
2,081✔
4905

4906
  int32_t code = jsonToNodeObject(pJson, jkStateWindowCol, (SNode**)&pNode->pCol);
2,081✔
4907
  if (TSDB_CODE_SUCCESS == code) {
2,081!
4908
    code = jsonToNodeObject(pJson, jkStateWindowExpr, (SNode**)&pNode->pExpr);
2,081✔
4909
  }
4910
  return code;
2,081✔
4911
}
4912

4913
static const char* jkSessionWindowTsPrimaryKey = "TsPrimaryKey";
4914
static const char* jkSessionWindowGap = "Gap";
4915

4916
static int32_t sessionWindowNodeToJson(const void* pObj, SJson* pJson) {
92✔
4917
  const SSessionWindowNode* pNode = (const SSessionWindowNode*)pObj;
92✔
4918

4919
  int32_t code = tjsonAddObject(pJson, jkSessionWindowTsPrimaryKey, nodeToJson, pNode->pCol);
92✔
4920
  if (TSDB_CODE_SUCCESS == code) {
92!
4921
    code = tjsonAddObject(pJson, jkSessionWindowGap, nodeToJson, pNode->pGap);
92✔
4922
  }
4923
  return code;
92✔
4924
}
4925

4926
static int32_t jsonToSessionWindowNode(const SJson* pJson, void* pObj) {
198✔
4927
  SSessionWindowNode* pNode = (SSessionWindowNode*)pObj;
198✔
4928

4929
  int32_t code = jsonToNodeObject(pJson, jkSessionWindowTsPrimaryKey, (SNode**)&pNode->pCol);
198✔
4930
  if (TSDB_CODE_SUCCESS == code) {
198!
4931
    code = jsonToNodeObject(pJson, jkSessionWindowGap, (SNode**)&pNode->pGap);
198✔
4932
  }
4933
  return code;
198✔
4934
}
4935

4936
static const char* jkEventWindowTsPrimaryKey = "TsPrimaryKey";
4937
static const char* jkEventWindowStartCond = "StartCond";
4938
static const char* jkEventWindowEndCond = "EndCond";
4939

4940
static int32_t eventWindowNodeToJson(const void* pObj, SJson* pJson) {
9✔
4941
  const SEventWindowNode* pNode = (const SEventWindowNode*)pObj;
9✔
4942

4943
  int32_t code = tjsonAddObject(pJson, jkEventWindowTsPrimaryKey, nodeToJson, pNode->pCol);
9✔
4944
  if (TSDB_CODE_SUCCESS == code) {
9!
4945
    code = tjsonAddObject(pJson, jkEventWindowStartCond, nodeToJson, pNode->pStartCond);
9✔
4946
  }
4947
  if (TSDB_CODE_SUCCESS == code) {
9!
4948
    code = tjsonAddObject(pJson, jkEventWindowEndCond, nodeToJson, pNode->pEndCond);
9✔
4949
  }
4950
  return code;
9✔
4951
}
4952

4953
static int32_t jsonToEventWindowNode(const SJson* pJson, void* pObj) {
50✔
4954
  SEventWindowNode* pNode = (SEventWindowNode*)pObj;
50✔
4955

4956
  int32_t code = jsonToNodeObject(pJson, jkEventWindowTsPrimaryKey, &pNode->pCol);
50✔
4957
  if (TSDB_CODE_SUCCESS == code) {
50!
4958
    code = jsonToNodeObject(pJson, jkEventWindowStartCond, &pNode->pStartCond);
50✔
4959
  }
4960
  if (TSDB_CODE_SUCCESS == code) {
50!
4961
    code = jsonToNodeObject(pJson, jkEventWindowEndCond, &pNode->pEndCond);
50✔
4962
  }
4963
  return code;
50✔
4964
}
4965

4966
static const char* jkCountWindowTsPrimaryKey = "CountTsPrimaryKey";
4967
static const char* jkCountWindowCount = "CountWindowCount";
4968
static const char* jkCountWindowSliding = "CountWindowSliding";
4969

4970
static int32_t countWindowNodeToJson(const void* pObj, SJson* pJson) {
13✔
4971
  const SCountWindowNode* pNode = (const SCountWindowNode*)pObj;
13✔
4972

4973
  int32_t code = tjsonAddObject(pJson, jkCountWindowTsPrimaryKey, nodeToJson, pNode->pCol);
13✔
4974
  if (TSDB_CODE_SUCCESS == code) {
13!
4975
    code = tjsonAddIntegerToObject(pJson, jkCountWindowCount, pNode->windowCount);
13✔
4976
  }
4977
  if (TSDB_CODE_SUCCESS == code) {
13!
4978
    code = tjsonAddIntegerToObject(pJson, jkCountWindowSliding, pNode->windowSliding);
13✔
4979
  }
4980
  return code;
13✔
4981
}
4982

4983
static int32_t jsonToCountWindowNode(const SJson* pJson, void* pObj) {
76✔
4984
  SCountWindowNode* pNode = (SCountWindowNode*)pObj;
76✔
4985

4986
  int32_t code = jsonToNodeObject(pJson, jkCountWindowTsPrimaryKey, &pNode->pCol);
76✔
4987
  if (TSDB_CODE_SUCCESS == code) {
76!
4988
    code = tjsonGetBigIntValue(pJson, jkCountWindowCount, &pNode->windowCount);
76✔
4989
  }
4990
  if (TSDB_CODE_SUCCESS == code) {
76!
4991
    code = tjsonGetBigIntValue(pJson, jkCountWindowSliding, &pNode->windowSliding);
76✔
4992
  }
4993
  return code;
76✔
4994
}
4995

4996
static const char* jkAnomalyWindowTsPrimaryKey = "AnomalyTsPrimaryKey";
4997
static const char* jkAnomalyWindowExpr = "AnomalyWindowExpr";
4998
static const char* jkAnomalyWindowOption = "AnomalyWindowOpt";
4999

5000
static int32_t anomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
5001
  const SAnomalyWindowNode* pNode = (const SAnomalyWindowNode*)pObj;
×
5002

5003
  int32_t code = tjsonAddObject(pJson, jkAnomalyWindowTsPrimaryKey, nodeToJson, pNode->pCol);
×
5004
  if (TSDB_CODE_SUCCESS == code) {
×
5005
    code = tjsonAddObject(pJson, jkAnomalyWindowExpr, nodeToJson, pNode->pExpr);
×
5006
  }
5007
  if (TSDB_CODE_SUCCESS == code) {
×
5008
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowOption, pNode->anomalyOpt);
×
5009
  }
5010
  return code;
×
5011
}
5012

5013
static int32_t jsonToAnomalyWindowNode(const SJson* pJson, void* pObj) {
×
5014
  SAnomalyWindowNode* pNode = (SAnomalyWindowNode*)pObj;
×
5015

5016
  int32_t code = jsonToNodeObject(pJson, jkAnomalyWindowTsPrimaryKey, &pNode->pCol);
×
5017
  if (TSDB_CODE_SUCCESS == code) {
×
5018
    code = jsonToNodeObject(pJson, jkAnomalyWindowExpr, (SNode**)&pNode->pExpr);
×
5019
  }
5020
  if (TSDB_CODE_SUCCESS == code) {
×
5021
    code = tjsonGetStringValue(pJson, jkAnomalyWindowOption, pNode->anomalyOpt);
×
5022
  }
5023
  return code;
×
5024
}
5025

5026
static const char* jkIntervalWindowInterval = "Interval";
5027
static const char* jkIntervalWindowOffset = "Offset";
5028
static const char* jkIntervalWindowSliding = "Sliding";
5029
static const char* jkIntervalWindowFill = "Fill";
5030
static const char* jkIntervalWindowTsPk = "TsPk";
5031

5032
static int32_t intervalWindowNodeToJson(const void* pObj, SJson* pJson) {
703✔
5033
  const SIntervalWindowNode* pNode = (const SIntervalWindowNode*)pObj;
703✔
5034

5035
  int32_t code = tjsonAddObject(pJson, jkIntervalWindowInterval, nodeToJson, pNode->pInterval);
703✔
5036
  if (TSDB_CODE_SUCCESS == code) {
703!
5037
    code = tjsonAddObject(pJson, jkIntervalWindowOffset, nodeToJson, pNode->pOffset);
703✔
5038
  }
5039
  if (TSDB_CODE_SUCCESS == code) {
703!
5040
    code = tjsonAddObject(pJson, jkIntervalWindowSliding, nodeToJson, pNode->pSliding);
703✔
5041
  }
5042
  if (TSDB_CODE_SUCCESS == code) {
703!
5043
    code = tjsonAddObject(pJson, jkIntervalWindowFill, nodeToJson, pNode->pFill);
703✔
5044
  }
5045
  if (TSDB_CODE_SUCCESS == code) {
703!
5046
    code = tjsonAddObject(pJson, jkIntervalWindowTsPk, nodeToJson, pNode->pCol);
703✔
5047
  }
5048

5049
  return code;
703✔
5050
}
5051

5052
static int32_t jsonToIntervalWindowNode(const SJson* pJson, void* pObj) {
7,125✔
5053
  SIntervalWindowNode* pNode = (SIntervalWindowNode*)pObj;
7,125✔
5054

5055
  int32_t code = jsonToNodeObject(pJson, jkIntervalWindowInterval, &pNode->pInterval);
7,125✔
5056
  if (TSDB_CODE_SUCCESS == code) {
7,125!
5057
    code = jsonToNodeObject(pJson, jkIntervalWindowOffset, &pNode->pOffset);
7,125✔
5058
  }
5059
  if (TSDB_CODE_SUCCESS == code) {
7,125!
5060
    code = jsonToNodeObject(pJson, jkIntervalWindowSliding, &pNode->pSliding);
7,125✔
5061
  }
5062
  if (TSDB_CODE_SUCCESS == code) {
7,125!
5063
    code = jsonToNodeObject(pJson, jkIntervalWindowFill, &pNode->pFill);
7,125✔
5064
  }
5065
  if (TSDB_CODE_SUCCESS == code) {
7,125!
5066
    code = jsonToNodeObject(pJson, jkIntervalWindowTsPk, &pNode->pCol);
7,125✔
5067
  }
5068

5069
  return code;
7,125✔
5070
}
5071

5072
static const char* jkNodeListDataType = "DataType";
5073
static const char* jkNodeListNodeList = "NodeList";
5074

5075
static int32_t nodeListNodeToJson(const void* pObj, SJson* pJson) {
3,036✔
5076
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
3,036✔
5077

5078
  int32_t code = tjsonAddObject(pJson, jkNodeListDataType, dataTypeToJson, &pNode->node.resType);
3,036✔
5079
  if (TSDB_CODE_SUCCESS == code) {
3,036!
5080
    code = nodeListToJson(pJson, jkNodeListNodeList, pNode->pNodeList);
3,036✔
5081
  }
5082

5083
  return code;
3,036✔
5084
}
5085

5086
static int32_t jsonToNodeListNode(const SJson* pJson, void* pObj) {
3,213✔
5087
  SNodeListNode* pNode = (SNodeListNode*)pObj;
3,213✔
5088

5089
  int32_t code = tjsonToObject(pJson, jkNodeListDataType, jsonToDataType, &pNode->node.resType);
3,213✔
5090
  if (TSDB_CODE_SUCCESS == code) {
3,213!
5091
    code = jsonToNodeList(pJson, jkNodeListNodeList, &pNode->pNodeList);
3,213✔
5092
  }
5093

5094
  return code;
3,213✔
5095
}
5096

5097
static const char* jkFillMode = "Mode";
5098
static const char* jkFillValues = "Values";
5099
static const char* jkFillWStartTs = "WStartTs";
5100
static const char* jkFillStartTime = "StartTime";
5101
static const char* jkFillEndTime = "EndTime";
5102

5103
static int32_t fillNodeToJson(const void* pObj, SJson* pJson) {
148✔
5104
  const SFillNode* pNode = (const SFillNode*)pObj;
148✔
5105

5106
  int32_t code = tjsonAddIntegerToObject(pJson, jkFillMode, pNode->mode);
148✔
5107
  if (TSDB_CODE_SUCCESS == code) {
148!
5108
    code = tjsonAddObject(pJson, jkFillValues, nodeToJson, pNode->pValues);
148✔
5109
  }
5110
  if (TSDB_CODE_SUCCESS == code) {
148!
5111
    code = tjsonAddObject(pJson, jkFillWStartTs, nodeToJson, pNode->pWStartTs);
148✔
5112
  }
5113
  if (TSDB_CODE_SUCCESS == code) {
148!
5114
    code = tjsonAddIntegerToObject(pJson, jkFillStartTime, pNode->timeRange.skey);
148✔
5115
  }
5116
  if (TSDB_CODE_SUCCESS == code) {
148!
5117
    code = tjsonAddIntegerToObject(pJson, jkFillEndTime, pNode->timeRange.ekey);
148✔
5118
  }
5119

5120
  return code;
148✔
5121
}
5122

5123
static int32_t jsonToFillNode(const SJson* pJson, void* pObj) {
211✔
5124
  SFillNode* pNode = (SFillNode*)pObj;
211✔
5125

5126
  int32_t code;
5127
  tjsonGetNumberValue(pJson, jkFillMode, pNode->mode, code);
211✔
5128
  if (TSDB_CODE_SUCCESS == code) {
211!
5129
    code = jsonToNodeObject(pJson, jkFillValues, &pNode->pValues);
211✔
5130
  }
5131
  if (TSDB_CODE_SUCCESS == code) {
211!
5132
    code = jsonToNodeObject(pJson, jkFillWStartTs, &pNode->pWStartTs);
211✔
5133
  }
5134
  if (TSDB_CODE_SUCCESS == code) {
211!
5135
    code = tjsonGetBigIntValue(pJson, jkFillStartTime, &pNode->timeRange.skey);
211✔
5136
  }
5137
  if (TSDB_CODE_SUCCESS == code) {
211!
5138
    code = tjsonGetBigIntValue(pJson, jkFillEndTime, &pNode->timeRange.ekey);
211✔
5139
  }
5140

5141
  return code;
211✔
5142
}
5143

5144
static const char* jkTargetDataBlockId = "DataBlockId";
5145
static const char* jkTargetSlotId = "SlotId";
5146
static const char* jkTargetExpr = "Expr";
5147

5148
static int32_t targetNodeToJson(const void* pObj, SJson* pJson) {
703,901✔
5149
  const STargetNode* pNode = (const STargetNode*)pObj;
703,901✔
5150

5151
  int32_t code = tjsonAddIntegerToObject(pJson, jkTargetDataBlockId, pNode->dataBlockId);
703,901✔
5152
  if (TSDB_CODE_SUCCESS == code) {
703,901!
5153
    code = tjsonAddIntegerToObject(pJson, jkTargetSlotId, pNode->slotId);
703,901✔
5154
  }
5155
  if (TSDB_CODE_SUCCESS == code) {
703,901!
5156
    code = tjsonAddObject(pJson, jkTargetExpr, nodeToJson, pNode->pExpr);
703,901✔
5157
  }
5158

5159
  return code;
703,901✔
5160
}
5161

5162
static int32_t jsonToTargetNode(const SJson* pJson, void* pObj) {
706,256✔
5163
  STargetNode* pNode = (STargetNode*)pObj;
706,256✔
5164

5165
  int32_t code = tjsonGetSmallIntValue(pJson, jkTargetDataBlockId, &pNode->dataBlockId);
706,256✔
5166
  if (TSDB_CODE_SUCCESS == code) {
706,272!
5167
    code = tjsonGetSmallIntValue(pJson, jkTargetSlotId, &pNode->slotId);
706,272✔
5168
  }
5169
  if (TSDB_CODE_SUCCESS == code) {
706,262!
5170
    code = jsonToNodeObject(pJson, jkTargetExpr, &pNode->pExpr);
706,263✔
5171
  }
5172

5173
  return code;
706,434✔
5174
}
5175

5176
static const char* jkSlotDescSlotId = "SlotId";
5177
static const char* jkSlotDescDataType = "DataType";
5178
static const char* jkSlotDescReserve = "Reserve";
5179
static const char* jkSlotDescOutput = "Output";
5180
static const char* jkSlotDescName = "Name";
5181

5182
static int32_t slotDescNodeToJson(const void* pObj, SJson* pJson) {
703,274✔
5183
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
703,274✔
5184

5185
  int32_t code = tjsonAddIntegerToObject(pJson, jkSlotDescSlotId, pNode->slotId);
703,274✔
5186
  if (TSDB_CODE_SUCCESS == code) {
703,274!
5187
    code = tjsonAddObject(pJson, jkSlotDescDataType, dataTypeToJson, &pNode->dataType);
703,274✔
5188
  }
5189
  if (TSDB_CODE_SUCCESS == code) {
703,274!
5190
    code = tjsonAddBoolToObject(pJson, jkSlotDescReserve, pNode->reserve);
703,274✔
5191
  }
5192
  if (TSDB_CODE_SUCCESS == code) {
703,274!
5193
    code = tjsonAddBoolToObject(pJson, jkSlotDescOutput, pNode->output);
703,274✔
5194
  }
5195
  if (TSDB_CODE_SUCCESS == code) {
703,274!
5196
    code = tjsonAddStringToObject(pJson, jkSlotDescName, pNode->name);
703,274✔
5197
  }
5198

5199
  return code;
703,274✔
5200
}
5201

5202
static int32_t jsonToSlotDescNode(const SJson* pJson, void* pObj) {
705,671✔
5203
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
705,671✔
5204

5205
  int32_t code = tjsonGetSmallIntValue(pJson, jkSlotDescSlotId, &pNode->slotId);
705,671✔
5206
  if (TSDB_CODE_SUCCESS == code) {
705,475!
5207
    code = tjsonToObject(pJson, jkSlotDescDataType, jsonToDataType, &pNode->dataType);
705,475✔
5208
  }
5209
  if (TSDB_CODE_SUCCESS == code) {
705,060!
5210
    code = tjsonGetBoolValue(pJson, jkSlotDescReserve, &pNode->reserve);
705,063✔
5211
  }
5212
  if (TSDB_CODE_SUCCESS == code) {
705,417!
5213
    code = tjsonGetBoolValue(pJson, jkSlotDescOutput, &pNode->output);
705,421✔
5214
  }
5215
  if (TSDB_CODE_SUCCESS == code) {
705,404!
5216
    code = tjsonGetStringValue(pJson, jkSlotDescName, pNode->name);
705,406✔
5217
  }
5218

5219
  return code;
705,051✔
5220
}
5221

5222
static const char* jkColumnDefColName = "ColName";
5223
static const char* jkColumnDefDataType = "DataType";
5224
static const char* jkColumnDefComments = "Comments";
5225
static const char* jkColumnDefSma = "Sma";
5226
static const char* jkColumnDefOptions = "ColumnOptions";
5227

5228
static int32_t columnDefNodeToJson(const void* pObj, SJson* pJson) {
×
5229
  const SColumnDefNode* pNode = (const SColumnDefNode*)pObj;
×
5230

5231
  int32_t code = tjsonAddStringToObject(pJson, jkColumnDefColName, pNode->colName);
×
5232
  if (TSDB_CODE_SUCCESS == code) {
×
5233
    code = tjsonAddObject(pJson, jkColumnDefDataType, dataTypeToJson, &pNode->dataType);
×
5234
  }
5235
  if (TSDB_CODE_SUCCESS == code) {
×
5236
    code = tjsonAddBoolToObject(pJson, jkColumnDefSma, pNode->sma);
×
5237
  }
5238
  if (TSDB_CODE_SUCCESS == code) {
×
5239
    code = tjsonAddObject(pJson, jkColumnDefOptions, nodeToJson, pNode->pOptions);
×
5240
  }
5241

5242
  return code;
×
5243
}
5244

5245
static int32_t jsonToColumnDefNode(const SJson* pJson, void* pObj) {
×
5246
  SColumnDefNode* pNode = (SColumnDefNode*)pObj;
×
5247

5248
  int32_t code = tjsonGetStringValue(pJson, jkColumnDefColName, pNode->colName);
×
5249
  if (TSDB_CODE_SUCCESS == code) {
×
5250
    code = tjsonToObject(pJson, jkColumnDefDataType, jsonToDataType, &pNode->dataType);
×
5251
  }
5252
  if (TSDB_CODE_SUCCESS == code) {
×
5253
    code = tjsonGetBoolValue(pJson, jkColumnDefSma, &pNode->sma);
×
5254
  }
5255
  if (TSDB_CODE_SUCCESS == code) {
×
5256
    code = jsonToNodeObject(pJson, jkColumnDefOptions,  (SNode**)&pNode->pOptions);
×
5257
  }
5258
  return code;
×
5259
}
5260

5261
static const char* jkDownstreamSourceAddr = "Addr";
5262
static const char* jkDownstreamSourceClientId = "ClientId";
5263
static const char* jkDownstreamSourceTaskId = "TaskId";
5264
static const char* jkDownstreamSourceSchedId = "SchedId";
5265
static const char* jkDownstreamSourceExecId = "ExecId";
5266
static const char* jkDownstreamSourceFetchMsgType = "FetchMsgType";
5267

5268
static int32_t downstreamSourceNodeToJson(const void* pObj, SJson* pJson) {
×
5269
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
×
5270

5271
  int32_t code = tjsonAddObject(pJson, jkDownstreamSourceAddr, queryNodeAddrToJson, &pNode->addr);
×
5272
  if (TSDB_CODE_SUCCESS == code) {
×
5273
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceClientId, pNode->clientId);
×
5274
  }
5275
  if (TSDB_CODE_SUCCESS == code) {
×
5276
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceTaskId, pNode->taskId);
×
5277
  }
5278
  if (TSDB_CODE_SUCCESS == code) {
×
5279
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceSchedId, pNode->schedId);
×
5280
  }
5281
  if (TSDB_CODE_SUCCESS == code) {
×
5282
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceExecId, pNode->execId);
×
5283
  }
5284
  if (TSDB_CODE_SUCCESS == code) {
×
5285
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceFetchMsgType, pNode->fetchMsgType);
×
5286
  }
5287

5288
  return code;
×
5289
}
5290

5291
static int32_t jsonToDownstreamSourceNode(const SJson* pJson, void* pObj) {
×
5292
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
×
5293

5294
  int32_t code = tjsonToObject(pJson, jkDownstreamSourceAddr, jsonToQueryNodeAddr, &pNode->addr);
×
5295
  if (TSDB_CODE_SUCCESS == code) {
×
5296
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceClientId, &pNode->clientId);
×
5297
  }
5298
  if (TSDB_CODE_SUCCESS == code) {
×
5299
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceTaskId, &pNode->taskId);
×
5300
  }
5301
  if (TSDB_CODE_SUCCESS == code) {
×
5302
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceSchedId, &pNode->schedId);
×
5303
  }
5304
  if (TSDB_CODE_SUCCESS == code) {
×
5305
    code = tjsonGetIntValue(pJson, jkDownstreamSourceExecId, &pNode->execId);
×
5306
  }
5307
  if (TSDB_CODE_SUCCESS == code) {
×
5308
    code = tjsonGetIntValue(pJson, jkDownstreamSourceFetchMsgType, &pNode->fetchMsgType);
×
5309
  }
5310

5311
  return code;
×
5312
}
5313

5314
static const char* jkWindowOffsetStartOffset = "StartOffset";
5315
static const char* jkWindowOffsetEndOffset = "EndOffset";
5316
static int32_t windowOffsetNodeToJson(const void* pObj, SJson* pJson) {
×
5317
  const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
×
5318

5319
  int32_t code = tjsonAddObject(pJson, jkWindowOffsetStartOffset, nodeToJson, pNode->pStartOffset);
×
5320
  if (TSDB_CODE_SUCCESS == code) {
×
5321
    code = tjsonAddObject(pJson, jkWindowOffsetEndOffset, nodeToJson, pNode->pEndOffset);
×
5322
  }
5323
  return code;
×
5324
}
5325

5326
static int32_t jsonToWindowOffsetNode(const SJson* pJson, void* pObj) {
×
5327
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
×
5328

5329
  int32_t code = jsonToNodeObject(pJson, jkWindowOffsetStartOffset, &pNode->pStartOffset);
×
5330
  if (TSDB_CODE_SUCCESS == code) {
×
5331
    code = jsonToNodeObject(pJson, jkWindowOffsetEndOffset, &pNode->pEndOffset);
×
5332
  }
5333
  return code;
×
5334
}
5335

5336

5337
static const char* jkDatabaseOptionsBuffer = "Buffer";
5338
static const char* jkDatabaseOptionsCacheModel = "CacheModel";
5339
static const char* jkDatabaseOptionsCompressionLevel = "CompressionLevel";
5340
static const char* jkDatabaseOptionsDaysPerFileNode = "DaysPerFileNode";
5341
static const char* jkDatabaseOptionsDaysPerFile = "DaysPerFile";
5342
static const char* jkDatabaseOptionsFsyncPeriod = "FsyncPeriod";
5343
static const char* jkDatabaseOptionsMaxRowsPerBlock = "MaxRowsPerBlock";
5344
static const char* jkDatabaseOptionsMinRowsPerBlock = "MinRowsPerBlock";
5345
static const char* jkDatabaseOptionsKeep = "Keep";
5346
static const char* jkDatabaseOptionsPages = "Pages";
5347
static const char* jkDatabaseOptionsPagesize = "Pagesize";
5348
static const char* jkDatabaseOptionsPrecision = "Precision";
5349
static const char* jkDatabaseOptionsReplica = "Replica";
5350
static const char* jkDatabaseOptionsStrict = "Strict";
5351
static const char* jkDatabaseOptionsWalLevel = "WalLevel";
5352
static const char* jkDatabaseOptionsNumOfVgroups = "NumOfVgroups";
5353
static const char* jkDatabaseOptionsSingleStable = "SingleStable";
5354
static const char* jkDatabaseOptionsRetentions = "Retentions";
5355
static const char* jkDatabaseOptionsSchemaless = "Schemaless";
5356
static const char* jkDatabaseOptionsS3ChunkSize = "S3ChunkSize";
5357
static const char* jkDatabaseOptionsS3KeepLocalNode = "S3KeepLocalNode";
5358
static const char* jkDatabaseOptionsS3KeepLocal = "S3KeepLocal";
5359
static const char* jkDatabaseOptionsS3Compact = "S3Compact";
5360

5361
static int32_t databaseOptionsToJson(const void* pObj, SJson* pJson) {
×
5362
  const SDatabaseOptions* pNode = (const SDatabaseOptions*)pObj;
×
5363

5364
  int32_t code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsBuffer, pNode->buffer);
×
5365
  if (TSDB_CODE_SUCCESS == code) {
×
5366
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCacheModel, pNode->cacheModel);
×
5367
  }
5368
  if (TSDB_CODE_SUCCESS == code) {
×
5369
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCompressionLevel, pNode->compressionLevel);
×
5370
  }
5371
  if (TSDB_CODE_SUCCESS == code) {
×
5372
    code = tjsonAddObject(pJson, jkDatabaseOptionsDaysPerFileNode, nodeToJson, pNode->pDaysPerFile);
×
5373
  }
5374
  if (TSDB_CODE_SUCCESS == code) {
×
5375
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsDaysPerFile, pNode->daysPerFile);
×
5376
  }
5377
  if (TSDB_CODE_SUCCESS == code) {
×
5378
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsFsyncPeriod, pNode->fsyncPeriod);
×
5379
  }
5380
  if (TSDB_CODE_SUCCESS == code) {
×
5381
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsMaxRowsPerBlock, pNode->maxRowsPerBlock);
×
5382
  }
5383
  if (TSDB_CODE_SUCCESS == code) {
×
5384
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsMinRowsPerBlock, pNode->minRowsPerBlock);
×
5385
  }
5386
  if (TSDB_CODE_SUCCESS == code) {
×
5387
    code = nodeListToJson(pJson, jkDatabaseOptionsKeep, pNode->pKeep);
×
5388
  }
5389
  if (TSDB_CODE_SUCCESS == code) {
×
5390
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsPages, pNode->pages);
×
5391
  }
5392
  if (TSDB_CODE_SUCCESS == code) {
×
5393
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsPagesize, pNode->pagesize);
×
5394
  }
5395
  if (TSDB_CODE_SUCCESS == code) {
×
5396
    code = tjsonAddStringToObject(pJson, jkDatabaseOptionsPrecision, pNode->precisionStr);
×
5397
  }
5398
  if (TSDB_CODE_SUCCESS == code) {
×
5399
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsReplica, pNode->replica);
×
5400
  }
5401
  if (TSDB_CODE_SUCCESS == code) {
×
5402
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsStrict, pNode->strict);
×
5403
  }
5404
  if (TSDB_CODE_SUCCESS == code) {
×
5405
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsWalLevel, pNode->walLevel);
×
5406
  }
5407
  if (TSDB_CODE_SUCCESS == code) {
×
5408
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsNumOfVgroups, pNode->numOfVgroups);
×
5409
  }
5410
  if (TSDB_CODE_SUCCESS == code) {
×
5411
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSingleStable, pNode->singleStable);
×
5412
  }
5413
  if (TSDB_CODE_SUCCESS == code) {
×
5414
    code = nodeListToJson(pJson, jkDatabaseOptionsRetentions, pNode->pRetentions);
×
5415
  }
5416
  if (TSDB_CODE_SUCCESS == code) {
×
5417
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSchemaless, pNode->schemaless);
×
5418
  }
5419
  if (TSDB_CODE_SUCCESS == code) {
×
5420
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsS3ChunkSize, pNode->s3ChunkSize);
×
5421
  }
5422
  if (TSDB_CODE_SUCCESS == code) {
×
5423
    code = tjsonAddObject(pJson, jkDatabaseOptionsS3KeepLocalNode, nodeToJson, pNode->s3KeepLocalStr);
×
5424
  }
5425
  if (TSDB_CODE_SUCCESS == code) {
×
5426
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsS3KeepLocal, pNode->s3KeepLocal);
×
5427
  }
5428
  if (TSDB_CODE_SUCCESS == code) {
×
5429
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsS3Compact, pNode->s3Compact);
×
5430
  }
5431

5432
  return code;
×
5433
}
5434

5435
static int32_t jsonToDatabaseOptions(const SJson* pJson, void* pObj) {
×
5436
  SDatabaseOptions* pNode = (SDatabaseOptions*)pObj;
×
5437

5438
  int32_t code = tjsonGetIntValue(pJson, jkDatabaseOptionsBuffer, &pNode->buffer);
×
5439
  if (TSDB_CODE_SUCCESS == code) {
×
5440
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCacheModel, &pNode->cacheModel);
×
5441
  }
5442
  if (TSDB_CODE_SUCCESS == code) {
×
5443
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCompressionLevel, &pNode->compressionLevel);
×
5444
  }
5445
  if (TSDB_CODE_SUCCESS == code) {
×
5446
    code = jsonToNodeObject(pJson, jkDatabaseOptionsDaysPerFileNode, (SNode**)&pNode->pDaysPerFile);
×
5447
  }
5448
  if (TSDB_CODE_SUCCESS == code) {
×
5449
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsDaysPerFile, &pNode->daysPerFile);
×
5450
  }
5451
  if (TSDB_CODE_SUCCESS == code) {
×
5452
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsFsyncPeriod, &pNode->fsyncPeriod);
×
5453
  }
5454
  if (TSDB_CODE_SUCCESS == code) {
×
5455
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMaxRowsPerBlock, &pNode->maxRowsPerBlock);
×
5456
  }
5457
  if (TSDB_CODE_SUCCESS == code) {
×
5458
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMinRowsPerBlock, &pNode->minRowsPerBlock);
×
5459
  }
5460
  if (TSDB_CODE_SUCCESS == code) {
×
5461
    code = jsonToNodeList(pJson, jkDatabaseOptionsKeep, &pNode->pKeep);
×
5462
  }
5463
  if (TSDB_CODE_SUCCESS == code) {
×
5464
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPages, &pNode->pages);
×
5465
  }
5466
  if (TSDB_CODE_SUCCESS == code) {
×
5467
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPagesize, &pNode->pagesize);
×
5468
  }
5469
  if (TSDB_CODE_SUCCESS == code) {
×
5470
    code = tjsonGetStringValue(pJson, jkDatabaseOptionsPrecision, pNode->precisionStr);
×
5471
  }
5472
  if (TSDB_CODE_SUCCESS == code) {
×
5473
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsReplica, &pNode->replica);
×
5474
  }
5475
  if (TSDB_CODE_SUCCESS == code) {
×
5476
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsStrict, &pNode->strict);
×
5477
  }
5478
  if (TSDB_CODE_SUCCESS == code) {
×
5479
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsWalLevel, &pNode->walLevel);
×
5480
  }
5481
  if (TSDB_CODE_SUCCESS == code) {
×
5482
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsNumOfVgroups, &pNode->numOfVgroups);
×
5483
  }
5484
  if (TSDB_CODE_SUCCESS == code) {
×
5485
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSingleStable, &pNode->singleStable);
×
5486
  }
5487
  if (TSDB_CODE_SUCCESS == code) {
×
5488
    code = jsonToNodeList(pJson, jkDatabaseOptionsRetentions, &pNode->pRetentions);
×
5489
  }
5490
  if (TSDB_CODE_SUCCESS == code) {
×
5491
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSchemaless, &pNode->schemaless);
×
5492
  }
5493
  if (TSDB_CODE_SUCCESS == code) {
×
5494
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3ChunkSize, &pNode->s3ChunkSize);
×
5495
  }
5496
  if (TSDB_CODE_SUCCESS == code) {
×
5497
    code = jsonToNodeObject(pJson, jkDatabaseOptionsS3KeepLocalNode, (SNode**)&pNode->s3KeepLocalStr);
×
5498
  }
5499
  if (TSDB_CODE_SUCCESS == code) {
×
5500
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3KeepLocal, &pNode->s3KeepLocal);
×
5501
  }
5502
  if (TSDB_CODE_SUCCESS == code) {
×
5503
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsS3Compact, &pNode->s3Compact);
×
5504
  }
5505

5506
  return code;
×
5507
}
5508

5509
static const char* jkTableOptionsComment = "Comment";
5510
static const char* jkTableOptionsMaxDelay = "MaxDelay";
5511
static const char* jkTableOptionsWatermark = "Watermark";
5512
static const char* jkTableOptionsDeleteMark = "DeleteMark";
5513
static const char* jkTableOptionsRollupFuncs = "RollupFuncs";
5514
static const char* jkTableOptionsTtl = "Ttl";
5515
static const char* jkTableOptionsSma = "Sma";
5516

5517
static int32_t tableOptionsToJson(const void* pObj, SJson* pJson) {
×
5518
  const STableOptions* pNode = (const STableOptions*)pObj;
×
5519

5520
  int32_t code = tjsonAddStringToObject(pJson, jkTableOptionsComment, pNode->comment);
×
5521
  if (TSDB_CODE_SUCCESS == code) {
×
5522
    code = nodeListToJson(pJson, jkTableOptionsMaxDelay, pNode->pMaxDelay);
×
5523
  }
5524
  if (TSDB_CODE_SUCCESS == code) {
×
5525
    code = nodeListToJson(pJson, jkTableOptionsWatermark, pNode->pWatermark);
×
5526
  }
5527
  if (TSDB_CODE_SUCCESS == code) {
×
5528
    code = nodeListToJson(pJson, jkTableOptionsDeleteMark, pNode->pDeleteMark);
×
5529
  }
5530
  if (TSDB_CODE_SUCCESS == code) {
×
5531
    code = nodeListToJson(pJson, jkTableOptionsRollupFuncs, pNode->pRollupFuncs);
×
5532
  }
5533
  if (TSDB_CODE_SUCCESS == code) {
×
5534
    code = tjsonAddIntegerToObject(pJson, jkTableOptionsTtl, pNode->ttl);
×
5535
  }
5536
  if (TSDB_CODE_SUCCESS == code) {
×
5537
    code = nodeListToJson(pJson, jkTableOptionsSma, pNode->pSma);
×
5538
  }
5539

5540
  return code;
×
5541
}
5542

5543
static int32_t jsonToTableOptions(const SJson* pJson, void* pObj) {
×
5544
  STableOptions* pNode = (STableOptions*)pObj;
×
5545

5546
  int32_t code = tjsonGetStringValue(pJson, jkTableOptionsComment, pNode->comment);
×
5547
  if (TSDB_CODE_SUCCESS == code) {
×
5548
    code = jsonToNodeList(pJson, jkTableOptionsMaxDelay, &pNode->pMaxDelay);
×
5549
  }
5550
  if (TSDB_CODE_SUCCESS == code) {
×
5551
    code = jsonToNodeList(pJson, jkTableOptionsWatermark, &pNode->pWatermark);
×
5552
  }
5553
  if (TSDB_CODE_SUCCESS == code) {
×
5554
    code = jsonToNodeList(pJson, jkTableOptionsDeleteMark, &pNode->pDeleteMark);
×
5555
  }
5556
  if (TSDB_CODE_SUCCESS == code) {
×
5557
    code = jsonToNodeList(pJson, jkTableOptionsRollupFuncs, &pNode->pRollupFuncs);
×
5558
  }
5559
  if (TSDB_CODE_SUCCESS == code) {
×
5560
    code = tjsonGetIntValue(pJson, jkTableOptionsTtl, &pNode->ttl);
×
5561
  }
5562
  if (TSDB_CODE_SUCCESS == code) {
×
5563
    code = jsonToNodeList(pJson, jkTableOptionsSma, &pNode->pSma);
×
5564
  }
5565

5566
  return code;
×
5567
}
5568

5569
static const char* jkColumnOptionsEncode = "encode";
5570
static const char* jkColumnOptionsCompress = "compress";
5571
static const char* jkColumnOptionsLevel = "level";
5572
static int32_t     columnOptionsToJson(const void* pObj, SJson* pJson) {
×
5573
  const SColumnOptions* pNode = (const SColumnOptions*)pObj;
×
5574
  int32_t               code = tjsonAddStringToObject(pJson, jkColumnOptionsEncode, pNode->encode);
×
5575
  code = tjsonAddStringToObject(pJson, jkColumnOptionsCompress, pNode->compress);
×
5576
  code = tjsonAddStringToObject(pJson, jkColumnOptionsLevel, pNode->compressLevel);
×
5577
  return code;
×
5578
}
5579

5580
static int32_t jsonToColumnOptions(const SJson* pJson, void* pObj) {
×
5581
  SColumnOptions* pNode = (SColumnOptions*)pObj;
×
5582

5583
  int32_t code = tjsonGetStringValue(pJson, jkColumnOptionsEncode, pNode->encode);
×
5584
  code = tjsonGetStringValue(pJson, jkColumnOptionsCompress, pNode->compress);
×
5585
  code = tjsonGetStringValue(pJson, jkColumnOptionsLevel, pNode->compressLevel);
×
5586
  return code;
×
5587
}
5588

5589
static const char* jkIndexOptionsFuncs = "Funcs";
5590
static const char* jkIndexOptionsInterval = "Interval";
5591
static const char* jkIndexOptionsOffset = "Offset";
5592
static const char* jkIndexOptionsSliding = "Sliding";
5593
static const char* jkIndexOptionsStreamOptions = "StreamOptions";
5594

5595
static int32_t indexOptionsToJson(const void* pObj, SJson* pJson) {
×
5596
  const SIndexOptions* pNode = (const SIndexOptions*)pObj;
×
5597

5598
  int32_t code = nodeListToJson(pJson, jkIndexOptionsFuncs, pNode->pFuncs);
×
5599
  if (TSDB_CODE_SUCCESS == code) {
×
5600
    code = tjsonAddObject(pJson, jkIndexOptionsInterval, nodeToJson, pNode->pInterval);
×
5601
  }
5602
  if (TSDB_CODE_SUCCESS == code) {
×
5603
    code = tjsonAddObject(pJson, jkIndexOptionsOffset, nodeToJson, pNode->pOffset);
×
5604
  }
5605
  if (TSDB_CODE_SUCCESS == code) {
×
5606
    code = tjsonAddObject(pJson, jkIndexOptionsSliding, nodeToJson, pNode->pSliding);
×
5607
  }
5608
  if (TSDB_CODE_SUCCESS == code) {
×
5609
    code = tjsonAddObject(pJson, jkIndexOptionsStreamOptions, nodeToJson, pNode->pStreamOptions);
×
5610
  }
5611

5612
  return code;
×
5613
}
5614

5615
static int32_t jsonToIndexOptions(const SJson* pJson, void* pObj) {
×
5616
  SIndexOptions* pNode = (SIndexOptions*)pObj;
×
5617

5618
  int32_t code = jsonToNodeList(pJson, jkIndexOptionsFuncs, &pNode->pFuncs);
×
5619
  if (TSDB_CODE_SUCCESS == code) {
×
5620
    code = jsonToNodeObject(pJson, jkIndexOptionsInterval, &pNode->pInterval);
×
5621
  }
5622
  if (TSDB_CODE_SUCCESS == code) {
×
5623
    code = jsonToNodeObject(pJson, jkIndexOptionsOffset, &pNode->pOffset);
×
5624
  }
5625
  if (TSDB_CODE_SUCCESS == code) {
×
5626
    code = jsonToNodeObject(pJson, jkIndexOptionsSliding, &pNode->pSliding);
×
5627
  }
5628
  if (TSDB_CODE_SUCCESS == code) {
×
5629
    code = jsonToNodeObject(pJson, jkIndexOptionsStreamOptions, &pNode->pStreamOptions);
×
5630
  }
5631

5632
  return code;
×
5633
}
5634

5635
static const char* jkExplainOptionsVerbose = "Verbose";
5636
static const char* jkExplainOptionsRatio = "Ratio";
5637

5638
static int32_t explainOptionsToJson(const void* pObj, SJson* pJson) {
×
5639
  const SExplainOptions* pNode = (const SExplainOptions*)pObj;
×
5640

5641
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainOptionsVerbose, pNode->verbose);
×
5642
  if (TSDB_CODE_SUCCESS == code) {
×
5643
    code = tjsonAddDoubleToObject(pJson, jkExplainOptionsRatio, pNode->ratio);
×
5644
  }
5645

5646
  return code;
×
5647
}
5648

5649
static int32_t jsonToExplainOptions(const SJson* pJson, void* pObj) {
×
5650
  SExplainOptions* pNode = (SExplainOptions*)pObj;
×
5651

5652
  int32_t code = tjsonGetBoolValue(pJson, jkExplainOptionsVerbose, &pNode->verbose);
×
5653
  if (TSDB_CODE_SUCCESS == code) {
×
5654
    code = tjsonGetDoubleValue(pJson, jkExplainOptionsRatio, &pNode->ratio);
×
5655
  }
5656

5657
  return code;
×
5658
}
5659

5660
static const char* jkStreamOptionsTriggerType = "TriggerType";
5661
static const char* jkStreamOptionsDelay = "Delay";
5662
static const char* jkStreamOptionsWatermark = "Watermark";
5663
static const char* jkStreamOptionsDeleteMark = "DeleteMark";
5664
static const char* jkStreamOptionsFillHistory = "FillHistory";
5665
static const char* jkStreamOptionsIgnoreExpired = "IgnoreExpired";
5666

5667
static int32_t streamOptionsToJson(const void* pObj, SJson* pJson) {
×
5668
  const SStreamOptions* pNode = (const SStreamOptions*)pObj;
×
5669

5670
  int32_t code = tjsonAddIntegerToObject(pJson, jkStreamOptionsTriggerType, pNode->triggerType);
×
5671
  if (TSDB_CODE_SUCCESS == code) {
×
5672
    code = tjsonAddObject(pJson, jkStreamOptionsDelay, nodeToJson, pNode->pDelay);
×
5673
  }
5674
  if (TSDB_CODE_SUCCESS == code) {
×
5675
    code = tjsonAddObject(pJson, jkStreamOptionsWatermark, nodeToJson, pNode->pWatermark);
×
5676
  }
5677
  if (TSDB_CODE_SUCCESS == code) {
×
5678
    code = tjsonAddObject(pJson, jkStreamOptionsDeleteMark, nodeToJson, pNode->pDeleteMark);
×
5679
  }
5680
  if (TSDB_CODE_SUCCESS == code) {
×
5681
    code = tjsonAddIntegerToObject(pJson, jkStreamOptionsFillHistory, pNode->fillHistory);
×
5682
  }
5683
  if (TSDB_CODE_SUCCESS == code) {
×
5684
    code = tjsonAddIntegerToObject(pJson, jkStreamOptionsIgnoreExpired, pNode->ignoreExpired);
×
5685
  }
5686

5687
  return code;
×
5688
}
5689

5690
static int32_t jsonToStreamOptions(const SJson* pJson, void* pObj) {
×
5691
  SStreamOptions* pNode = (SStreamOptions*)pObj;
×
5692

5693
  int32_t code = tjsonGetTinyIntValue(pJson, jkStreamOptionsTriggerType, &pNode->triggerType);
×
5694
  if (TSDB_CODE_SUCCESS == code) {
×
5695
    code = jsonToNodeObject(pJson, jkStreamOptionsDelay, &pNode->pDelay);
×
5696
  }
5697
  if (TSDB_CODE_SUCCESS == code) {
×
5698
    code = jsonToNodeObject(pJson, jkStreamOptionsWatermark, &pNode->pWatermark);
×
5699
  }
5700
  if (TSDB_CODE_SUCCESS == code) {
×
5701
    code = jsonToNodeObject(pJson, jkStreamOptionsDeleteMark, &pNode->pDeleteMark);
×
5702
  }
5703
  if (TSDB_CODE_SUCCESS == code) {
×
5704
    code = tjsonGetTinyIntValue(pJson, jkStreamOptionsFillHistory, &pNode->fillHistory);
×
5705
  }
5706
  if (TSDB_CODE_SUCCESS == code) {
×
5707
    code = tjsonGetTinyIntValue(pJson, jkStreamOptionsIgnoreExpired, &pNode->ignoreExpired);
×
5708
  }
5709

5710
  return code;
×
5711
}
5712

5713
static const char* jkWhenThenWhen = "When";
5714
static const char* jkWhenThenThen = "Then";
5715

5716
static int32_t whenThenNodeToJson(const void* pObj, SJson* pJson) {
85✔
5717
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
85✔
5718

5719
  int32_t code = exprNodeToJson(pObj, pJson);
85✔
5720
  if (TSDB_CODE_SUCCESS == code) {
85!
5721
    code = tjsonAddObject(pJson, jkWhenThenWhen, nodeToJson, pNode->pWhen);
85✔
5722
  }
5723
  if (TSDB_CODE_SUCCESS == code) {
85!
5724
    code = tjsonAddObject(pJson, jkWhenThenThen, nodeToJson, pNode->pThen);
85✔
5725
  }
5726

5727
  return code;
85✔
5728
}
5729

5730
static int32_t jsonToWhenThenNode(const SJson* pJson, void* pObj) {
95✔
5731
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
95✔
5732

5733
  int32_t code = jsonToExprNode(pJson, pObj);
95✔
5734
  if (TSDB_CODE_SUCCESS == code) {
95!
5735
    code = jsonToNodeObject(pJson, jkWhenThenWhen, &pNode->pWhen);
95✔
5736
  }
5737
  if (TSDB_CODE_SUCCESS == code) {
95!
5738
    code = jsonToNodeObject(pJson, jkWhenThenThen, &pNode->pThen);
95✔
5739
  }
5740

5741
  return code;
95✔
5742
}
5743

5744
static const char* jkCaseWhenCase = "Case";
5745
static const char* jkCaseWhenWhenThenList = "WhenThenList";
5746
static const char* jkCaseWhenElse = "Else";
5747

5748
static int32_t caseWhenNodeToJson(const void* pObj, SJson* pJson) {
85✔
5749
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
85✔
5750

5751
  int32_t code = exprNodeToJson(pObj, pJson);
85✔
5752
  if (TSDB_CODE_SUCCESS == code) {
85!
5753
    code = tjsonAddObject(pJson, jkCaseWhenCase, nodeToJson, pNode->pCase);
85✔
5754
  }
5755
  if (TSDB_CODE_SUCCESS == code) {
85!
5756
    code = nodeListToJson(pJson, jkCaseWhenWhenThenList, pNode->pWhenThenList);
85✔
5757
  }
5758
  if (TSDB_CODE_SUCCESS == code) {
85!
5759
    code = tjsonAddObject(pJson, jkCaseWhenElse, nodeToJson, pNode->pElse);
85✔
5760
  }
5761

5762
  return code;
85✔
5763
}
5764

5765
static int32_t jsonToCaseWhenNode(const SJson* pJson, void* pObj) {
95✔
5766
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
95✔
5767

5768
  int32_t code = jsonToExprNode(pJson, pObj);
95✔
5769
  if (TSDB_CODE_SUCCESS == code) {
95!
5770
    code = jsonToNodeObject(pJson, jkCaseWhenCase, &pNode->pCase);
95✔
5771
  }
5772
  if (TSDB_CODE_SUCCESS == code) {
95!
5773
    code = jsonToNodeList(pJson, jkCaseWhenWhenThenList, &pNode->pWhenThenList);
95✔
5774
  }
5775
  if (TSDB_CODE_SUCCESS == code) {
95!
5776
    code = jsonToNodeObject(pJson, jkCaseWhenElse, &pNode->pElse);
95✔
5777
  }
5778

5779
  return code;
95✔
5780
}
5781

5782
static const char* jkDataBlockDescDataBlockId = "DataBlockId";
5783
static const char* jkDataBlockDescSlots = "Slots";
5784
static const char* jkDataBlockTotalRowSize = "TotalRowSize";
5785
static const char* jkDataBlockOutputRowSize = "OutputRowSize";
5786
static const char* jkDataBlockPrecision = "Precision";
5787

5788
static int32_t dataBlockDescNodeToJson(const void* pObj, SJson* pJson) {
29,282✔
5789
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
29,282✔
5790

5791
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataBlockDescDataBlockId, pNode->dataBlockId);
29,282✔
5792
  if (TSDB_CODE_SUCCESS == code) {
29,282!
5793
    code = tjsonAddIntegerToObject(pJson, jkDataBlockTotalRowSize, pNode->totalRowSize);
29,282✔
5794
  }
5795
  if (TSDB_CODE_SUCCESS == code) {
29,282!
5796
    code = tjsonAddIntegerToObject(pJson, jkDataBlockOutputRowSize, pNode->outputRowSize);
29,282✔
5797
  }
5798
  if (TSDB_CODE_SUCCESS == code) {
29,282!
5799
    code = nodeListToJson(pJson, jkDataBlockDescSlots, pNode->pSlots);
29,282✔
5800
  }
5801
  if (TSDB_CODE_SUCCESS == code) {
29,282!
5802
    code = tjsonAddIntegerToObject(pJson, jkDataBlockPrecision, pNode->precision);
29,282✔
5803
  }
5804

5805
  return code;
29,282✔
5806
}
5807

5808
static int32_t jsonToDataBlockDescNode(const SJson* pJson, void* pObj) {
28,351✔
5809
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
28,351✔
5810

5811
  int32_t code = tjsonGetSmallIntValue(pJson, jkDataBlockDescDataBlockId, &pNode->dataBlockId);
28,351✔
5812
  if (TSDB_CODE_SUCCESS == code) {
28,352!
5813
    code = tjsonGetIntValue(pJson, jkDataBlockTotalRowSize, &pNode->totalRowSize);
28,352✔
5814
  }
5815
  if (TSDB_CODE_SUCCESS == code) {
28,352!
5816
    code = tjsonGetIntValue(pJson, jkDataBlockOutputRowSize, &pNode->outputRowSize);
28,352✔
5817
  }
5818
  if (TSDB_CODE_SUCCESS == code) {
28,349!
5819
    code = jsonToNodeList(pJson, jkDataBlockDescSlots, &pNode->pSlots);
28,349✔
5820
  }
5821
  if (TSDB_CODE_SUCCESS == code) {
28,358!
5822
    code = tjsonGetUTinyIntValue(pJson, jkDataBlockPrecision, &pNode->precision);
28,358✔
5823
  }
5824

5825
  return code;
28,355✔
5826
}
5827

5828
static const char* jkSetOperatorOpType = "OpType";
5829
static const char* jkSetOperatorProjections = "Projections";
5830
static const char* jkSetOperatorLeft = "Left";
5831
static const char* jkSetOperatorRight = "Right";
5832
static const char* jkSetOperatorOrderByList = "OrderByList";
5833
static const char* jkSetOperatorLimit = "Limit";
5834

5835
static int32_t setOperatorToJson(const void* pObj, SJson* pJson) {
×
5836
  const SSetOperator* pNode = (const SSetOperator*)pObj;
×
5837

5838
  int32_t code = tjsonAddIntegerToObject(pJson, jkSetOperatorOpType, pNode->opType);
×
5839
  if (TSDB_CODE_SUCCESS == code) {
×
5840
    code = nodeListToJson(pJson, jkSetOperatorProjections, pNode->pProjectionList);
×
5841
  }
5842
  if (TSDB_CODE_SUCCESS == code) {
×
5843
    code = tjsonAddObject(pJson, jkSetOperatorLeft, nodeToJson, pNode->pLeft);
×
5844
  }
5845
  if (TSDB_CODE_SUCCESS == code) {
×
5846
    code = tjsonAddObject(pJson, jkSetOperatorRight, nodeToJson, pNode->pRight);
×
5847
  }
5848
  if (TSDB_CODE_SUCCESS == code) {
×
5849
    code = nodeListToJson(pJson, jkSetOperatorOrderByList, pNode->pOrderByList);
×
5850
  }
5851
  if (TSDB_CODE_SUCCESS == code) {
×
5852
    code = tjsonAddObject(pJson, jkSetOperatorLimit, nodeToJson, pNode->pLimit);
×
5853
  }
5854

5855
  return code;
×
5856
}
5857

5858
static int32_t jsonToSetOperator(const SJson* pJson, void* pObj) {
×
5859
  SSetOperator* pNode = (SSetOperator*)pObj;
×
5860

5861
  int32_t code = TSDB_CODE_SUCCESS;
×
5862
  tjsonGetNumberValue(pJson, jkSetOperatorOpType, pNode->opType, code);
×
5863
  if (TSDB_CODE_SUCCESS == code) {
×
5864
    code = jsonToNodeList(pJson, jkSetOperatorProjections, &pNode->pProjectionList);
×
5865
  }
5866
  if (TSDB_CODE_SUCCESS == code) {
×
5867
    code = jsonToNodeObject(pJson, jkSetOperatorLeft, &pNode->pLeft);
×
5868
  }
5869
  if (TSDB_CODE_SUCCESS == code) {
×
5870
    code = jsonToNodeObject(pJson, jkSetOperatorRight, &pNode->pRight);
×
5871
  }
5872
  if (TSDB_CODE_SUCCESS == code) {
×
5873
    code = jsonToNodeList(pJson, jkSetOperatorOrderByList, &pNode->pOrderByList);
×
5874
  }
5875
  if (TSDB_CODE_SUCCESS == code) {
×
5876
    code = jsonToNodeObject(pJson, jkSetOperatorLimit, &pNode->pLimit);
×
5877
  }
5878

5879
  return code;
×
5880
}
5881

5882
static const char* jkSelectStmtDistinct = "Distinct";
5883
static const char* jkSelectStmtProjections = "Projections";
5884
static const char* jkSelectStmtFrom = "From";
5885
static const char* jkSelectStmtWhere = "Where";
5886
static const char* jkSelectStmtPartitionBy = "PartitionBy";
5887
static const char* jkSelectStmtTags = "Tags";
5888
static const char* jkSelectStmtSubtable = "Subtable";
5889
static const char* jkSelectStmtWindow = "Window";
5890
static const char* jkSelectStmtGroupBy = "GroupBy";
5891
static const char* jkSelectStmtHaving = "Having";
5892
static const char* jkSelectStmtOrderBy = "OrderBy";
5893
static const char* jkSelectStmtLimit = "Limit";
5894
static const char* jkSelectStmtSlimit = "Slimit";
5895
static const char* jkSelectStmtStmtName = "StmtName";
5896
static const char* jkSelectStmtHasAggFuncs = "HasAggFuncs";
5897
static const char* jkSelectStmtInterpFuncs = "HasInterpFuncs";
5898
static const char* jkSelectStmtInterpFill = "InterpFill";
5899
static const char* jkSelectStmtInterpEvery = "InterpEvery";
5900
static const char* jkSelectStmtTwaOrElapsedFuncs = "HasTwaOrElapsedFuncs";
5901

5902
static int32_t selectStmtToJson(const void* pObj, SJson* pJson) {
1,473✔
5903
  const SSelectStmt* pNode = (const SSelectStmt*)pObj;
1,473✔
5904

5905
  int32_t code = tjsonAddBoolToObject(pJson, jkSelectStmtDistinct, pNode->isDistinct);
1,473✔
5906
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5907
    code = nodeListToJson(pJson, jkSelectStmtProjections, pNode->pProjectionList);
1,473✔
5908
  }
5909
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5910
    code = tjsonAddObject(pJson, jkSelectStmtFrom, nodeToJson, pNode->pFromTable);
1,473✔
5911
  }
5912
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5913
    code = tjsonAddObject(pJson, jkSelectStmtWhere, nodeToJson, pNode->pWhere);
1,473✔
5914
  }
5915
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5916
    code = nodeListToJson(pJson, jkSelectStmtPartitionBy, pNode->pPartitionByList);
1,473✔
5917
  }
5918
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5919
    code = nodeListToJson(pJson, jkSelectStmtTags, pNode->pTags);
1,473✔
5920
  }
5921
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5922
    code = tjsonAddObject(pJson, jkSelectStmtSubtable, nodeToJson, pNode->pSubtable);
1,473✔
5923
  }
5924
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5925
    code = tjsonAddObject(pJson, jkSelectStmtWindow, nodeToJson, pNode->pWindow);
1,473✔
5926
  }
5927
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5928
    code = nodeListToJson(pJson, jkSelectStmtGroupBy, pNode->pGroupByList);
1,473✔
5929
  }
5930
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5931
    code = tjsonAddObject(pJson, jkSelectStmtHaving, nodeToJson, pNode->pHaving);
1,473✔
5932
  }
5933
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5934
    code = nodeListToJson(pJson, jkSelectStmtOrderBy, pNode->pOrderByList);
1,473✔
5935
  }
5936
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5937
    code = tjsonAddObject(pJson, jkSelectStmtLimit, nodeToJson, pNode->pLimit);
1,473✔
5938
  }
5939
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5940
    code = tjsonAddObject(pJson, jkSelectStmtSlimit, nodeToJson, pNode->pSlimit);
1,473✔
5941
  }
5942
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5943
    code = tjsonAddStringToObject(pJson, jkSelectStmtStmtName, pNode->stmtName);
1,473✔
5944
  }
5945
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5946
    code = tjsonAddBoolToObject(pJson, jkSelectStmtHasAggFuncs, pNode->hasAggFuncs);
1,473✔
5947
  }
5948
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5949
    code = tjsonAddBoolToObject(pJson, jkSelectStmtInterpFuncs, pNode->hasInterpFunc);
1,473✔
5950
  }
5951
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5952
    code = tjsonAddBoolToObject(pJson, jkSelectStmtTwaOrElapsedFuncs, pNode->hasTwaOrElapsedFunc);
1,473✔
5953
  }
5954
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5955
    code = tjsonAddObject(pJson, jkSelectStmtInterpFill, nodeToJson, pNode->pFill);
1,473✔
5956
  }
5957
  if (TSDB_CODE_SUCCESS == code) {
1,473!
5958
    code = tjsonAddObject(pJson, jkSelectStmtInterpEvery, nodeToJson, pNode->pEvery);
1,473✔
5959
  }
5960

5961
  return code;
1,473✔
5962
}
5963

5964
static int32_t jsonToSelectStmt(const SJson* pJson, void* pObj) {
11,316✔
5965
  SSelectStmt* pNode = (SSelectStmt*)pObj;
11,316✔
5966

5967
  int32_t code = tjsonGetBoolValue(pJson, jkSelectStmtDistinct, &pNode->isDistinct);
11,316✔
5968
  if (TSDB_CODE_SUCCESS == code) {
11,316!
5969
    code = jsonToNodeList(pJson, jkSelectStmtProjections, &pNode->pProjectionList);
11,316✔
5970
  }
5971
  if (TSDB_CODE_SUCCESS == code) {
11,316!
5972
    code = jsonToNodeObject(pJson, jkSelectStmtFrom, &pNode->pFromTable);
11,316✔
5973
  }
5974
  if (TSDB_CODE_SUCCESS == code) {
11,316!
5975
    code = jsonToNodeObject(pJson, jkSelectStmtWhere, &pNode->pWhere);
11,316✔
5976
  }
5977
  if (TSDB_CODE_SUCCESS == code) {
11,316!
5978
    code = jsonToNodeList(pJson, jkSelectStmtPartitionBy, &pNode->pPartitionByList);
11,316✔
5979
  }
5980
  if (TSDB_CODE_SUCCESS == code) {
11,316!
5981
    code = jsonToNodeList(pJson, jkSelectStmtTags, &pNode->pTags);
11,316✔
5982
  }
5983
  if (TSDB_CODE_SUCCESS == code) {
11,316!
5984
    code = jsonToNodeObject(pJson, jkSelectStmtSubtable, &pNode->pSubtable);
11,316✔
5985
  }
5986
  if (TSDB_CODE_SUCCESS == code) {
11,316!
5987
    code = jsonToNodeObject(pJson, jkSelectStmtWindow, &pNode->pWindow);
11,316✔
5988
  }
5989
  if (TSDB_CODE_SUCCESS == code) {
11,316!
5990
    code = jsonToNodeList(pJson, jkSelectStmtGroupBy, &pNode->pGroupByList);
11,316✔
5991
  }
5992
  if (TSDB_CODE_SUCCESS == code) {
11,316!
5993
    code = jsonToNodeObject(pJson, jkSelectStmtHaving, &pNode->pHaving);
11,316✔
5994
  }
5995
  if (TSDB_CODE_SUCCESS == code) {
11,316!
5996
    code = jsonToNodeList(pJson, jkSelectStmtOrderBy, &pNode->pOrderByList);
11,316✔
5997
  }
5998
  if (TSDB_CODE_SUCCESS == code) {
11,316!
5999
    code = jsonToNodeObject(pJson, jkSelectStmtLimit, (SNode**)&pNode->pLimit);
11,316✔
6000
  }
6001
  if (TSDB_CODE_SUCCESS == code) {
11,316!
6002
    code = jsonToNodeObject(pJson, jkSelectStmtSlimit, (SNode**)&pNode->pSlimit);
11,316✔
6003
  }
6004
  if (TSDB_CODE_SUCCESS == code) {
11,316!
6005
    code = tjsonGetStringValue(pJson, jkSelectStmtStmtName, pNode->stmtName);
11,316✔
6006
  }
6007
  if (TSDB_CODE_SUCCESS == code) {
11,316!
6008
    code = tjsonGetBoolValue(pJson, jkSelectStmtHasAggFuncs, &pNode->hasAggFuncs);
11,316✔
6009
  }
6010
  if (TSDB_CODE_SUCCESS == code) {
11,316!
6011
    code = tjsonGetBoolValue(pJson, jkSelectStmtInterpFuncs, &pNode->hasInterpFunc);
11,316✔
6012
  }
6013
  if (TSDB_CODE_SUCCESS == code) {
11,316!
6014
    code = tjsonGetBoolValue(pJson, jkSelectStmtTwaOrElapsedFuncs, &pNode->hasTwaOrElapsedFunc);
11,316✔
6015
  }
6016
  if (TSDB_CODE_SUCCESS == code) {
11,316!
6017
    code = jsonToNodeObject(pJson, jkSelectStmtInterpFill, &pNode->pFill);
11,316✔
6018
  }
6019
  if (TSDB_CODE_SUCCESS == code) {
11,316!
6020
    code = jsonToNodeObject(pJson, jkSelectStmtInterpEvery, &pNode->pEvery);
11,316✔
6021
  }
6022

6023
  return code;
11,316✔
6024
}
6025

6026
static const char* jkVnodeModifyOpStmtSqlNodeType = "SqlNodeType";
6027
static const char* jkVnodeModifyOpStmtTotalRowsNum = "TotalRowsNum";
6028
static const char* jkVnodeModifyOpStmtTotalTbNum = "TotalTbNum";
6029

6030
static int32_t vnodeModifyStmtToJson(const void* pObj, SJson* pJson) {
×
6031
  const SVnodeModifyOpStmt* pNode = (const SVnodeModifyOpStmt*)pObj;
×
6032

6033
  int32_t code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType);
×
6034
  if (TSDB_CODE_SUCCESS == code) {
×
6035
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalRowsNum, pNode->totalRowsNum);
×
6036
  }
6037
  if (TSDB_CODE_SUCCESS == code) {
×
6038
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalTbNum, pNode->totalTbNum);
×
6039
  }
6040

6041
  return code;
×
6042
}
6043

6044
static int32_t jsonToVnodeModifyStmt(const SJson* pJson, void* pObj) {
×
6045
  SVnodeModifyOpStmt* pNode = (SVnodeModifyOpStmt*)pObj;
×
6046

6047
  int32_t code = TSDB_CODE_SUCCESS;
×
6048
  tjsonGetNumberValue(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType, code);
×
6049
  if (TSDB_CODE_SUCCESS == code) {
×
6050
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalRowsNum, &pNode->totalRowsNum);
×
6051
  }
6052
  if (TSDB_CODE_SUCCESS == code) {
×
6053
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalTbNum, &pNode->totalTbNum);
×
6054
  }
6055

6056
  return code;
×
6057
}
6058

6059
static const char* jkCreateDatabaseStmtDbName = "DbName";
6060
static const char* jkCreateDatabaseStmtIgnoreExists = "IgnoreExists";
6061
static const char* jkCreateDatabaseStmtOptions = "Options";
6062

6063
static int32_t createDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6064
  const SCreateDatabaseStmt* pNode = (const SCreateDatabaseStmt*)pObj;
×
6065

6066
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
×
6067
  if (TSDB_CODE_SUCCESS == code) {
×
6068
    code = tjsonAddBoolToObject(pJson, jkCreateDatabaseStmtIgnoreExists, pNode->ignoreExists);
×
6069
  }
6070
  if (TSDB_CODE_SUCCESS == code) {
×
6071
    code = tjsonAddObject(pJson, jkCreateDatabaseStmtOptions, nodeToJson, pNode->pOptions);
×
6072
  }
6073

6074
  return code;
×
6075
}
6076

6077
static int32_t jsonToCreateDatabaseStmt(const SJson* pJson, void* pObj) {
×
6078
  SCreateDatabaseStmt* pNode = (SCreateDatabaseStmt*)pObj;
×
6079

6080
  int32_t code = tjsonGetStringValue(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
×
6081
  if (TSDB_CODE_SUCCESS == code) {
×
6082
    code = tjsonGetBoolValue(pJson, jkCreateDatabaseStmtIgnoreExists, &pNode->ignoreExists);
×
6083
  }
6084
  if (TSDB_CODE_SUCCESS == code) {
×
6085
    code = jsonToNodeObject(pJson, jkCreateDatabaseStmtOptions, (SNode**)&pNode->pOptions);
×
6086
  }
6087

6088
  return code;
×
6089
}
6090

6091
static const char* jkAlterDatabaseStmtDbName = "DbName";
6092
static const char* jkAlterDatabaseStmtOptions = "Options";
6093

6094
static int32_t alterDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6095
  const SAlterDatabaseStmt* pNode = (const SAlterDatabaseStmt*)pObj;
×
6096

6097
  int32_t code = tjsonAddStringToObject(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
×
6098
  if (TSDB_CODE_SUCCESS == code) {
×
6099
    code = tjsonAddObject(pJson, jkAlterDatabaseStmtOptions, nodeToJson, pNode->pOptions);
×
6100
  }
6101

6102
  return code;
×
6103
}
6104

6105
static int32_t jsonToAlterDatabaseStmt(const SJson* pJson, void* pObj) {
×
6106
  SAlterDatabaseStmt* pNode = (SAlterDatabaseStmt*)pObj;
×
6107

6108
  int32_t code = tjsonGetStringValue(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
×
6109
  if (TSDB_CODE_SUCCESS == code) {
×
6110
    code = jsonToNodeObject(pJson, jkAlterDatabaseStmtOptions, (SNode**)&pNode->pOptions);
×
6111
  }
6112

6113
  return code;
×
6114
}
6115

6116
static const char* jkTrimDatabaseStmtDbName = "DbName";
6117
static const char* jkTrimDatabaseStmtMaxSpeed = "MaxSpeed";
6118

6119
static int32_t trimDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6120
  const STrimDatabaseStmt* pNode = (const STrimDatabaseStmt*)pObj;
×
6121

6122
  int32_t code = tjsonAddStringToObject(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
×
6123
  if (TSDB_CODE_SUCCESS == code) {
×
6124
    code = tjsonAddIntegerToObject(pJson, jkTrimDatabaseStmtMaxSpeed, pNode->maxSpeed);
×
6125
  }
6126

6127
  return code;
×
6128
}
6129

6130
static int32_t jsonToTrimDatabaseStmt(const SJson* pJson, void* pObj) {
×
6131
  STrimDatabaseStmt* pNode = (STrimDatabaseStmt*)pObj;
×
6132

6133
  int32_t code = tjsonGetStringValue(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
×
6134
  if (TSDB_CODE_SUCCESS == code) {
×
6135
    code = tjsonGetIntValue(pJson, jkTrimDatabaseStmtMaxSpeed, &pNode->maxSpeed);
×
6136
  }
6137

6138
  return code;
×
6139
}
6140

6141
static const char* jkS3MigrateDatabaseStmtDbName = "DbName";
6142

6143
static int32_t s3migrateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6144
  const SS3MigrateDatabaseStmt* pNode = (const SS3MigrateDatabaseStmt*)pObj;
×
6145

6146
  int32_t code = tjsonAddStringToObject(pJson, jkS3MigrateDatabaseStmtDbName, pNode->dbName);
×
6147

6148
  return code;
×
6149
}
6150

6151
static int32_t jsonToS3MigrateDatabaseStmt(const SJson* pJson, void* pObj) {
×
6152
  SS3MigrateDatabaseStmt* pNode = (SS3MigrateDatabaseStmt*)pObj;
×
6153

6154
  int32_t code = tjsonGetStringValue(pJson, jkS3MigrateDatabaseStmtDbName, pNode->dbName);
×
6155

6156
  return code;
×
6157
}
6158

6159
static const char* jkCreateTableStmtDbName = "DbName";
6160
static const char* jkCreateTableStmtTableName = "TableName";
6161
static const char* jkCreateTableStmtIgnoreExists = "IgnoreExists";
6162
static const char* jkCreateTableStmtCols = "Cols";
6163
static const char* jkCreateTableStmtTags = "Tags";
6164
static const char* jkCreateTableStmtOptions = "Options";
6165

6166
static int32_t createTableStmtToJson(const void* pObj, SJson* pJson) {
×
6167
  const SCreateTableStmt* pNode = (const SCreateTableStmt*)pObj;
×
6168

6169
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTableStmtDbName, pNode->dbName);
×
6170
  if (TSDB_CODE_SUCCESS == code) {
×
6171
    code = tjsonAddStringToObject(pJson, jkCreateTableStmtTableName, pNode->tableName);
×
6172
  }
6173
  if (TSDB_CODE_SUCCESS == code) {
×
6174
    code = tjsonAddBoolToObject(pJson, jkCreateTableStmtIgnoreExists, pNode->ignoreExists);
×
6175
  }
6176
  if (TSDB_CODE_SUCCESS == code) {
×
6177
    code = nodeListToJson(pJson, jkCreateTableStmtCols, pNode->pCols);
×
6178
  }
6179
  if (TSDB_CODE_SUCCESS == code) {
×
6180
    code = nodeListToJson(pJson, jkCreateTableStmtTags, pNode->pTags);
×
6181
  }
6182
  if (TSDB_CODE_SUCCESS == code) {
×
6183
    code = tjsonAddObject(pJson, jkCreateTableStmtOptions, nodeToJson, pNode->pOptions);
×
6184
  }
6185

6186
  return code;
×
6187
}
6188

6189
static int32_t jsonToCreateTableStmt(const SJson* pJson, void* pObj) {
×
6190
  SCreateTableStmt* pNode = (SCreateTableStmt*)pObj;
×
6191

6192
  int32_t code = tjsonGetStringValue(pJson, jkCreateTableStmtDbName, pNode->dbName);
×
6193
  if (TSDB_CODE_SUCCESS == code) {
×
6194
    code = tjsonGetStringValue(pJson, jkCreateTableStmtTableName, pNode->tableName);
×
6195
  }
6196
  if (TSDB_CODE_SUCCESS == code) {
×
6197
    code = tjsonGetBoolValue(pJson, jkCreateTableStmtIgnoreExists, &pNode->ignoreExists);
×
6198
  }
6199
  if (TSDB_CODE_SUCCESS == code) {
×
6200
    code = jsonToNodeList(pJson, jkCreateTableStmtCols, &pNode->pCols);
×
6201
  }
6202
  if (TSDB_CODE_SUCCESS == code) {
×
6203
    code = jsonToNodeList(pJson, jkCreateTableStmtTags, &pNode->pTags);
×
6204
  }
6205
  if (TSDB_CODE_SUCCESS == code) {
×
6206
    code = jsonToNodeObject(pJson, jkCreateTableStmtOptions, (SNode**)&pNode->pOptions);
×
6207
  }
6208

6209
  return code;
×
6210
}
6211

6212
static const char* jkCreateSubTableClauseDbName = "DbName";
6213
static const char* jkCreateSubTableClauseTableName = "TableName";
6214
static const char* jkCreateSubTableClauseUseDbName = "UseDbName";
6215
static const char* jkCreateSubTableClauseUseTableName = "UseTableName";
6216
static const char* jkCreateSubTableClauseIgnoreExists = "IgnoreExists";
6217
static const char* jkCreateSubTableClauseSpecificTags = "SpecificTags";
6218
static const char* jkCreateSubTableClauseValsOfTags = "ValsOfTags";
6219
static const char* jkCreateSubTableClauseOptions = "Options";
6220

6221
static int32_t createSubTableClauseToJson(const void* pObj, SJson* pJson) {
×
6222
  const SCreateSubTableClause* pNode = (const SCreateSubTableClause*)pObj;
×
6223

6224
  int32_t code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
×
6225
  if (TSDB_CODE_SUCCESS == code) {
×
6226
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
×
6227
  }
6228
  if (TSDB_CODE_SUCCESS == code) {
×
6229
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
×
6230
  }
6231
  if (TSDB_CODE_SUCCESS == code) {
×
6232
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
×
6233
  }
6234
  if (TSDB_CODE_SUCCESS == code) {
×
6235
    code = tjsonAddBoolToObject(pJson, jkCreateSubTableClauseIgnoreExists, pNode->ignoreExists);
×
6236
  }
6237
  if (TSDB_CODE_SUCCESS == code) {
×
6238
    code = nodeListToJson(pJson, jkCreateSubTableClauseSpecificTags, pNode->pSpecificTags);
×
6239
  }
6240
  if (TSDB_CODE_SUCCESS == code) {
×
6241
    code = nodeListToJson(pJson, jkCreateSubTableClauseValsOfTags, pNode->pValsOfTags);
×
6242
  }
6243
  if (TSDB_CODE_SUCCESS == code) {
×
6244
    code = tjsonAddObject(pJson, jkCreateSubTableClauseOptions, nodeToJson, pNode->pOptions);
×
6245
  }
6246

6247
  return code;
×
6248
}
6249

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

6253
  int32_t code = tjsonGetStringValue(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
×
6254
  if (TSDB_CODE_SUCCESS == code) {
×
6255
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
×
6256
  }
6257
  if (TSDB_CODE_SUCCESS == code) {
×
6258
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
×
6259
  }
6260
  if (TSDB_CODE_SUCCESS == code) {
×
6261
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
×
6262
  }
6263
  if (TSDB_CODE_SUCCESS == code) {
×
6264
    code = tjsonGetBoolValue(pJson, jkCreateSubTableClauseIgnoreExists, &pNode->ignoreExists);
×
6265
  }
6266
  if (TSDB_CODE_SUCCESS == code) {
×
6267
    code = jsonToNodeList(pJson, jkCreateSubTableClauseSpecificTags, &pNode->pSpecificTags);
×
6268
  }
6269
  if (TSDB_CODE_SUCCESS == code) {
×
6270
    code = jsonToNodeList(pJson, jkCreateSubTableClauseValsOfTags, &pNode->pValsOfTags);
×
6271
  }
6272
  if (TSDB_CODE_SUCCESS == code) {
×
6273
    code = jsonToNodeObject(pJson, jkCreateSubTableClauseOptions, (SNode**)&pNode->pOptions);
×
6274
  }
6275

6276
  return code;
×
6277
}
6278

6279
static const char* jkCreateMultiTablesStmtSubTables = "SubTables";
6280

6281
static int32_t createMultiTablesStmtToJson(const void* pObj, SJson* pJson) {
×
6282
  const SCreateMultiTablesStmt* pNode = (const SCreateMultiTablesStmt*)pObj;
×
6283
  return nodeListToJson(pJson, jkCreateMultiTablesStmtSubTables, pNode->pSubTables);
×
6284
}
6285

6286
static int32_t jsonToCreateMultiTablesStmt(const SJson* pJson, void* pObj) {
×
6287
  SCreateMultiTablesStmt* pNode = (SCreateMultiTablesStmt*)pObj;
×
6288
  return jsonToNodeList(pJson, jkCreateMultiTablesStmtSubTables, &pNode->pSubTables);
×
6289
}
6290

6291
static const char* jkDropTableClauseDbName = "DbName";
6292
static const char* jkDropTableClauseTableName = "TableName";
6293
static const char* jkDropTableClauseIgnoreNotExists = "IgnoreNotExists";
6294

6295
static int32_t dropTableClauseToJson(const void* pObj, SJson* pJson) {
×
6296
  const SDropTableClause* pNode = (const SDropTableClause*)pObj;
×
6297

6298
  int32_t code = tjsonAddStringToObject(pJson, jkDropTableClauseDbName, pNode->dbName);
×
6299
  if (TSDB_CODE_SUCCESS == code) {
×
6300
    code = tjsonAddStringToObject(pJson, jkDropTableClauseTableName, pNode->tableName);
×
6301
  }
6302
  if (TSDB_CODE_SUCCESS == code) {
×
6303
    code = tjsonAddBoolToObject(pJson, jkDropTableClauseIgnoreNotExists, pNode->ignoreNotExists);
×
6304
  }
6305

6306
  return code;
×
6307
}
6308

6309
static int32_t jsonToDropTableClause(const SJson* pJson, void* pObj) {
×
6310
  SDropTableClause* pNode = (SDropTableClause*)pObj;
×
6311

6312
  int32_t code = tjsonGetStringValue(pJson, jkDropTableClauseDbName, pNode->dbName);
×
6313
  if (TSDB_CODE_SUCCESS == code) {
×
6314
    code = tjsonGetStringValue(pJson, jkDropTableClauseTableName, pNode->tableName);
×
6315
  }
6316
  if (TSDB_CODE_SUCCESS == code) {
×
6317
    code = tjsonGetBoolValue(pJson, jkDropTableClauseIgnoreNotExists, &pNode->ignoreNotExists);
×
6318
  }
6319

6320
  return code;
×
6321
}
6322

6323
static const char* jkDropTableStmtTables = "Tables";
6324

6325
static int32_t dropTableStmtToJson(const void* pObj, SJson* pJson) {
×
6326
  const SDropTableStmt* pNode = (const SDropTableStmt*)pObj;
×
6327
  return nodeListToJson(pJson, jkDropTableStmtTables, pNode->pTables);
×
6328
}
6329

6330
static int32_t jsonToDropTableStmt(const SJson* pJson, void* pObj) {
×
6331
  SDropTableStmt* pNode = (SDropTableStmt*)pObj;
×
6332
  return jsonToNodeList(pJson, jkDropTableStmtTables, &pNode->pTables);
×
6333
}
6334

6335
static const char* jkDropSuperTableStmtDbName = "DbName";
6336
static const char* jkDropSuperTableStmtTableName = "TableName";
6337
static const char* jkDropSuperTableStmtIgnoreNotExists = "IgnoreNotExists";
6338
static const char* jkDropSuperTableStmtwithOpt = "withOpt";
6339

6340
static int32_t dropStableStmtToJson(const void* pObj, SJson* pJson) {
×
6341
  const SDropSuperTableStmt* pNode = (const SDropSuperTableStmt*)pObj;
×
6342

6343
  int32_t code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
×
6344
  if (TSDB_CODE_SUCCESS == code) {
×
6345
    code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
×
6346
  }
6347
  if (TSDB_CODE_SUCCESS == code) {
×
6348
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtIgnoreNotExists, pNode->ignoreNotExists);
×
6349
  }
6350
  if (TSDB_CODE_SUCCESS == code) {
×
6351
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtwithOpt, pNode->withOpt);
×
6352
  }
6353

6354
  return code;
×
6355
}
6356

6357
static int32_t jsonToDropStableStmt(const SJson* pJson, void* pObj) {
×
6358
  SDropSuperTableStmt* pNode = (SDropSuperTableStmt*)pObj;
×
6359

6360
  int32_t code = tjsonGetStringValue(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
×
6361
  if (TSDB_CODE_SUCCESS == code) {
×
6362
    code = tjsonGetStringValue(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
×
6363
  }
6364
  if (TSDB_CODE_SUCCESS == code) {
×
6365
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
6366
  }
6367
  if (TSDB_CODE_SUCCESS == code) {
×
6368
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtwithOpt, &pNode->withOpt);
×
6369
  }
6370

6371
  return code;
×
6372
}
6373

6374
static const char* jkAlterTableStmtDbName = "DbName";
6375
static const char* jkAlterTableStmtTableName = "TableName";
6376
static const char* jkAlterTableStmtAlterType = "AlterType";
6377
static const char* jkAlterTableStmtColName = "ColName";
6378
static const char* jkAlterTableStmtNewColName = "NewColName";
6379
static const char* jkAlterTableStmtOptions = "Options";
6380
static const char* jkAlterTableStmtNewDataType = "NewDataType";
6381
static const char* jkAlterTableStmtNewTagVal = "NewTagVal";
6382

6383
static int32_t alterTableStmtToJson(const void* pObj, SJson* pJson) {
×
6384
  const SAlterTableStmt* pNode = (const SAlterTableStmt*)pObj;
×
6385

6386
  int32_t code = tjsonAddStringToObject(pJson, jkAlterTableStmtDbName, pNode->dbName);
×
6387
  if (TSDB_CODE_SUCCESS == code) {
×
6388
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtTableName, pNode->tableName);
×
6389
  }
6390
  if (TSDB_CODE_SUCCESS == code) {
×
6391
    code = tjsonAddIntegerToObject(pJson, jkAlterTableStmtAlterType, pNode->alterType);
×
6392
  }
6393
  if (TSDB_CODE_SUCCESS == code) {
×
6394
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtColName, pNode->colName);
×
6395
  }
6396
  if (TSDB_CODE_SUCCESS == code) {
×
6397
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtNewColName, pNode->newColName);
×
6398
  }
6399
  if (TSDB_CODE_SUCCESS == code) {
×
6400
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pOptions);
×
6401
  }
6402
  if (TSDB_CODE_SUCCESS == code) {
×
6403
    code = tjsonAddObject(pJson, jkAlterTableStmtNewDataType, dataTypeToJson, &pNode->dataType);
×
6404
  }
6405
  if (TSDB_CODE_SUCCESS == code) {
×
6406
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pVal);
×
6407
  }
6408

6409
  return code;
×
6410
}
6411

6412
static int32_t jsonToAlterTableStmt(const SJson* pJson, void* pObj) {
×
6413
  SAlterTableStmt* pNode = (SAlterTableStmt*)pObj;
×
6414

6415
  int32_t code = tjsonGetStringValue(pJson, jkAlterTableStmtDbName, pNode->dbName);
×
6416
  if (TSDB_CODE_SUCCESS == code) {
×
6417
    code = tjsonGetStringValue(pJson, jkAlterTableStmtTableName, pNode->tableName);
×
6418
  }
6419
  if (TSDB_CODE_SUCCESS == code) {
×
6420
    code = tjsonGetTinyIntValue(pJson, jkAlterTableStmtAlterType, &pNode->alterType);
×
6421
  }
6422
  if (TSDB_CODE_SUCCESS == code) {
×
6423
    code = tjsonGetStringValue(pJson, jkAlterTableStmtColName, pNode->colName);
×
6424
  }
6425
  if (TSDB_CODE_SUCCESS == code) {
×
6426
    code = tjsonGetStringValue(pJson, jkAlterTableStmtNewColName, pNode->newColName);
×
6427
  }
6428
  if (TSDB_CODE_SUCCESS == code) {
×
6429
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pOptions);
×
6430
  }
6431
  if (TSDB_CODE_SUCCESS == code) {
×
6432
    code = tjsonToObject(pJson, jkAlterTableStmtNewDataType, jsonToDataType, &pNode->dataType);
×
6433
  }
6434
  if (TSDB_CODE_SUCCESS == code) {
×
6435
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pVal);
×
6436
  }
6437

6438
  return code;
×
6439
}
6440

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

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

6445
static const char* jkCreateUserStmtUserName = "UserName";
6446
static const char* jkCreateUserStmtPassword = "Password";
6447
static const char* jkCreateUserStmtSysinfo = "Sysinfo";
6448

6449
static int32_t createUserStmtToJson(const void* pObj, SJson* pJson) {
×
6450
  const SCreateUserStmt* pNode = (const SCreateUserStmt*)pObj;
×
6451

6452
  int32_t code = tjsonAddStringToObject(pJson, jkCreateUserStmtUserName, pNode->userName);
×
6453
  if (TSDB_CODE_SUCCESS == code) {
×
6454
    code = tjsonAddStringToObject(pJson, jkCreateUserStmtPassword, pNode->password);
×
6455
  }
6456
  if (TSDB_CODE_SUCCESS == code) {
×
6457
    code = tjsonAddIntegerToObject(pJson, jkCreateUserStmtSysinfo, pNode->sysinfo);
×
6458
  }
6459

6460
  return code;
×
6461
}
6462

6463
static int32_t jsonToCreateUserStmt(const SJson* pJson, void* pObj) {
×
6464
  SCreateUserStmt* pNode = (SCreateUserStmt*)pObj;
×
6465

6466
  int32_t code = tjsonGetStringValue(pJson, jkCreateUserStmtUserName, pNode->userName);
×
6467
  if (TSDB_CODE_SUCCESS == code) {
×
6468
    code = tjsonGetStringValue(pJson, jkCreateUserStmtPassword, pNode->password);
×
6469
  }
6470
  if (TSDB_CODE_SUCCESS == code) {
×
6471
    code = tjsonGetTinyIntValue(pJson, jkCreateUserStmtSysinfo, &pNode->sysinfo);
×
6472
  }
6473

6474
  return code;
×
6475
}
6476

6477
static const char* jkAlterUserStmtUserName = "UserName";
6478
static const char* jkAlterUserStmtAlterType = "AlterType";
6479
static const char* jkAlterUserStmtPassword = "Password";
6480
static const char* jkAlterUserStmtEnable = "Enable";
6481
static const char* jkAlterUserStmtSysinfo = "Sysinfo";
6482
static const char* jkAlterUserStmtCreatedb = "Createdb";
6483

6484
static int32_t alterUserStmtToJson(const void* pObj, SJson* pJson) {
×
6485
  const SAlterUserStmt* pNode = (const SAlterUserStmt*)pObj;
×
6486

6487
  int32_t code = tjsonAddStringToObject(pJson, jkAlterUserStmtUserName, pNode->userName);
×
6488
  if (TSDB_CODE_SUCCESS == code) {
×
6489
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtAlterType, pNode->alterType);
×
6490
  }
6491
  if (TSDB_CODE_SUCCESS == code) {
×
6492
    code = tjsonAddStringToObject(pJson, jkAlterUserStmtPassword, pNode->password);
×
6493
  }
6494
  if (TSDB_CODE_SUCCESS == code) {
×
6495
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtEnable, pNode->enable);
×
6496
  }
6497
  if (TSDB_CODE_SUCCESS == code) {
×
6498
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtSysinfo, pNode->sysinfo);
×
6499
  }
6500
  if (TSDB_CODE_SUCCESS == code) {
×
6501
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtCreatedb, pNode->createdb);
×
6502
  }
6503

6504
  return code;
×
6505
}
6506

6507
static int32_t jsonToAlterUserStmt(const SJson* pJson, void* pObj) {
×
6508
  SAlterUserStmt* pNode = (SAlterUserStmt*)pObj;
×
6509

6510
  int32_t code = tjsonGetStringValue(pJson, jkAlterUserStmtUserName, pNode->userName);
×
6511
  if (TSDB_CODE_SUCCESS == code) {
×
6512
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtAlterType, &pNode->alterType);
×
6513
  }
6514
  if (TSDB_CODE_SUCCESS == code) {
×
6515
    code = tjsonGetStringValue(pJson, jkAlterUserStmtPassword, pNode->password);
×
6516
  }
6517
  if (TSDB_CODE_SUCCESS == code) {
×
6518
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtEnable, &pNode->enable);
×
6519
  }
6520
  if (TSDB_CODE_SUCCESS == code) {
×
6521
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtSysinfo, &pNode->sysinfo);
×
6522
  }
6523
  if (TSDB_CODE_SUCCESS == code) {
×
6524
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtCreatedb, &pNode->createdb);
×
6525
  }
6526

6527
  return code;
×
6528
}
6529

6530
static const char* jkDropUserStmtUserName = "UserName";
6531

6532
static int32_t dropUserStmtToJson(const void* pObj, SJson* pJson) {
×
6533
  const SDropUserStmt* pNode = (const SDropUserStmt*)pObj;
×
6534
  return tjsonAddStringToObject(pJson, jkDropUserStmtUserName, pNode->userName);
×
6535
}
6536

6537
static int32_t jsonToDropUserStmt(const SJson* pJson, void* pObj) {
×
6538
  SDropUserStmt* pNode = (SDropUserStmt*)pObj;
×
6539
  return tjsonGetStringValue(pJson, jkDropUserStmtUserName, pNode->userName);
×
6540
}
6541

6542
static const char* jkUseDatabaseStmtDbName = "DbName";
6543

6544
static int32_t useDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6545
  const SUseDatabaseStmt* pNode = (const SUseDatabaseStmt*)pObj;
×
6546
  return tjsonAddStringToObject(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
×
6547
}
6548

6549
static int32_t jsonToUseDatabaseStmt(const SJson* pJson, void* pObj) {
×
6550
  SUseDatabaseStmt* pNode = (SUseDatabaseStmt*)pObj;
×
6551
  return tjsonGetStringValue(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
×
6552
}
6553

6554
static const char* jkCreateDnodeStmtFqdn = "Fqdn";
6555
static const char* jkCreateDnodeStmtPort = "Port";
6556

6557
static int32_t createDnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6558
  const SCreateDnodeStmt* pNode = (const SCreateDnodeStmt*)pObj;
×
6559

6560
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
×
6561
  if (TSDB_CODE_SUCCESS == code) {
×
6562
    code = tjsonAddIntegerToObject(pJson, jkCreateDnodeStmtPort, pNode->port);
×
6563
  }
6564

6565
  return code;
×
6566
}
6567

6568
static int32_t jsonToCreateDnodeStmt(const SJson* pJson, void* pObj) {
×
6569
  SCreateDnodeStmt* pNode = (SCreateDnodeStmt*)pObj;
×
6570

6571
  int32_t code = tjsonGetStringValue(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
×
6572
  if (TSDB_CODE_SUCCESS == code) {
×
6573
    code = tjsonGetIntValue(pJson, jkCreateDnodeStmtPort, &pNode->port);
×
6574
  }
6575

6576
  return code;
×
6577
}
6578

6579
static const char* jkAlterDnodeStmtDnodeId = "DnodeId";
6580
static const char* jkAlterDnodeStmtConfig = "Config";
6581
static const char* jkAlterDnodeStmtValue = "Value";
6582

6583
static int32_t alterDnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6584
  const SAlterDnodeStmt* pNode = (const SAlterDnodeStmt*)pObj;
×
6585

6586
  int32_t code = tjsonAddIntegerToObject(pJson, jkAlterDnodeStmtDnodeId, pNode->dnodeId);
×
6587
  if (TSDB_CODE_SUCCESS == code) {
×
6588
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtConfig, pNode->config);
×
6589
  }
6590
  if (TSDB_CODE_SUCCESS == code) {
×
6591
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtValue, pNode->value);
×
6592
  }
6593

6594
  return code;
×
6595
}
6596

6597
static int32_t jsonToAlterDnodeStmt(const SJson* pJson, void* pObj) {
×
6598
  SAlterDnodeStmt* pNode = (SAlterDnodeStmt*)pObj;
×
6599

6600
  int32_t code = tjsonGetIntValue(pJson, jkAlterDnodeStmtDnodeId, &pNode->dnodeId);
×
6601
  if (TSDB_CODE_SUCCESS == code) {
×
6602
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtConfig, pNode->config);
×
6603
  }
6604
  if (TSDB_CODE_SUCCESS == code) {
×
6605
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtValue, pNode->value);
×
6606
  }
6607

6608
  return code;
×
6609
}
6610

6611
static const char* jkCreateIndexStmtIndexType = "IndexType";
6612
static const char* jkCreateIndexStmtIgnoreExists = "IgnoreExists";
6613
static const char* jkCreateIndexStmtIndexDbName = "IndexDbName";
6614
static const char* jkCreateIndexStmtIndexName = "indexName";
6615
static const char* jkCreateIndexStmtDbName = "DbName";
6616
static const char* jkCreateIndexStmtTableName = "TableName";
6617
static const char* jkCreateIndexStmtCols = "Cols";
6618
static const char* jkCreateIndexStmtOptions = "Options";
6619

6620
static int32_t createIndexStmtToJson(const void* pObj, SJson* pJson) {
×
6621
  const SCreateIndexStmt* pNode = (const SCreateIndexStmt*)pObj;
×
6622

6623
  int32_t code = tjsonAddIntegerToObject(pJson, jkCreateIndexStmtIndexType, pNode->indexType);
×
6624
  if (TSDB_CODE_SUCCESS == code) {
×
6625
    code = tjsonAddBoolToObject(pJson, jkCreateIndexStmtIgnoreExists, pNode->ignoreExists);
×
6626
  }
6627
  if (TSDB_CODE_SUCCESS == code) {
×
6628
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
×
6629
  }
6630
  if (TSDB_CODE_SUCCESS == code) {
×
6631
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
×
6632
  }
6633
  if (TSDB_CODE_SUCCESS == code) {
×
6634
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtDbName, pNode->dbName);
×
6635
  }
6636
  if (TSDB_CODE_SUCCESS == code) {
×
6637
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtTableName, pNode->tableName);
×
6638
  }
6639
  if (TSDB_CODE_SUCCESS == code) {
×
6640
    code = nodeListToJson(pJson, jkCreateIndexStmtCols, pNode->pCols);
×
6641
  }
6642
  if (TSDB_CODE_SUCCESS == code) {
×
6643
    code = tjsonAddObject(pJson, jkCreateIndexStmtOptions, nodeToJson, pNode->pOptions);
×
6644
  }
6645

6646
  return code;
×
6647
}
6648

6649
static int32_t jsonToCreateIndexStmt(const SJson* pJson, void* pObj) {
×
6650
  SCreateIndexStmt* pNode = (SCreateIndexStmt*)pObj;
×
6651

6652
  int32_t code = TSDB_CODE_SUCCESS;
×
6653
  tjsonGetNumberValue(pJson, jkCreateIndexStmtIndexType, pNode->indexType, code);
×
6654
  if (TSDB_CODE_SUCCESS == code) {
×
6655
    code = tjsonGetBoolValue(pJson, jkCreateIndexStmtIgnoreExists, &pNode->ignoreExists);
×
6656
  }
6657
  if (TSDB_CODE_SUCCESS == code) {
×
6658
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
×
6659
  }
6660
  if (TSDB_CODE_SUCCESS == code) {
×
6661
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
×
6662
  }
6663
  if (TSDB_CODE_SUCCESS == code) {
×
6664
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtDbName, pNode->dbName);
×
6665
  }
6666
  if (TSDB_CODE_SUCCESS == code) {
×
6667
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtTableName, pNode->tableName);
×
6668
  }
6669
  if (TSDB_CODE_SUCCESS == code) {
×
6670
    code = jsonToNodeList(pJson, jkCreateIndexStmtCols, &pNode->pCols);
×
6671
  }
6672
  if (TSDB_CODE_SUCCESS == code) {
×
6673
    code = jsonToNodeObject(pJson, jkCreateIndexStmtOptions, (SNode**)&pNode->pOptions);
×
6674
  }
6675

6676
  return code;
×
6677
}
6678

6679
static const char* jkDropIndexStmtIgnoreNotExists = "IgnoreNotExists";
6680
static const char* jkDropIndexStmtIndexDbName = "IndexDbName";
6681
static const char* jkDropIndexStmtIndexName = "IndexName";
6682

6683
static int32_t dropIndexStmtToJson(const void* pObj, SJson* pJson) {
×
6684
  const SDropIndexStmt* pNode = (const SDropIndexStmt*)pObj;
×
6685

6686
  int32_t code = tjsonAddBoolToObject(pJson, jkDropIndexStmtIgnoreNotExists, pNode->ignoreNotExists);
×
6687
  if (TSDB_CODE_SUCCESS == code) {
×
6688
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
×
6689
  }
6690
  if (TSDB_CODE_SUCCESS == code) {
×
6691
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexName, pNode->indexName);
×
6692
  }
6693

6694
  return code;
×
6695
}
6696

6697
static int32_t jsonToDropIndexStmt(const SJson* pJson, void* pObj) {
×
6698
  SDropIndexStmt* pNode = (SDropIndexStmt*)pObj;
×
6699

6700
  int32_t code = tjsonGetBoolValue(pJson, jkDropIndexStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
6701
  if (TSDB_CODE_SUCCESS == code) {
×
6702
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
×
6703
  }
6704
  if (TSDB_CODE_SUCCESS == code) {
×
6705
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexName, pNode->indexName);
×
6706
  }
6707

6708
  return code;
×
6709
}
6710

6711
static const char* jkCreateComponentNodeStmtDnodeId = "DnodeId";
6712

6713
static int32_t createComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
6714
  const SCreateComponentNodeStmt* pNode = (const SCreateComponentNodeStmt*)pObj;
×
6715
  return tjsonAddIntegerToObject(pJson, jkCreateComponentNodeStmtDnodeId, pNode->dnodeId);
×
6716
}
6717

6718
static int32_t jsonToCreateComponentNodeStmt(const SJson* pJson, void* pObj) {
×
6719
  SCreateComponentNodeStmt* pNode = (SCreateComponentNodeStmt*)pObj;
×
6720
  return tjsonGetIntValue(pJson, jkCreateComponentNodeStmtDnodeId, &pNode->dnodeId);
×
6721
}
6722

6723
static const char* jkDropComponentNodeStmtDnodeId = "DnodeId";
6724

6725
static int32_t dropComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
6726
  const SDropComponentNodeStmt* pNode = (const SDropComponentNodeStmt*)pObj;
×
6727
  return tjsonAddIntegerToObject(pJson, jkDropComponentNodeStmtDnodeId, pNode->dnodeId);
×
6728
}
6729

6730
static int32_t jsonToDropComponentNodeStmt(const SJson* pJson, void* pObj) {
×
6731
  SDropComponentNodeStmt* pNode = (SDropComponentNodeStmt*)pObj;
×
6732
  return tjsonGetIntValue(pJson, jkDropComponentNodeStmtDnodeId, &pNode->dnodeId);
×
6733
}
6734

6735
static int32_t createQnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6736
  return createComponentNodeStmtToJson(pObj, pJson);
×
6737
}
6738

6739
static int32_t jsonToCreateQnodeStmt(const SJson* pJson, void* pObj) {
×
6740
  return jsonToCreateComponentNodeStmt(pJson, pObj);
×
6741
}
6742

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

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

6747
static const char* jkCreateAnodeStmtUrl = "Url";
6748
static const char*  jkUpdateDropANodeStmtId = "AnodeId";
6749

6750
static int32_t createAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6751
  const SCreateAnodeStmt* pNode = (const SCreateAnodeStmt*)pObj;
×
6752
  return tjsonAddStringToObject(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
6753
}
6754

6755
static int32_t jsonToCreateAnodeStmt(const SJson* pJson, void* pObj) {
×
6756
  SCreateAnodeStmt* pNode = (SCreateAnodeStmt*)pObj;
×
6757
  return tjsonGetStringValue(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
6758
}
6759

6760
static int32_t updateAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6761
  const SUpdateAnodeStmt* pNode = (const SUpdateAnodeStmt*)pObj;
×
6762
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
6763
}
6764

6765
static int32_t jsonToUpdateAnodeStmt(const SJson* pJson, void* pObj) {
×
6766
  SUpdateAnodeStmt* pNode = (SUpdateAnodeStmt*)pObj;
×
6767
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
6768
}
6769

6770
static int32_t dropAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6771
  const SDropAnodeStmt* pNode = (const SDropAnodeStmt*)pObj;
×
6772
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
6773
}
6774

6775
static int32_t jsonToDropAnodeStmt(const SJson* pJson, void* pObj) {
×
6776
  SDropAnodeStmt* pNode = (SDropAnodeStmt*)pObj;
×
6777
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
6778
}
6779

6780
static int32_t createSnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6781
  return createComponentNodeStmtToJson(pObj, pJson);
×
6782
}
6783

6784
static int32_t jsonToCreateSnodeStmt(const SJson* pJson, void* pObj) {
×
6785
  return jsonToCreateComponentNodeStmt(pJson, pObj);
×
6786
}
6787

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

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

6792
static int32_t createMnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6793
  return createComponentNodeStmtToJson(pObj, pJson);
×
6794
}
6795

6796
static int32_t jsonToCreateMnodeStmt(const SJson* pJson, void* pObj) {
×
6797
  return jsonToCreateComponentNodeStmt(pJson, pObj);
×
6798
}
6799

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

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

6804
static const char* jkDropDnodeStmtDnodeId = "DnodeId";
6805
static const char* jkDropDnodeStmtFqdn = "Fqdn";
6806
static const char* jkDropDnodeStmtPort = "Port";
6807
static const char* jkDropDnodeStmtForce = "Force";
6808
static const char* jkDropDnodeStmtUnsafe = "Unsafe";
6809

6810
static int32_t dropDnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6811
  const SDropDnodeStmt* pNode = (const SDropDnodeStmt*)pObj;
×
6812

6813
  int32_t code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtDnodeId, pNode->dnodeId);
×
6814
  if (TSDB_CODE_SUCCESS == code) {
×
6815
    code = tjsonAddStringToObject(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
×
6816
  }
6817
  if (TSDB_CODE_SUCCESS == code) {
×
6818
    code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtPort, pNode->port);
×
6819
  }
6820
  if (TSDB_CODE_SUCCESS == code) {
×
6821
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtForce, pNode->force);
×
6822
  }
6823
  if (TSDB_CODE_SUCCESS == code) {
×
6824
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtUnsafe, pNode->unsafe);
×
6825
  }
6826

6827
  return code;
×
6828
}
6829

6830
static int32_t jsonToDropDnodeStmt(const SJson* pJson, void* pObj) {
×
6831
  SDropDnodeStmt* pNode = (SDropDnodeStmt*)pObj;
×
6832

6833
  int32_t code = tjsonGetIntValue(pJson, jkDropDnodeStmtDnodeId, &pNode->dnodeId);
×
6834
  if (TSDB_CODE_SUCCESS == code) {
×
6835
    code = tjsonGetStringValue(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
×
6836
  }
6837
  if (TSDB_CODE_SUCCESS == code) {
×
6838
    code = tjsonGetIntValue(pJson, jkDropDnodeStmtPort, &pNode->port);
×
6839
  }
6840
  if (TSDB_CODE_SUCCESS == code) {
×
6841
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtForce, &pNode->force);
×
6842
  }
6843
  if (TSDB_CODE_SUCCESS == code) {
×
6844
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtUnsafe, &pNode->unsafe);
×
6845
  }
6846

6847
  return code;
×
6848
}
6849

6850
static const char* jkRestoreComponentNodeStmtDnodeId = "DnodeId";
6851

6852
static int32_t restoreComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
6853
  const SRestoreComponentNodeStmt* pNode = (const SRestoreComponentNodeStmt*)pObj;
×
6854
  return tjsonAddIntegerToObject(pJson, jkRestoreComponentNodeStmtDnodeId, pNode->dnodeId);
×
6855
}
6856

6857
static int32_t jsonToRestoreComponentNodeStmt(const SJson* pJson, void* pObj) {
×
6858
  SRestoreComponentNodeStmt* pNode = (SRestoreComponentNodeStmt*)pObj;
×
6859
  return tjsonGetIntValue(pJson, jkRestoreComponentNodeStmtDnodeId, &pNode->dnodeId);
×
6860
}
6861

6862
static int32_t jsonToRestoreDnodeStmt(const SJson* pJson, void* pObj) {
×
6863
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
6864
}
6865
static int32_t jsonToRestoreQnodeStmt(const SJson* pJson, void* pObj) {
×
6866
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
6867
}
6868
static int32_t jsonToRestoreMnodeStmt(const SJson* pJson, void* pObj) {
×
6869
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
6870
}
6871
static int32_t jsonToRestoreVnodeStmt(const SJson* pJson, void* pObj) {
×
6872
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
6873
}
6874

6875
static const char* jkCreateTopicStmtTopicName = "TopicName";
6876
static const char* jkCreateTopicStmtSubscribeDbName = "SubscribeDbName";
6877
static const char* jkCreateTopicStmtIgnoreExists = "IgnoreExists";
6878
static const char* jkCreateTopicStmtQuery = "Query";
6879

6880
static int32_t createTopicStmtToJson(const void* pObj, SJson* pJson) {
×
6881
  const SCreateTopicStmt* pNode = (const SCreateTopicStmt*)pObj;
×
6882

6883
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
×
6884
  if (TSDB_CODE_SUCCESS == code) {
×
6885
    code = tjsonAddStringToObject(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
×
6886
  }
6887
  if (TSDB_CODE_SUCCESS == code) {
×
6888
    code = tjsonAddBoolToObject(pJson, jkCreateTopicStmtIgnoreExists, pNode->ignoreExists);
×
6889
  }
6890
  if (TSDB_CODE_SUCCESS == code) {
×
6891
    code = tjsonAddObject(pJson, jkCreateTopicStmtQuery, nodeToJson, pNode->pQuery);
×
6892
  }
6893

6894
  return code;
×
6895
}
6896

6897
static int32_t jsonToCreateTopicStmt(const SJson* pJson, void* pObj) {
×
6898
  SCreateTopicStmt* pNode = (SCreateTopicStmt*)pObj;
×
6899

6900
  int32_t code = tjsonGetStringValue(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
×
6901
  if (TSDB_CODE_SUCCESS == code) {
×
6902
    code = tjsonGetStringValue(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
×
6903
  }
6904
  if (TSDB_CODE_SUCCESS == code) {
×
6905
    code = tjsonGetBoolValue(pJson, jkCreateTopicStmtIgnoreExists, &pNode->ignoreExists);
×
6906
  }
6907
  if (TSDB_CODE_SUCCESS == code) {
×
6908
    code = jsonToNodeObject(pJson, jkCreateTopicStmtQuery, &pNode->pQuery);
×
6909
  }
6910

6911
  return code;
×
6912
}
6913

6914
static const char* jkDropTopicStmtTopicName = "TopicName";
6915
static const char* jkDropTopicStmtIgnoreNotExists = "IgnoreNotExists";
6916

6917
static int32_t dropTopicStmtToJson(const void* pObj, SJson* pJson) {
×
6918
  const SDropTopicStmt* pNode = (const SDropTopicStmt*)pObj;
×
6919

6920
  int32_t code = tjsonAddStringToObject(pJson, jkDropTopicStmtTopicName, pNode->topicName);
×
6921
  if (TSDB_CODE_SUCCESS == code) {
×
6922
    code = tjsonAddBoolToObject(pJson, jkDropTopicStmtIgnoreNotExists, pNode->ignoreNotExists);
×
6923
  }
6924

6925
  return code;
×
6926
}
6927

6928
static int32_t jsonToDropTopicStmt(const SJson* pJson, void* pObj) {
×
6929
  SDropTopicStmt* pNode = (SDropTopicStmt*)pObj;
×
6930

6931
  int32_t code = tjsonGetStringValue(pJson, jkDropTopicStmtTopicName, pNode->topicName);
×
6932
  if (TSDB_CODE_SUCCESS == code) {
×
6933
    code = tjsonGetBoolValue(pJson, jkDropTopicStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
6934
  }
6935

6936
  return code;
×
6937
}
6938

6939
static const char* jkDropCGroupStmtTopicName = "TopicName";
6940
static const char* jkDropCGroupStmtConsumerGroup = "ConsumerGroup";
6941
static const char* jkDropCGroupStmtIgnoreNotExists = "IgnoreNotExists";
6942

6943
static int32_t dropConsumerGroupStmtToJson(const void* pObj, SJson* pJson) {
×
6944
  const SDropCGroupStmt* pNode = (const SDropCGroupStmt*)pObj;
×
6945

6946
  int32_t code = tjsonAddStringToObject(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
×
6947
  if (TSDB_CODE_SUCCESS == code) {
×
6948
    code = tjsonAddStringToObject(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
×
6949
  }
6950
  if (TSDB_CODE_SUCCESS == code) {
×
6951
    code = tjsonAddBoolToObject(pJson, jkDropCGroupStmtIgnoreNotExists, pNode->ignoreNotExists);
×
6952
  }
6953

6954
  return code;
×
6955
}
6956

6957
static int32_t jsonToDropConsumerGroupStmt(const SJson* pJson, void* pObj) {
×
6958
  SDropCGroupStmt* pNode = (SDropCGroupStmt*)pObj;
×
6959

6960
  int32_t code = tjsonGetStringValue(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
×
6961
  if (TSDB_CODE_SUCCESS == code) {
×
6962
    code = tjsonGetStringValue(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
×
6963
  }
6964
  if (TSDB_CODE_SUCCESS == code) {
×
6965
    code = tjsonGetBoolValue(pJson, jkDropCGroupStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
6966
  }
6967

6968
  return code;
×
6969
}
6970

6971
static const char* jkAlterClusterStmtConfig = "Config";
6972
static const char* jkAlterClusterStmtValue = "Value";
6973

6974
static int32_t alterClusterStmtToJson(const void* pObj, SJson* pJson) {
×
6975
  const SAlterClusterStmt* pNode = (const SAlterClusterStmt*)pObj;
×
6976

6977
  int32_t code = tjsonAddStringToObject(pJson, jkAlterClusterStmtConfig, pNode->config);
×
6978
  if (TSDB_CODE_SUCCESS == code) {
×
6979
    code = tjsonAddStringToObject(pJson, jkAlterClusterStmtValue, pNode->value);
×
6980
  }
6981

6982
  return code;
×
6983
}
6984

6985
static int32_t jsonToAlterClusterStmt(const SJson* pJson, void* pObj) {
×
6986
  SAlterClusterStmt* pNode = (SAlterClusterStmt*)pObj;
×
6987

6988
  int32_t code = tjsonGetStringValue(pJson, jkAlterClusterStmtConfig, pNode->config);
×
6989
  if (TSDB_CODE_SUCCESS == code) {
×
6990
    code = tjsonGetStringValue(pJson, jkAlterClusterStmtValue, pNode->value);
×
6991
  }
6992

6993
  return code;
×
6994
}
6995

6996
static const char* jkAlterLocalStmtConfig = "Config";
6997
static const char* jkAlterLocalStmtValue = "Value";
6998

6999
static int32_t alterLocalStmtToJson(const void* pObj, SJson* pJson) {
×
7000
  const SAlterLocalStmt* pNode = (const SAlterLocalStmt*)pObj;
×
7001

7002
  int32_t code = tjsonAddStringToObject(pJson, jkAlterLocalStmtConfig, pNode->config);
×
7003
  if (TSDB_CODE_SUCCESS == code) {
×
7004
    code = tjsonAddStringToObject(pJson, jkAlterLocalStmtValue, pNode->value);
×
7005
  }
7006

7007
  return code;
×
7008
}
7009

7010
static int32_t jsonToAlterLocalStmt(const SJson* pJson, void* pObj) {
×
7011
  SAlterLocalStmt* pNode = (SAlterLocalStmt*)pObj;
×
7012

7013
  int32_t code = tjsonGetStringValue(pJson, jkAlterLocalStmtConfig, pNode->config);
×
7014
  if (TSDB_CODE_SUCCESS == code) {
×
7015
    code = tjsonGetStringValue(pJson, jkAlterLocalStmtValue, pNode->value);
×
7016
  }
7017

7018
  return code;
×
7019
}
7020

7021
static const char* jkExplainStmtAnalyze = "Analyze";
7022
static const char* jkExplainStmtOptions = "Options";
7023
static const char* jkExplainStmtQuery = "Query";
7024

7025
static int32_t explainStmtToJson(const void* pObj, SJson* pJson) {
×
7026
  const SExplainStmt* pNode = (const SExplainStmt*)pObj;
×
7027

7028
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainStmtAnalyze, pNode->analyze);
×
7029
  if (TSDB_CODE_SUCCESS == code) {
×
7030
    code = tjsonAddObject(pJson, jkExplainStmtOptions, nodeToJson, pNode->pOptions);
×
7031
  }
7032
  if (TSDB_CODE_SUCCESS == code) {
×
7033
    code = tjsonAddObject(pJson, jkExplainStmtQuery, nodeToJson, pNode->pQuery);
×
7034
  }
7035

7036
  return code;
×
7037
}
7038

7039
static int32_t jsonToExplainStmt(const SJson* pJson, void* pObj) {
×
7040
  SExplainStmt* pNode = (SExplainStmt*)pObj;
×
7041

7042
  int32_t code = tjsonGetBoolValue(pJson, jkExplainStmtAnalyze, &pNode->analyze);
×
7043
  if (TSDB_CODE_SUCCESS == code) {
×
7044
    code = jsonToNodeObject(pJson, jkExplainStmtOptions, (SNode**)&pNode->pOptions);
×
7045
  }
7046
  if (TSDB_CODE_SUCCESS == code) {
×
7047
    code = jsonToNodeObject(pJson, jkExplainStmtQuery, &pNode->pQuery);
×
7048
  }
7049

7050
  return code;
×
7051
}
7052

7053
static const char* jkDescribeStmtDbName = "DbName";
7054
static const char* jkDescribeStmtTableName = "TableName";
7055

7056
static int32_t describeStmtToJson(const void* pObj, SJson* pJson) {
×
7057
  const SDescribeStmt* pNode = (const SDescribeStmt*)pObj;
×
7058

7059
  int32_t code = tjsonAddStringToObject(pJson, jkDescribeStmtDbName, pNode->dbName);
×
7060
  if (TSDB_CODE_SUCCESS == code) {
×
7061
    code = tjsonAddStringToObject(pJson, jkDescribeStmtTableName, pNode->tableName);
×
7062
  }
7063

7064
  return code;
×
7065
}
7066

7067
static int32_t jsonToDescribeStmt(const SJson* pJson, void* pObj) {
×
7068
  SDescribeStmt* pNode = (SDescribeStmt*)pObj;
×
7069

7070
  int32_t code = tjsonGetStringValue(pJson, jkDescribeStmtDbName, pNode->dbName);
×
7071
  if (TSDB_CODE_SUCCESS == code) {
×
7072
    code = tjsonGetStringValue(pJson, jkDescribeStmtTableName, pNode->tableName);
×
7073
  }
7074

7075
  return code;
×
7076
}
7077

7078
static const char* jkCompactDatabaseStmtDbName = "DbName";
7079

7080
static int32_t compactDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
7081
  const SCompactDatabaseStmt* pNode = (const SCompactDatabaseStmt*)pObj;
×
7082
  return tjsonAddStringToObject(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
×
7083
}
7084

7085
static int32_t jsonToCompactDatabaseStmt(const SJson* pJson, void* pObj) {
×
7086
  SCompactDatabaseStmt* pNode = (SCompactDatabaseStmt*)pObj;
×
7087
  return tjsonGetStringValue(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
×
7088
}
7089

7090
static const char* jkCreateStreamStmtStreamName = "StreamName";
7091
static const char* jkCreateStreamStmtTargetDbName = "TargetDbName";
7092
static const char* jkCreateStreamStmtTargetTabName = "TargetTabName";
7093
static const char* jkCreateStreamStmtIgnoreExists = "IgnoreExists";
7094
static const char* jkCreateStreamStmtOptions = "Options";
7095
static const char* jkCreateStreamStmtQuery = "Query";
7096
static const char* jkCreateStreamStmtTags = "Tags";
7097
static const char* jkCreateStreamStmtSubtable = "Subtable";
7098

7099
static int32_t createStreamStmtToJson(const void* pObj, SJson* pJson) {
×
7100
  const SCreateStreamStmt* pNode = (const SCreateStreamStmt*)pObj;
×
7101

7102
  int32_t code = tjsonAddStringToObject(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
×
7103
  if (TSDB_CODE_SUCCESS == code) {
×
7104
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
×
7105
  }
7106
  if (TSDB_CODE_SUCCESS == code) {
×
7107
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
×
7108
  }
7109
  if (TSDB_CODE_SUCCESS == code) {
×
7110
    code = tjsonAddBoolToObject(pJson, jkCreateStreamStmtIgnoreExists, pNode->ignoreExists);
×
7111
  }
7112
  if (TSDB_CODE_SUCCESS == code) {
×
7113
    code = tjsonAddObject(pJson, jkCreateStreamStmtOptions, nodeToJson, pNode->pOptions);
×
7114
  }
7115
  if (TSDB_CODE_SUCCESS == code) {
×
7116
    code = tjsonAddObject(pJson, jkCreateStreamStmtQuery, nodeToJson, pNode->pQuery);
×
7117
  }
7118
  if (TSDB_CODE_SUCCESS == code) {
×
7119
    code = nodeListToJson(pJson, jkCreateStreamStmtTags, pNode->pTags);
×
7120
  }
7121
  if (TSDB_CODE_SUCCESS == code) {
×
7122
    code = tjsonAddObject(pJson, jkCreateStreamStmtSubtable, nodeToJson, pNode->pSubtable);
×
7123
  }
7124

7125
  return code;
×
7126
}
7127

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

7131
  int32_t code = tjsonGetStringValue(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
×
7132
  if (TSDB_CODE_SUCCESS == code) {
×
7133
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
×
7134
  }
7135
  if (TSDB_CODE_SUCCESS == code) {
×
7136
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
×
7137
  }
7138
  if (TSDB_CODE_SUCCESS == code) {
×
7139
    code = tjsonGetBoolValue(pJson, jkCreateStreamStmtIgnoreExists, &pNode->ignoreExists);
×
7140
  }
7141
  if (TSDB_CODE_SUCCESS == code) {
×
7142
    code = jsonToNodeObject(pJson, jkCreateStreamStmtOptions, (SNode**)&pNode->pOptions);
×
7143
  }
7144
  if (TSDB_CODE_SUCCESS == code) {
×
7145
    code = jsonToNodeObject(pJson, jkCreateStreamStmtQuery, &pNode->pQuery);
×
7146
  }
7147
  if (TSDB_CODE_SUCCESS == code) {
×
7148
    code = jsonToNodeList(pJson, jkCreateStreamStmtTags, &pNode->pTags);
×
7149
  }
7150
  if (TSDB_CODE_SUCCESS == code) {
×
7151
    code = jsonToNodeObject(pJson, jkCreateStreamStmtSubtable, &pNode->pSubtable);
×
7152
  }
7153

7154
  return code;
×
7155
}
7156

7157
static const char* jkDropStreamStmtStreamName = "StreamName";
7158
static const char* jkDropStreamStmtIgnoreNotExists = "IgnoreNotExists";
7159

7160
static int32_t dropStreamStmtToJson(const void* pObj, SJson* pJson) {
×
7161
  const SDropStreamStmt* pNode = (const SDropStreamStmt*)pObj;
×
7162

7163
  int32_t code = tjsonAddStringToObject(pJson, jkDropStreamStmtStreamName, pNode->streamName);
×
7164
  if (TSDB_CODE_SUCCESS == code) {
×
7165
    code = tjsonAddBoolToObject(pJson, jkDropStreamStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7166
  }
7167

7168
  return code;
×
7169
}
7170

7171
static int32_t jsonToDropStreamStmt(const SJson* pJson, void* pObj) {
×
7172
  SDropStreamStmt* pNode = (SDropStreamStmt*)pObj;
×
7173

7174
  int32_t code = tjsonGetStringValue(pJson, jkDropStreamStmtStreamName, pNode->streamName);
×
7175
  if (TSDB_CODE_SUCCESS == code) {
×
7176
    code = tjsonGetBoolValue(pJson, jkDropStreamStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7177
  }
7178

7179
  return code;
×
7180
}
7181

7182
static const char* jkMergeVgroupStmtVgroupId1 = "VgroupId1";
7183
static const char* jkMergeVgroupStmtVgroupId2 = "VgroupId2";
7184

7185
static int32_t mergeVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
7186
  const SMergeVgroupStmt* pNode = (const SMergeVgroupStmt*)pObj;
×
7187

7188
  int32_t code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId1, pNode->vgId1);
×
7189
  if (TSDB_CODE_SUCCESS == code) {
×
7190
    code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId2, pNode->vgId2);
×
7191
  }
7192

7193
  return code;
×
7194
}
7195

7196
static int32_t jsonToMergeVgroupStmt(const SJson* pJson, void* pObj) {
×
7197
  SMergeVgroupStmt* pNode = (SMergeVgroupStmt*)pObj;
×
7198

7199
  int32_t code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId1, &pNode->vgId1);
×
7200
  if (TSDB_CODE_SUCCESS == code) {
×
7201
    code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId2, &pNode->vgId2);
×
7202
  }
7203

7204
  return code;
×
7205
}
7206

7207
static const char* jkRedistributeVgroupStmtVgroupId = "VgroupId";
7208
static const char* jkRedistributeVgroupStmtDnodeId1 = "DnodeId1";
7209
static const char* jkRedistributeVgroupStmtDnodeId2 = "DnodeId2";
7210
static const char* jkRedistributeVgroupStmtDnodeId3 = "DnodeId3";
7211
static const char* jkRedistributeVgroupStmtDnodes = "Dnodes";
7212

7213
static int32_t redistributeVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
7214
  const SRedistributeVgroupStmt* pNode = (const SRedistributeVgroupStmt*)pObj;
×
7215

7216
  int32_t code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtVgroupId, pNode->vgId);
×
7217
  if (TSDB_CODE_SUCCESS == code) {
×
7218
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId1, pNode->dnodeId1);
×
7219
  }
7220
  if (TSDB_CODE_SUCCESS == code) {
×
7221
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId2, pNode->dnodeId2);
×
7222
  }
7223
  if (TSDB_CODE_SUCCESS == code) {
×
7224
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId3, pNode->dnodeId3);
×
7225
  }
7226
  if (TSDB_CODE_SUCCESS == code) {
×
7227
    code = nodeListToJson(pJson, jkRedistributeVgroupStmtDnodes, pNode->pDnodes);
×
7228
  }
7229

7230
  return code;
×
7231
}
7232

7233
static int32_t jsonToRedistributeVgroupStmt(const SJson* pJson, void* pObj) {
×
7234
  SRedistributeVgroupStmt* pNode = (SRedistributeVgroupStmt*)pObj;
×
7235

7236
  int32_t code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtVgroupId, &pNode->vgId);
×
7237
  if (TSDB_CODE_SUCCESS == code) {
×
7238
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId1, &pNode->dnodeId1);
×
7239
  }
7240
  if (TSDB_CODE_SUCCESS == code) {
×
7241
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId2, &pNode->dnodeId2);
×
7242
  }
7243
  if (TSDB_CODE_SUCCESS == code) {
×
7244
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId3, &pNode->dnodeId3);
×
7245
  }
7246
  if (TSDB_CODE_SUCCESS == code) {
×
7247
    code = jsonToNodeList(pJson, jkRedistributeVgroupStmtDnodes, &pNode->pDnodes);
×
7248
  }
7249

7250
  return code;
×
7251
}
7252

7253
static const char* jkSplitVgroupStmtVgroupId = "VgroupId";
7254

7255
static int32_t splitVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
7256
  const SSplitVgroupStmt* pNode = (const SSplitVgroupStmt*)pObj;
×
7257
  return tjsonAddIntegerToObject(pJson, jkSplitVgroupStmtVgroupId, pNode->vgId);
×
7258
}
7259

7260
static int32_t jsonToSplitVgroupStmt(const SJson* pJson, void* pObj) {
×
7261
  SSplitVgroupStmt* pNode = (SSplitVgroupStmt*)pObj;
×
7262
  return tjsonGetIntValue(pJson, jkSplitVgroupStmtVgroupId, &pNode->vgId);
×
7263
}
7264

7265
static const char* jkGrantStmtUserName = "UserName";
7266
static const char* jkGrantStmtObjName = "ObjName";
7267
static const char* jkGrantStmtPrivileges = "Privileges";
7268

7269
static int32_t grantStmtToJson(const void* pObj, SJson* pJson) {
×
7270
  const SGrantStmt* pNode = (const SGrantStmt*)pObj;
×
7271

7272
  int32_t code = tjsonAddStringToObject(pJson, jkGrantStmtUserName, pNode->userName);
×
7273
  if (TSDB_CODE_SUCCESS == code) {
×
7274
    code = tjsonAddStringToObject(pJson, jkGrantStmtObjName, pNode->objName);
×
7275
  }
7276
  if (TSDB_CODE_SUCCESS == code) {
×
7277
    code = tjsonAddIntegerToObject(pJson, jkGrantStmtPrivileges, pNode->privileges);
×
7278
  }
7279

7280
  return code;
×
7281
}
7282

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

7286
  int32_t code = tjsonGetStringValue(pJson, jkGrantStmtUserName, pNode->userName);
×
7287
  if (TSDB_CODE_SUCCESS == code) {
×
7288
    code = tjsonGetStringValue(pJson, jkGrantStmtObjName, pNode->objName);
×
7289
  }
7290
  if (TSDB_CODE_SUCCESS == code) {
×
7291
    code = tjsonGetBigIntValue(pJson, jkGrantStmtPrivileges, &pNode->privileges);
×
7292
  }
7293

7294
  return code;
×
7295
}
7296

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

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

7301
static const char* jkShowStmtDbName = "DbName";
7302
static const char* jkShowStmtTbName = "TbName";
7303
static const char* jkShowStmtTableCondType = "TableCondType";
7304

7305
static int32_t showStmtToJson(const void* pObj, SJson* pJson) {
×
7306
  const SShowStmt* pNode = (const SShowStmt*)pObj;
×
7307

7308
  int32_t code = tjsonAddObject(pJson, jkShowStmtDbName, nodeToJson, pNode->pDbName);
×
7309
  if (TSDB_CODE_SUCCESS == code) {
×
7310
    code = tjsonAddObject(pJson, jkShowStmtTbName, nodeToJson, pNode->pTbName);
×
7311
  }
7312
  if (TSDB_CODE_SUCCESS == code) {
×
7313
    code = tjsonAddIntegerToObject(pJson, jkShowStmtTableCondType, pNode->tableCondType);
×
7314
  }
7315

7316
  return code;
×
7317
}
7318

7319
static int32_t jsonToShowStmt(const SJson* pJson, void* pObj) {
×
7320
  SShowStmt* pNode = (SShowStmt*)pObj;
×
7321

7322
  int32_t code = jsonToNodeObject(pJson, jkShowStmtDbName, &pNode->pDbName);
×
7323
  if (TSDB_CODE_SUCCESS == code) {
×
7324
    code = jsonToNodeObject(pJson, jkShowStmtTbName, &pNode->pTbName);
×
7325
  }
7326
  if (TSDB_CODE_SUCCESS == code) {
×
7327
    tjsonGetNumberValue(pJson, jkShowStmtTableCondType, pNode->tableCondType, code);
×
7328
  }
7329

7330
  return code;
×
7331
}
7332

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7421
static const char* jkShowDnodeVariablesStmtDnodeId = "DnodeId";
7422
static const char* jkShowDnodeVariablesStmtLikePattern = "LikePattern";
7423

7424
static int32_t showDnodeVariablesStmtToJson(const void* pObj, SJson* pJson) {
×
7425
  const SShowDnodeVariablesStmt* pNode = (const SShowDnodeVariablesStmt*)pObj;
×
7426

7427
  int32_t code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtDnodeId, nodeToJson, pNode->pDnodeId);
×
7428
  if (TSDB_CODE_SUCCESS == code) {
×
7429
    code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtLikePattern, nodeToJson, pNode->pLikePattern);
×
7430
  }
7431

7432
  return code;
×
7433
}
7434

7435
static int32_t jsonToShowDnodeVariablesStmt(const SJson* pJson, void* pObj) {
×
7436
  SShowDnodeVariablesStmt* pNode = (SShowDnodeVariablesStmt*)pObj;
×
7437

7438
  int32_t code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtDnodeId, &pNode->pDnodeId);
×
7439
  if (TSDB_CODE_SUCCESS == code) {
×
7440
    code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtLikePattern, &pNode->pLikePattern);
×
7441
  }
7442

7443
  return code;
×
7444
}
7445

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

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

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

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

7454
static const char* jkShowVnodesStmtDnodeId = "DnodeId";
7455
static const char* jkShowVnodesStmtDnodeEndpoint = "DnodeEndpoint";
7456

7457
static int32_t showVnodesStmtToJson(const void* pObj, SJson* pJson) {
×
7458
  const SShowVnodesStmt* pNode = (const SShowVnodesStmt*)pObj;
×
7459

7460
  int32_t code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeId, nodeToJson, pNode->pDnodeId);
×
7461
  if (TSDB_CODE_SUCCESS == code) {
×
7462
    code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeEndpoint, nodeToJson, pNode->pDnodeEndpoint);
×
7463
  }
7464

7465
  return code;
×
7466
}
7467

7468
static int32_t jsonToShowVnodesStmt(const SJson* pJson, void* pObj) {
×
7469
  SShowVnodesStmt* pNode = (SShowVnodesStmt*)pObj;
×
7470

7471
  int32_t code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeId, &pNode->pDnodeId);
×
7472
  if (TSDB_CODE_SUCCESS == code) {
×
7473
    code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeEndpoint, &pNode->pDnodeEndpoint);
×
7474
  }
7475

7476
  return code;
×
7477
}
7478

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

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

7483
static const char* jkShowCreateDatabaseStmtDbName = "DbName";
7484

7485
static int32_t showCreateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
7486
  const SShowCreateDatabaseStmt* pNode = (const SShowCreateDatabaseStmt*)pObj;
×
7487
  return tjsonAddStringToObject(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
×
7488
}
7489

7490
static int32_t jsonToShowCreateDatabaseStmt(const SJson* pJson, void* pObj) {
×
7491
  SShowCreateDatabaseStmt* pNode = (SShowCreateDatabaseStmt*)pObj;
×
7492
  return tjsonGetStringValue(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
×
7493
}
7494

7495
static const char* jkShowCreateTableStmtDbName = "DbName";
7496
static const char* jkShowCreateTableStmtTableName = "TableName";
7497

7498
static int32_t showCreateTableStmtToJson(const void* pObj, SJson* pJson) {
×
7499
  const SShowCreateTableStmt* pNode = (const SShowCreateTableStmt*)pObj;
×
7500

7501
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
×
7502
  if (TSDB_CODE_SUCCESS == code) {
×
7503
    code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
×
7504
  }
7505

7506
  return code;
×
7507
}
7508

7509
static int32_t jsonToShowCreateTableStmt(const SJson* pJson, void* pObj) {
×
7510
  SShowCreateTableStmt* pNode = (SShowCreateTableStmt*)pObj;
×
7511

7512
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
×
7513
  if (TSDB_CODE_SUCCESS == code) {
×
7514
    code = tjsonGetStringValue(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
×
7515
  }
7516

7517
  return code;
×
7518
}
7519

7520
static int32_t showCreateStableStmtToJson(const void* pObj, SJson* pJson) {
×
7521
  return showCreateTableStmtToJson(pObj, pJson);
×
7522
}
7523

7524
static int32_t jsonToShowCreateStableStmt(const SJson* pJson, void* pObj) {
×
7525
  return jsonToShowCreateTableStmt(pJson, pObj);
×
7526
}
7527

7528
static const char* jkShowCreateViewStmtDbName = "DbName";
7529
static const char* jkShowCreateViewStmtViewName = "ViewName";
7530

7531
static int32_t showCreateViewStmtToJson(const void* pObj, SJson* pJson) {
×
7532
  const SShowCreateViewStmt* pNode = (const SShowCreateViewStmt*)pObj;
×
7533

7534
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
7535
  if (TSDB_CODE_SUCCESS == code) {
×
7536
    code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
7537
  }
7538

7539
  return code;
×
7540
}
7541

7542
static int32_t jsonToShowCreateViewStmt(const SJson* pJson, void* pObj) {
×
7543
  SShowCreateViewStmt* pNode = (SShowCreateViewStmt*)pObj;
×
7544

7545
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
7546
  if (TSDB_CODE_SUCCESS == code) {
×
7547
    code = tjsonGetStringValue(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
7548
  }
7549

7550
  return code;
×
7551
}
7552

7553
static const char* jkShowTableDistributedStmtDbName = "DbName";
7554
static const char* jkShowTableDistributedStmtTableName = "TableName";
7555

7556
static int32_t showTableDistributedStmtToJson(const void* pObj, SJson* pJson) {
×
7557
  const SShowTableDistributedStmt* pNode = (const SShowTableDistributedStmt*)pObj;
×
7558

7559
  int32_t code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
×
7560
  if (TSDB_CODE_SUCCESS == code) {
×
7561
    code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
×
7562
  }
7563

7564
  return code;
×
7565
}
7566

7567
static int32_t jsonToShowTableDistributedStmt(const SJson* pJson, void* pObj) {
×
7568
  SShowTableDistributedStmt* pNode = (SShowTableDistributedStmt*)pObj;
×
7569

7570
  int32_t code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
×
7571
  if (TSDB_CODE_SUCCESS == code) {
×
7572
    code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
×
7573
  }
7574

7575
  return code;
×
7576
}
7577

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

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

7582
static const char* jkShowTableTagsStmtDbName = "DbName";
7583
static const char* jkShowTableTagsStmtTbName = "TbName";
7584
static const char* jkShowTableTagsStmtTags = "Tags";
7585

7586
static int32_t showTableTagsStmtToJson(const void* pObj, SJson* pJson) {
×
7587
  const SShowTableTagsStmt* pNode = (const SShowTableTagsStmt*)pObj;
×
7588

7589
  int32_t code = tjsonAddObject(pJson, jkShowTableTagsStmtDbName, nodeToJson, pNode->pDbName);
×
7590
  if (TSDB_CODE_SUCCESS == code) {
×
7591
    code = tjsonAddObject(pJson, jkShowTableTagsStmtTbName, nodeToJson, pNode->pTbName);
×
7592
  }
7593
  if (TSDB_CODE_SUCCESS == code) {
×
7594
    code = nodeListToJson(pJson, jkShowTableTagsStmtTags, pNode->pTags);
×
7595
  }
7596

7597
  return code;
×
7598
}
7599

7600
static int32_t jsonToShowTableTagsStmt(const SJson* pJson, void* pObj) {
×
7601
  SShowTableTagsStmt* pNode = (SShowTableTagsStmt*)pObj;
×
7602

7603
  int32_t code = jsonToNodeObject(pJson, jkShowTableTagsStmtDbName, &pNode->pDbName);
×
7604
  if (TSDB_CODE_SUCCESS == code) {
×
7605
    code = jsonToNodeObject(pJson, jkShowTableTagsStmtTbName, &pNode->pTbName);
×
7606
  }
7607
  if (TSDB_CODE_SUCCESS == code) {
×
7608
    code = jsonToNodeList(pJson, jkShowTableTagsStmtTags, &pNode->pTags);
×
7609
  }
7610

7611
  return code;
×
7612
}
7613

7614
static const char* jkDeleteStmtFromTable = "FromTable";
7615
static const char* jkDeleteStmtWhere = "Where";
7616
static const char* jkDeleteStmtCountFunc = "CountFunc";
7617
static const char* jkDeleteStmtTagIndexCond = "TagIndexCond";
7618
static const char* jkDeleteStmtTimeRangeStartKey = "TimeRangeStartKey";
7619
static const char* jkDeleteStmtTimeRangeEndKey = "TimeRangeEndKey";
7620
static const char* jkDeleteStmtPrecision = "Precision";
7621
static const char* jkDeleteStmtDeleteZeroRows = "DeleteZeroRows";
7622

7623
static int32_t deleteStmtToJson(const void* pObj, SJson* pJson) {
×
7624
  const SDeleteStmt* pNode = (const SDeleteStmt*)pObj;
×
7625

7626
  int32_t code = tjsonAddObject(pJson, jkDeleteStmtFromTable, nodeToJson, pNode->pFromTable);
×
7627
  if (TSDB_CODE_SUCCESS == code) {
×
7628
    code = tjsonAddObject(pJson, jkDeleteStmtWhere, nodeToJson, pNode->pWhere);
×
7629
  }
7630
  if (TSDB_CODE_SUCCESS == code) {
×
7631
    code = tjsonAddObject(pJson, jkDeleteStmtCountFunc, nodeToJson, pNode->pCountFunc);
×
7632
  }
7633
  if (TSDB_CODE_SUCCESS == code) {
×
7634
    code = tjsonAddObject(pJson, jkDeleteStmtTagIndexCond, nodeToJson, pNode->pTagCond);
×
7635
  }
7636
  if (TSDB_CODE_SUCCESS == code) {
×
7637
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeStartKey, pNode->timeRange.skey);
×
7638
  }
7639
  if (TSDB_CODE_SUCCESS == code) {
×
7640
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeEndKey, pNode->timeRange.ekey);
×
7641
  }
7642
  if (TSDB_CODE_SUCCESS == code) {
×
7643
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtPrecision, pNode->precision);
×
7644
  }
7645
  if (TSDB_CODE_SUCCESS == code) {
×
7646
    code = tjsonAddBoolToObject(pJson, jkDeleteStmtDeleteZeroRows, pNode->deleteZeroRows);
×
7647
  }
7648

7649
  return code;
×
7650
}
7651

7652
static int32_t jsonToDeleteStmt(const SJson* pJson, void* pObj) {
×
7653
  SDeleteStmt* pNode = (SDeleteStmt*)pObj;
×
7654

7655
  int32_t code = jsonToNodeObject(pJson, jkDeleteStmtFromTable, &pNode->pFromTable);
×
7656
  if (TSDB_CODE_SUCCESS == code) {
×
7657
    code = jsonToNodeObject(pJson, jkDeleteStmtWhere, &pNode->pWhere);
×
7658
  }
7659
  if (TSDB_CODE_SUCCESS == code) {
×
7660
    code = jsonToNodeObject(pJson, jkDeleteStmtCountFunc, &pNode->pCountFunc);
×
7661
  }
7662
  if (TSDB_CODE_SUCCESS == code) {
×
7663
    code = jsonToNodeObject(pJson, jkDeleteStmtTagIndexCond, &pNode->pTagCond);
×
7664
  }
7665
  if (TSDB_CODE_SUCCESS == code) {
×
7666
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeStartKey, &pNode->timeRange.skey);
×
7667
  }
7668
  if (TSDB_CODE_SUCCESS == code) {
×
7669
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeEndKey, &pNode->timeRange.ekey);
×
7670
  }
7671
  if (TSDB_CODE_SUCCESS == code) {
×
7672
    code = tjsonGetUTinyIntValue(pJson, jkDeleteStmtPrecision, &pNode->precision);
×
7673
  }
7674
  if (TSDB_CODE_SUCCESS == code) {
×
7675
    code = tjsonGetBoolValue(pJson, jkDeleteStmtDeleteZeroRows, &pNode->deleteZeroRows);
×
7676
  }
7677

7678
  return code;
×
7679
}
7680

7681
static const char* jkInsertStmtTable = "Table";
7682
static const char* jkInsertStmtCols = "Cols";
7683
static const char* jkInsertStmtQuery = "Query";
7684
static const char* jkInsertStmtPrecision = "Precision";
7685

7686
static int32_t insertStmtToJson(const void* pObj, SJson* pJson) {
×
7687
  const SInsertStmt* pNode = (const SInsertStmt*)pObj;
×
7688

7689
  int32_t code = tjsonAddObject(pJson, jkInsertStmtTable, nodeToJson, pNode->pTable);
×
7690
  if (TSDB_CODE_SUCCESS == code) {
×
7691
    code = nodeListToJson(pJson, jkInsertStmtCols, pNode->pCols);
×
7692
  }
7693
  if (TSDB_CODE_SUCCESS == code) {
×
7694
    code = tjsonAddObject(pJson, jkInsertStmtQuery, nodeToJson, pNode->pQuery);
×
7695
  }
7696
  if (TSDB_CODE_SUCCESS == code) {
×
7697
    code = tjsonAddIntegerToObject(pJson, jkInsertStmtPrecision, pNode->precision);
×
7698
  }
7699

7700
  return code;
×
7701
}
7702

7703
static int32_t jsonToInsertStmt(const SJson* pJson, void* pObj) {
×
7704
  SInsertStmt* pNode = (SInsertStmt*)pObj;
×
7705

7706
  int32_t code = jsonToNodeObject(pJson, jkInsertStmtTable, &pNode->pTable);
×
7707
  if (TSDB_CODE_SUCCESS == code) {
×
7708
    code = jsonToNodeList(pJson, jkInsertStmtCols, &pNode->pCols);
×
7709
  }
7710
  if (TSDB_CODE_SUCCESS == code) {
×
7711
    code = jsonToNodeObject(pJson, jkInsertStmtQuery, &pNode->pQuery);
×
7712
  }
7713
  if (TSDB_CODE_SUCCESS == code) {
×
7714
    code = tjsonGetUTinyIntValue(pJson, jkInsertStmtPrecision, &pNode->precision);
×
7715
  }
7716

7717
  return code;
×
7718
}
7719

7720
static const char* jkTSMAOptionFuncs = "Funcs";
7721
static const char* jkTSMAOptionCols = "Cols";
7722
static const char* jkTSMAOptionInterval = "Interval";
7723
static const char* jkTSMAOptionTsPrecision = "Precision";
7724

7725
static int32_t tsmaOptionToJson(const void* pObj, SJson* pJson) {
×
7726
  const STSMAOptions* pNode = (const STSMAOptions*)pObj;
×
7727
  int32_t code = nodeListToJson(pJson, jkTSMAOptionFuncs, pNode->pFuncs);
×
7728
  if (TSDB_CODE_SUCCESS == code) {
×
7729
    code = tjsonAddObject(pJson, jkTSMAOptionInterval, nodeToJson, pNode->pInterval);
×
7730
  }
7731
  if (TSDB_CODE_SUCCESS == code) {
×
7732
    code = tjsonAddIntegerToObject(pJson, jkTSMAOptionTsPrecision, pNode->tsPrecision);
×
7733
  }
7734
  return code;
×
7735
}
7736

7737
static int32_t jsonToTSMAOption(const SJson* pJson, void* pObj) {
×
7738
  STSMAOptions* pNode = (STSMAOptions*)pObj;
×
7739
  int32_t code = jsonToNodeList(pJson, jkTSMAOptionFuncs, &pNode->pFuncs);
×
7740
  if (TSDB_CODE_SUCCESS == code) {
×
7741
    code = jsonToNodeObject(pJson, jkTSMAOptionInterval, &pNode->pInterval);
×
7742
  }
7743
  if (TSDB_CODE_SUCCESS == code) {
×
7744
    code = tjsonGetUTinyIntValue(pJson, jkTSMAOptionTsPrecision, &pNode->tsPrecision);
×
7745
  }
7746
  return code;
×
7747
}
7748

7749
static const char* jkCreateTSMAStmtIgnoreExists = "IgnoreExists";
7750
static const char* jkCreateTSMAStmtTsmaName = "TSMAName";
7751
static const char* jkCreateTSMAStmtDbName = "DbName";
7752
static const char* jkCreateTSMAStmtTableName = "TableName";
7753
static const char* jkCreateTSMAStmtpOptions = "Options";
7754

7755
static int32_t createTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
7756
  const SCreateTSMAStmt* pNode = (const SCreateTSMAStmt*)pObj;
×
7757
  int32_t code = tjsonAddBoolToObject(pJson, jkCreateTSMAStmtIgnoreExists, pNode->ignoreExists);
×
7758
  if (TSDB_CODE_SUCCESS == code) {
×
7759
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
7760
  }
7761
  if (TSDB_CODE_SUCCESS == code) {
×
7762
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
7763
  }
7764
  if (TSDB_CODE_SUCCESS == code) {
×
7765
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
7766
  }
7767
  if (TSDB_CODE_SUCCESS == code) {
×
7768
    code = tjsonAddObject(pJson, jkCreateTSMAStmtpOptions, nodeToJson, pNode->pOptions);
×
7769
  }
7770
  return code;
×
7771
}
7772

7773
static int32_t jsonToCreateTSMAStmt(const SJson* pJson, void* pObj) {
×
7774
  SCreateTSMAStmt* pNode = (SCreateTSMAStmt*)pObj;
×
7775
  int32_t code = tjsonGetBoolValue(pJson, jkCreateTSMAStmtIgnoreExists, &pNode->ignoreExists);
×
7776
  if (TSDB_CODE_SUCCESS == code) {
×
7777
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
7778
  }
7779
  if (TSDB_CODE_SUCCESS == code) {
×
7780
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
7781
  }
7782
  if (TSDB_CODE_SUCCESS == code) {
×
7783
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
7784
  }
7785
  if (TSDB_CODE_SUCCESS == code) {
×
7786
    code = jsonToNodeObject(pJson, jkCreateTSMAStmtpOptions, (SNode**)&pNode->pOptions);
×
7787
  }
7788
  return code;
×
7789
}
7790

7791
static const char* jkDropTSMAStmtIgnoreNotExists = "IgnoreNotExists";
7792
static const char* jkDropTSMAStmtDbName = "DbName";
7793
static const char* jkDropTSMAStmtTsmaName = "TSMAName";
7794

7795
static int32_t dropTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
7796
  const SDropTSMAStmt* pNode = (const SDropTSMAStmt*)pObj;
×
7797
  int32_t code = tjsonAddBoolToObject(pJson, jkDropTSMAStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7798
  if (TSDB_CODE_SUCCESS == code) {
×
7799
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
7800
  }
7801
  if (TSDB_CODE_SUCCESS == code) {
×
7802
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
7803
  }
7804
  return code;
×
7805
}
7806

7807
static int32_t jsonToDropTSMAStmt(const SJson* pJson, void* pObj) {
×
7808
  SDropTSMAStmt* pNode = (SDropTSMAStmt*)pObj;
×
7809
  int32_t code = tjsonGetBoolValue(pJson, jkDropTSMAStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7810
  if (TSDB_CODE_SUCCESS == code) {
×
7811
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
7812
  }
7813
  if (TSDB_CODE_SUCCESS == code) {
×
7814
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
7815
  }
7816
  return code;
×
7817
}
7818

7819
static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
2,783,268✔
7820
  switch (nodeType(pObj)) {
2,783,268!
7821
    case QUERY_NODE_COLUMN:
820,933✔
7822
      return columnNodeToJson(pObj, pJson);
820,933✔
7823
    case QUERY_NODE_VALUE:
60,657✔
7824
      return valueNodeToJson(pObj, pJson);
60,657✔
7825
    case QUERY_NODE_OPERATOR:
6,587✔
7826
      return operatorNodeToJson(pObj, pJson);
6,587✔
7827
    case QUERY_NODE_LOGIC_CONDITION:
1,944✔
7828
      return logicConditionNodeToJson(pObj, pJson);
1,944✔
7829
    case QUERY_NODE_FUNCTION:
405,841✔
7830
      return functionNodeToJson(pObj, pJson);
405,841✔
7831
    case QUERY_NODE_REAL_TABLE:
1,472✔
7832
      return realTableNodeToJson(pObj, pJson);
1,472✔
7833
    case QUERY_NODE_TEMP_TABLE:
1✔
7834
      return tempTableNodeToJson(pObj, pJson);
1✔
7835
    case QUERY_NODE_JOIN_TABLE:
×
7836
      return joinTableNodeToJson(pObj, pJson);
×
7837
    case QUERY_NODE_GROUPING_SET:
×
7838
      return groupingSetNodeToJson(pObj, pJson);
×
7839
    case QUERY_NODE_ORDER_BY_EXPR:
×
7840
      return orderByExprNodeToJson(pObj, pJson);
×
7841
    case QUERY_NODE_LIMIT:
×
7842
      return limitNodeToJson(pObj, pJson);
×
7843
    case QUERY_NODE_STATE_WINDOW:
60✔
7844
      return stateWindowNodeToJson(pObj, pJson);
60✔
7845
    case QUERY_NODE_SESSION_WINDOW:
92✔
7846
      return sessionWindowNodeToJson(pObj, pJson);
92✔
7847
    case QUERY_NODE_INTERVAL_WINDOW:
703✔
7848
      return intervalWindowNodeToJson(pObj, pJson);
703✔
7849
    case QUERY_NODE_NODE_LIST:
3,036✔
7850
      return nodeListNodeToJson(pObj, pJson);
3,036✔
7851
    case QUERY_NODE_FILL:
148✔
7852
      return fillNodeToJson(pObj, pJson);
148✔
7853
    case QUERY_NODE_RAW_EXPR:
×
7854
      break;
×
7855
    case QUERY_NODE_TARGET:
703,901✔
7856
      return targetNodeToJson(pObj, pJson);
703,901✔
7857
    case QUERY_NODE_DATABLOCK_DESC:
29,282✔
7858
      return dataBlockDescNodeToJson(pObj, pJson);
29,282✔
7859
    case QUERY_NODE_SLOT_DESC:
703,274✔
7860
      return slotDescNodeToJson(pObj, pJson);
703,274✔
7861
    case QUERY_NODE_COLUMN_DEF:
×
7862
      return columnDefNodeToJson(pObj, pJson);
×
7863
    case QUERY_NODE_DOWNSTREAM_SOURCE:
×
7864
      return downstreamSourceNodeToJson(pObj, pJson);
×
7865
    case QUERY_NODE_DATABASE_OPTIONS:
×
7866
      return databaseOptionsToJson(pObj, pJson);
×
7867
    case QUERY_NODE_TABLE_OPTIONS:
×
7868
      return tableOptionsToJson(pObj, pJson);
×
7869
    case QUERY_NODE_COLUMN_OPTIONS:
×
7870
      return columnOptionsToJson(pObj, pJson);
×
7871
    case QUERY_NODE_INDEX_OPTIONS:
×
7872
      return indexOptionsToJson(pObj, pJson);
×
7873
    case QUERY_NODE_EXPLAIN_OPTIONS:
×
7874
      return explainOptionsToJson(pObj, pJson);
×
7875
    case QUERY_NODE_STREAM_OPTIONS:
×
7876
      return streamOptionsToJson(pObj, pJson);
×
7877
    case QUERY_NODE_LEFT_VALUE:
×
7878
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to serialize.
×
7879
    case QUERY_NODE_WHEN_THEN:
85✔
7880
      return whenThenNodeToJson(pObj, pJson);
85✔
7881
    case QUERY_NODE_CASE_WHEN:
85✔
7882
      return caseWhenNodeToJson(pObj, pJson);
85✔
7883
    case QUERY_NODE_EVENT_WINDOW:
9✔
7884
      return eventWindowNodeToJson(pObj, pJson);
9✔
7885
    case QUERY_NODE_WINDOW_OFFSET:
×
7886
      return windowOffsetNodeToJson(pObj, pJson);
×
7887
    case QUERY_NODE_COUNT_WINDOW:
13✔
7888
      return countWindowNodeToJson(pObj, pJson);
13✔
7889
    case QUERY_NODE_ANOMALY_WINDOW:
×
7890
      return anomalyWindowNodeToJson(pObj, pJson);
×
7891
    case QUERY_NODE_SET_OPERATOR:
×
7892
      return setOperatorToJson(pObj, pJson);
×
7893
    case QUERY_NODE_SELECT_STMT:
1,473✔
7894
      return selectStmtToJson(pObj, pJson);
1,473✔
7895
    case QUERY_NODE_VNODE_MODIFY_STMT:
×
7896
      return vnodeModifyStmtToJson(pObj, pJson);
×
7897
    case QUERY_NODE_CREATE_DATABASE_STMT:
×
7898
      return createDatabaseStmtToJson(pObj, pJson);
×
7899
    case QUERY_NODE_ALTER_DATABASE_STMT:
×
7900
      return alterDatabaseStmtToJson(pObj, pJson);
×
7901
    case QUERY_NODE_TRIM_DATABASE_STMT:
×
7902
      return trimDatabaseStmtToJson(pObj, pJson);
×
7903
    case QUERY_NODE_S3MIGRATE_DATABASE_STMT:
×
7904
      return s3migrateDatabaseStmtToJson(pObj, pJson);
×
7905
    case QUERY_NODE_CREATE_TABLE_STMT:
×
7906
      return createTableStmtToJson(pObj, pJson);
×
7907
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
×
7908
      return createSubTableClauseToJson(pObj, pJson);
×
7909
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
×
7910
      return createMultiTablesStmtToJson(pObj, pJson);
×
7911
    case QUERY_NODE_DROP_TABLE_CLAUSE:
×
7912
      return dropTableClauseToJson(pObj, pJson);
×
7913
    case QUERY_NODE_DROP_TABLE_STMT:
×
7914
      return dropTableStmtToJson(pObj, pJson);
×
7915
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
×
7916
      return dropStableStmtToJson(pObj, pJson);
×
7917
    case QUERY_NODE_ALTER_TABLE_STMT:
×
7918
      return alterTableStmtToJson(pObj, pJson);
×
7919
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
×
7920
      return alterStableStmtToJson(pObj, pJson);
×
7921
    case QUERY_NODE_CREATE_USER_STMT:
×
7922
      return createUserStmtToJson(pObj, pJson);
×
7923
    case QUERY_NODE_ALTER_USER_STMT:
×
7924
      return alterUserStmtToJson(pObj, pJson);
×
7925
    case QUERY_NODE_DROP_USER_STMT:
×
7926
      return dropUserStmtToJson(pObj, pJson);
×
7927
    case QUERY_NODE_USE_DATABASE_STMT:
×
7928
      return useDatabaseStmtToJson(pObj, pJson);
×
7929
    case QUERY_NODE_CREATE_DNODE_STMT:
×
7930
      return createDnodeStmtToJson(pObj, pJson);
×
7931
    case QUERY_NODE_DROP_DNODE_STMT:
×
7932
      return dropDnodeStmtToJson(pObj, pJson);
×
7933
    case QUERY_NODE_ALTER_DNODE_STMT:
×
7934
      return alterDnodeStmtToJson(pObj, pJson);
×
7935
    case QUERY_NODE_CREATE_INDEX_STMT:
×
7936
      return createIndexStmtToJson(pObj, pJson);
×
7937
    case QUERY_NODE_DROP_INDEX_STMT:
×
7938
      return dropIndexStmtToJson(pObj, pJson);
×
7939
    case QUERY_NODE_CREATE_QNODE_STMT:
×
7940
      return createQnodeStmtToJson(pObj, pJson);
×
7941
    case QUERY_NODE_DROP_QNODE_STMT:
×
7942
      return dropQnodeStmtToJson(pObj, pJson);
×
7943
    case QUERY_NODE_CREATE_ANODE_STMT:
×
7944
      return createAnodeStmtToJson(pObj, pJson);
×
7945
    case QUERY_NODE_DROP_ANODE_STMT:
×
7946
      return dropAnodeStmtToJson(pObj, pJson);
×
7947
    case QUERY_NODE_UPDATE_ANODE_STMT:
×
7948
      return updateAnodeStmtToJson(pObj, pJson);
×
7949
    case QUERY_NODE_CREATE_SNODE_STMT:
×
7950
      return createSnodeStmtToJson(pObj, pJson);
×
7951
    case QUERY_NODE_DROP_SNODE_STMT:
×
7952
      return dropSnodeStmtToJson(pObj, pJson);
×
7953
    case QUERY_NODE_CREATE_MNODE_STMT:
×
7954
      return createMnodeStmtToJson(pObj, pJson);
×
7955
    case QUERY_NODE_DROP_MNODE_STMT:
×
7956
      return dropMnodeStmtToJson(pObj, pJson);
×
7957
    case QUERY_NODE_CREATE_TOPIC_STMT:
×
7958
      return createTopicStmtToJson(pObj, pJson);
×
7959
    case QUERY_NODE_DROP_TOPIC_STMT:
×
7960
      return dropTopicStmtToJson(pObj, pJson);
×
7961
    case QUERY_NODE_DROP_CGROUP_STMT:
×
7962
      return dropConsumerGroupStmtToJson(pObj, pJson);
×
7963
    case QUERY_NODE_ALTER_LOCAL_STMT:
×
7964
      return alterLocalStmtToJson(pObj, pJson);
×
7965
    case QUERY_NODE_EXPLAIN_STMT:
×
7966
      return explainStmtToJson(pObj, pJson);
×
7967
    case QUERY_NODE_DESCRIBE_STMT:
×
7968
      return describeStmtToJson(pObj, pJson);
×
7969
    case QUERY_NODE_COMPACT_DATABASE_STMT:
×
7970
      return compactDatabaseStmtToJson(pObj, pJson);
×
7971
    case QUERY_NODE_CREATE_STREAM_STMT:
×
7972
      return createStreamStmtToJson(pObj, pJson);
×
7973
    case QUERY_NODE_DROP_STREAM_STMT:
×
7974
      return dropStreamStmtToJson(pObj, pJson);
×
7975
    case QUERY_NODE_BALANCE_VGROUP_STMT:
×
7976
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to serialize.
×
7977
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
×
7978
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to serialize.
×
7979
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
7980
      return TSDB_CODE_SUCCESS;
×
7981
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
7982
      return mergeVgroupStmtToJson(pObj, pJson);
×
7983
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
×
7984
      return redistributeVgroupStmtToJson(pObj, pJson);
×
7985
    case QUERY_NODE_SPLIT_VGROUP_STMT:
×
7986
      return splitVgroupStmtToJson(pObj, pJson);
×
7987
    case QUERY_NODE_GRANT_STMT:
×
7988
      return grantStmtToJson(pObj, pJson);
×
7989
    case QUERY_NODE_REVOKE_STMT:
×
7990
      return revokeStmtToJson(pObj, pJson);
×
7991
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
7992
      return alterClusterStmtToJson(pObj, pJson);
×
7993
    case QUERY_NODE_SHOW_DNODES_STMT:
×
7994
      return showDnodesStmtToJson(pObj, pJson);
×
7995
    case QUERY_NODE_SHOW_MNODES_STMT:
×
7996
      return showMnodesStmtToJson(pObj, pJson);
×
7997
    case QUERY_NODE_SHOW_QNODES_STMT:
×
7998
      return showQnodesStmtToJson(pObj, pJson);
×
7999
    case QUERY_NODE_SHOW_ANODES_STMT:
×
8000
      return showAnodesStmtToJson(pObj, pJson);
×
8001
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
8002
      return showAnodesFullStmtToJson(pObj, pJson);
×
8003
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
8004
      return showArbGroupsStmtToJson(pObj, pJson);
×
8005
    case QUERY_NODE_SHOW_CLUSTER_STMT:
×
8006
      return showClusterStmtToJson(pObj, pJson);
×
8007
    case QUERY_NODE_SHOW_DATABASES_STMT:
×
8008
      return showDatabasesStmtToJson(pObj, pJson);
×
8009
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
×
8010
      return showFunctionsStmtToJson(pObj, pJson);
×
8011
    case QUERY_NODE_SHOW_INDEXES_STMT:
×
8012
      return showIndexesStmtToJson(pObj, pJson);
×
8013
    case QUERY_NODE_SHOW_STABLES_STMT:
×
8014
      return showStablesStmtToJson(pObj, pJson);
×
8015
    case QUERY_NODE_SHOW_STREAMS_STMT:
×
8016
      return showStreamsStmtToJson(pObj, pJson);
×
8017
    case QUERY_NODE_SHOW_TABLES_STMT:
×
8018
      return showTablesStmtToJson(pObj, pJson);
×
8019
    case QUERY_NODE_SHOW_TAGS_STMT:
×
8020
      return showTagsStmtToJson(pObj, pJson);
×
8021
    case QUERY_NODE_SHOW_USERS_STMT:
×
8022
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
8023
      return showUsersStmtToJson(pObj, pJson);
×
8024
    case QUERY_NODE_SHOW_VGROUPS_STMT:
×
8025
      return showVgroupsStmtToJson(pObj, pJson);
×
8026
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
×
8027
      return showConsumersStmtToJson(pObj, pJson);
×
8028
    case QUERY_NODE_SHOW_VARIABLES_STMT:
×
8029
      return showVariablesStmtToJson(pObj, pJson);
×
8030
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
8031
      return showGrantsFullStmtToJson(pObj, pJson);
×
8032
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
8033
      return showGrantsLogsStmtToJson(pObj, pJson);
×
8034
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
8035
      return showClusterMachinesStmtToJson(pObj, pJson);
×
8036
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
8037
      return showEncryptionsStmtToJson(pObj, pJson);
×
8038
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
×
8039
      return showDnodeVariablesStmtToJson(pObj, pJson);
×
8040
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
×
8041
      return showTransactionsStmtToJson(pObj, pJson);
×
8042
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
×
8043
      return showSubscriptionsStmtToJson(pObj, pJson);
×
8044
    case QUERY_NODE_SHOW_VNODES_STMT:
×
8045
      return showVnodesStmtToJson(pObj, pJson);
×
8046
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
×
8047
      return showUserPrivilegesStmtToJson(pObj, pJson);
×
8048
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
×
8049
      return showCreateDatabaseStmtToJson(pObj, pJson);
×
8050
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
×
8051
      return showCreateTableStmtToJson(pObj, pJson);
×
8052
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
×
8053
      return showCreateStableStmtToJson(pObj, pJson);
×
8054
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
8055
      return showCreateViewStmtToJson(pObj, pJson);
×
8056
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
×
8057
      return showTableDistributedStmtToJson(pObj, pJson);
×
8058
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
×
8059
      return showLocalVariablesStmtToJson(pObj, pJson);
×
8060
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
×
8061
      return showTableTagsStmtToJson(pObj, pJson);
×
8062
    case QUERY_NODE_DELETE_STMT:
×
8063
      return deleteStmtToJson(pObj, pJson);
×
8064
    case QUERY_NODE_INSERT_STMT:
×
8065
      return insertStmtToJson(pObj, pJson);
×
8066
    case QUERY_NODE_LOGIC_PLAN_SCAN:
×
8067
      return logicScanNodeToJson(pObj, pJson);
×
8068
    case QUERY_NODE_LOGIC_PLAN_JOIN:
×
8069
      return logicJoinNodeToJson(pObj, pJson);
×
8070
    case QUERY_NODE_LOGIC_PLAN_AGG:
×
8071
      return logicAggNodeToJson(pObj, pJson);
×
8072
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
×
8073
      return logicProjectNodeToJson(pObj, pJson);
×
8074
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
×
8075
      return logicVnodeModifyNodeToJson(pObj, pJson);
×
8076
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
×
8077
      return logicExchangeNodeToJson(pObj, pJson);
×
8078
    case QUERY_NODE_LOGIC_PLAN_MERGE:
×
8079
      return logicMergeNodeToJson(pObj, pJson);
×
8080
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
×
8081
      return logicWindowNodeToJson(pObj, pJson);
×
8082
    case QUERY_NODE_LOGIC_PLAN_FILL:
×
8083
      return logicFillNodeToJson(pObj, pJson);
×
8084
    case QUERY_NODE_LOGIC_PLAN_SORT:
×
8085
      return logicSortNodeToJson(pObj, pJson);
×
8086
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
×
8087
      return logicPartitionNodeToJson(pObj, pJson);
×
8088
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
×
8089
      return logicIndefRowsFuncNodeToJson(pObj, pJson);
×
8090
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
×
8091
      return logicInterpFuncNodeToJson(pObj, pJson);
×
8092
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
8093
      return logicForecastFuncNodeToJson(pObj, pJson);
×
8094
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
8095
      return logicGroupCacheNodeToJson(pObj, pJson);
×
8096
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
8097
      return logicDynQueryCtrlNodeToJson(pObj, pJson);
×
8098
    case QUERY_NODE_LOGIC_SUBPLAN:
×
8099
      return logicSubplanToJson(pObj, pJson);
×
8100
    case QUERY_NODE_LOGIC_PLAN:
×
8101
      return logicPlanToJson(pObj, pJson);
×
8102
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
3✔
8103
      return physiTagScanNodeToJson(pObj, pJson);
3✔
8104
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
×
8105
      return physiScanNodeToJson(pObj, pJson);
×
8106
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
×
8107
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
8108
      return physiLastRowScanNodeToJson(pObj, pJson);
×
8109
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
12,350✔
8110
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
8111
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
8112
      return physiTableScanNodeToJson(pObj, pJson);
12,350✔
8113
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
×
8114
      return physiSysTableScanNodeToJson(pObj, pJson);
×
8115
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
7,615✔
8116
      return physiProjectNodeToJson(pObj, pJson);
7,615✔
8117
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
×
8118
      return physiMergeJoinNodeToJson(pObj, pJson);
×
8119
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
8120
      return physiHashJoinNodeToJson(pObj, pJson);
×
8121
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
48✔
8122
      return physiAggNodeToJson(pObj, pJson);
48✔
8123
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
×
8124
      return physiExchangeNodeToJson(pObj, pJson);
×
8125
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
×
8126
      return physiMergeNodeToJson(pObj, pJson);
×
8127
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
×
8128
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
8129
      return physiSortNodeToJson(pObj, pJson);
×
8130
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
5,199✔
8131
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
8132
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
8133
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
8134
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
8135
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
8136
      return physiIntervalNodeToJson(pObj, pJson);
5,199✔
8137
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
627✔
8138
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
8139
      return physiFillNodeToJson(pObj, pJson);
627✔
8140
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
966✔
8141
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
8142
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
8143
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
8144
      return physiSessionWindowNodeToJson(pObj, pJson);
966✔
8145
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
427✔
8146
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
8147
      return physiStateWindowNodeToJson(pObj, pJson);
427✔
8148
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
261✔
8149
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
8150
      return physiEventWindowNodeToJson(pObj, pJson);
261✔
8151
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
366✔
8152
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
8153
      return physiCountWindowNodeToJson(pObj, pJson);
366✔
8154
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
8155
      return physiAnomalyWindowNodeToJson(pObj, pJson);
×
8156
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
×
8157
      return physiPartitionNodeToJson(pObj, pJson);
×
8158
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
1,400✔
8159
      return physiStreamPartitionNodeToJson(pObj, pJson);
1,400✔
8160
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
×
8161
      return physiIndefRowsFuncNodeToJson(pObj, pJson);
×
8162
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
20✔
8163
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
8164
      return physiInterpFuncNodeToJson(pObj, pJson);
20✔
8165
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
8166
      return physiForecastFuncNodeToJson(pObj, pJson);
×
8167
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
×
8168
      return physiDispatchNodeToJson(pObj, pJson);
×
8169
    case QUERY_NODE_PHYSICAL_PLAN_INSERT:
×
8170
      break;
×
8171
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
×
8172
      return physiQueryInsertNodeToJson(pObj, pJson);
×
8173
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
×
8174
      return physiDeleteNodeToJson(pObj, pJson);
×
8175
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
8176
      return physiGroupCacheNodeToJson(pObj, pJson);
×
8177
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
8178
      return physiDynQueryCtrlNodeToJson(pObj, pJson);
×
8179
    case QUERY_NODE_PHYSICAL_SUBPLAN:
12,353✔
8180
      return subplanToJson(pObj, pJson);
12,353✔
8181
    case QUERY_NODE_PHYSICAL_PLAN:
2,037✔
8182
      return planToJson(pObj, pJson);
2,037✔
8183
    default:
×
8184
      break;
×
8185
  }
8186
  nodesWarn("specificNodeToJson unknown node = %s", nodesNodeName(nodeType(pObj)));
×
8187
  return TSDB_CODE_SUCCESS;
×
8188
}
8189

8190
static int32_t jsonToSpecificNode(const SJson* pJson, void* pObj) {
4,002,511✔
8191
  switch (nodeType(pObj)) {
4,002,511!
8192
    case QUERY_NODE_COLUMN:
1,406,402✔
8193
      return jsonToColumnNode(pJson, pObj);
1,406,402✔
8194
    case QUERY_NODE_VALUE:
93,423✔
8195
      return jsonToValueNode(pJson, pObj);
93,423✔
8196
    case QUERY_NODE_OPERATOR:
16,598✔
8197
      return jsonToOperatorNode(pJson, pObj);
16,598✔
8198
    case QUERY_NODE_LOGIC_CONDITION:
6,574✔
8199
      return jsonToLogicConditionNode(pJson, pObj);
6,574✔
8200
    case QUERY_NODE_FUNCTION:
962,937✔
8201
      return jsonToFunctionNode(pJson, pObj);
962,937✔
8202
    case QUERY_NODE_REAL_TABLE:
11,315✔
8203
      return jsonToRealTableNode(pJson, pObj);
11,315✔
8204
    case QUERY_NODE_TEMP_TABLE:
1✔
8205
      return jsonToTempTableNode(pJson, pObj);
1✔
8206
    case QUERY_NODE_JOIN_TABLE:
×
8207
      return jsonToJoinTableNode(pJson, pObj);
×
8208
    case QUERY_NODE_GROUPING_SET:
×
8209
      return jsonToGroupingSetNode(pJson, pObj);
×
8210
    case QUERY_NODE_ORDER_BY_EXPR:
×
8211
      return jsonToOrderByExprNode(pJson, pObj);
×
8212
    case QUERY_NODE_LIMIT:
×
8213
      return jsonToLimitNode(pJson, pObj);
×
8214
    case QUERY_NODE_STATE_WINDOW:
2,081✔
8215
      return jsonToStateWindowNode(pJson, pObj);
2,081✔
8216
    case QUERY_NODE_SESSION_WINDOW:
198✔
8217
      return jsonToSessionWindowNode(pJson, pObj);
198✔
8218
    case QUERY_NODE_INTERVAL_WINDOW:
7,125✔
8219
      return jsonToIntervalWindowNode(pJson, pObj);
7,125✔
8220
    case QUERY_NODE_NODE_LIST:
3,213✔
8221
      return jsonToNodeListNode(pJson, pObj);
3,213✔
8222
    case QUERY_NODE_FILL:
211✔
8223
      return jsonToFillNode(pJson, pObj);
211✔
8224
    case QUERY_NODE_TARGET:
706,262✔
8225
      return jsonToTargetNode(pJson, pObj);
706,262✔
8226
    case QUERY_NODE_DATABLOCK_DESC:
28,352✔
8227
      return jsonToDataBlockDescNode(pJson, pObj);
28,352✔
8228
    case QUERY_NODE_SLOT_DESC:
705,672✔
8229
      return jsonToSlotDescNode(pJson, pObj);
705,672✔
8230
    case QUERY_NODE_COLUMN_DEF:
×
8231
      return jsonToColumnDefNode(pJson, pObj);
×
8232
    case QUERY_NODE_DOWNSTREAM_SOURCE:
×
8233
      return jsonToDownstreamSourceNode(pJson, pObj);
×
8234
    case QUERY_NODE_DATABASE_OPTIONS:
×
8235
      return jsonToDatabaseOptions(pJson, pObj);
×
8236
    case QUERY_NODE_TABLE_OPTIONS:
×
8237
      return jsonToTableOptions(pJson, pObj);
×
8238
    case QUERY_NODE_COLUMN_OPTIONS:
×
8239
      return jsonToColumnOptions(pJson, pObj);
×
8240
    case QUERY_NODE_INDEX_OPTIONS:
×
8241
      return jsonToIndexOptions(pJson, pObj);
×
8242
    case QUERY_NODE_EXPLAIN_OPTIONS:
×
8243
      return jsonToExplainOptions(pJson, pObj);
×
8244
    case QUERY_NODE_STREAM_OPTIONS:
×
8245
      return jsonToStreamOptions(pJson, pObj);
×
8246
    case QUERY_NODE_LEFT_VALUE:
×
8247
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to deserialize.
×
8248
    case QUERY_NODE_WHEN_THEN:
95✔
8249
      return jsonToWhenThenNode(pJson, pObj);
95✔
8250
    case QUERY_NODE_CASE_WHEN:
95✔
8251
      return jsonToCaseWhenNode(pJson, pObj);
95✔
8252
    case QUERY_NODE_EVENT_WINDOW:
50✔
8253
      return jsonToEventWindowNode(pJson, pObj);
50✔
8254
    case QUERY_NODE_WINDOW_OFFSET:
×
8255
      return jsonToWindowOffsetNode(pJson, pObj);
×
8256
    case QUERY_NODE_COUNT_WINDOW:
76✔
8257
      return jsonToCountWindowNode(pJson, pObj);
76✔
8258
    case QUERY_NODE_ANOMALY_WINDOW:
×
8259
      return jsonToAnomalyWindowNode(pJson, pObj);
×
8260
    case QUERY_NODE_SET_OPERATOR:
×
8261
      return jsonToSetOperator(pJson, pObj);
×
8262
    case QUERY_NODE_SELECT_STMT:
11,316✔
8263
      return jsonToSelectStmt(pJson, pObj);
11,316✔
8264
    case QUERY_NODE_VNODE_MODIFY_STMT:
×
8265
      return jsonToVnodeModifyStmt(pJson, pObj);
×
8266
    case QUERY_NODE_CREATE_DATABASE_STMT:
×
8267
      return jsonToCreateDatabaseStmt(pJson, pObj);
×
8268
    case QUERY_NODE_ALTER_DATABASE_STMT:
×
8269
      return jsonToAlterDatabaseStmt(pJson, pObj);
×
8270
    case QUERY_NODE_TRIM_DATABASE_STMT:
×
8271
      return jsonToTrimDatabaseStmt(pJson, pObj);
×
8272
    case QUERY_NODE_S3MIGRATE_DATABASE_STMT:
×
8273
      return jsonToS3MigrateDatabaseStmt(pJson, pObj);
×
8274
    case QUERY_NODE_CREATE_TABLE_STMT:
×
8275
      return jsonToCreateTableStmt(pJson, pObj);
×
8276
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
×
8277
      return jsonToCreateSubTableClause(pJson, pObj);
×
8278
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
×
8279
      return jsonToCreateMultiTablesStmt(pJson, pObj);
×
8280
    case QUERY_NODE_DROP_TABLE_CLAUSE:
×
8281
      return jsonToDropTableClause(pJson, pObj);
×
8282
    case QUERY_NODE_DROP_TABLE_STMT:
×
8283
      return jsonToDropTableStmt(pJson, pObj);
×
8284
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
×
8285
      return jsonToDropStableStmt(pJson, pObj);
×
8286
    case QUERY_NODE_ALTER_TABLE_STMT:
×
8287
      return jsonToAlterTableStmt(pJson, pObj);
×
8288
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
×
8289
      return jsonToAlterStableStmt(pJson, pObj);
×
8290
    case QUERY_NODE_CREATE_USER_STMT:
×
8291
      return jsonToCreateUserStmt(pJson, pObj);
×
8292
    case QUERY_NODE_ALTER_USER_STMT:
×
8293
      return jsonToAlterUserStmt(pJson, pObj);
×
8294
    case QUERY_NODE_DROP_USER_STMT:
×
8295
      return jsonToDropUserStmt(pJson, pObj);
×
8296
    case QUERY_NODE_USE_DATABASE_STMT:
×
8297
      return jsonToUseDatabaseStmt(pJson, pObj);
×
8298
    case QUERY_NODE_CREATE_DNODE_STMT:
×
8299
      return jsonToCreateDnodeStmt(pJson, pObj);
×
8300
    case QUERY_NODE_DROP_DNODE_STMT:
×
8301
      return jsonToDropDnodeStmt(pJson, pObj);
×
8302
    case QUERY_NODE_ALTER_DNODE_STMT:
×
8303
      return jsonToAlterDnodeStmt(pJson, pObj);
×
8304
    case QUERY_NODE_CREATE_INDEX_STMT:
×
8305
      return jsonToCreateIndexStmt(pJson, pObj);
×
8306
    case QUERY_NODE_DROP_INDEX_STMT:
×
8307
      return jsonToDropIndexStmt(pJson, pObj);
×
8308
    case QUERY_NODE_CREATE_QNODE_STMT:
×
8309
      return jsonToCreateQnodeStmt(pJson, pObj);
×
8310
    case QUERY_NODE_DROP_QNODE_STMT:
×
8311
      return jsonToDropQnodeStmt(pJson, pObj);
×
8312
    case QUERY_NODE_CREATE_SNODE_STMT:
×
8313
      return jsonToCreateSnodeStmt(pJson, pObj);
×
8314
    case QUERY_NODE_DROP_SNODE_STMT:
×
8315
      return jsonToDropSnodeStmt(pJson, pObj);
×
8316
    case QUERY_NODE_CREATE_MNODE_STMT:
×
8317
      return jsonToCreateMnodeStmt(pJson, pObj);
×
8318
    case QUERY_NODE_DROP_MNODE_STMT:
×
8319
      return jsonToDropMnodeStmt(pJson, pObj);
×
8320
    case QUERY_NODE_CREATE_TOPIC_STMT:
×
8321
      return jsonToCreateTopicStmt(pJson, pObj);
×
8322
    case QUERY_NODE_DROP_TOPIC_STMT:
×
8323
      return jsonToDropTopicStmt(pJson, pObj);
×
8324
    case QUERY_NODE_DROP_CGROUP_STMT:
×
8325
      return jsonToDropConsumerGroupStmt(pJson, pObj);
×
8326
    case QUERY_NODE_ALTER_LOCAL_STMT:
×
8327
      return jsonToAlterLocalStmt(pJson, pObj);
×
8328
    case QUERY_NODE_EXPLAIN_STMT:
×
8329
      return jsonToExplainStmt(pJson, pObj);
×
8330
    case QUERY_NODE_DESCRIBE_STMT:
×
8331
      return jsonToDescribeStmt(pJson, pObj);
×
8332
    case QUERY_NODE_COMPACT_DATABASE_STMT:
×
8333
      return jsonToCompactDatabaseStmt(pJson, pObj);
×
8334
    case QUERY_NODE_CREATE_STREAM_STMT:
×
8335
      return jsonToCreateStreamStmt(pJson, pObj);
×
8336
    case QUERY_NODE_DROP_STREAM_STMT:
×
8337
      return jsonToDropStreamStmt(pJson, pObj);
×
8338
    case QUERY_NODE_BALANCE_VGROUP_STMT:
×
8339
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to deserialize.
×
8340
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
×
8341
      return TSDB_CODE_SUCCESS;
×
8342
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
8343
      return TSDB_CODE_SUCCESS;   // SBalanceVgroupLeaderStmt has no fields to deserialize.
×
8344
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
8345
      return jsonToMergeVgroupStmt(pJson, pObj);
×
8346
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
×
8347
      return jsonToRedistributeVgroupStmt(pJson, pObj);
×
8348
    case QUERY_NODE_SPLIT_VGROUP_STMT:
×
8349
      return jsonToSplitVgroupStmt(pJson, pObj);
×
8350
    case QUERY_NODE_GRANT_STMT:
×
8351
      return jsonToGrantStmt(pJson, pObj);
×
8352
    case QUERY_NODE_REVOKE_STMT:
×
8353
      return jsonToRevokeStmt(pJson, pObj);
×
8354
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
8355
      return jsonToAlterClusterStmt(pJson, pObj);
×
8356
    case QUERY_NODE_SHOW_DNODES_STMT:
×
8357
      return jsonToShowDnodesStmt(pJson, pObj);
×
8358
    case QUERY_NODE_SHOW_MNODES_STMT:
×
8359
      return jsonToShowMnodesStmt(pJson, pObj);
×
8360
    case QUERY_NODE_SHOW_QNODES_STMT:
×
8361
      return jsonToShowQnodesStmt(pJson, pObj);
×
8362
    case QUERY_NODE_SHOW_ANODES_STMT:
×
8363
      return jsonToShowAnodesStmt(pJson, pObj);
×
8364
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
8365
      return jsonToShowAnodesFullStmt(pJson, pObj);
×
8366
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
8367
      return jsonToShowArbGroupsStmt(pJson, pObj);
×
8368
    case QUERY_NODE_SHOW_CLUSTER_STMT:
×
8369
      return jsonToShowClusterStmt(pJson, pObj);
×
8370
    case QUERY_NODE_SHOW_DATABASES_STMT:
×
8371
      return jsonToShowDatabasesStmt(pJson, pObj);
×
8372
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
×
8373
      return jsonToShowFunctionsStmt(pJson, pObj);
×
8374
    case QUERY_NODE_SHOW_INDEXES_STMT:
×
8375
      return jsonToShowIndexesStmt(pJson, pObj);
×
8376
    case QUERY_NODE_SHOW_STABLES_STMT:
×
8377
      return jsonToShowStablesStmt(pJson, pObj);
×
8378
    case QUERY_NODE_SHOW_STREAMS_STMT:
×
8379
      return jsonToShowStreamsStmt(pJson, pObj);
×
8380
    case QUERY_NODE_SHOW_TABLES_STMT:
×
8381
      return jsonToShowTablesStmt(pJson, pObj);
×
8382
    case QUERY_NODE_SHOW_TAGS_STMT:
×
8383
      return jsonToShowTagsStmt(pJson, pObj);
×
8384
    case QUERY_NODE_SHOW_USERS_STMT:
×
8385
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
8386
      return jsonToShowUsersStmt(pJson, pObj);
×
8387
    case QUERY_NODE_SHOW_VGROUPS_STMT:
×
8388
      return jsonToShowVgroupsStmt(pJson, pObj);
×
8389
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
×
8390
      return jsonToShowConsumersStmt(pJson, pObj);
×
8391
    case QUERY_NODE_SHOW_VARIABLES_STMT:
×
8392
      return jsonToShowVariablesStmt(pJson, pObj);
×
8393
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
8394
      return jsonToShowGrantsFullStmt(pJson, pObj);
×
8395
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
8396
      return jsonToShowGrantsLogsStmt(pJson, pObj);
×
8397
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
8398
      return jsonToShowClusterMachinesStmt(pJson, pObj);
×
8399
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
8400
      return jsonToShowEncryptionsStmt(pJson, pObj);
×
8401
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
×
8402
      return jsonToShowDnodeVariablesStmt(pJson, pObj);
×
8403
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
×
8404
      return jsonToShowTransactionsStmt(pJson, pObj);
×
8405
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
×
8406
      return jsonToShowSubscriptionsStmt(pJson, pObj);
×
8407
    case QUERY_NODE_SHOW_VNODES_STMT:
×
8408
      return jsonToShowVnodesStmt(pJson, pObj);
×
8409
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
×
8410
      return jsonToShowUserPrivilegesStmt(pJson, pObj);
×
8411
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
×
8412
      return jsonToShowCreateDatabaseStmt(pJson, pObj);
×
8413
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
×
8414
      return jsonToShowCreateTableStmt(pJson, pObj);
×
8415
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
×
8416
      return jsonToShowCreateStableStmt(pJson, pObj);
×
8417
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
8418
      return jsonToShowCreateViewStmt(pJson, pObj);
×
8419
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
×
8420
      return jsonToShowTableDistributedStmt(pJson, pObj);
×
8421
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
×
8422
      return jsonToShowLocalVariablesStmt(pJson, pObj);
×
8423
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
×
8424
      return jsonToShowTableTagsStmt(pJson, pObj);
×
8425
    case QUERY_NODE_DELETE_STMT:
×
8426
      return jsonToDeleteStmt(pJson, pObj);
×
8427
    case QUERY_NODE_INSERT_STMT:
×
8428
      return jsonToInsertStmt(pJson, pObj);
×
8429
    case QUERY_NODE_RESTORE_DNODE_STMT:
×
8430
      return jsonToRestoreDnodeStmt(pJson, pObj);
×
8431
    case QUERY_NODE_RESTORE_QNODE_STMT:
×
8432
      return jsonToRestoreQnodeStmt(pJson, pObj);
×
8433
    case QUERY_NODE_RESTORE_MNODE_STMT:
×
8434
      return jsonToRestoreMnodeStmt(pJson, pObj);
×
8435
    case QUERY_NODE_RESTORE_VNODE_STMT:
×
8436
      return jsonToRestoreVnodeStmt(pJson, pObj);
×
8437
    case QUERY_NODE_LOGIC_PLAN_SCAN:
×
8438
      return jsonToLogicScanNode(pJson, pObj);
×
8439
    case QUERY_NODE_LOGIC_PLAN_JOIN:
×
8440
      return jsonToLogicJoinNode(pJson, pObj);
×
8441
    case QUERY_NODE_LOGIC_PLAN_AGG:
×
8442
      return jsonToLogicAggNode(pJson, pObj);
×
8443
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
×
8444
      return jsonToLogicProjectNode(pJson, pObj);
×
8445
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
×
8446
      return jsonToLogicVnodeModifyNode(pJson, pObj);
×
8447
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
×
8448
      return jsonToLogicExchangeNode(pJson, pObj);
×
8449
    case QUERY_NODE_LOGIC_PLAN_MERGE:
×
8450
      return jsonToLogicMergeNode(pJson, pObj);
×
8451
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
×
8452
      return jsonToLogicWindowNode(pJson, pObj);
×
8453
    case QUERY_NODE_LOGIC_PLAN_FILL:
×
8454
      return jsonToLogicFillNode(pJson, pObj);
×
8455
    case QUERY_NODE_LOGIC_PLAN_SORT:
×
8456
      return jsonToLogicSortNode(pJson, pObj);
×
8457
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
×
8458
      return jsonToLogicPartitionNode(pJson, pObj);
×
8459
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
×
8460
      return jsonToLogicIndefRowsFuncNode(pJson, pObj);
×
8461
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
×
8462
      return jsonToLogicInterpFuncNode(pJson, pObj);
×
8463
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
8464
      return jsonToLogicForecastFuncNode(pJson, pObj);
×
8465
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
8466
      return jsonToLogicGroupCacheNode(pJson, pObj);
×
8467
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
8468
      return jsonToLogicDynQueryCtrlNode(pJson, pObj);
×
8469
    case QUERY_NODE_LOGIC_SUBPLAN:
×
8470
      return jsonToLogicSubplan(pJson, pObj);
×
8471
    case QUERY_NODE_LOGIC_PLAN:
×
8472
      return jsonToLogicPlan(pJson, pObj);
×
8473
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
3✔
8474
      return jsonToPhysiTagScanNode(pJson, pObj);
3✔
8475
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
×
8476
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
8477
      return jsonToPhysiScanNode(pJson, pObj);
×
8478
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
×
8479
      return jsonToPhysiLastRowScanNode(pJson, pObj);
×
8480
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
11,842✔
8481
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
8482
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
8483
      return jsonToPhysiTableScanNode(pJson, pObj);
11,842✔
8484
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
×
8485
      return jsonToPhysiSysTableScanNode(pJson, pObj);
×
8486
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
7,140✔
8487
      return jsonToPhysiProjectNode(pJson, pObj);
7,140✔
8488
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
×
8489
      return jsonToPhysiMergeJoinNode(pJson, pObj);
×
8490
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
8491
      return jsonToPhysiHashJoinNode(pJson, pObj);
×
8492
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
33✔
8493
      return jsonToPhysiAggNode(pJson, pObj);
33✔
8494
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
×
8495
      return jsonToPhysiExchangeNode(pJson, pObj);
×
8496
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
×
8497
      return jsonToPhysiMergeNode(pJson, pObj);
×
8498
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
×
8499
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
8500
      return jsonToPhysiSortNode(pJson, pObj);
×
8501
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
5,256✔
8502
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
8503
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
8504
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
8505
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
8506
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
8507
      return jsonToPhysiIntervalNode(pJson, pObj);
5,256✔
8508
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
627✔
8509
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
8510
      return jsonToPhysiFillNode(pJson, pObj);
627✔
8511
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
966✔
8512
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
8513
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
8514
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
8515
      return jsonToPhysiSessionWindowNode(pJson, pObj);
966✔
8516
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
427✔
8517
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
8518
      return jsonToPhysiStateWindowNode(pJson, pObj);
427✔
8519
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
261✔
8520
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
8521
      return jsonToPhysiEventWindowNode(pJson, pObj);
261✔
8522
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
384✔
8523
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
8524
      return jsonToPhysiCountWindowNode(pJson, pObj);
384✔
8525
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
8526
      return jsonToPhysiAnomalyWindowNode(pJson, pObj);
×
8527
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
×
8528
      return jsonToPhysiPartitionNode(pJson, pObj);
×
8529
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
1,397✔
8530
      return jsonToPhysiStreamPartitionNode(pJson, pObj);
1,397✔
8531
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
×
8532
      return jsonToPhysiIndefRowsFuncNode(pJson, pObj);
×
8533
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
20✔
8534
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
8535
      return jsonToPhysiInterpFuncNode(pJson, pObj);
20✔
8536
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
8537
      return jsonToPhysiForecastFuncNode(pJson, pObj);
×
8538
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
×
8539
      return jsonToPhysiDispatchNode(pJson, pObj);
×
8540
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
×
8541
      return jsonToPhysiQueryInsertNode(pJson, pObj);
×
8542
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
×
8543
      return jsonToPhysiDeleteNode(pJson, pObj);
×
8544
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
8545
      return jsonToPhysiGroupCacheNode(pJson, pObj);
×
8546
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
8547
      return jsonToPhysiDynQueryCtrlNode(pJson, pObj);
×
8548
    case QUERY_NODE_PHYSICAL_SUBPLAN:
11,844✔
8549
      return jsonToSubplan(pJson, pObj);
11,844✔
8550
    case QUERY_NODE_PHYSICAL_PLAN:
2,028✔
8551
      return jsonToPlan(pJson, pObj);
2,028✔
8552
    default:
×
8553
      break;
×
8554
  }
8555
  nodesWarn("jsonToSpecificNode unknown node = %s", nodesNodeName(nodeType(pObj)));
×
8556
  return TSDB_CODE_SUCCESS;
×
8557
}
8558

8559
static const char* jkNodeType = "NodeType";
8560
static const char* jkNodeName = "Name";
8561

8562
static int32_t nodeToJson(const void* pObj, SJson* pJson) {
2,783,268✔
8563
  const SNode* pNode = (const SNode*)pObj;
2,783,268✔
8564

8565
  int32_t code = tjsonAddIntegerToObject(pJson, jkNodeType, pNode->type);
2,783,268✔
8566
  if (TSDB_CODE_SUCCESS == code) {
2,783,268!
8567
    code = tjsonAddStringToObject(pJson, jkNodeName, nodesNodeName(pNode->type));
2,783,268✔
8568
  }
8569
  if (TSDB_CODE_SUCCESS == code) {
2,783,268!
8570
    code = tjsonAddObject(pJson, nodesNodeName(pNode->type), specificNodeToJson, pNode);
2,783,268✔
8571
    if (TSDB_CODE_SUCCESS != code) {
2,783,268!
8572
      nodesError("%s ToJson error", nodesNodeName(pNode->type));
×
8573
    }
8574
  }
8575

8576
  return code;
2,783,268✔
8577
}
8578

8579
static int32_t jsonToNode(const SJson* pJson, void* pObj) {
4,002,012✔
8580
  SNode* pNode = (SNode*)pObj;
4,002,012✔
8581

8582
  int32_t code;
8583
  tjsonGetNumberValue(pJson, jkNodeType, pNode->type, code);
4,002,012✔
8584
  if (TSDB_CODE_SUCCESS == code) {
4,002,887!
8585
    code = tjsonToObject(pJson, nodesNodeName(pNode->type), jsonToSpecificNode, pNode);
4,002,904✔
8586
    if (TSDB_CODE_SUCCESS != code) {
4,001,474!
8587
      nodesError("%s toNode error", nodesNodeName(pNode->type));
×
8588
    }
8589
  }
8590

8591
  return code;
4,001,489✔
8592
}
8593

8594
static int32_t makeNodeByJson(const SJson* pJson, SNode** pNode) {
4,000,400✔
8595
  int32_t val = 0;
4,000,400✔
8596
  int32_t code = tjsonGetIntValue(pJson, jkNodeType, &val);
4,000,400✔
8597
  if (TSDB_CODE_SUCCESS == code) {
4,002,029!
8598
    code = nodesMakeNode(val, pNode);
4,002,040✔
8599
    if (NULL == *pNode) {
4,002,047!
8600
      return code;
×
8601
    }
8602
    code = jsonToNode(pJson, *pNode);
4,002,047✔
8603
  }
8604

8605
  return code;
4,001,502✔
8606
}
8607

8608
static int32_t jsonToNodeObject(const SJson* pJson, const char* pName, SNode** pNode) {
1,073,184✔
8609
  SJson* pJsonNode = tjsonGetObjectItem(pJson, pName);
1,073,184✔
8610
  if (NULL == pJsonNode) {
1,072,836✔
8611
    return TSDB_CODE_SUCCESS;
226,262✔
8612
  }
8613
  return makeNodeByJson(pJsonNode, pNode);
846,574✔
8614
}
8615

8616
int32_t nodesNodeToString(const SNode* pNode, bool format, char** pStr, int32_t* pLen) {
13,474✔
8617
  if (NULL == pNode || NULL == pStr) {
13,474!
8618
    terrno = TSDB_CODE_FAILED;
×
8619
    return TSDB_CODE_FAILED;
×
8620
  }
8621

8622
  SJson* pJson = tjsonCreateObject();
13,474✔
8623
  if (NULL == pJson) {
13,474!
8624
    return terrno;
×
8625
  }
8626

8627
  int32_t code = nodeToJson(pNode, pJson);
13,474✔
8628
  if (TSDB_CODE_SUCCESS != code) {
13,474!
8629
    terrno = code;
×
8630
    return code;
×
8631
  }
8632

8633
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
13,474!
8634
  tjsonDelete(pJson);
13,474✔
8635

8636
  if (NULL != pLen) {
13,474✔
8637
    *pLen = strlen(*pStr) + 1;
10,246✔
8638
  }
8639

8640
  return TSDB_CODE_SUCCESS;
13,474✔
8641
}
8642

8643
int32_t nodesStringToNode(const char* pStr, SNode** pNode) {
22,831✔
8644
  if (NULL == pStr || NULL == pNode) {
22,831!
8645
    return TSDB_CODE_SUCCESS;
×
8646
  }
8647
  SJson* pJson = tjsonParse(pStr);
22,832✔
8648
  if (NULL == pJson) {
22,831!
8649
    return TSDB_CODE_FAILED;
×
8650
  }
8651
  int32_t code = makeNodeByJson(pJson, pNode);
22,831✔
8652
  tjsonDelete(pJson);
22,831✔
8653
  if (TSDB_CODE_SUCCESS != code) {
22,831!
8654
    nodesDestroyNode(*pNode);
×
8655
    *pNode = NULL;
×
8656
    terrno = code;
×
8657
    return code;
×
8658
  }
8659
  return TSDB_CODE_SUCCESS;
22,831✔
8660
}
8661

8662
int32_t nodesListToString(const SNodeList* pList, bool format, char** pStr, int32_t* pLen) {
275✔
8663
  if (NULL == pList || NULL == pStr || NULL == pLen) {
275!
8664
    terrno = TSDB_CODE_FAILED;
×
8665
    return TSDB_CODE_FAILED;
×
8666
  }
8667

8668
  if (0 == LIST_LENGTH(pList)) {
275!
8669
    return TSDB_CODE_SUCCESS;
×
8670
  }
8671

8672
  SJson* pJson = tjsonCreateArray();
275✔
8673
  if (NULL == pJson) {
275!
8674
    return terrno;
×
8675
  }
8676

8677
  SNode* pNode;
8678
  FOREACH(pNode, pList) {
34,677!
8679
    int32_t code = tjsonAddItem(pJson, nodeToJson, pNode);
34,402✔
8680
    if (TSDB_CODE_SUCCESS != code) {
34,402!
8681
      terrno = code;
×
8682
      return code;
×
8683
    }
8684
  }
8685

8686
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
275!
8687
  tjsonDelete(pJson);
275✔
8688

8689
  *pLen = strlen(*pStr) + 1;
275✔
8690
  return TSDB_CODE_SUCCESS;
275✔
8691
}
8692

8693
int32_t nodesStringToList(const char* pStr, SNodeList** pList) {
259✔
8694
  if (NULL == pStr || NULL == pList) {
259!
8695
    return TSDB_CODE_SUCCESS;
×
8696
  }
8697
  SJson* pJson = tjsonParse(pStr);
259✔
8698
  if (NULL == pJson) {
259!
8699
    return TSDB_CODE_FAILED;
×
8700
  }
8701
  int32_t code = jsonToNodeListImpl(pJson, pList);
259✔
8702
  tjsonDelete(pJson);
259✔
8703
  if (TSDB_CODE_SUCCESS != code) {
259!
8704
    nodesDestroyList(*pList);
×
8705
    *pList = NULL;
×
8706
    terrno = code;
×
8707
    return code;
×
8708
  }
8709
  return TSDB_CODE_SUCCESS;
259✔
8710
}
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

© 2025 Coveralls, Inc