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

taosdata / TDengine / #3548

04 Dec 2024 01:03PM UTC coverage: 59.846% (-0.8%) from 60.691%
#3548

push

travis-ci

web-flow
Merge pull request #29033 from taosdata/fix/calculate-vnode-memory-used

fix/calculate-vnode-memory-used

118484 of 254183 branches covered (46.61%)

Branch coverage included in aggregate %.

199691 of 277471 relevant lines covered (71.97%)

18794141.86 hits per line

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

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

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

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

30
const char* nodesNodeName(ENodeType type) {
8,471,415✔
31
  switch (type) {
8,471,415!
32
    case QUERY_NODE_COLUMN:
2,695,412✔
33
      return "Column";
2,695,412✔
34
    case QUERY_NODE_VALUE:
212,887✔
35
      return "Value";
212,887✔
36
    case QUERY_NODE_OPERATOR:
29,474✔
37
      return "Operator";
29,474✔
38
    case QUERY_NODE_LOGIC_CONDITION:
10,156✔
39
      return "LogicCondition";
10,156✔
40
    case QUERY_NODE_FUNCTION:
1,561,926✔
41
      return "Function";
1,561,926✔
42
    case QUERY_NODE_REAL_TABLE:
13,871✔
43
      return "RealTable";
13,871✔
44
    case QUERY_NODE_TEMP_TABLE:
×
45
      return "TempTable";
×
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,166✔
55
      return "StateWindow";
2,166✔
56
    case QUERY_NODE_SESSION_WINDOW:
382✔
57
      return "SessionWinow";
382✔
58
    case QUERY_NODE_INTERVAL_WINDOW:
8,227✔
59
      return "IntervalWindow";
8,227✔
60
    case QUERY_NODE_NODE_LIST:
8,804✔
61
      return "NodeList";
8,804✔
62
    case QUERY_NODE_FILL:
531✔
63
      return "Fill";
531✔
64
    case QUERY_NODE_RAW_EXPR:
×
65
      return "RawExpr";
×
66
    case QUERY_NODE_TARGET:
1,854,283✔
67
      return "Target";
1,854,283✔
68
    case QUERY_NODE_DATABLOCK_DESC:
84,279✔
69
      return "DataBlockDesc";
84,279✔
70
    case QUERY_NODE_SLOT_DESC:
1,851,958✔
71
      return "SlotDesc";
1,851,958✔
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:
13,871✔
105
      return "SelectStmt";
13,871✔
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_SHOW_USAGE_STMT:
×
302
      return "ShowUsageStmt";
×
303
    case QUERY_NODE_DELETE_STMT:
×
304
      return "DeleteStmt";
×
305
    case QUERY_NODE_INSERT_STMT:
×
306
      return "InsertStmt";
×
307
    case QUERY_NODE_RESTORE_DNODE_STMT:
×
308
      return "RestoreDnodeStmt";
×
309
    case QUERY_NODE_RESTORE_QNODE_STMT:
×
310
      return "RestoreQnodeStmt";
×
311
    case QUERY_NODE_RESTORE_MNODE_STMT:
×
312
      return "RestoreMnodeStmt";
×
313
    case QUERY_NODE_RESTORE_VNODE_STMT:
×
314
      return "RestoreVnodeStmt";
×
315
    case QUERY_NODE_CREATE_VIEW_STMT:
×
316
      return "CreateViewStmt";
×
317
    case QUERY_NODE_DROP_VIEW_STMT:
×
318
      return "DropViewStmt";
×
319
    case QUERY_NODE_LOGIC_PLAN_SCAN:
×
320
      return "LogicScan";
×
321
    case QUERY_NODE_LOGIC_PLAN_JOIN:
×
322
      return "LogicJoin";
×
323
    case QUERY_NODE_LOGIC_PLAN_AGG:
×
324
      return "LogicAgg";
×
325
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
×
326
      return "LogicProject";
×
327
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
×
328
      return "LogicVnodeModify";
×
329
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
×
330
      return "LogicExchange";
×
331
    case QUERY_NODE_LOGIC_PLAN_MERGE:
×
332
      return "LogicMerge";
×
333
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
×
334
      return "LogicWindow";
×
335
    case QUERY_NODE_LOGIC_PLAN_FILL:
×
336
      return "LogicFill";
×
337
    case QUERY_NODE_LOGIC_PLAN_SORT:
×
338
      return "LogicSort";
×
339
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
×
340
      return "LogicPartition";
×
341
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
×
342
      return "LogicIndefRowsFunc";
×
343
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
×
344
      return "LogicInterpFunc";
×
345
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
346
      return "LogicForecastFunc";
×
347
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
348
      return "LogicGroupCache";
×
349
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
350
      return "LogicDynamicQueryCtrl";
×
351
    case QUERY_NODE_LOGIC_SUBPLAN:
×
352
      return "LogicSubplan";
×
353
    case QUERY_NODE_LOGIC_PLAN:
×
354
      return "LogicPlan";
×
355
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
9✔
356
      return "PhysiTagScan";
9✔
357
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
×
358
      return "PhysiTableScan";
×
359
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SEQ_SCAN:
×
360
      return "PhysiTableSeqScan";
×
361
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
×
362
      return "PhysiTableMergeScan";
×
363
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
35,082✔
364
      return "PhysiSreamScan";
35,082✔
365
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
×
366
      return "PhysiSystemTableScan";
×
367
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
×
368
      return "PhysiBlockDistScan";
×
369
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
×
370
      return "PhysiLastRowScan";
×
371
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
×
372
      return "PhysiTableCountScan";
×
373
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
×
374
      return "PhysiMergeEventWindow";
×
375
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
783✔
376
      return "PhysiStreamEventWindow";
783✔
377
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
×
378
      return "PhysiMergeCountWindow";
×
379
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
1,116✔
380
      return "PhysiStreamCountWindow";
1,116✔
381
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
382
      return "PhysiMergeAnomalyWindow";
×
383
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_ANOMALY:
×
384
      return "PhysiStreamAnomalyWindow";
×
385
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
21,636✔
386
      return "PhysiProject";
21,636✔
387
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
×
388
      return "PhysiMergeJoin";
×
389
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
390
      return "PhysiHashJoin";
×
391
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
129✔
392
      return "PhysiAgg";
129✔
393
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
×
394
      return "PhysiExchange";
×
395
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
×
396
      return "PhysiMerge";
×
397
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
×
398
      return "PhysiSort";
×
399
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
×
400
      return "PhysiGroupSort";
×
401
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
×
402
      return "PhysiHashInterval";
×
403
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
×
404
      return "PhysiMergeAlignedInterval";
×
405
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
10,576✔
406
      return "PhysiStreamInterval";
10,576✔
407
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
1,239✔
408
      return "PhysiStreamFinalInterval";
1,239✔
409
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
2,588✔
410
      return "PhysiStreamSemiInterval";
2,588✔
411
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
578✔
412
      return "PhysiStreamMidInterval";
578✔
413
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
1,941✔
414
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
415
      return "PhysiFill";
1,941✔
416
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
×
417
      return "PhysiSessionWindow";
×
418
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
2,295✔
419
      return "PhysiStreamSessionWindow";
2,295✔
420
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
414✔
421
      return "PhysiStreamSemiSessionWindow";
414✔
422
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
189✔
423
      return "PhysiStreamFinalSessionWindow";
189✔
424
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
×
425
      return "PhysiStateWindow";
×
426
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
1,281✔
427
      return "PhysiStreamStateWindow";
1,281✔
428
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
×
429
      return "PhysiPartition";
×
430
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
4,302✔
431
      return "PhysiStreamPartition";
4,302✔
432
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
×
433
      return "PhysiIndefRowsFunc";
×
434
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
×
435
      return "PhysiInterpFunc";
×
436
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
120✔
437
      return "PhysiStreamInterpFunc";
120✔
438
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
439
      return "PhysiForecastFunc";
×
440
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
×
441
      return "PhysiDispatch";
×
442
    case QUERY_NODE_PHYSICAL_PLAN_INSERT:
×
443
      return "PhysiInsert";
×
444
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
×
445
      return "PhysiQueryInsert";
×
446
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
×
447
      return "PhysiDelete";
×
448
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
449
      return "PhysiGroupCache";
×
450
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
451
      return "PhysiDynamicQueryCtrl";
×
452
    case QUERY_NODE_PHYSICAL_SUBPLAN:
35,091✔
453
      return "PhysiSubplan";
35,091✔
454
    case QUERY_NODE_PHYSICAL_PLAN:
5,985✔
455
      return "PhysiPlan";
5,985✔
456
    default:
×
457
      break;
×
458
  }
459
  nodesWarn("nodesNodeName unknown node = %d", type);
×
460
  return "UnknownNode";
×
461
}
462

463
static int32_t nodeListToJson(SJson* pJson, const char* pName, const SNodeList* pList) {
520,917✔
464
  if (LIST_LENGTH(pList) > 0) {
520,917!
465
    SJson* jList = tjsonAddArrayToObject(pJson, pName);
432,744✔
466
    if (NULL == jList) {
432,744!
467
      return terrno;
×
468
    }
469
    SNode* pNode;
470
    FOREACH(pNode, pList) {
2,166,855!
471
      int32_t code = tjsonAddItem(jList, nodeToJson, pNode);
1,734,111✔
472
      if (TSDB_CODE_SUCCESS != code) {
1,734,111!
473
        return code;
×
474
      }
475
    }
476
  }
477
  return TSDB_CODE_SUCCESS;
520,917✔
478
}
479

480
static int32_t jsonToNodeListImpl(const SJson* pJsonArray, SNodeList** pList) {
1,046,134✔
481
  int32_t size = (NULL == pJsonArray ? 0 : tjsonGetArraySize(pJsonArray));
1,046,134✔
482
  if (size > 0) {
1,046,077✔
483
    int32_t code = nodesMakeList(pList);
901,441✔
484
    if (NULL == *pList) {
901,645!
485
      return code;
×
486
    }
487
  }
488

489
  int32_t code = TSDB_CODE_SUCCESS;
1,046,281✔
490
  for (int32_t i = 0; i < size; ++i) {
3,797,858✔
491
    SJson* pJsonItem = tjsonGetArrayItem(pJsonArray, i);
2,751,576✔
492
    SNode* pNode = NULL;
2,749,375✔
493
    code = makeNodeByJson(pJsonItem, &pNode);
2,749,375✔
494
    if (TSDB_CODE_SUCCESS == code) {
2,748,719✔
495
      code = nodesListAppend(*pList, pNode);
2,748,711✔
496
    }
497
    if (TSDB_CODE_SUCCESS != code) {
2,751,577!
498
      break;
×
499
    }
500
  }
501
  return code;
1,046,282✔
502
}
503

504
static int32_t jsonToNodeList(const SJson* pJson, const char* pName, SNodeList** pList) {
1,045,806✔
505
  return jsonToNodeListImpl(tjsonGetObjectItem(pJson, pName), pList);
1,045,806✔
506
}
507

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

513
static int32_t tableComInfoToJson(const void* pObj, SJson* pJson) {
1,456✔
514
  const STableComInfo* pNode = (const STableComInfo*)pObj;
1,456✔
515

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

527
  return code;
1,456✔
528
}
529

530
static int32_t jsonToTableComInfo(const SJson* pJson, void* pObj) {
10,959✔
531
  STableComInfo* pNode = (STableComInfo*)pObj;
10,959✔
532

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

545
  return code;
10,959✔
546
}
547

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

554
static int32_t schemaToJson(const void* pObj, SJson* pJson) {
49,851✔
555
  const SSchema* pNode = (const SSchema*)pObj;
49,851✔
556

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

571
  return code;
49,851✔
572
}
573

574
static int32_t jsonToSchema(const SJson* pJson, void* pObj) {
539,302✔
575
  SSchema* pNode = (SSchema*)pObj;
539,302✔
576

577
  int32_t code;
578
  tjsonGetNumberValue(pJson, jkSchemaType, pNode->type, code);
539,302✔
579
  if (TSDB_CODE_SUCCESS == code) {
539,305✔
580
    tjsonGetNumberValue(pJson, jkSchemaColId, pNode->colId, code);
539,294✔
581
  }
582
  if (TSDB_CODE_SUCCESS == code) {
539,329✔
583
    tjsonGetNumberValue(pJson, jkSchemaBytes, pNode->bytes, code);
539,318✔
584
  }
585
  if (TSDB_CODE_SUCCESS == code) {
539,313✔
586
    code = tjsonGetStringValue(pJson, jkSchemaName, pNode->name);
539,302✔
587
  }
588
  if (TSDB_CODE_SUCCESS == code) {
539,287✔
589
    tjsonGetNumberValue(pJson, jkSchemaFlags, pNode->flags, code);
539,286✔
590
  }
591

592
  return code;
539,283✔
593
}
594

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

604
static int32_t tableMetaToJson(const void* pObj, SJson* pJson) {
1,456✔
605
  const STableMeta* pNode = (const STableMeta*)pObj;
1,456✔
606

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

631
  return code;
1,456✔
632
}
633

634
static int32_t jsonToTableMeta(const SJson* pJson, void* pObj) {
10,959✔
635
  STableMeta* pNode = (STableMeta*)pObj;
10,959✔
636

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

661
  return code;
10,959✔
662
}
663

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

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

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

699
  return code;
×
700
}
701

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

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

728
  return code;
×
729
}
730

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

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

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

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

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

859
static const char* jkProjectLogicPlanProjections = "Projections";
860
static const char* jkProjectLogicPlanIgnoreGroupId = "IgnoreGroupId";
861
static const char* jkProjectLogicPlanInputIgnoreGroup = "InputIgnoreGroup";
862

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

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

877
  return code;
×
878
}
879

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

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

896
static const char* jkVnodeModifyLogicPlanModifyType = "ModifyType";
897
static const char* jkVnodeModifyLogicPlanMsgType = "MsgType";
898
static const char* jkVnodeModifyLogicPlanAffectedRows = "AffectedRows";
899

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

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

914
  return code;
×
915
}
916

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

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

931
  return code;
×
932
}
933

934
static const char* jkExchangeLogicPlanSrcStartGroupId = "SrcStartGroupId";
935
static const char* jkExchangeLogicPlanSrcEndGroupId = "SrcEndGroupId";
936

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

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

948
  return code;
×
949
}
950

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

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

962
  return code;
×
963
}
964

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

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

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

987
  return code;
×
988
}
989

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

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

1007
  return code;
×
1008
}
1009

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

1026
static int32_t logicWindowNodeToJson(const void* pObj, SJson* pJson) {
×
1027
  const SWindowLogicNode* pNode = (const SWindowLogicNode*)pObj;
×
1028

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

1076
  return code;
×
1077
}
1078

1079
static int32_t jsonToLogicWindowNode(const SJson* pJson, void* pObj) {
×
1080
  SWindowLogicNode* pNode = (SWindowLogicNode*)pObj;
×
1081

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

1129
  return code;
×
1130
}
1131

1132
static const char* jkFillLogicPlanMode = "Mode";
1133
static const char* jkFillLogicPlanWStartTs = "WStartTs";
1134
static const char* jkFillLogicPlanValues = "Values";
1135
static const char* jkFillLogicPlanStartTime = "StartTime";
1136
static const char* jkFillLogicPlanEndTime = "EndTime";
1137

1138
static int32_t logicFillNodeToJson(const void* pObj, SJson* pJson) {
×
1139
  const SFillLogicNode* pNode = (const SFillLogicNode*)pObj;
×
1140

1141
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1142
  if (TSDB_CODE_SUCCESS == code) {
×
1143
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanMode, pNode->mode);
×
1144
  }
1145
  if (TSDB_CODE_SUCCESS == code) {
×
1146
    code = tjsonAddObject(pJson, jkFillLogicPlanWStartTs, nodeToJson, pNode->pWStartTs);
×
1147
  }
1148
  if (TSDB_CODE_SUCCESS == code) {
×
1149
    code = tjsonAddObject(pJson, jkFillLogicPlanValues, nodeToJson, pNode->pValues);
×
1150
  }
1151
  if (TSDB_CODE_SUCCESS == code) {
×
1152
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanStartTime, pNode->timeRange.skey);
×
1153
  }
1154
  if (TSDB_CODE_SUCCESS == code) {
×
1155
    code = tjsonAddIntegerToObject(pJson, jkFillLogicPlanEndTime, pNode->timeRange.ekey);
×
1156
  }
1157

1158
  return code;
×
1159
}
1160

1161
static int32_t jsonToLogicFillNode(const SJson* pJson, void* pObj) {
×
1162
  SFillLogicNode* pNode = (SFillLogicNode*)pObj;
×
1163

1164
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1165
  if (TSDB_CODE_SUCCESS == code) {
×
1166
    tjsonGetNumberValue(pJson, jkFillLogicPlanMode, pNode->mode, code);
×
1167
  }
1168
  if (TSDB_CODE_SUCCESS == code) {
×
1169
    code = jsonToNodeObject(pJson, jkFillLogicPlanWStartTs, &pNode->pWStartTs);
×
1170
  }
1171
  if (TSDB_CODE_SUCCESS == code) {
×
1172
    code = jsonToNodeObject(pJson, jkFillLogicPlanValues, &pNode->pValues);
×
1173
  }
1174
  if (TSDB_CODE_SUCCESS == code) {
×
1175
    code = tjsonGetBigIntValue(pJson, jkFillLogicPlanStartTime, &pNode->timeRange.skey);
×
1176
  }
1177
  if (TSDB_CODE_SUCCESS == code) {
×
1178
    code = tjsonGetBigIntValue(pJson, jkFillLogicPlanEndTime, &pNode->timeRange.ekey);
×
1179
  }
1180

1181
  return code;
×
1182
}
1183

1184
static const char* jkSortLogicPlanSortKeys = "SortKeys";
1185

1186
static int32_t logicSortNodeToJson(const void* pObj, SJson* pJson) {
×
1187
  const SSortLogicNode* pNode = (const SSortLogicNode*)pObj;
×
1188

1189
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1190
  if (TSDB_CODE_SUCCESS == code) {
×
1191
    code = nodeListToJson(pJson, jkSortLogicPlanSortKeys, pNode->pSortKeys);
×
1192
  }
1193

1194
  return code;
×
1195
}
1196

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

1200
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1201
  if (TSDB_CODE_SUCCESS == code) {
×
1202
    code = jsonToNodeList(pJson, jkSortLogicPlanSortKeys, &pNode->pSortKeys);
×
1203
  }
1204

1205
  return code;
×
1206
}
1207

1208
static const char* jkPartitionLogicPlanPartitionKeys = "PartitionKeys";
1209

1210
static int32_t logicPartitionNodeToJson(const void* pObj, SJson* pJson) {
×
1211
  const SPartitionLogicNode* pNode = (const SPartitionLogicNode*)pObj;
×
1212

1213
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1214
  if (TSDB_CODE_SUCCESS == code) {
×
1215
    code = nodeListToJson(pJson, jkPartitionLogicPlanPartitionKeys, pNode->pPartitionKeys);
×
1216
  }
1217

1218
  return code;
×
1219
}
1220

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

1224
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1225
  if (TSDB_CODE_SUCCESS == code) {
×
1226
    code = jsonToNodeList(pJson, jkPartitionLogicPlanPartitionKeys, &pNode->pPartitionKeys);
×
1227
  }
1228

1229
  return code;
×
1230
}
1231

1232
static const char* jkIndefRowsFuncLogicPlanFuncs = "Funcs";
1233

1234
static int32_t logicIndefRowsFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1235
  const SIndefRowsFuncLogicNode* pNode = (const SIndefRowsFuncLogicNode*)pObj;
×
1236

1237
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1238
  if (TSDB_CODE_SUCCESS == code) {
×
1239
    code = nodeListToJson(pJson, jkIndefRowsFuncLogicPlanFuncs, pNode->pFuncs);
×
1240
  }
1241

1242
  return code;
×
1243
}
1244

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

1248
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1249
  if (TSDB_CODE_SUCCESS == code) {
×
1250
    code = jsonToNodeList(pJson, jkIndefRowsFuncLogicPlanFuncs, &pNode->pFuncs);
×
1251
  }
1252

1253
  return code;
×
1254
}
1255

1256
static const char* jkStreamOption_triggerType = "StreamOptionTriggerType";
1257
static const char* jkStreamOption_watermark = "StreamOptionWatermark";
1258
static const char* jkStreamOption_deleteMark = "StreamOptionDeleteMark";
1259
static const char* jkStreamOption_igExpired = "StreamOptionIgExpired";
1260
static const char* jkStreamOption_igCheckUpdate = "StreamOption_igCheckUpdate";
1261
static const char* jkStreamOption_destHasPrimaryKey = "StreamOptionDestHasPrimaryKey";
1262

1263
static int32_t streamNodeOptionToJson(const void* pObj, SJson* pJson) {
40✔
1264
  const SStreamNodeOption* pNode = (const SStreamNodeOption*)pObj;
40✔
1265
  int32_t              code = tjsonAddIntegerToObject(pJson, jkStreamOption_triggerType, pNode->triggerType);
40✔
1266

1267
  if (TSDB_CODE_SUCCESS == code) {
40!
1268
    code = tjsonAddIntegerToObject(pJson, jkStreamOption_watermark, pNode->watermark);
40✔
1269
  }
1270
  if (TSDB_CODE_SUCCESS == code) {
40!
1271
    code = tjsonAddIntegerToObject(pJson, jkStreamOption_deleteMark, pNode->deleteMark);
40✔
1272
  }
1273
  if (TSDB_CODE_SUCCESS == code) {
40!
1274
    code = tjsonAddIntegerToObject(pJson, jkStreamOption_igExpired, pNode->igExpired);
40✔
1275
  }
1276
  if (TSDB_CODE_SUCCESS == code) {
40!
1277
    code = tjsonAddIntegerToObject(pJson, jkStreamOption_igCheckUpdate, pNode->igCheckUpdate);
40✔
1278
  }
1279
  if (TSDB_CODE_SUCCESS == code) {
40!
1280
    code = tjsonAddIntegerToObject(pJson, jkStreamOption_destHasPrimaryKey, pNode->destHasPrimaryKey);
40✔
1281
  }
1282
  return code;
40✔
1283
}
1284

1285
static int32_t jsonToStreamNodeOption(const SJson* pJson, void* pObj) {
40✔
1286
  SStreamNodeOption* pNode = (SStreamNodeOption*)pObj;
40✔
1287
  int32_t        code = tjsonGetTinyIntValue(pJson, jkStreamOption_triggerType, &pNode->triggerType);
40✔
1288

1289
  if (TSDB_CODE_SUCCESS == code) {
40!
1290
    code = tjsonGetBigIntValue(pJson, jkStreamOption_watermark, &pNode->watermark);
40✔
1291
  }
1292
  if (TSDB_CODE_SUCCESS == code) {
40!
1293
    code = tjsonGetBigIntValue(pJson, jkStreamOption_deleteMark, &pNode->deleteMark);
40✔
1294
  }
1295
  if (TSDB_CODE_SUCCESS == code) {
40!
1296
    code = tjsonGetTinyIntValue(pJson, jkStreamOption_igExpired, &pNode->igExpired);
40✔
1297
  }
1298
  if (TSDB_CODE_SUCCESS == code) {
40!
1299
    code = tjsonGetTinyIntValue(pJson, jkStreamOption_igCheckUpdate, &pNode->igCheckUpdate);
40✔
1300
  }
1301
  if (TSDB_CODE_SUCCESS == code) {
40!
1302
    code = tjsonGetTinyIntValue(pJson, jkStreamOption_destHasPrimaryKey, &pNode->destHasPrimaryKey);
40✔
1303
  }
1304
  return code;
40✔
1305
}
1306

1307
static const char* jkInterpFuncLogicPlanFuncs = "Funcs";
1308
static const char* jkInterpFuncLogicPlanStartTime = "StartTime";
1309
static const char* jkInterpFuncLogicPlanEndTime = "EndTime";
1310
static const char* jkInterpFuncLogicPlanInterval = "Interval";
1311
static const char* jkInterpFuncLogicPlanIntervalUnit = "IntervalUnit";
1312
static const char* jkInterpFuncLogicPlanPrecision = "Precision";
1313
static const char* jkInterpFuncLogicPlanFillMode = "fillMode";
1314
static const char* jkInterpFuncLogicPlanFillValues = "FillValues";
1315
static const char* jkInterpFuncLogicPlanTimeSeries = "TimeSeries";
1316
static const char* jkInterpFuncLogicPlanStreamNodeOption = "StreamNodeOption";
1317
static const char* jkInterpFuncLogicPlanRangeInterval = "RangeInterval";
1318
static const char* jkInterpFuncLogicPlanRangeIntervalUnit = "RangeIntervalUnit";
1319

1320
static int32_t logicInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1321
  const SInterpFuncLogicNode* pNode = (const SInterpFuncLogicNode*)pObj;
×
1322

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

1361
  return code;
×
1362
}
1363

1364
static int32_t jsonToLogicInterpFuncNode(const SJson* pJson, void* pObj) {
×
1365
  SInterpFuncLogicNode* pNode = (SInterpFuncLogicNode*)pObj;
×
1366

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

1405
  return code;
×
1406
}
1407

1408
static const char* jkForecastFuncLogicPlanFuncs = "Funcs";
1409

1410
static int32_t logicForecastFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1411
  const SForecastFuncLogicNode* pNode = (const SForecastFuncLogicNode*)pObj;
×
1412

1413
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1414
  if (TSDB_CODE_SUCCESS == code) {
×
1415
    code = nodeListToJson(pJson, jkForecastFuncLogicPlanFuncs, pNode->pFuncs);
×
1416
  }
1417

1418
  return code;
×
1419
}
1420

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

1424
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1425
  if (TSDB_CODE_SUCCESS == code) {
×
1426
    code = jsonToNodeList(pJson, jkForecastFuncLogicPlanFuncs, &pNode->pFuncs);
×
1427
  }
1428

1429
  return code;
×
1430
}
1431

1432
static const char* jkGroupCacheLogicPlanGrpColsMayBeNull = "GroupColsMayBeNull";
1433
static const char* jkGroupCacheLogicPlanGroupByUid = "GroupByUid";
1434
static const char* jkGroupCacheLogicPlanGlobalGroup = "GlobalGroup";
1435
static const char* jkGroupCacheLogicPlanGroupCols = "GroupCols";
1436

1437
static int32_t logicGroupCacheNodeToJson(const void* pObj, SJson* pJson) {
×
1438
  const SGroupCacheLogicNode* pNode = (const SGroupCacheLogicNode*)pObj;
×
1439

1440
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1441
  if (TSDB_CODE_SUCCESS == code) {
×
1442
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGrpColsMayBeNull, pNode->grpColsMayBeNull);
×
1443
  }
1444
  if (TSDB_CODE_SUCCESS == code) {
×
1445
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGroupByUid, pNode->grpByUid);
×
1446
  }
1447
  if (TSDB_CODE_SUCCESS == code) {
×
1448
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGlobalGroup, pNode->globalGrp);
×
1449
  }
1450
  if (TSDB_CODE_SUCCESS == code) {
×
1451
    code = nodeListToJson(pJson, jkGroupCacheLogicPlanGroupCols, pNode->pGroupCols);
×
1452
  }
1453

1454
  return code;
×
1455
}
1456

1457
static int32_t jsonToLogicGroupCacheNode(const SJson* pJson, void* pObj) {
×
1458
  SGroupCacheLogicNode* pNode = (SGroupCacheLogicNode*)pObj;
×
1459

1460
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1461
  if (TSDB_CODE_SUCCESS == code) {
×
1462
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGrpColsMayBeNull, &pNode->grpColsMayBeNull);
×
1463
  }
1464
  if (TSDB_CODE_SUCCESS == code) {
×
1465
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGroupByUid, &pNode->grpByUid);
×
1466
  }
1467
  if (TSDB_CODE_SUCCESS == code) {
×
1468
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGlobalGroup, &pNode->globalGrp);
×
1469
  }
1470
  if (TSDB_CODE_SUCCESS == code) {
×
1471
    code = jsonToNodeList(pJson, jkGroupCacheLogicPlanGroupCols, &pNode->pGroupCols);
×
1472
  }
1473

1474
  return code;
×
1475
}
1476

1477
static const char* jkDynQueryCtrlLogicPlanQueryType = "QueryType";
1478
static const char* jkDynQueryCtrlLogicPlanStbJoinBatchFetch = "BatchFetch";
1479
static const char* jkDynQueryCtrlLogicPlanStbJoinVgList = "VgroupList";
1480
static const char* jkDynQueryCtrlLogicPlanStbJoinUidList = "UidList";
1481

1482
static int32_t logicDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
×
1483
  const SDynQueryCtrlLogicNode* pNode = (const SDynQueryCtrlLogicNode*)pObj;
×
1484

1485
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1486
  if (TSDB_CODE_SUCCESS == code) {
×
1487
    code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlLogicPlanQueryType, pNode->qType);
×
1488
  }
1489
  if (TSDB_CODE_SUCCESS == code) {
×
1490
    code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlLogicPlanStbJoinBatchFetch, pNode->stbJoin.batchFetch);
×
1491
  }
1492
  if (TSDB_CODE_SUCCESS == code) {
×
1493
    code = nodeListToJson(pJson, jkDynQueryCtrlLogicPlanStbJoinVgList, pNode->stbJoin.pVgList);
×
1494
  }
1495
  if (TSDB_CODE_SUCCESS == code) {
×
1496
    code = nodeListToJson(pJson, jkDynQueryCtrlLogicPlanStbJoinUidList, pNode->stbJoin.pUidList);
×
1497
  }
1498

1499
  return code;
×
1500
}
1501

1502
static int32_t jsonToLogicDynQueryCtrlNode(const SJson* pJson, void* pObj) {
×
1503
  SDynQueryCtrlLogicNode* pNode = (SDynQueryCtrlLogicNode*)pObj;
×
1504

1505
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1506
  if (TSDB_CODE_SUCCESS == code) {
×
1507
    tjsonGetNumberValue(pJson, jkDynQueryCtrlLogicPlanQueryType, pNode->qType, code);
×
1508
  }
1509
  if (TSDB_CODE_SUCCESS == code) {
×
1510
    code = tjsonGetBoolValue(pJson, jkDynQueryCtrlLogicPlanStbJoinBatchFetch, &pNode->stbJoin.batchFetch);
×
1511
  }
1512
  if (TSDB_CODE_SUCCESS == code) {
×
1513
    code = jsonToNodeList(pJson, jkDynQueryCtrlLogicPlanStbJoinVgList, &pNode->stbJoin.pVgList);
×
1514
  }
1515
  if (TSDB_CODE_SUCCESS == code) {
×
1516
    code = jsonToNodeList(pJson, jkDynQueryCtrlLogicPlanStbJoinUidList, &pNode->stbJoin.pUidList);
×
1517
  }
1518

1519
  return code;
×
1520
}
1521

1522
static const char* jkSubplanIdQueryId = "QueryId";
1523
static const char* jkSubplanIdGroupId = "GroupId";
1524
static const char* jkSubplanIdSubplanId = "SubplanId";
1525

1526
static int32_t subplanIdToJson(const void* pObj, SJson* pJson) {
11,729✔
1527
  const SSubplanId* pNode = (const SSubplanId*)pObj;
11,729✔
1528

1529
  int32_t code = tjsonAddIntegerToObject(pJson, jkSubplanIdQueryId, pNode->queryId);
11,729✔
1530
  if (TSDB_CODE_SUCCESS == code) {
11,729!
1531
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdGroupId, pNode->groupId);
11,729✔
1532
  }
1533
  if (TSDB_CODE_SUCCESS == code) {
11,729!
1534
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdSubplanId, pNode->subplanId);
11,729✔
1535
  }
1536

1537
  return code;
11,729✔
1538
}
1539

1540
static int32_t jsonToSubplanId(const SJson* pJson, void* pObj) {
11,632✔
1541
  SSubplanId* pNode = (SSubplanId*)pObj;
11,632✔
1542

1543
  int32_t code = tjsonGetUBigIntValue(pJson, jkSubplanIdQueryId, &pNode->queryId);
11,632✔
1544
  if (TSDB_CODE_SUCCESS == code) {
11,631!
1545
    code = tjsonGetIntValue(pJson, jkSubplanIdGroupId, &pNode->groupId);
11,631✔
1546
  }
1547
  if (TSDB_CODE_SUCCESS == code) {
11,634!
1548
    code = tjsonGetIntValue(pJson, jkSubplanIdSubplanId, &pNode->subplanId);
11,634✔
1549
  }
1550

1551
  return code;
11,632✔
1552
}
1553

1554
static const char* jkEndPointFqdn = "Fqdn";
1555
static const char* jkEndPointPort = "Port";
1556

1557
static int32_t epToJson(const void* pObj, SJson* pJson) {
12,902✔
1558
  const SEp* pNode = (const SEp*)pObj;
12,902✔
1559

1560
  int32_t code = tjsonAddStringToObject(pJson, jkEndPointFqdn, pNode->fqdn);
12,902✔
1561
  if (TSDB_CODE_SUCCESS == code) {
12,902!
1562
    code = tjsonAddIntegerToObject(pJson, jkEndPointPort, pNode->port);
12,902✔
1563
  }
1564

1565
  return code;
12,902✔
1566
}
1567

1568
static int32_t jsonToEp(const SJson* pJson, void* pObj) {
30,736✔
1569
  SEp* pNode = (SEp*)pObj;
30,736✔
1570

1571
  int32_t code = tjsonGetStringValue(pJson, jkEndPointFqdn, pNode->fqdn);
30,736✔
1572
  if (TSDB_CODE_SUCCESS == code) {
30,737!
1573
    code = tjsonGetSmallIntValue(pJson, jkEndPointPort, &pNode->port);
30,737✔
1574
  }
1575

1576
  return code;
30,733✔
1577
}
1578

1579
static const char* jkEpSetInUse = "InUse";
1580
static const char* jkEpSetNumOfEps = "NumOfEps";
1581
static const char* jkEpSetEps = "Eps";
1582

1583
static int32_t epSetToJson(const void* pObj, SJson* pJson) {
2,224✔
1584
  const SEpSet* pNode = (const SEpSet*)pObj;
2,224✔
1585

1586
  int32_t code = tjsonAddIntegerToObject(pJson, jkEpSetInUse, pNode->inUse);
2,224✔
1587
  if (TSDB_CODE_SUCCESS == code) {
2,224!
1588
    code = tjsonAddIntegerToObject(pJson, jkEpSetNumOfEps, pNode->numOfEps);
2,224✔
1589
  }
1590
  if (TSDB_CODE_SUCCESS == code) {
2,224!
1591
    code = tjsonAddArray(pJson, jkEpSetEps, epToJson, pNode->eps, sizeof(SEp), pNode->numOfEps);
2,224✔
1592
  }
1593

1594
  return code;
2,224✔
1595
}
1596

1597
static int32_t jsonToEpSet(const SJson* pJson, void* pObj) {
20,439✔
1598
  SEpSet* pNode = (SEpSet*)pObj;
20,439✔
1599

1600
  int32_t code = tjsonGetTinyIntValue(pJson, jkEpSetInUse, &pNode->inUse);
20,439✔
1601
  if (TSDB_CODE_SUCCESS == code) {
20,439!
1602
    code = tjsonGetTinyIntValue(pJson, jkEpSetNumOfEps, &pNode->numOfEps);
20,439✔
1603
  }
1604
  if (TSDB_CODE_SUCCESS == code) {
20,439!
1605
    code = tjsonToArray(pJson, jkEpSetEps, jsonToEp, pNode->eps, sizeof(SEp));
20,439✔
1606
  }
1607

1608
  return code;
20,439✔
1609
}
1610

1611
static const char* jkVgroupInfoVgId = "VgId";
1612
static const char* jkVgroupInfoHashBegin = "HashBegin";
1613
static const char* jkVgroupInfoHashEnd = "HashEnd";
1614
static const char* jkVgroupInfoEpSet = "EpSet";
1615
static const char* jkVgroupInfoNumOfTable = "NumOfTable";
1616

1617
static int32_t vgroupInfoToJson(const void* pObj, SJson* pJson) {
2,224✔
1618
  const SVgroupInfo* pNode = (const SVgroupInfo*)pObj;
2,224✔
1619

1620
  int32_t code = tjsonAddIntegerToObject(pJson, jkVgroupInfoVgId, pNode->vgId);
2,224✔
1621
  if (TSDB_CODE_SUCCESS == code) {
2,224!
1622
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoHashBegin, pNode->hashBegin);
2,224✔
1623
  }
1624
  if (TSDB_CODE_SUCCESS == code) {
2,224!
1625
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoHashEnd, pNode->hashEnd);
2,224✔
1626
  }
1627
  if (TSDB_CODE_SUCCESS == code) {
2,224!
1628
    code = tjsonAddObject(pJson, jkVgroupInfoEpSet, epSetToJson, &pNode->epSet);
2,224✔
1629
  }
1630
  if (TSDB_CODE_SUCCESS == code) {
2,224!
1631
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoNumOfTable, pNode->numOfTable);
2,224✔
1632
  }
1633

1634
  return code;
2,224✔
1635
}
1636

1637
static int32_t jsonToVgroupInfo(const SJson* pJson, void* pObj) {
20,439✔
1638
  SVgroupInfo* pNode = (SVgroupInfo*)pObj;
20,439✔
1639

1640
  int32_t code = tjsonGetIntValue(pJson, jkVgroupInfoVgId, &pNode->vgId);
20,439✔
1641
  if (TSDB_CODE_SUCCESS == code) {
20,439!
1642
    code = tjsonGetUIntValue(pJson, jkVgroupInfoHashBegin, &pNode->hashBegin);
20,439✔
1643
  }
1644
  if (TSDB_CODE_SUCCESS == code) {
20,439!
1645
    code = tjsonGetUIntValue(pJson, jkVgroupInfoHashEnd, &pNode->hashEnd);
20,439✔
1646
  }
1647
  if (TSDB_CODE_SUCCESS == code) {
20,439!
1648
    code = tjsonToObject(pJson, jkVgroupInfoEpSet, jsonToEpSet, &pNode->epSet);
20,439✔
1649
  }
1650
  if (TSDB_CODE_SUCCESS == code) {
20,439!
1651
    code = tjsonGetIntValue(pJson, jkVgroupInfoNumOfTable, &pNode->numOfTable);
20,439✔
1652
  }
1653

1654
  return code;
20,439✔
1655
}
1656

1657
static const char* jkVgroupsInfoNum = "Num";
1658
static const char* jkVgroupsInfoVgroups = "Vgroups";
1659

1660
static int32_t vgroupsInfoToJson(const void* pObj, SJson* pJson) {
1,054✔
1661
  const SVgroupsInfo* pNode = (const SVgroupsInfo*)pObj;
1,054✔
1662

1663
  int32_t code = tjsonAddIntegerToObject(pJson, jkVgroupsInfoNum, pNode->numOfVgroups);
1,054✔
1664
  if (TSDB_CODE_SUCCESS == code) {
1,054!
1665
    code = tjsonAddArray(pJson, jkVgroupsInfoVgroups, vgroupInfoToJson, pNode->vgroups, sizeof(SVgroupInfo),
1,054✔
1666
                         pNode->numOfVgroups);
1,054✔
1667
  }
1668

1669
  return code;
1,054✔
1670
}
1671

1672
static int32_t jsonToVgroupsInfo(const SJson* pJson, void* pObj) {
9,518✔
1673
  SVgroupsInfo* pNode = (SVgroupsInfo*)pObj;
9,518✔
1674

1675
  int32_t code = tjsonGetIntValue(pJson, jkVgroupsInfoNum, &pNode->numOfVgroups);
9,518✔
1676
  if (TSDB_CODE_SUCCESS == code) {
9,518!
1677
    code = tjsonToArray(pJson, jkVgroupsInfoVgroups, jsonToVgroupInfo, pNode->vgroups, sizeof(SVgroupInfo));
9,518✔
1678
  }
1679

1680
  return code;
9,518✔
1681
}
1682

1683
static const char* jkLogicSubplanId = "Id";
1684
static const char* jkLogicSubplanChildren = "Children";
1685
static const char* jkLogicSubplanRootNode = "RootNode";
1686
static const char* jkLogicSubplanType = "SubplanType";
1687
static const char* jkLogicSubplanVgroupsSize = "VgroupsSize";
1688
static const char* jkLogicSubplanVgroups = "Vgroups";
1689
static const char* jkLogicSubplanLevel = "Level";
1690
static const char* jkLogicSubplanSplitFlag = "SplitFlag";
1691
static const char* jkLogicSubplanNumOfComputeNodes = "NumOfComputeNodes";
1692

1693
static int32_t logicSubplanToJson(const void* pObj, SJson* pJson) {
×
1694
  const SLogicSubplan* pNode = (const SLogicSubplan*)pObj;
×
1695

1696
  int32_t code = tjsonAddObject(pJson, jkLogicSubplanId, subplanIdToJson, &pNode->id);
×
1697
  if (TSDB_CODE_SUCCESS == code) {
×
1698
    code = nodeListToJson(pJson, jkLogicSubplanChildren, pNode->pChildren);
×
1699
  }
1700
  if (TSDB_CODE_SUCCESS == code) {
×
1701
    code = tjsonAddObject(pJson, jkLogicSubplanRootNode, nodeToJson, pNode->pNode);
×
1702
  }
1703
  if (TSDB_CODE_SUCCESS == code) {
×
1704
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanType, pNode->subplanType);
×
1705
  }
1706
  if (TSDB_CODE_SUCCESS == code) {
×
1707
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanVgroupsSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
×
1708
  }
1709
  if (TSDB_CODE_SUCCESS == code) {
×
1710
    code = tjsonAddObject(pJson, jkLogicSubplanVgroups, vgroupsInfoToJson, pNode->pVgroupList);
×
1711
  }
1712
  if (TSDB_CODE_SUCCESS == code) {
×
1713
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanLevel, pNode->level);
×
1714
  }
1715
  if (TSDB_CODE_SUCCESS == code) {
×
1716
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanSplitFlag, pNode->splitFlag);
×
1717
  }
1718
  if (TSDB_CODE_SUCCESS == code) {
×
1719
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanNumOfComputeNodes, pNode->numOfComputeNodes);
×
1720
  }
1721

1722
  return code;
×
1723
}
1724

1725
static int32_t jsonToLogicSubplan(const SJson* pJson, void* pObj) {
×
1726
  SLogicSubplan* pNode = (SLogicSubplan*)pObj;
×
1727

1728
  int32_t code = tjsonToObject(pJson, jkLogicSubplanId, jsonToSubplanId, &pNode->id);
×
1729
  if (TSDB_CODE_SUCCESS == code) {
×
1730
    code = jsonToNodeList(pJson, jkLogicSubplanChildren, &pNode->pChildren);
×
1731
  }
1732
  if (TSDB_CODE_SUCCESS == code) {
×
1733
    code = jsonToNodeObject(pJson, jkLogicSubplanRootNode, (SNode**)&pNode->pNode);
×
1734
  }
1735
  if (TSDB_CODE_SUCCESS == code) {
×
1736
    tjsonGetNumberValue(pJson, jkLogicSubplanType, pNode->subplanType, code);
×
1737
  }
1738
  int32_t objSize = 0;
×
1739
  if (TSDB_CODE_SUCCESS == code) {
×
1740
    code = tjsonGetIntValue(pJson, jkLogicSubplanVgroupsSize, &objSize);
×
1741
  }
1742
  if (TSDB_CODE_SUCCESS == code) {
×
1743
    code = tjsonMakeObject(pJson, jkLogicSubplanVgroups, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
×
1744
  }
1745
  if (TSDB_CODE_SUCCESS == code) {
×
1746
    code = tjsonGetIntValue(pJson, jkLogicSubplanLevel, &pNode->level);
×
1747
  }
1748
  if (TSDB_CODE_SUCCESS == code) {
×
1749
    code = tjsonGetIntValue(pJson, jkLogicSubplanSplitFlag, &pNode->splitFlag);
×
1750
  }
1751
  if (TSDB_CODE_SUCCESS == code) {
×
1752
    code = tjsonGetIntValue(pJson, jkLogicSubplanNumOfComputeNodes, &pNode->numOfComputeNodes);
×
1753
  }
1754

1755
  return code;
×
1756
}
1757

1758
static const char* jkLogicPlanSubplans = "Subplans";
1759

1760
static int32_t logicPlanToJson(const void* pObj, SJson* pJson) {
×
1761
  const SQueryLogicPlan* pNode = (const SQueryLogicPlan*)pObj;
×
1762
  return tjsonAddObject(pJson, jkLogicPlanSubplans, nodeToJson, nodesListGetNode(pNode->pTopSubplans, 0));
×
1763
}
1764

1765
static int32_t jsonToLogicPlan(const SJson* pJson, void* pObj) {
×
1766
  SQueryLogicPlan* pNode = (SQueryLogicPlan*)pObj;
×
1767
  SNode*           pChild = NULL;
×
1768
  int32_t          code = jsonToNodeObject(pJson, jkLogicPlanSubplans, &pChild);
×
1769
  if (TSDB_CODE_SUCCESS == code) {
×
1770
    code = nodesListMakeStrictAppend(&pNode->pTopSubplans, pChild);
×
1771
  }
1772
  return code;
×
1773
}
1774

1775
static const char* jkJoinLogicPlanJoinType = "JoinType";
1776
static const char* jkJoinLogicPlanJoinAlgo = "JoinAlgo";
1777
static const char* jkJoinLogicPlanOnConditions = "OtherOnCond";
1778
static const char* jkJoinLogicPlanPrimKeyEqCondition = "PrimKeyEqCond";
1779
static const char* jkJoinLogicPlanColEqCondition = "ColumnEqCond";
1780
static const char* jkJoinLogicPlanTagEqCondition = "TagEqCond";
1781

1782
static int32_t logicJoinNodeToJson(const void* pObj, SJson* pJson) {
×
1783
  const SJoinLogicNode* pNode = (const SJoinLogicNode*)pObj;
×
1784

1785
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1786
  if (TSDB_CODE_SUCCESS == code) {
×
1787
    code = tjsonAddIntegerToObject(pJson, jkJoinLogicPlanJoinType, pNode->joinType);
×
1788
  }
1789
  if (TSDB_CODE_SUCCESS == code) {
×
1790
    code = tjsonAddIntegerToObject(pJson, jkJoinLogicPlanJoinAlgo, pNode->joinAlgo);
×
1791
  }
1792
  if (TSDB_CODE_SUCCESS == code) {
×
1793
    code = tjsonAddObject(pJson, jkJoinLogicPlanPrimKeyEqCondition, nodeToJson, pNode->pPrimKeyEqCond);
×
1794
  }
1795
  if (TSDB_CODE_SUCCESS == code) {
×
1796
    code = tjsonAddObject(pJson, jkJoinLogicPlanColEqCondition, nodeToJson, pNode->pColEqCond);
×
1797
  }
1798
  if (TSDB_CODE_SUCCESS == code) {
×
1799
    code = tjsonAddObject(pJson, jkJoinLogicPlanTagEqCondition, nodeToJson, pNode->pTagEqCond);
×
1800
  }
1801
  if (TSDB_CODE_SUCCESS == code) {
×
1802
    code = tjsonAddObject(pJson, jkJoinLogicPlanOnConditions, nodeToJson, pNode->pFullOnCond);
×
1803
  }
1804
  return code;
×
1805
}
1806

1807
static int32_t jsonToLogicJoinNode(const SJson* pJson, void* pObj) {
×
1808
  SJoinLogicNode* pNode = (SJoinLogicNode*)pObj;
×
1809

1810
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1811
  if (TSDB_CODE_SUCCESS == code) {
×
1812
    tjsonGetNumberValue(pJson, jkJoinLogicPlanJoinType, pNode->joinType, code);
×
1813
  }
1814
  if (TSDB_CODE_SUCCESS == code) {
×
1815
    tjsonGetNumberValue(pJson, jkJoinLogicPlanJoinAlgo, pNode->joinAlgo, code);
×
1816
  }
1817
  if (TSDB_CODE_SUCCESS == code) {
×
1818
    code = jsonToNodeObject(pJson, jkJoinLogicPlanPrimKeyEqCondition, &pNode->pPrimKeyEqCond);
×
1819
  }
1820
  if (TSDB_CODE_SUCCESS == code) {
×
1821
    code = jsonToNodeObject(pJson, jkJoinLogicPlanColEqCondition, &pNode->pColEqCond);
×
1822
  }
1823
  if (TSDB_CODE_SUCCESS == code) {
×
1824
    code = jsonToNodeObject(pJson, jkJoinLogicPlanTagEqCondition, &pNode->pTagEqCond);
×
1825
  }
1826
  if (TSDB_CODE_SUCCESS == code) {
×
1827
    code = jsonToNodeObject(pJson, jkJoinLogicPlanOnConditions, &pNode->pFullOnCond);
×
1828
  }
1829

1830
  return code;
×
1831
}
1832

1833
static const char* jkPhysiPlanOutputDataBlockDesc = "OutputDataBlockDesc";
1834
static const char* jkPhysiPlanConditions = "Conditions";
1835
static const char* jkPhysiPlanChildren = "Children";
1836
static const char* jkPhysiPlanLimit = "Limit";
1837
static const char* jkPhysiPlanSlimit = "SLimit";
1838

1839
static int32_t physicPlanNodeToJson(const void* pObj, SJson* pJson) {
28,129✔
1840
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
28,129✔
1841

1842
  int32_t code = tjsonAddObject(pJson, jkPhysiPlanOutputDataBlockDesc, nodeToJson, pNode->pOutputDataBlockDesc);
28,129✔
1843
  if (TSDB_CODE_SUCCESS == code) {
28,129!
1844
    code = tjsonAddObject(pJson, jkPhysiPlanConditions, nodeToJson, pNode->pConditions);
28,129✔
1845
  }
1846
  if (TSDB_CODE_SUCCESS == code) {
28,129!
1847
    code = nodeListToJson(pJson, jkPhysiPlanChildren, pNode->pChildren);
28,129✔
1848
  }
1849
  if (TSDB_CODE_SUCCESS == code) {
28,129!
1850
    code = tjsonAddObject(pJson, jkPhysiPlanLimit, nodeToJson, pNode->pLimit);
28,129✔
1851
  }
1852
  if (TSDB_CODE_SUCCESS == code) {
28,129!
1853
    code = tjsonAddObject(pJson, jkPhysiPlanSlimit, nodeToJson, pNode->pSlimit);
28,129✔
1854
  }
1855

1856
  return code;
28,129✔
1857
}
1858

1859
static int32_t jsonToPhysicPlanNode(const SJson* pJson, void* pObj) {
28,017✔
1860
  SPhysiNode* pNode = (SPhysiNode*)pObj;
28,017✔
1861

1862
  int32_t code = jsonToNodeObject(pJson, jkPhysiPlanOutputDataBlockDesc, (SNode**)&pNode->pOutputDataBlockDesc);
28,017✔
1863
  if (TSDB_CODE_SUCCESS == code) {
28,019!
1864
    code = jsonToNodeObject(pJson, jkPhysiPlanConditions, &pNode->pConditions);
28,019✔
1865
  }
1866
  if (TSDB_CODE_SUCCESS == code) {
28,009!
1867
    code = jsonToNodeList(pJson, jkPhysiPlanChildren, &pNode->pChildren);
28,009✔
1868
  }
1869
  if (TSDB_CODE_SUCCESS == code) {
28,019!
1870
    code = jsonToNodeObject(pJson, jkPhysiPlanLimit, &pNode->pLimit);
28,019✔
1871
  }
1872
  if (TSDB_CODE_SUCCESS == code) {
28,010!
1873
    code = jsonToNodeObject(pJson, jkPhysiPlanSlimit, &pNode->pSlimit);
28,010✔
1874
  }
1875

1876
  return code;
28,018✔
1877
}
1878

1879
static const char* jkNameType = "NameType";
1880
static const char* jkNameAcctId = "AcctId";
1881
static const char* jkNameDbName = "DbName";
1882
static const char* jkNameTableName = "TableName";
1883

1884
static int32_t nameToJson(const void* pObj, SJson* pJson) {
11,729✔
1885
  const SName* pNode = (const SName*)pObj;
11,729✔
1886

1887
  int32_t code = tjsonAddIntegerToObject(pJson, jkNameType, pNode->type);
11,729✔
1888
  if (TSDB_CODE_SUCCESS == code) {
11,729!
1889
    code = tjsonAddIntegerToObject(pJson, jkNameAcctId, pNode->acctId);
11,729✔
1890
  }
1891
  if (TSDB_CODE_SUCCESS == code) {
11,729!
1892
    code = tjsonAddStringToObject(pJson, jkNameDbName, pNode->dbname);
11,729✔
1893
  }
1894
  if (TSDB_CODE_SUCCESS == code) {
11,729!
1895
    code = tjsonAddStringToObject(pJson, jkNameTableName, pNode->tname);
11,729✔
1896
  }
1897

1898
  return code;
11,729✔
1899
}
1900

1901
static int32_t jsonToName(const SJson* pJson, void* pObj) {
11,634✔
1902
  SName* pNode = (SName*)pObj;
11,634✔
1903

1904
  int32_t code = tjsonGetUTinyIntValue(pJson, jkNameType, &pNode->type);
11,634✔
1905
  if (TSDB_CODE_SUCCESS == code) {
11,635!
1906
    code = tjsonGetIntValue(pJson, jkNameAcctId, &pNode->acctId);
11,635✔
1907
  }
1908
  if (TSDB_CODE_SUCCESS == code) {
11,634!
1909
    code = tjsonGetStringValue(pJson, jkNameDbName, pNode->dbname);
11,634✔
1910
  }
1911
  if (TSDB_CODE_SUCCESS == code) {
11,634!
1912
    code = tjsonGetStringValue(pJson, jkNameTableName, pNode->tname);
11,634✔
1913
  }
1914

1915
  return code;
11,633✔
1916
}
1917

1918
static const char* jkScanPhysiPlanScanCols = "ScanCols";
1919
static const char* jkScanPhysiPlanScanPseudoCols = "ScanPseudoCols";
1920
static const char* jkScanPhysiPlanTableId = "TableId";
1921
static const char* jkScanPhysiPlanSTableId = "STableId";
1922
static const char* jkScanPhysiPlanTableType = "TableType";
1923
static const char* jkScanPhysiPlanTableName = "TableName";
1924
static const char* jkScanPhysiPlanGroupOrderScan = "GroupOrderScan";
1925

1926
static int32_t physiScanNodeToJson(const void* pObj, SJson* pJson) {
11,729✔
1927
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
11,729✔
1928

1929
  int32_t code = physicPlanNodeToJson(pObj, pJson);
11,729✔
1930
  if (TSDB_CODE_SUCCESS == code) {
11,729!
1931
    code = nodeListToJson(pJson, jkScanPhysiPlanScanCols, pNode->pScanCols);
11,729✔
1932
  }
1933
  if (TSDB_CODE_SUCCESS == code) {
11,729!
1934
    code = nodeListToJson(pJson, jkScanPhysiPlanScanPseudoCols, pNode->pScanPseudoCols);
11,729✔
1935
  }
1936
  if (TSDB_CODE_SUCCESS == code) {
11,729!
1937
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableId, pNode->uid);
11,729✔
1938
  }
1939
  if (TSDB_CODE_SUCCESS == code) {
11,729!
1940
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanSTableId, pNode->suid);
11,729✔
1941
  }
1942
  if (TSDB_CODE_SUCCESS == code) {
11,729!
1943
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableType, pNode->tableType);
11,729✔
1944
  }
1945
  if (TSDB_CODE_SUCCESS == code) {
11,729!
1946
    code = tjsonAddObject(pJson, jkScanPhysiPlanTableName, nameToJson, &pNode->tableName);
11,729✔
1947
  }
1948
  if (TSDB_CODE_SUCCESS == code) {
11,729!
1949
    code = tjsonAddBoolToObject(pJson, jkScanPhysiPlanGroupOrderScan, pNode->groupOrderScan);
11,729✔
1950
  }
1951

1952
  return code;
11,729✔
1953
}
1954

1955
static int32_t jsonToPhysiScanNode(const SJson* pJson, void* pObj) {
11,633✔
1956
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
11,633✔
1957

1958
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
11,633✔
1959
  if (TSDB_CODE_SUCCESS == code) {
11,633!
1960
    code = jsonToNodeList(pJson, jkScanPhysiPlanScanCols, &pNode->pScanCols);
11,633✔
1961
  }
1962
  if (TSDB_CODE_SUCCESS == code) {
11,635!
1963
    code = jsonToNodeList(pJson, jkScanPhysiPlanScanPseudoCols, &pNode->pScanPseudoCols);
11,635✔
1964
  }
1965
  if (TSDB_CODE_SUCCESS == code) {
11,632!
1966
    code = tjsonGetUBigIntValue(pJson, jkScanPhysiPlanTableId, &pNode->uid);
11,632✔
1967
  }
1968
  if (TSDB_CODE_SUCCESS == code) {
11,633!
1969
    code = tjsonGetUBigIntValue(pJson, jkScanPhysiPlanSTableId, &pNode->suid);
11,633✔
1970
  }
1971
  if (TSDB_CODE_SUCCESS == code) {
11,635!
1972
    code = tjsonGetTinyIntValue(pJson, jkScanPhysiPlanTableType, &pNode->tableType);
11,635✔
1973
  }
1974
  if (TSDB_CODE_SUCCESS == code) {
11,635!
1975
    code = tjsonToObject(pJson, jkScanPhysiPlanTableName, jsonToName, &pNode->tableName);
11,635✔
1976
  }
1977
  if (TSDB_CODE_SUCCESS == code) {
11,633!
1978
    code = tjsonGetBoolValue(pJson, jkScanPhysiPlanGroupOrderScan, &pNode->groupOrderScan);
11,633✔
1979
  }
1980

1981
  return code;
11,635✔
1982
}
1983

1984
static const char* jkTagScanPhysiOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
1985

1986
static int32_t physiTagScanNodeToJson(const void* pObj, SJson* pJson) {
3✔
1987
  const STagScanPhysiNode* pNode = (const STagScanPhysiNode*)pObj;
3✔
1988

1989
  int32_t code = physiScanNodeToJson(pObj, pJson);
3✔
1990

1991
  if (TSDB_CODE_SUCCESS == code) {
3!
1992
    code = tjsonAddBoolToObject(pJson, jkTagScanPhysiOnlyMetaCtbIdx, pNode->onlyMetaCtbIdx);
3✔
1993
  }
1994
  return code;
3✔
1995
}
1996

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

2000
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
3✔
2001

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

2008
static const char* jkLastRowScanPhysiPlanGroupTags = "GroupTags";
2009
static const char* jkLastRowScanPhysiPlanGroupSort = "GroupSort";
2010
static const char* jkLastRowScanPhysiPlanTargets = "Targets";
2011
static const char* jkLastRowScanPhysiPlanFuncType = "FuncType";
2012
static const char* jkLastRowScanPhysiPlanFuncTypes = "FuncTypes";
2013

2014
static int32_t funcTypeToJson(const void* pObj, SJson* pJson) {
×
2015
  const int32_t* pNode = (const int32_t*)pObj;
×
2016

2017
  int32_t code = tjsonAddIntegerToObject(pJson, jkLastRowScanPhysiPlanFuncType, *pNode);
×
2018
  return code;
×
2019
}
2020

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

2024
  int32_t code = tjsonGetIntValue(pJson, jkLastRowScanPhysiPlanFuncType, pNode);
×
2025
  return code;
×
2026
}
2027

2028
static int32_t physiLastRowScanNodeToJson(const void* pObj, SJson* pJson) {
×
2029
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
×
2030

2031
  int32_t code = physiScanNodeToJson(pObj, pJson);
×
2032
  if (TSDB_CODE_SUCCESS == code) {
×
2033
    code = nodeListToJson(pJson, jkLastRowScanPhysiPlanGroupTags, pNode->pGroupTags);
×
2034
  }
2035
  if (TSDB_CODE_SUCCESS == code) {
×
2036
    code = tjsonAddBoolToObject(pJson, jkLastRowScanPhysiPlanGroupSort, pNode->groupSort);
×
2037
  }
2038
  if (TSDB_CODE_SUCCESS == code) {
×
2039
    code = nodeListToJson(pJson, jkLastRowScanPhysiPlanTargets, pNode->pTargets);
×
2040
  }
2041
  if (TSDB_CODE_SUCCESS == code) {
×
2042
    code = tjsonAddTArray(pJson, jkLastRowScanPhysiPlanFuncTypes, funcTypeToJson, pNode->pFuncTypes);
×
2043
  }
2044

2045
  return code;
×
2046
}
2047

2048
static int32_t jsonToPhysiLastRowScanNode(const SJson* pJson, void* pObj) {
×
2049
  SLastRowScanPhysiNode* pNode = (SLastRowScanPhysiNode*)pObj;
×
2050

2051
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
×
2052
  if (TSDB_CODE_SUCCESS == code) {
×
2053
    code = jsonToNodeList(pJson, jkLastRowScanPhysiPlanGroupTags, &pNode->pGroupTags);
×
2054
  }
2055
  if (TSDB_CODE_SUCCESS == code) {
×
2056
    code = tjsonGetBoolValue(pJson, jkLastRowScanPhysiPlanGroupSort, &pNode->groupSort);
×
2057
  }
2058
  if (TSDB_CODE_SUCCESS == code) {
×
2059
    code = jsonToNodeList(pJson, jkLastRowScanPhysiPlanTargets, &pNode->pTargets);
×
2060
  }
2061
  if (TSDB_CODE_SUCCESS == code) {
×
2062
    code = tjsonToTArray(pJson, jkLastRowScanPhysiPlanFuncTypes, jsonToFuncType, &pNode->pFuncTypes, sizeof(int32_t));
×
2063
  }
2064

2065
  return code;
×
2066
}
2067

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

2094
static int32_t physiTableScanNodeToJson(const void* pObj, SJson* pJson) {
11,726✔
2095
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
11,726✔
2096

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

2176
static int32_t jsonToPhysiTableScanNode(const SJson* pJson, void* pObj) {
11,631✔
2177
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
11,631✔
2178

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

2258
static const char* jkSysTableScanPhysiPlanMnodeEpSet = "MnodeEpSet";
2259
static const char* jkSysTableScanPhysiPlanShowRewrite = "ShowRewrite";
2260
static const char* jkSysTableScanPhysiPlanAccountId = "AccountId";
2261
static const char* jkSysTableScanPhysiPlanSysInfo = "SysInfo";
2262

2263
static int32_t physiSysTableScanNodeToJson(const void* pObj, SJson* pJson) {
×
2264
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
×
2265

2266
  int32_t code = physiScanNodeToJson(pObj, pJson);
×
2267
  if (TSDB_CODE_SUCCESS == code) {
×
2268
    code = tjsonAddObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, epSetToJson, &pNode->mgmtEpSet);
×
2269
  }
2270
  if (TSDB_CODE_SUCCESS == code) {
×
2271
    code = tjsonAddBoolToObject(pJson, jkSysTableScanPhysiPlanShowRewrite, pNode->showRewrite);
×
2272
  }
2273
  if (TSDB_CODE_SUCCESS == code) {
×
2274
    code = tjsonAddIntegerToObject(pJson, jkSysTableScanPhysiPlanAccountId, pNode->accountId);
×
2275
  }
2276
  if (TSDB_CODE_SUCCESS == code) {
×
2277
    code = tjsonAddBoolToObject(pJson, jkSysTableScanPhysiPlanSysInfo, pNode->sysInfo);
×
2278
  }
2279

2280
  return code;
×
2281
}
2282

2283
static int32_t jsonToPhysiSysTableScanNode(const SJson* pJson, void* pObj) {
×
2284
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
×
2285

2286
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
×
2287
  if (TSDB_CODE_SUCCESS == code) {
×
2288
    code = tjsonToObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, jsonToEpSet, &pNode->mgmtEpSet);
×
2289
  }
2290
  if (TSDB_CODE_SUCCESS == code) {
×
2291
    code = tjsonGetBoolValue(pJson, jkSysTableScanPhysiPlanShowRewrite, &pNode->showRewrite);
×
2292
  }
2293
  if (TSDB_CODE_SUCCESS == code) {
×
2294
    tjsonGetNumberValue(pJson, jkSysTableScanPhysiPlanAccountId, pNode->accountId, code);
×
2295
  }
2296
  if (TSDB_CODE_SUCCESS == code) {
×
2297
    code = tjsonGetBoolValue(pJson, jkSysTableScanPhysiPlanSysInfo, &pNode->sysInfo);
×
2298
  }
2299

2300
  return code;
×
2301
}
2302

2303
static const char* jkProjectPhysiPlanProjections = "Projections";
2304
static const char* jkProjectPhysiPlanMergeDataBlock = "MergeDataBlock";
2305
static const char* jkProjectPhysiPlanIgnoreGroupId = "IgnoreGroupId";
2306
static const char* jkProjectPhysiPlanInputIgnoreGroup = "InputIgnoreGroup";
2307

2308
static int32_t physiProjectNodeToJson(const void* pObj, SJson* pJson) {
7,269✔
2309
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
7,269✔
2310

2311
  int32_t code = physicPlanNodeToJson(pObj, pJson);
7,269✔
2312
  if (TSDB_CODE_SUCCESS == code) {
7,269!
2313
    code = nodeListToJson(pJson, jkProjectPhysiPlanProjections, pNode->pProjections);
7,269✔
2314
  }
2315
  if (TSDB_CODE_SUCCESS == code) {
7,269!
2316
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
7,269✔
2317
  }
2318
  if (TSDB_CODE_SUCCESS == code) {
7,269!
2319
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanIgnoreGroupId, pNode->ignoreGroupId);
7,269✔
2320
  }
2321
  if (TSDB_CODE_SUCCESS == code) {
7,269!
2322
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanInputIgnoreGroup, pNode->inputIgnoreGroup);
7,269✔
2323
  }
2324
  return code;
7,269✔
2325
}
2326

2327
static int32_t jsonToPhysiProjectNode(const SJson* pJson, void* pObj) {
7,095✔
2328
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
7,095✔
2329

2330
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
7,095✔
2331
  if (TSDB_CODE_SUCCESS == code) {
7,098!
2332
    code = jsonToNodeList(pJson, jkProjectPhysiPlanProjections, &pNode->pProjections);
7,098✔
2333
  }
2334
  if (TSDB_CODE_SUCCESS == code) {
7,100!
2335
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
7,100✔
2336
  }
2337
  if (TSDB_CODE_SUCCESS == code) {
7,099!
2338
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanIgnoreGroupId, &pNode->ignoreGroupId);
7,099✔
2339
  }
2340
  if (TSDB_CODE_SUCCESS == code) {
7,100!
2341
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanInputIgnoreGroup, &pNode->inputIgnoreGroup);
7,100✔
2342
  }
2343
  return code;
7,100✔
2344
}
2345

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

2376
static int32_t physiMergeJoinNodeToJson(const void* pObj, SJson* pJson) {
×
2377
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
×
2378

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

2441
  return code;
×
2442
}
2443

2444
static int32_t jsonToPhysiMergeJoinNode(const SJson* pJson, void* pObj) {
×
2445
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
×
2446

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

2509
  return code;
×
2510
}
2511

2512
static int32_t physiHashJoinNodeToJson(const void* pObj, SJson* pJson) {
×
2513
  const SHashJoinPhysiNode* pNode = (const SHashJoinPhysiNode*)pObj;
×
2514

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

2574
  return code;
×
2575
}
2576

2577
static int32_t jsonToPhysiHashJoinNode(const SJson* pJson, void* pObj) {
×
2578
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
×
2579

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

2639
  return code;
×
2640
}
2641

2642
static const char* jkAggPhysiPlanExprs = "Exprs";
2643
static const char* jkAggPhysiPlanGroupKeys = "GroupKeys";
2644
static const char* jkAggPhysiPlanAggFuncs = "AggFuncs";
2645
static const char* jkAggPhysiPlanMergeDataBlock = "MergeDataBlock";
2646
static const char* jkAggPhysiPlanGroupKeyOptimized = "GroupKeyOptimized";
2647
static const char* jkAggPhysiPlanHasCountLikeFunc = "HasCountFunc";
2648

2649
static int32_t physiAggNodeToJson(const void* pObj, SJson* pJson) {
48✔
2650
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
48✔
2651

2652
  int32_t code = physicPlanNodeToJson(pObj, pJson);
48✔
2653
  if (TSDB_CODE_SUCCESS == code) {
48!
2654
    code = nodeListToJson(pJson, jkAggPhysiPlanExprs, pNode->pExprs);
48✔
2655
  }
2656
  if (TSDB_CODE_SUCCESS == code) {
48!
2657
    code = nodeListToJson(pJson, jkAggPhysiPlanGroupKeys, pNode->pGroupKeys);
48✔
2658
  }
2659
  if (TSDB_CODE_SUCCESS == code) {
48!
2660
    code = nodeListToJson(pJson, jkAggPhysiPlanAggFuncs, pNode->pAggFuncs);
48✔
2661
  }
2662
  if (TSDB_CODE_SUCCESS == code) {
48!
2663
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
48✔
2664
  }
2665
  if (TSDB_CODE_SUCCESS == code) {
48!
2666
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanGroupKeyOptimized, pNode->groupKeyOptimized);
48✔
2667
  }
2668
  if (TSDB_CODE_SUCCESS == code) {
48!
2669
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanHasCountLikeFunc, pNode->hasCountLikeFunc);
48✔
2670
  }
2671

2672
  return code;
48✔
2673
}
2674

2675
static int32_t jsonToPhysiAggNode(const SJson* pJson, void* pObj) {
33✔
2676
  SAggPhysiNode* pNode = (SAggPhysiNode*)pObj;
33✔
2677

2678
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
33✔
2679
  if (TSDB_CODE_SUCCESS == code) {
33!
2680
    code = jsonToNodeList(pJson, jkAggPhysiPlanExprs, &pNode->pExprs);
33✔
2681
  }
2682
  if (TSDB_CODE_SUCCESS == code) {
33!
2683
    code = jsonToNodeList(pJson, jkAggPhysiPlanGroupKeys, &pNode->pGroupKeys);
33✔
2684
  }
2685
  if (TSDB_CODE_SUCCESS == code) {
33!
2686
    code = jsonToNodeList(pJson, jkAggPhysiPlanAggFuncs, &pNode->pAggFuncs);
33✔
2687
  }
2688
  if (TSDB_CODE_SUCCESS == code) {
33!
2689
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
33✔
2690
  }
2691
  if (TSDB_CODE_SUCCESS == code) {
33!
2692
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanGroupKeyOptimized, &pNode->groupKeyOptimized);
33✔
2693
  }
2694
  if (TSDB_CODE_SUCCESS == code) {
33!
2695
    code = tjsonGetBoolValue(pJson, jkAggPhysiPlanHasCountLikeFunc, &pNode->hasCountLikeFunc);
33✔
2696
  }
2697

2698
  return code;
33✔
2699
}
2700

2701
static const char* jkExchangePhysiPlanSrcStartGroupId = "SrcStartGroupId";
2702
static const char* jkExchangePhysiPlanSrcEndGroupId = "SrcEndGroupId";
2703
static const char* jkExchangePhysiPlanSrcEndPoints = "SrcEndPoints";
2704
static const char* jkExchangePhysiPlanSeqRecvData = "SeqRecvData";
2705

2706
static int32_t physiExchangeNodeToJson(const void* pObj, SJson* pJson) {
×
2707
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
×
2708

2709
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
2710
  if (TSDB_CODE_SUCCESS == code) {
×
2711
    code = tjsonAddIntegerToObject(pJson, jkExchangePhysiPlanSrcStartGroupId, pNode->srcStartGroupId);
×
2712
  }
2713
  if (TSDB_CODE_SUCCESS == code) {
×
2714
    code = tjsonAddIntegerToObject(pJson, jkExchangePhysiPlanSrcEndGroupId, pNode->srcEndGroupId);
×
2715
  }
2716
  if (TSDB_CODE_SUCCESS == code) {
×
2717
    code = nodeListToJson(pJson, jkExchangePhysiPlanSrcEndPoints, pNode->pSrcEndPoints);
×
2718
  }
2719
  if (TSDB_CODE_SUCCESS == code) {
×
2720
    code = tjsonAddBoolToObject(pJson, jkExchangePhysiPlanSeqRecvData, pNode->seqRecvData);
×
2721
  }
2722

2723
  return code;
×
2724
}
2725

2726
static int32_t jsonToPhysiExchangeNode(const SJson* pJson, void* pObj) {
×
2727
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
×
2728

2729
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
2730
  if (TSDB_CODE_SUCCESS == code) {
×
2731
    code = tjsonGetIntValue(pJson, jkExchangePhysiPlanSrcStartGroupId, &pNode->srcStartGroupId);
×
2732
  }
2733
  if (TSDB_CODE_SUCCESS == code) {
×
2734
    code = tjsonGetIntValue(pJson, jkExchangePhysiPlanSrcEndGroupId, &pNode->srcEndGroupId);
×
2735
  }
2736
  if (TSDB_CODE_SUCCESS == code) {
×
2737
    code = jsonToNodeList(pJson, jkExchangePhysiPlanSrcEndPoints, &pNode->pSrcEndPoints);
×
2738
  }
2739
  if (TSDB_CODE_SUCCESS == code) {
×
2740
    code = tjsonGetBoolValue(pJson, jkExchangePhysiPlanSeqRecvData, &pNode->seqRecvData);
×
2741
  }
2742

2743
  return code;
×
2744
}
2745

2746
static const char* jkMergePhysiPlanMergeKeys = "MergeKeys";
2747
static const char* jkMergePhysiPlanTargets = "Targets";
2748
static const char* jkMergePhysiPlanNumOfChannels = "NumOfChannels";
2749
static const char* jkMergePhysiPlanSrcGroupId = "SrcGroupId";
2750
static const char* jkMergePhysiPlanGroupSort = "GroupSort";
2751
static const char* jkMergePhysiPlanIgnoreGroupID = "IgnoreGroupID";
2752
static const char* jkMergePhysiPlanInputWithGroupId = "InputWithGroupId";
2753
static const char* jkMergePhysiPlanType = "Type";
2754

2755
static int32_t physiMergeNodeToJson(const void* pObj, SJson* pJson) {
×
2756
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
×
2757

2758
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
2759
  if (TSDB_CODE_SUCCESS == code) {
×
2760
    code = nodeListToJson(pJson, jkMergePhysiPlanMergeKeys, pNode->pMergeKeys);
×
2761
  }
2762
  if (TSDB_CODE_SUCCESS == code) {
×
2763
    code = nodeListToJson(pJson, jkMergePhysiPlanTargets, pNode->pTargets);
×
2764
  }
2765
  if (TSDB_CODE_SUCCESS == code) {
×
2766
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanNumOfChannels, pNode->numOfChannels);
×
2767
  }
2768
  if (TSDB_CODE_SUCCESS == code) {
×
2769
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanSrcGroupId, pNode->srcGroupId);
×
2770
  }
2771
  if (TSDB_CODE_SUCCESS == code) {
×
2772
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanGroupSort, pNode->groupSort);
×
2773
  }
2774
  if (TSDB_CODE_SUCCESS == code) {
×
2775
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanIgnoreGroupID, pNode->ignoreGroupId);
×
2776
  }
2777
  if (TSDB_CODE_SUCCESS == code) {
×
2778
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanInputWithGroupId, pNode->inputWithGroupId);
×
2779
  }
2780
  if (TSDB_CODE_SUCCESS == code) {
×
2781
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanType, pNode->type);
×
2782
  }
2783

2784
  return code;
×
2785
}
2786

2787
static int32_t jsonToPhysiMergeNode(const SJson* pJson, void* pObj) {
×
2788
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
×
2789

2790
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
2791
  if (TSDB_CODE_SUCCESS == code) {
×
2792
    code = jsonToNodeList(pJson, jkMergePhysiPlanMergeKeys, &pNode->pMergeKeys);
×
2793
  }
2794
  if (TSDB_CODE_SUCCESS == code) {
×
2795
    code = jsonToNodeList(pJson, jkMergePhysiPlanTargets, &pNode->pTargets);
×
2796
  }
2797
  if (TSDB_CODE_SUCCESS == code) {
×
2798
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanNumOfChannels, &pNode->numOfChannels);
×
2799
  }
2800
  if (TSDB_CODE_SUCCESS == code) {
×
2801
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanSrcGroupId, &pNode->srcGroupId);
×
2802
  }
2803
  if (TSDB_CODE_SUCCESS == code) {
×
2804
    code = tjsonGetBoolValue(pJson, jkMergePhysiPlanGroupSort, &pNode->groupSort);
×
2805
  }
2806
  if (TSDB_CODE_SUCCESS == code) {
×
2807
    code = tjsonGetBoolValue(pJson, jkMergePhysiPlanIgnoreGroupID, &pNode->ignoreGroupId);
×
2808
  }
2809
  if (TSDB_CODE_SUCCESS == code) {
×
2810
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanType, (int32_t*)&pNode->type);
×
2811
  }
2812

2813
  return code;
×
2814
}
2815

2816
static const char* jkSortPhysiPlanExprs = "Exprs";
2817
static const char* jkSortPhysiPlanSortKeys = "SortKeys";
2818
static const char* jkSortPhysiPlanTargets = "Targets";
2819
static const char* jkSortPhysiPlanCalcGroupIds = "CalcGroupIds";
2820
static const char* jkSortPhysiPlanExcludePKCol = "ExcludePKCol";
2821

2822
static int32_t physiSortNodeToJson(const void* pObj, SJson* pJson) {
×
2823
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
×
2824

2825
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
2826
  if (TSDB_CODE_SUCCESS == code) {
×
2827
    code = nodeListToJson(pJson, jkSortPhysiPlanExprs, pNode->pExprs);
×
2828
  }
2829
  if (TSDB_CODE_SUCCESS == code) {
×
2830
    code = nodeListToJson(pJson, jkSortPhysiPlanSortKeys, pNode->pSortKeys);
×
2831
  }
2832
  if (TSDB_CODE_SUCCESS == code) {
×
2833
    code = nodeListToJson(pJson, jkSortPhysiPlanTargets, pNode->pTargets);
×
2834
  }
2835
  if (TSDB_CODE_SUCCESS == code) {
×
2836
    code = tjsonAddBoolToObject(pJson, jkSortPhysiPlanCalcGroupIds, pNode->calcGroupId);
×
2837
  }
2838
  if (TSDB_CODE_SUCCESS == code) {
×
2839
    code = tjsonAddBoolToObject(pJson, jkSortPhysiPlanExcludePKCol, pNode->excludePkCol);
×
2840
  }
2841

2842
  return code;
×
2843
}
2844

2845
static int32_t jsonToPhysiSortNode(const SJson* pJson, void* pObj) {
×
2846
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
×
2847

2848
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
2849
  if (TSDB_CODE_SUCCESS == code) {
×
2850
    code = jsonToNodeList(pJson, jkSortPhysiPlanExprs, &pNode->pExprs);
×
2851
  }
2852
  if (TSDB_CODE_SUCCESS == code) {
×
2853
    code = jsonToNodeList(pJson, jkSortPhysiPlanSortKeys, &pNode->pSortKeys);
×
2854
  }
2855
  if (TSDB_CODE_SUCCESS == code) {
×
2856
    code = jsonToNodeList(pJson, jkSortPhysiPlanTargets, &pNode->pTargets);
×
2857
  }
2858
  if (TSDB_CODE_SUCCESS == code) {
×
2859
    code = tjsonGetBoolValue(pJson, jkSortPhysiPlanCalcGroupIds, &pNode->calcGroupId);
×
2860
  }
2861
  if (TSDB_CODE_SUCCESS == code) {
×
2862
    code = tjsonGetBoolValue(pJson, jkSortPhysiPlanExcludePKCol, &pNode->excludePkCol);
×
2863
  }
2864

2865
  return code;
×
2866
}
2867

2868
static const char* jkWindowPhysiPlanExprs = "Exprs";
2869
static const char* jkWindowPhysiPlanFuncs = "Funcs";
2870
static const char* jkWindowPhysiPlanTsPk = "TsPk";
2871
static const char* jkWindowPhysiPlanTsEnd = "TsEnd";
2872
static const char* jkWindowPhysiPlanTriggerType = "TriggerType";
2873
static const char* jkWindowPhysiPlanWatermark = "Watermark";
2874
static const char* jkWindowPhysiPlanDeleteMark = "DeleteMark";
2875
static const char* jkWindowPhysiPlanIgnoreExpired = "IgnoreExpired";
2876
static const char* jkWindowPhysiPlanInputTsOrder = "InputTsOrder";
2877
static const char* jkWindowPhysiPlanMergeDataBlock = "MergeDataBlock";
2878
static const char* jkWindowPhysiPlanDestHasPrimaryKey = "DestHasPrimaryKey";
2879

2880
static int32_t physiWindowNodeToJson(const void* pObj, SJson* pJson) {
6,961✔
2881
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
6,961✔
2882

2883
  int32_t code = physicPlanNodeToJson(pObj, pJson);
6,961✔
2884
  if (TSDB_CODE_SUCCESS == code) {
6,961!
2885
    code = nodeListToJson(pJson, jkWindowPhysiPlanExprs, pNode->pExprs);
6,961✔
2886
  }
2887
  if (TSDB_CODE_SUCCESS == code) {
6,961!
2888
    code = nodeListToJson(pJson, jkWindowPhysiPlanFuncs, pNode->pFuncs);
6,961✔
2889
  }
2890
  if (TSDB_CODE_SUCCESS == code) {
6,961!
2891
    code = tjsonAddObject(pJson, jkWindowPhysiPlanTsPk, nodeToJson, pNode->pTspk);
6,961✔
2892
  }
2893
  if (TSDB_CODE_SUCCESS == code) {
6,961!
2894
    code = tjsonAddObject(pJson, jkWindowPhysiPlanTsEnd, nodeToJson, pNode->pTsEnd);
6,961✔
2895
  }
2896
  if (TSDB_CODE_SUCCESS == code) {
6,961!
2897
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanTriggerType, pNode->triggerType);
6,961✔
2898
  }
2899
  if (TSDB_CODE_SUCCESS == code) {
6,961!
2900
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanWatermark, pNode->watermark);
6,961✔
2901
  }
2902
  if (TSDB_CODE_SUCCESS == code) {
6,961!
2903
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanDeleteMark, pNode->deleteMark);
6,961✔
2904
  }
2905
  if (TSDB_CODE_SUCCESS == code) {
6,961!
2906
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanIgnoreExpired, pNode->igExpired);
6,961✔
2907
  }
2908
  if (TSDB_CODE_SUCCESS == code) {
6,961!
2909
    code = tjsonAddBoolToObject(pJson, jkWindowPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
6,961✔
2910
  }
2911
  if (TSDB_CODE_SUCCESS == code) {
6,961!
2912
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanDestHasPrimaryKey, pNode->destHasPrimaryKey);
6,961✔
2913
  }
2914

2915
  return code;
6,961✔
2916
}
2917

2918
static int32_t jsonToPhysiWindowNode(const SJson* pJson, void* pObj) {
7,137✔
2919
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
7,137✔
2920

2921
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
7,137✔
2922
  if (TSDB_CODE_SUCCESS == code) {
7,137!
2923
    code = jsonToNodeList(pJson, jkWindowPhysiPlanExprs, &pNode->pExprs);
7,137✔
2924
  }
2925
  if (TSDB_CODE_SUCCESS == code) {
7,136!
2926
    code = jsonToNodeList(pJson, jkWindowPhysiPlanFuncs, &pNode->pFuncs);
7,136✔
2927
  }
2928
  if (TSDB_CODE_SUCCESS == code) {
7,137!
2929
    code = jsonToNodeObject(pJson, jkWindowPhysiPlanTsPk, (SNode**)&pNode->pTspk);
7,137✔
2930
  }
2931
  if (TSDB_CODE_SUCCESS == code) {
7,137!
2932
    code = jsonToNodeObject(pJson, jkWindowPhysiPlanTsEnd, (SNode**)&pNode->pTsEnd);
7,137✔
2933
  }
2934
  if (TSDB_CODE_SUCCESS == code) {
7,137!
2935
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanTriggerType, &pNode->triggerType);
7,137✔
2936
  }
2937
  if (TSDB_CODE_SUCCESS == code) {
7,137!
2938
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanWatermark, &pNode->watermark);
7,137✔
2939
  }
2940
  if (TSDB_CODE_SUCCESS == code) {
7,136!
2941
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanDeleteMark, &pNode->deleteMark);
7,136✔
2942
  }
2943
  if (TSDB_CODE_SUCCESS == code) {
7,137!
2944
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanIgnoreExpired, &pNode->igExpired);
7,137✔
2945
  }
2946
  if (TSDB_CODE_SUCCESS == code) {
7,137!
2947
    code = tjsonGetBoolValue(pJson, jkWindowPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
7,137✔
2948
  }
2949
  if (TSDB_CODE_SUCCESS == code) {
7,137!
2950
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanDestHasPrimaryKey, &pNode->destHasPrimaryKey);
7,137✔
2951
  }
2952

2953
  return code;
7,137✔
2954
}
2955

2956
static const char* jkIntervalPhysiPlanInterval = "Interval";
2957
static const char* jkIntervalPhysiPlanOffset = "Offset";
2958
static const char* jkIntervalPhysiPlanSliding = "Sliding";
2959
static const char* jkIntervalPhysiPlanIntervalUnit = "intervalUnit";
2960
static const char* jkIntervalPhysiPlanSlidingUnit = "slidingUnit";
2961
static const char* jkIntervalPhysiPlanStartTime = "StartTime";
2962
static const char* jkIntervalPhysiPlanEndTime = "EndTime";
2963

2964
static int32_t physiIntervalNodeToJson(const void* pObj, SJson* pJson) {
4,941✔
2965
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
4,941✔
2966

2967
  int32_t code = physiWindowNodeToJson(pObj, pJson);
4,941✔
2968
  if (TSDB_CODE_SUCCESS == code) {
4,941!
2969
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanInterval, pNode->interval);
4,941✔
2970
  }
2971
  if (TSDB_CODE_SUCCESS == code) {
4,941!
2972
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanOffset, pNode->offset);
4,941✔
2973
  }
2974
  if (TSDB_CODE_SUCCESS == code) {
4,941!
2975
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanSliding, pNode->sliding);
4,941✔
2976
  }
2977
  if (TSDB_CODE_SUCCESS == code) {
4,941!
2978
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanIntervalUnit, pNode->intervalUnit);
4,941✔
2979
  }
2980
  if (TSDB_CODE_SUCCESS == code) {
4,941!
2981
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanSlidingUnit, pNode->slidingUnit);
4,941✔
2982
  }
2983
  if (TSDB_CODE_SUCCESS == code) {
4,941!
2984
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanStartTime, pNode->timeRange.skey);
4,941✔
2985
  }
2986
  if (TSDB_CODE_SUCCESS == code) {
4,941!
2987
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanEndTime, pNode->timeRange.ekey);
4,941✔
2988
  }
2989

2990
  return code;
4,941✔
2991
}
2992

2993
static int32_t jsonToPhysiIntervalNode(const SJson* pJson, void* pObj) {
5,098✔
2994
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
5,098✔
2995

2996
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
5,098✔
2997
  if (TSDB_CODE_SUCCESS == code) {
5,099!
2998
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanInterval, &pNode->interval);
5,099✔
2999
  }
3000
  if (TSDB_CODE_SUCCESS == code) {
5,099!
3001
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanOffset, &pNode->offset);
5,099✔
3002
  }
3003
  if (TSDB_CODE_SUCCESS == code) {
5,099!
3004
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanSliding, &pNode->sliding);
5,099✔
3005
  }
3006
  if (TSDB_CODE_SUCCESS == code) {
5,099!
3007
    code = tjsonGetTinyIntValue(pJson, jkIntervalPhysiPlanIntervalUnit, &pNode->intervalUnit);
5,099✔
3008
  }
3009
  if (TSDB_CODE_SUCCESS == code) {
5,099!
3010
    code = tjsonGetTinyIntValue(pJson, jkIntervalPhysiPlanSlidingUnit, &pNode->slidingUnit);
5,099✔
3011
  }
3012
  if (TSDB_CODE_SUCCESS == code) {
5,099!
3013
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanStartTime, &pNode->timeRange.skey);
5,099✔
3014
  }
3015
  if (TSDB_CODE_SUCCESS == code) {
5,099!
3016
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanEndTime, &pNode->timeRange.ekey);
5,099✔
3017
  }
3018

3019
  return code;
5,099✔
3020
}
3021

3022
static const char* jkFillPhysiPlanMode = "Mode";
3023
static const char* jkFillPhysiPlanFillExprs = "FillExprs";
3024
static const char* jkFillPhysiPlanNotFillExprs = "NotFillExprs";
3025
static const char* jkFillPhysiPlanWStartTs = "WStartTs";
3026
static const char* jkFillPhysiPlanValues = "Values";
3027
static const char* jkFillPhysiPlanStartTime = "StartTime";
3028
static const char* jkFillPhysiPlanEndTime = "EndTime";
3029
static const char* jkFillPhysiPlanFillNullExprs = "FillNullExprs";
3030

3031
static int32_t physiFillNodeToJson(const void* pObj, SJson* pJson) {
647✔
3032
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
647✔
3033

3034
  int32_t code = physicPlanNodeToJson(pObj, pJson);
647✔
3035
  if (TSDB_CODE_SUCCESS == code) {
647!
3036
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanMode, pNode->mode);
647✔
3037
  }
3038
  if (TSDB_CODE_SUCCESS == code) {
647!
3039
    code = nodeListToJson(pJson, jkFillPhysiPlanFillExprs, pNode->pFillExprs);
647✔
3040
  }
3041
  if (TSDB_CODE_SUCCESS == code) {
647!
3042
    code = nodeListToJson(pJson, jkFillPhysiPlanNotFillExprs, pNode->pNotFillExprs);
647✔
3043
  }
3044
  if (TSDB_CODE_SUCCESS == code) {
647!
3045
    code = tjsonAddObject(pJson, jkFillPhysiPlanWStartTs, nodeToJson, pNode->pWStartTs);
647✔
3046
  }
3047
  if (TSDB_CODE_SUCCESS == code) {
647!
3048
    code = tjsonAddObject(pJson, jkFillPhysiPlanValues, nodeToJson, pNode->pValues);
647✔
3049
  }
3050
  if (TSDB_CODE_SUCCESS == code) {
647!
3051
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanStartTime, pNode->timeRange.skey);
647✔
3052
  }
3053
  if (TSDB_CODE_SUCCESS == code) {
647!
3054
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanEndTime, pNode->timeRange.ekey);
647✔
3055
  }
3056
  if (TSDB_CODE_SUCCESS == code) {
647!
3057
    code = nodeListToJson(pJson, jkFillPhysiPlanFillNullExprs, pNode->pFillNullExprs);
647✔
3058
  }
3059

3060
  return code;
647✔
3061
}
3062

3063
static int32_t jsonToPhysiFillNode(const SJson* pJson, void* pObj) {
647✔
3064
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
647✔
3065

3066
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
647✔
3067
  if (TSDB_CODE_SUCCESS == code) {
647!
3068
    tjsonGetNumberValue(pJson, jkFillPhysiPlanMode, pNode->mode, code);
647✔
3069
  }
3070
  if (TSDB_CODE_SUCCESS == code) {
647!
3071
    code = jsonToNodeList(pJson, jkFillPhysiPlanFillExprs, &pNode->pFillExprs);
647✔
3072
  }
3073
  if (TSDB_CODE_SUCCESS == code) {
647!
3074
    code = jsonToNodeList(pJson, jkFillPhysiPlanNotFillExprs, &pNode->pNotFillExprs);
647✔
3075
  }
3076
  if (TSDB_CODE_SUCCESS == code) {
647!
3077
    code = jsonToNodeObject(pJson, jkFillPhysiPlanWStartTs, &pNode->pWStartTs);
647✔
3078
  }
3079
  if (TSDB_CODE_SUCCESS == code) {
647!
3080
    code = jsonToNodeObject(pJson, jkFillPhysiPlanValues, &pNode->pValues);
647✔
3081
  }
3082
  if (TSDB_CODE_SUCCESS == code) {
647!
3083
    code = tjsonGetBigIntValue(pJson, jkFillPhysiPlanStartTime, &pNode->timeRange.skey);
647✔
3084
  }
3085
  if (TSDB_CODE_SUCCESS == code) {
647!
3086
    code = tjsonGetBigIntValue(pJson, jkFillPhysiPlanEndTime, &pNode->timeRange.ekey);
647✔
3087
  }
3088
  if (TSDB_CODE_SUCCESS == code) {
647!
3089
    code = jsonToNodeList(pJson, jkFillPhysiPlanFillNullExprs, &pNode->pFillNullExprs);
647✔
3090
  }
3091

3092
  return code;
647✔
3093
}
3094

3095
static const char* jkSessionWindowPhysiPlanGap = "Gap";
3096

3097
static int32_t physiSessionWindowNodeToJson(const void* pObj, SJson* pJson) {
966✔
3098
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
966✔
3099

3100
  int32_t code = physiWindowNodeToJson(pObj, pJson);
966✔
3101
  if (TSDB_CODE_SUCCESS == code) {
966!
3102
    code = tjsonAddIntegerToObject(pJson, jkSessionWindowPhysiPlanGap, pNode->gap);
966✔
3103
  }
3104

3105
  return code;
966✔
3106
}
3107

3108
static int32_t jsonToPhysiSessionWindowNode(const SJson* pJson, void* pObj) {
966✔
3109
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
966✔
3110

3111
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
966✔
3112
  if (TSDB_CODE_SUCCESS == code) {
966!
3113
    tjsonGetNumberValue(pJson, jkSessionWindowPhysiPlanGap, pNode->gap, code);
966✔
3114
  }
3115

3116
  return code;
966✔
3117
}
3118

3119
static const char* jkStateWindowPhysiPlanStateKey = "StateKey";
3120

3121
static int32_t physiStateWindowNodeToJson(const void* pObj, SJson* pJson) {
427✔
3122
  const SStateWinodwPhysiNode* pNode = (const SStateWinodwPhysiNode*)pObj;
427✔
3123

3124
  int32_t code = physiWindowNodeToJson(pObj, pJson);
427✔
3125
  if (TSDB_CODE_SUCCESS == code) {
427!
3126
    code = tjsonAddObject(pJson, jkStateWindowPhysiPlanStateKey, nodeToJson, pNode->pStateKey);
427✔
3127
  }
3128

3129
  return code;
427✔
3130
}
3131

3132
static int32_t jsonToPhysiStateWindowNode(const SJson* pJson, void* pObj) {
427✔
3133
  SStateWinodwPhysiNode* pNode = (SStateWinodwPhysiNode*)pObj;
427✔
3134

3135
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
427✔
3136
  if (TSDB_CODE_SUCCESS == code) {
427!
3137
    code = jsonToNodeObject(pJson, jkStateWindowPhysiPlanStateKey, &pNode->pStateKey);
427✔
3138
  }
3139

3140
  return code;
427✔
3141
}
3142

3143
static const char* jkEventWindowPhysiPlanStartCond = "StartCond";
3144
static const char* jkEventWindowPhysiPlanEndCond = "EndCond";
3145

3146
static int32_t physiEventWindowNodeToJson(const void* pObj, SJson* pJson) {
261✔
3147
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
261✔
3148

3149
  int32_t code = physiWindowNodeToJson(pObj, pJson);
261✔
3150
  if (TSDB_CODE_SUCCESS == code) {
261!
3151
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanStartCond, nodeToJson, pNode->pStartCond);
261✔
3152
  }
3153
  if (TSDB_CODE_SUCCESS == code) {
261!
3154
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanEndCond, nodeToJson, pNode->pEndCond);
261✔
3155
  }
3156

3157
  return code;
261✔
3158
}
3159

3160
static int32_t jsonToPhysiEventWindowNode(const SJson* pJson, void* pObj) {
261✔
3161
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
261✔
3162

3163
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
261✔
3164
  if (TSDB_CODE_SUCCESS == code) {
261!
3165
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanStartCond, &pNode->pStartCond);
261✔
3166
  }
3167
  if (TSDB_CODE_SUCCESS == code) {
261!
3168
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanEndCond, &pNode->pEndCond);
261✔
3169
  }
3170

3171
  return code;
261✔
3172
}
3173

3174
static const char* jkCountWindowPhysiPlanWindowCount = "WindowCount";
3175
static const char* jkCountWindowPhysiPlanWindowSliding = "WindowSliding";
3176

3177
static int32_t physiCountWindowNodeToJson(const void* pObj, SJson* pJson) {
366✔
3178
  const SCountWinodwPhysiNode* pNode = (const SCountWinodwPhysiNode*)pObj;
366✔
3179

3180
  int32_t code = physiWindowNodeToJson(pObj, pJson);
366✔
3181
  if (TSDB_CODE_SUCCESS == code) {
366!
3182
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowCount, pNode->windowCount);
366✔
3183
  }
3184
  if (TSDB_CODE_SUCCESS == code) {
366!
3185
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowSliding, pNode->windowSliding);
366✔
3186
  }
3187
  return code;
366✔
3188
}
3189

3190
static int32_t jsonToPhysiCountWindowNode(const SJson* pJson, void* pObj) {
384✔
3191
  SCountWinodwPhysiNode* pNode = (SCountWinodwPhysiNode*)pObj;
384✔
3192

3193
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
384✔
3194
  if (TSDB_CODE_SUCCESS == code) {
384!
3195
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowCount, &pNode->windowCount);
384✔
3196
  }
3197
  if (TSDB_CODE_SUCCESS == code) {
384!
3198
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowSliding, &pNode->windowSliding);
384✔
3199
  }
3200

3201
  return code;
384✔
3202
}
3203

3204
static const char* jkAnomalyWindowPhysiPlanAnomalyKey = "AnomalyKey";
3205
static const char* jkAnomalyWindowPhysiPlanAnomalyOption = "AnomalyOpt";
3206

3207
static int32_t physiAnomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
3208
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3209

3210
  int32_t code = physiWindowNodeToJson(pObj, pJson);
×
3211
  if (TSDB_CODE_SUCCESS == code) {
×
3212
    code = tjsonAddObject(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, nodeToJson, pNode->pAnomalyKey);
×
3213
  }
3214
  if (TSDB_CODE_SUCCESS == code) {
×
3215
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt);
×
3216
  }
3217
  return code;
×
3218
}
3219

3220
static int32_t jsonToPhysiAnomalyWindowNode(const SJson* pJson, void* pObj) {
×
3221
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3222

3223
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
×
3224
  if (TSDB_CODE_SUCCESS == code) {
×
3225
    code = jsonToNodeObject(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, &pNode->pAnomalyKey);
×
3226
  }
3227
  if (TSDB_CODE_SUCCESS == code) {
×
3228
    code = tjsonGetStringValue(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt);
×
3229
  }
3230

3231
  return code;
×
3232
}
3233

3234
static const char* jkPartitionPhysiPlanExprs = "Exprs";
3235
static const char* jkPartitionPhysiPlanPartitionKeys = "PartitionKeys";
3236
static const char* jkPartitionPhysiPlanTargets = "Targets";
3237
static const char* jkPartitionPhysiPlanNeedBlockOutputTsOrder = "NeedBlockOutputTsOrder";
3238
static const char* jkPartitionPhysiPlanTsSlotId = "tsSlotId";
3239

3240
static int32_t physiPartitionNodeToJson(const void* pObj, SJson* pJson) {
1,435✔
3241
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
1,435✔
3242

3243
  int32_t code = physicPlanNodeToJson(pObj, pJson);
1,435✔
3244
  if (TSDB_CODE_SUCCESS == code) {
1,435!
3245
    code = nodeListToJson(pJson, jkPartitionPhysiPlanExprs, pNode->pExprs);
1,435✔
3246
  }
3247
  if (TSDB_CODE_SUCCESS == code) {
1,435!
3248
    code = nodeListToJson(pJson, jkPartitionPhysiPlanPartitionKeys, pNode->pPartitionKeys);
1,435✔
3249
  }
3250
  if (TSDB_CODE_SUCCESS == code) {
1,435!
3251
    code = nodeListToJson(pJson, jkPartitionPhysiPlanTargets, pNode->pTargets);
1,435✔
3252
  }
3253
  if (TSDB_CODE_SUCCESS == code) {
1,435!
3254
    code = tjsonAddBoolToObject(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, pNode->needBlockOutputTsOrder);
1,435✔
3255
  }
3256
  if (TSDB_CODE_SUCCESS == code) {
1,435!
3257
    code = tjsonAddIntegerToObject(pJson, jkPartitionPhysiPlanTsSlotId, pNode->tsSlotId);
1,435✔
3258
  }
3259

3260
  return code;
1,435✔
3261
}
3262

3263
static int32_t jsonToPhysiPartitionNode(const SJson* pJson, void* pObj) {
1,432✔
3264
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
1,432✔
3265

3266
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
1,432✔
3267
  if (TSDB_CODE_SUCCESS == code) {
1,432!
3268
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanExprs, &pNode->pExprs);
1,432✔
3269
  }
3270
  if (TSDB_CODE_SUCCESS == code) {
1,432!
3271
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanPartitionKeys, &pNode->pPartitionKeys);
1,432✔
3272
  }
3273
  if (TSDB_CODE_SUCCESS == code) {
1,432!
3274
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanTargets, &pNode->pTargets);
1,432✔
3275
  }
3276
  if (TSDB_CODE_SUCCESS == code) {
1,432!
3277
    code = tjsonGetBoolValue(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, &pNode->needBlockOutputTsOrder);
1,432✔
3278
  }
3279
  if (TSDB_CODE_SUCCESS == code) {
1,432!
3280
    code = tjsonGetIntValue(pJson, jkPartitionPhysiPlanTsSlotId, &pNode->tsSlotId);
1,432✔
3281
  }
3282

3283
  return code;
1,432✔
3284
}
3285

3286
static const char* jkStreamPartitionPhysiPlanTags = "Tags";
3287
static const char* jkStreamPartitionPhysiPlanSubtable = "Subtable";
3288

3289
static int32_t physiStreamPartitionNodeToJson(const void* pObj, SJson* pJson) {
1,435✔
3290
  const SStreamPartitionPhysiNode* pNode = (const SStreamPartitionPhysiNode*)pObj;
1,435✔
3291

3292
  int32_t code = physiPartitionNodeToJson(pObj, pJson);
1,435✔
3293
  if (TSDB_CODE_SUCCESS == code) {
1,435!
3294
    code = nodeListToJson(pJson, jkStreamPartitionPhysiPlanTags, pNode->pTags);
1,435✔
3295
  }
3296
  if (TSDB_CODE_SUCCESS == code) {
1,435!
3297
    code = tjsonAddObject(pJson, jkStreamPartitionPhysiPlanSubtable, nodeToJson, pNode->pSubtable);
1,435✔
3298
  }
3299

3300
  return code;
1,435✔
3301
}
3302

3303
static int32_t jsonToPhysiStreamPartitionNode(const SJson* pJson, void* pObj) {
1,432✔
3304
  SStreamPartitionPhysiNode* pNode = (SStreamPartitionPhysiNode*)pObj;
1,432✔
3305

3306
  int32_t code = jsonToPhysiPartitionNode(pJson, pObj);
1,432✔
3307
  if (TSDB_CODE_SUCCESS == code) {
1,432!
3308
    code = jsonToNodeList(pJson, jkStreamPartitionPhysiPlanTags, &pNode->pTags);
1,432✔
3309
  }
3310
  if (TSDB_CODE_SUCCESS == code) {
1,432!
3311
    code = jsonToNodeObject(pJson, jkStreamPartitionPhysiPlanSubtable, &pNode->pSubtable);
1,432✔
3312
  }
3313

3314
  return code;
1,432✔
3315
}
3316

3317
static const char* jkIndefRowsFuncPhysiPlanExprs = "Exprs";
3318
static const char* jkIndefRowsFuncPhysiPlanFuncs = "Funcs";
3319

3320
static int32_t physiIndefRowsFuncNodeToJson(const void* pObj, SJson* pJson) {
×
3321
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
×
3322

3323
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3324
  if (TSDB_CODE_SUCCESS == code) {
×
3325
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanExprs, pNode->pExprs);
×
3326
  }
3327
  if (TSDB_CODE_SUCCESS == code) {
×
3328
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanFuncs, pNode->pFuncs);
×
3329
  }
3330

3331
  return code;
×
3332
}
3333

3334
static int32_t jsonToPhysiIndefRowsFuncNode(const SJson* pJson, void* pObj) {
×
3335
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
×
3336

3337
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3338
  if (TSDB_CODE_SUCCESS == code) {
×
3339
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanExprs, &pNode->pExprs);
×
3340
  }
3341
  if (TSDB_CODE_SUCCESS == code) {
×
3342
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanFuncs, &pNode->pFuncs);
×
3343
  }
3344

3345
  return code;
×
3346
}
3347

3348
static const char* jkInterpFuncPhysiPlanExprs = "Exprs";
3349
static const char* jkInterpFuncPhysiPlanFuncs = "Funcs";
3350
static const char* jkInterpFuncPhysiPlanStartTime = "StartTime";
3351
static const char* jkInterpFuncPhysiPlanEndTime = "EndTime";
3352
static const char* jkInterpFuncPhysiPlanInterval = "Interval";
3353
static const char* jkInterpFuncPhysiPlanIntervalUnit = "intervalUnit";
3354
static const char* jkInterpFuncPhysiPlanPrecision = "precision";
3355
static const char* jkInterpFuncPhysiPlanFillMode = "FillMode";
3356
static const char* jkInterpFuncPhysiPlanFillValues = "FillValues";
3357
static const char* jkInterpFuncPhysiPlanTimeSeries = "TimeSeries";
3358
static const char* jkInterpFuncPhysiPlanStreamNodeOption = "StreamNodeOption";
3359
static const char* jkInterpFuncPhysiPlanRangeInterval = "RangeInterval";
3360
static const char* jkInterpFuncPhysiPlanRangeIntervalUnit = "RangeIntervalUnit";
3361

3362
static int32_t physiInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
40✔
3363
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
40✔
3364

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

3406
  return code;
40✔
3407
}
3408

3409
static int32_t jsonToPhysiInterpFuncNode(const SJson* pJson, void* pObj) {
40✔
3410
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
40✔
3411

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

3453
  return code;
40✔
3454
}
3455

3456
static const char* jkForecastFuncPhysiPlanExprs = "Exprs";
3457
static const char* jkForecastFuncPhysiPlanFuncs = "Funcs";
3458

3459
static int32_t physiForecastFuncNodeToJson(const void* pObj, SJson* pJson) {
×
3460
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
3461

3462
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3463
  if (TSDB_CODE_SUCCESS == code) {
×
3464
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanExprs, pNode->pExprs);
×
3465
  }
3466
  if (TSDB_CODE_SUCCESS == code) {
×
3467
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanFuncs, pNode->pFuncs);
×
3468
  }
3469

3470
  return code;
×
3471
}
3472

3473
static int32_t jsonToPhysiForecastFuncNode(const SJson* pJson, void* pObj) {
×
3474
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
3475

3476
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3477
  if (TSDB_CODE_SUCCESS == code) {
×
3478
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanExprs, &pNode->pExprs);
×
3479
  }
3480
  if (TSDB_CODE_SUCCESS == code) {
×
3481
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanFuncs, &pNode->pFuncs);
×
3482
  }
3483

3484
  return code;
×
3485
}
3486

3487
static const char* jkDataSinkInputDataBlockDesc = "InputDataBlockDesc";
3488

3489
static int32_t physicDataSinkNodeToJson(const void* pObj, SJson* pJson) {
×
3490
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
×
3491
  return tjsonAddObject(pJson, jkDataSinkInputDataBlockDesc, nodeToJson, pNode->pInputDataBlockDesc);
×
3492
}
3493

3494
static int32_t jsonToPhysicDataSinkNode(const SJson* pJson, void* pObj) {
×
3495
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
×
3496
  return jsonToNodeObject(pJson, jkDataSinkInputDataBlockDesc, (SNode**)&pNode->pInputDataBlockDesc);
×
3497
}
3498

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

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

3503
static const char* jkQueryInsertPhysiPlanInsertCols = "InsertCols";
3504
static const char* jkQueryInsertPhysiPlanStableId = "StableId";
3505
static const char* jkQueryInsertPhysiPlanTableId = "TableId";
3506
static const char* jkQueryInsertPhysiPlanTableType = "TableType";
3507
static const char* jkQueryInsertPhysiPlanTableFName = "TableFName";
3508
static const char* jkQueryInsertPhysiPlanVgId = "VgId";
3509
static const char* jkQueryInsertPhysiPlanEpSet = "EpSet";
3510
static const char* jkQueryInsertPhysiPlanExplain = "Explain";
3511

3512
static int32_t physiQueryInsertNodeToJson(const void* pObj, SJson* pJson) {
×
3513
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
×
3514

3515
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
×
3516
  if (TSDB_CODE_SUCCESS == code) {
×
3517
    code = nodeListToJson(pJson, jkQueryInsertPhysiPlanInsertCols, pNode->pCols);
×
3518
  }
3519
  if (TSDB_CODE_SUCCESS == code) {
×
3520
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanStableId, pNode->stableId);
×
3521
  }
3522
  if (TSDB_CODE_SUCCESS == code) {
×
3523
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableId, pNode->tableId);
×
3524
  }
3525
  if (TSDB_CODE_SUCCESS == code) {
×
3526
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableType, pNode->tableType);
×
3527
  }
3528
  if (TSDB_CODE_SUCCESS == code) {
×
3529
    code = tjsonAddStringToObject(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName);
×
3530
  }
3531
  if (TSDB_CODE_SUCCESS == code) {
×
3532
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanVgId, pNode->vgId);
×
3533
  }
3534
  if (TSDB_CODE_SUCCESS == code) {
×
3535
    code = tjsonAddObject(pJson, jkQueryInsertPhysiPlanEpSet, epSetToJson, &pNode->epSet);
×
3536
  }
3537
  if (TSDB_CODE_SUCCESS == code) {
×
3538
    code = tjsonAddBoolToObject(pJson, jkQueryInsertPhysiPlanExplain, pNode->explain);
×
3539
  }
3540

3541
  return code;
×
3542
}
3543

3544
static int32_t jsonToPhysiQueryInsertNode(const SJson* pJson, void* pObj) {
×
3545
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
×
3546

3547
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
×
3548
  if (TSDB_CODE_SUCCESS == code) {
×
3549
    code = jsonToNodeList(pJson, jkQueryInsertPhysiPlanInsertCols, &pNode->pCols);
×
3550
  }
3551
  if (TSDB_CODE_SUCCESS == code) {
×
3552
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanStableId, &pNode->stableId);
×
3553
  }
3554
  if (TSDB_CODE_SUCCESS == code) {
×
3555
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanTableId, &pNode->tableId);
×
3556
  }
3557
  if (TSDB_CODE_SUCCESS == code) {
×
3558
    code = tjsonGetTinyIntValue(pJson, jkQueryInsertPhysiPlanTableType, &pNode->tableType);
×
3559
  }
3560
  if (TSDB_CODE_SUCCESS == code) {
×
3561
    code = tjsonGetStringValue(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName);
×
3562
  }
3563
  if (TSDB_CODE_SUCCESS == code) {
×
3564
    code = tjsonGetIntValue(pJson, jkQueryInsertPhysiPlanVgId, &pNode->vgId);
×
3565
  }
3566
  if (TSDB_CODE_SUCCESS == code) {
×
3567
    code = tjsonToObject(pJson, jkQueryInsertPhysiPlanEpSet, jsonToEpSet, &pNode->epSet);
×
3568
  }
3569
  if (TSDB_CODE_SUCCESS == code) {
×
3570
    code = tjsonGetBoolValue(pJson, jkQueryInsertPhysiPlanExplain, &pNode->explain);
×
3571
  }
3572

3573
  return code;
×
3574
}
3575

3576
static const char* jkDeletePhysiPlanTableId = "TableId";
3577
static const char* jkDeletePhysiPlanTableType = "TableType";
3578
static const char* jkDeletePhysiPlanTableFName = "TableFName";
3579
static const char* jkDeletePhysiPlanTsColName = "TsColName";
3580
static const char* jkDeletePhysiPlanDeleteTimeRangeStartKey = "DeleteTimeRangeStartKey";
3581
static const char* jkDeletePhysiPlanDeleteTimeRangeEndKey = "DeleteTimeRangeEndKey";
3582
static const char* jkDeletePhysiPlanAffectedRows = "AffectedRows";
3583
static const char* jkDeletePhysiPlanStartTs = "StartTs";
3584
static const char* jkDeletePhysiPlanEndTs = "EndTs";
3585

3586
static int32_t physiDeleteNodeToJson(const void* pObj, SJson* pJson) {
×
3587
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
×
3588

3589
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
×
3590
  if (TSDB_CODE_SUCCESS == code) {
×
3591
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableId, pNode->tableId);
×
3592
  }
3593
  if (TSDB_CODE_SUCCESS == code) {
×
3594
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableType, pNode->tableType);
×
3595
  }
3596
  if (TSDB_CODE_SUCCESS == code) {
×
3597
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName);
×
3598
  }
3599
  if (TSDB_CODE_SUCCESS == code) {
×
3600
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName);
×
3601
  }
3602
  if (TSDB_CODE_SUCCESS == code) {
×
3603
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, pNode->deleteTimeRange.skey);
×
3604
  }
3605
  if (TSDB_CODE_SUCCESS == code) {
×
3606
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, pNode->deleteTimeRange.ekey);
×
3607
  }
3608
  if (TSDB_CODE_SUCCESS == code) {
×
3609
    code = tjsonAddObject(pJson, jkDeletePhysiPlanAffectedRows, nodeToJson, pNode->pAffectedRows);
×
3610
  }
3611
  if (TSDB_CODE_SUCCESS == code) {
×
3612
    code = tjsonAddObject(pJson, jkDeletePhysiPlanStartTs, nodeToJson, pNode->pStartTs);
×
3613
  }
3614
  if (TSDB_CODE_SUCCESS == code) {
×
3615
    code = tjsonAddObject(pJson, jkDeletePhysiPlanEndTs, nodeToJson, pNode->pEndTs);
×
3616
  }
3617

3618
  return code;
×
3619
}
3620

3621
static int32_t jsonToPhysiDeleteNode(const SJson* pJson, void* pObj) {
×
3622
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
×
3623

3624
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
×
3625
  if (TSDB_CODE_SUCCESS == code) {
×
3626
    code = tjsonGetUBigIntValue(pJson, jkDeletePhysiPlanTableId, &pNode->tableId);
×
3627
  }
3628
  if (TSDB_CODE_SUCCESS == code) {
×
3629
    code = tjsonGetTinyIntValue(pJson, jkDeletePhysiPlanTableType, &pNode->tableType);
×
3630
  }
3631
  if (TSDB_CODE_SUCCESS == code) {
×
3632
    code = tjsonGetStringValue(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName);
×
3633
  }
3634
  if (TSDB_CODE_SUCCESS == code) {
×
3635
    code = tjsonGetStringValue(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName);
×
3636
  }
3637
  if (TSDB_CODE_SUCCESS == code) {
×
3638
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, &pNode->deleteTimeRange.skey);
×
3639
  }
3640
  if (TSDB_CODE_SUCCESS == code) {
×
3641
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, &pNode->deleteTimeRange.ekey);
×
3642
  }
3643
  if (TSDB_CODE_SUCCESS == code) {
×
3644
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanAffectedRows, &pNode->pAffectedRows);
×
3645
  }
3646
  if (TSDB_CODE_SUCCESS == code) {
×
3647
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanStartTs, &pNode->pStartTs);
×
3648
  }
3649
  if (TSDB_CODE_SUCCESS == code) {
×
3650
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanEndTs, &pNode->pEndTs);
×
3651
  }
3652

3653
  return code;
×
3654
}
3655

3656
static const char* jkGroupCachePhysiPlanGroupCols = "GroupColumns";
3657
static const char* jkGroupCachePhysiPlanGrpColsMayBeNull = "GroupColumnsMayBeNull";
3658
static const char* jkGroupCachePhysiPlanGroupByUid = "GroupByUid";
3659
static const char* jkGroupCachePhysiPlanGlobalGroup = "GlobalGroup";
3660
static const char* jkGroupCachePhysiPlanBatchFetch = "BatchFetch";
3661

3662
static int32_t physiGroupCacheNodeToJson(const void* pObj, SJson* pJson) {
×
3663
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
×
3664

3665
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3666
  if (TSDB_CODE_SUCCESS == code) {
×
3667
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, pNode->grpColsMayBeNull);
×
3668
  }
3669
  if (TSDB_CODE_SUCCESS == code) {
×
3670
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGroupByUid, pNode->grpByUid);
×
3671
  }
3672
  if (TSDB_CODE_SUCCESS == code) {
×
3673
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGlobalGroup, pNode->globalGrp);
×
3674
  }
3675
  if (TSDB_CODE_SUCCESS == code) {
×
3676
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanBatchFetch, pNode->batchFetch);
×
3677
  }
3678
  if (TSDB_CODE_SUCCESS == code) {
×
3679
    code = nodeListToJson(pJson, jkGroupCachePhysiPlanGroupCols, pNode->pGroupCols);
×
3680
  }
3681
  return code;
×
3682
}
3683

3684
static int32_t jsonToPhysiGroupCacheNode(const SJson* pJson, void* pObj) {
×
3685
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
×
3686

3687
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3688
  if (TSDB_CODE_SUCCESS == code) {
×
3689
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, &pNode->grpColsMayBeNull);
×
3690
  }
3691
  if (TSDB_CODE_SUCCESS == code) {
×
3692
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGroupByUid, &pNode->grpByUid);
×
3693
  }
3694
  if (TSDB_CODE_SUCCESS == code) {
×
3695
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGlobalGroup, &pNode->globalGrp);
×
3696
  }
3697
  if (TSDB_CODE_SUCCESS == code) {
×
3698
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanBatchFetch, &pNode->batchFetch);
×
3699
  }
3700
  if (TSDB_CODE_SUCCESS == code) {
×
3701
    code = jsonToNodeList(pJson, jkGroupCachePhysiPlanGroupCols, &pNode->pGroupCols);
×
3702
  }
3703
  return code;
×
3704
}
3705

3706
static const char* jkDynQueryCtrlPhysiPlanQueryType = "QueryType";
3707
static const char* jkDynQueryCtrlPhysiPlanBatchFetch = "BatchFetch";
3708
static const char* jkDynQueryCtrlPhysiPlanVgSlot0 = "VgSlot[0]";
3709
static const char* jkDynQueryCtrlPhysiPlanVgSlot1 = "VgSlot[1]";
3710
static const char* jkDynQueryCtrlPhysiPlanUidSlot0 = "UidSlot[0]";
3711
static const char* jkDynQueryCtrlPhysiPlanUidSlot1 = "UidSlot[1]";
3712
static const char* jkDynQueryCtrlPhysiPlanSrcScan0 = "SrcScan[0]";
3713
static const char* jkDynQueryCtrlPhysiPlanSrcScan1 = "SrcScan[1]";
3714

3715
static int32_t physiDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
×
3716
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
×
3717

3718
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3719
  if (TSDB_CODE_SUCCESS == code) {
×
3720
    code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType);
×
3721
  }
3722
  if (TSDB_CODE_SUCCESS == code) {
×
3723
    switch (pNode->qType) {
×
3724
      case DYN_QTYPE_STB_HASH: {
×
3725
        code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanBatchFetch, pNode->stbJoin.batchFetch);
×
3726
        if (TSDB_CODE_SUCCESS == code) {
×
3727
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot0, pNode->stbJoin.vgSlot[0]);
×
3728
        }
3729
        if (TSDB_CODE_SUCCESS == code) {
×
3730
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot1, pNode->stbJoin.vgSlot[1]);
×
3731
        }
3732
        if (TSDB_CODE_SUCCESS == code) {
×
3733
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot0, pNode->stbJoin.uidSlot[0]);
×
3734
        }
3735
        if (TSDB_CODE_SUCCESS == code) {
×
3736
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot1, pNode->stbJoin.uidSlot[1]);
×
3737
        }
3738
        if (TSDB_CODE_SUCCESS == code) {
×
3739
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan0, pNode->stbJoin.srcScan[0]);
×
3740
        }
3741
        if (TSDB_CODE_SUCCESS == code) {
×
3742
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan1, pNode->stbJoin.srcScan[1]);
×
3743
        }
3744
        break;
×
3745
      }
3746
      default:
×
3747
        return TSDB_CODE_INVALID_PARA;
×
3748
    }
3749
  }
3750
  return code;
×
3751
}
3752

3753
static int32_t jsonToPhysiDynQueryCtrlNode(const SJson* pJson, void* pObj) {
×
3754
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
×
3755

3756
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3757
  if (TSDB_CODE_SUCCESS == code) {
×
3758
    tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType, code);
×
3759
  }
3760
  if (TSDB_CODE_SUCCESS == code) {
×
3761
    switch (pNode->qType) {
×
3762
      case DYN_QTYPE_STB_HASH: {
×
3763
        tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType, code);
×
3764
        if (TSDB_CODE_SUCCESS == code) {
×
3765
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanBatchFetch, &pNode->stbJoin.batchFetch);
×
3766
        }
3767
        if (TSDB_CODE_SUCCESS == code) {
×
3768
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanVgSlot0, pNode->stbJoin.vgSlot[0], code);
×
3769
        }
3770
        if (TSDB_CODE_SUCCESS == code) {
×
3771
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanVgSlot1, pNode->stbJoin.vgSlot[1], code);
×
3772
        }
3773
        if (TSDB_CODE_SUCCESS == code) {
×
3774
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanUidSlot0, pNode->stbJoin.uidSlot[0], code);
×
3775
        }
3776
        if (TSDB_CODE_SUCCESS == code) {
×
3777
          tjsonGetNumberValue(pJson, jkDynQueryCtrlPhysiPlanUidSlot1, pNode->stbJoin.uidSlot[1], code);
×
3778
        }
3779
        if (TSDB_CODE_SUCCESS == code) {
×
3780
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanSrcScan0, &pNode->stbJoin.srcScan[0]);
×
3781
        }
3782
        if (TSDB_CODE_SUCCESS == code) {
×
3783
          code = tjsonGetBoolValue(pJson, jkDynQueryCtrlPhysiPlanSrcScan1, &pNode->stbJoin.srcScan[1]);
×
3784
        }
3785
        break;
×
3786
      }
3787
      default:
×
3788
        return TSDB_CODE_INVALID_PARA;
×
3789
    }
3790
  }
3791

3792
  return code;
×
3793
}
3794

3795
static const char* jkQueryNodeAddrId = "Id";
3796
static const char* jkQueryNodeAddrInUse = "InUse";
3797
static const char* jkQueryNodeAddrNumOfEps = "NumOfEps";
3798
static const char* jkQueryNodeAddrEps = "Eps";
3799

3800
static int32_t queryNodeAddrToJson(const void* pObj, SJson* pJson) {
11,729✔
3801
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
11,729✔
3802

3803
  int32_t code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrId, pNode->nodeId);
11,729✔
3804
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3805
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrInUse, pNode->epSet.inUse);
11,729✔
3806
  }
3807
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3808
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrNumOfEps, pNode->epSet.numOfEps);
11,729✔
3809
  }
3810
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3811
    code = tjsonAddArray(pJson, jkQueryNodeAddrEps, epToJson, pNode->epSet.eps, sizeof(SEp), pNode->epSet.numOfEps);
11,729✔
3812
  }
3813

3814
  return code;
11,729✔
3815
}
3816

3817
static int32_t jsonToQueryNodeAddr(const SJson* pJson, void* pObj) {
11,635✔
3818
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
11,635✔
3819

3820
  int32_t code = tjsonGetIntValue(pJson, jkQueryNodeAddrId, &pNode->nodeId);
11,635✔
3821
  if (TSDB_CODE_SUCCESS == code) {
11,635!
3822
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrInUse, &pNode->epSet.inUse);
11,635✔
3823
  }
3824
  if (TSDB_CODE_SUCCESS == code) {
11,635!
3825
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrNumOfEps, &pNode->epSet.numOfEps);
11,635✔
3826
  }
3827
  if (TSDB_CODE_SUCCESS == code) {
11,634!
3828
    code = tjsonToArray(pJson, jkQueryNodeAddrEps, jsonToEp, pNode->epSet.eps, sizeof(SEp));
11,634✔
3829
  }
3830

3831
  return code;
11,630✔
3832
}
3833

3834
static const char* jkSubplanId = "Id";
3835
static const char* jkSubplanType = "SubplanType";
3836
static const char* jkSubplanMsgType = "MsgType";
3837
static const char* jkSubplanLevel = "Level";
3838
static const char* jkSubplanDbFName = "DbFName";
3839
static const char* jkSubplanUser = "User";
3840
static const char* jkSubplanNodeAddr = "NodeAddr";
3841
static const char* jkSubplanRootNode = "RootNode";
3842
static const char* jkSubplanDataSink = "DataSink";
3843
static const char* jkSubplanTagCond = "TagCond";
3844
static const char* jkSubplanTagIndexCond = "TagIndexCond";
3845
static const char* jkSubplanShowRewrite = "ShowRewrite";
3846
static const char* jkSubplanRowsThreshold = "RowThreshold";
3847
static const char* jkSubplanDynamicRowsThreshold = "DyRowThreshold";
3848
static const char* jkSubplanIsView = "IsView";
3849
static const char* jkSubplanIsAudit = "IsAudit";
3850

3851
static int32_t subplanToJson(const void* pObj, SJson* pJson) {
11,729✔
3852
  const SSubplan* pNode = (const SSubplan*)pObj;
11,729✔
3853

3854
  int32_t code = tjsonAddObject(pJson, jkSubplanId, subplanIdToJson, &pNode->id);
11,729✔
3855
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3856
    code = tjsonAddIntegerToObject(pJson, jkSubplanType, pNode->subplanType);
11,729✔
3857
  }
3858
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3859
    code = tjsonAddIntegerToObject(pJson, jkSubplanMsgType, pNode->msgType);
11,729✔
3860
  }
3861
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3862
    code = tjsonAddIntegerToObject(pJson, jkSubplanLevel, pNode->level);
11,729✔
3863
  }
3864
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3865
    code = tjsonAddStringToObject(pJson, jkSubplanDbFName, pNode->dbFName);
11,729✔
3866
  }
3867
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3868
    code = tjsonAddStringToObject(pJson, jkSubplanUser, pNode->user);
11,729✔
3869
  }
3870
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3871
    code = tjsonAddObject(pJson, jkSubplanNodeAddr, queryNodeAddrToJson, &pNode->execNode);
11,729✔
3872
  }
3873
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3874
    code = tjsonAddObject(pJson, jkSubplanRootNode, nodeToJson, pNode->pNode);
11,729✔
3875
  }
3876
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3877
    code = tjsonAddObject(pJson, jkSubplanDataSink, nodeToJson, pNode->pDataSink);
11,729✔
3878
  }
3879
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3880
    code = tjsonAddObject(pJson, jkSubplanTagCond, nodeToJson, pNode->pTagCond);
11,729✔
3881
  }
3882
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3883
    code = tjsonAddObject(pJson, jkSubplanTagIndexCond, nodeToJson, pNode->pTagIndexCond);
11,729✔
3884
  }
3885
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3886
    code = tjsonAddBoolToObject(pJson, jkSubplanShowRewrite, pNode->showRewrite);
11,729✔
3887
  }
3888
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3889
    code = tjsonAddBoolToObject(pJson, jkSubplanIsView, pNode->isView);
11,729✔
3890
  }
3891
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3892
    code = tjsonAddBoolToObject(pJson, jkSubplanIsAudit, pNode->isAudit);
11,729✔
3893
  }
3894
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3895
    code = tjsonAddIntegerToObject(pJson, jkSubplanRowsThreshold, pNode->rowsThreshold);
11,729✔
3896
  }
3897
  if (TSDB_CODE_SUCCESS == code) {
11,729!
3898
    code = tjsonAddBoolToObject(pJson, jkSubplanDynamicRowsThreshold, pNode->dynamicRowThreshold);
11,729✔
3899
  }
3900

3901
  return code;
11,729✔
3902
}
3903

3904
static int32_t jsonToSubplan(const SJson* pJson, void* pObj) {
11,632✔
3905
  SSubplan* pNode = (SSubplan*)pObj;
11,632✔
3906

3907
  int32_t code = tjsonToObject(pJson, jkSubplanId, jsonToSubplanId, &pNode->id);
11,632✔
3908
  if (TSDB_CODE_SUCCESS == code) {
11,632!
3909
    tjsonGetNumberValue(pJson, jkSubplanType, pNode->subplanType, code);
11,632✔
3910
  }
3911
  if (TSDB_CODE_SUCCESS == code) {
11,633!
3912
    code = tjsonGetIntValue(pJson, jkSubplanMsgType, &pNode->msgType);
11,633✔
3913
  }
3914
  if (TSDB_CODE_SUCCESS == code) {
11,634!
3915
    code = tjsonGetIntValue(pJson, jkSubplanLevel, &pNode->level);
11,634✔
3916
  }
3917
  if (TSDB_CODE_SUCCESS == code) {
11,633!
3918
    code = tjsonGetStringValue(pJson, jkSubplanDbFName, pNode->dbFName);
11,633✔
3919
  }
3920
  if (TSDB_CODE_SUCCESS == code) {
11,635!
3921
    code = tjsonGetStringValue(pJson, jkSubplanUser, pNode->user);
11,635✔
3922
  }
3923
  if (TSDB_CODE_SUCCESS == code) {
11,634!
3924
    code = tjsonToObject(pJson, jkSubplanNodeAddr, jsonToQueryNodeAddr, &pNode->execNode);
11,634✔
3925
  }
3926
  if (TSDB_CODE_SUCCESS == code) {
11,630!
3927
    code = jsonToNodeObject(pJson, jkSubplanRootNode, (SNode**)&pNode->pNode);
11,630✔
3928
  }
3929
  if (TSDB_CODE_SUCCESS == code) {
11,635!
3930
    code = jsonToNodeObject(pJson, jkSubplanDataSink, (SNode**)&pNode->pDataSink);
11,635✔
3931
  }
3932
  if (TSDB_CODE_SUCCESS == code) {
11,634!
3933
    code = jsonToNodeObject(pJson, jkSubplanTagCond, (SNode**)&pNode->pTagCond);
11,634✔
3934
  }
3935
  if (TSDB_CODE_SUCCESS == code) {
11,634!
3936
    code = jsonToNodeObject(pJson, jkSubplanTagIndexCond, (SNode**)&pNode->pTagIndexCond);
11,634✔
3937
  }
3938
  if (TSDB_CODE_SUCCESS == code) {
11,632!
3939
    code = tjsonGetBoolValue(pJson, jkSubplanShowRewrite, &pNode->showRewrite);
11,632✔
3940
  }
3941
  if (TSDB_CODE_SUCCESS == code) {
11,635!
3942
    code = tjsonGetBoolValue(pJson, jkSubplanIsView, &pNode->isView);
11,635✔
3943
  }
3944
  if (TSDB_CODE_SUCCESS == code) {
11,635!
3945
    code = tjsonGetBoolValue(pJson, jkSubplanIsAudit, &pNode->isAudit);
11,635✔
3946
  }
3947
  if (TSDB_CODE_SUCCESS == code) {
11,635!
3948
    code = tjsonGetIntValue(pJson, jkSubplanRowsThreshold, &pNode->rowsThreshold);
11,635✔
3949
  }
3950
  if (TSDB_CODE_SUCCESS == code) {
11,635!
3951
    code = tjsonGetBoolValue(pJson, jkSubplanDynamicRowsThreshold, &pNode->dynamicRowThreshold);
11,635✔
3952
  }
3953

3954
  return code;
11,635✔
3955
}
3956

3957
static const char* jkPlanQueryId = "QueryId";
3958
static const char* jkPlanNumOfSubplans = "NumOfSubplans";
3959
static const char* jkPlanSubplans = "Subplans";
3960

3961
static int32_t planToJson(const void* pObj, SJson* pJson) {
1,994✔
3962
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
1,994✔
3963

3964
  int32_t code = tjsonAddIntegerToObject(pJson, jkPlanQueryId, pNode->queryId);
1,994✔
3965
  if (TSDB_CODE_SUCCESS == code) {
1,994!
3966
    code = tjsonAddIntegerToObject(pJson, jkPlanNumOfSubplans, pNode->numOfSubplans);
1,994✔
3967
  }
3968
  if (TSDB_CODE_SUCCESS == code) {
1,994!
3969
    code = nodeListToJson(pJson, jkPlanSubplans, pNode->pSubplans);
1,994✔
3970
  }
3971

3972
  return code;
1,994✔
3973
}
3974

3975
static int32_t jsonToPlan(const SJson* pJson, void* pObj) {
1,997✔
3976
  SQueryPlan* pNode = (SQueryPlan*)pObj;
1,997✔
3977

3978
  int32_t code = tjsonGetUBigIntValue(pJson, jkPlanQueryId, &pNode->queryId);
1,997✔
3979
  if (TSDB_CODE_SUCCESS == code) {
1,997!
3980
    code = tjsonGetIntValue(pJson, jkPlanNumOfSubplans, &pNode->numOfSubplans);
1,997✔
3981
  }
3982
  if (TSDB_CODE_SUCCESS == code) {
1,997!
3983
    code = jsonToNodeList(pJson, jkPlanSubplans, &pNode->pSubplans);
1,997✔
3984
  }
3985

3986
  return code;
1,997✔
3987
}
3988

3989
static const char* jkAggLogicPlanGroupKeys = "GroupKeys";
3990
static const char* jkAggLogicPlanAggFuncs = "AggFuncs";
3991

3992
static int32_t logicAggNodeToJson(const void* pObj, SJson* pJson) {
×
3993
  const SAggLogicNode* pNode = (const SAggLogicNode*)pObj;
×
3994

3995
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
3996
  if (TSDB_CODE_SUCCESS == code) {
×
3997
    code = nodeListToJson(pJson, jkAggLogicPlanGroupKeys, pNode->pGroupKeys);
×
3998
  }
3999
  if (TSDB_CODE_SUCCESS == code) {
×
4000
    code = nodeListToJson(pJson, jkAggLogicPlanAggFuncs, pNode->pAggFuncs);
×
4001
  }
4002

4003
  return code;
×
4004
}
4005

4006
static int32_t jsonToLogicAggNode(const SJson* pJson, void* pObj) {
×
4007
  SAggLogicNode* pNode = (SAggLogicNode*)pObj;
×
4008

4009
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
4010
  if (TSDB_CODE_SUCCESS == code) {
×
4011
    code = jsonToNodeList(pJson, jkAggLogicPlanGroupKeys, &pNode->pGroupKeys);
×
4012
  }
4013
  if (TSDB_CODE_SUCCESS == code) {
×
4014
    code = jsonToNodeList(pJson, jkAggLogicPlanAggFuncs, &pNode->pAggFuncs);
×
4015
  }
4016

4017
  return code;
×
4018
}
4019

4020
static const char* jkDataTypeType = "Type";
4021
static const char* jkDataTypePrecision = "Precision";
4022
static const char* jkDataTypeScale = "Scale";
4023
static const char* jkDataTypeDataBytes = "Bytes";
4024

4025
static int32_t dataTypeToJson(const void* pObj, SJson* pJson) {
1,781,992✔
4026
  const SDataType* pNode = (const SDataType*)pObj;
1,781,992✔
4027

4028
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataTypeType, pNode->type);
1,781,992✔
4029
  if (TSDB_CODE_SUCCESS == code) {
1,781,992!
4030
    code = tjsonAddIntegerToObject(pJson, jkDataTypePrecision, pNode->precision);
1,781,992✔
4031
  }
4032
  if (TSDB_CODE_SUCCESS == code) {
1,781,992!
4033
    code = tjsonAddIntegerToObject(pJson, jkDataTypeScale, pNode->scale);
1,781,992✔
4034
  }
4035
  if (TSDB_CODE_SUCCESS == code) {
1,781,992!
4036
    code = tjsonAddIntegerToObject(pJson, jkDataTypeDataBytes, pNode->bytes);
1,781,992✔
4037
  }
4038

4039
  return code;
1,781,992✔
4040
}
4041

4042
static int32_t jsonToDataType(const SJson* pJson, void* pObj) {
2,821,072✔
4043
  SDataType* pNode = (SDataType*)pObj;
2,821,072✔
4044

4045
  int32_t code = tjsonGetUTinyIntValue(pJson, jkDataTypeType, &pNode->type);
2,821,072✔
4046
  if (TSDB_CODE_SUCCESS == code) {
2,819,507!
4047
    code = tjsonGetUTinyIntValue(pJson, jkDataTypePrecision, &pNode->precision);
2,819,508✔
4048
  }
4049
  if (TSDB_CODE_SUCCESS == code) {
2,819,283!
4050
    code = tjsonGetUTinyIntValue(pJson, jkDataTypeScale, &pNode->scale);
2,819,285✔
4051
  }
4052
  if (TSDB_CODE_SUCCESS == code) {
2,818,013!
4053
    code = tjsonGetIntValue(pJson, jkDataTypeDataBytes, &pNode->bytes);
2,818,016✔
4054
  }
4055

4056
  return TSDB_CODE_SUCCESS;
2,818,430✔
4057
}
4058

4059
static const char* jkExprDataType = "DataType";
4060
static const char* jkExprAliasName = "AliasName";
4061
static const char* jkExprUserAlias = "UserAlias";
4062

4063
static int32_t exprNodeToJson(const void* pObj, SJson* pJson) {
1,163,586✔
4064
  const SExprNode* pNode = (const SExprNode*)pObj;
1,163,586✔
4065

4066
  int32_t code = tjsonAddObject(pJson, jkExprDataType, dataTypeToJson, &pNode->resType);
1,163,586✔
4067
  if (TSDB_CODE_SUCCESS == code) {
1,163,586!
4068
    code = tjsonAddStringToObject(pJson, jkExprAliasName, pNode->aliasName);
1,163,586✔
4069
  }
4070
  if (TSDB_CODE_SUCCESS == code) {
1,163,586!
4071
    code = tjsonAddStringToObject(pJson, jkExprUserAlias, pNode->userAlias);
1,163,586✔
4072
  }
4073

4074
  return code;
1,163,586✔
4075
}
4076

4077
static int32_t jsonToExprNode(const SJson* pJson, void* pObj) {
2,196,393✔
4078
  SExprNode* pNode = (SExprNode*)pObj;
2,196,393✔
4079

4080
  int32_t code = tjsonToObject(pJson, jkExprDataType, jsonToDataType, &pNode->resType);
2,196,393✔
4081
  if (TSDB_CODE_SUCCESS == code) {
2,195,638!
4082
    code = tjsonGetStringValue(pJson, jkExprAliasName, pNode->aliasName);
2,195,638✔
4083
  }
4084
  if (TSDB_CODE_SUCCESS == code) {
2,196,524!
4085
    code = tjsonGetStringValue(pJson, jkExprUserAlias, pNode->userAlias);
2,196,525✔
4086
  }
4087

4088
  return code;
2,196,470✔
4089
}
4090

4091
static const char* jkColumnTableId = "TableId";
4092
static const char* jkColumnTableType = "TableType";
4093
static const char* jkColumnColId = "ColId";
4094
static const char* jkColumnColType = "ColType";
4095
static const char* jkColumnProjId = "ProjId";
4096
static const char* jkColumnDbName = "DbName";
4097
static const char* jkColumnTableName = "TableName";
4098
static const char* jkColumnTableAlias = "TableAlias";
4099
static const char* jkColumnColName = "ColName";
4100
static const char* jkColumnDataBlockId = "DataBlockId";
4101
static const char* jkColumnSlotId = "SlotId";
4102
static const char* jkColumnTableHasPk = "TableHasPk";
4103
static const char* jkColumnIsPk = "IsPk";
4104
static const char* jkColumnNumOfPKs = "NumOfPKs";
4105

4106
static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
730,442✔
4107
  const SColumnNode* pNode = (const SColumnNode*)pObj;
730,442✔
4108

4109
  int32_t code = exprNodeToJson(pObj, pJson);
730,442✔
4110
  if (TSDB_CODE_SUCCESS == code) {
730,442!
4111
    code = tjsonAddIntegerToObject(pJson, jkColumnTableId, pNode->tableId);
730,442✔
4112
  }
4113
  if (TSDB_CODE_SUCCESS == code) {
730,442!
4114
    code = tjsonAddIntegerToObject(pJson, jkColumnTableType, pNode->tableType);
730,442✔
4115
  }
4116
  if (TSDB_CODE_SUCCESS == code) {
730,442!
4117
    code = tjsonAddIntegerToObject(pJson, jkColumnColId, pNode->colId);
730,442✔
4118
  }
4119
  if (TSDB_CODE_SUCCESS == code) {
730,442!
4120
    code = tjsonAddIntegerToObject(pJson, jkColumnProjId, pNode->projIdx);
730,442✔
4121
  }
4122
  if (TSDB_CODE_SUCCESS == code) {
730,442!
4123
    code = tjsonAddIntegerToObject(pJson, jkColumnColType, pNode->colType);
730,442✔
4124
  }
4125
  if (TSDB_CODE_SUCCESS == code) {
730,442!
4126
    code = tjsonAddStringToObject(pJson, jkColumnDbName, pNode->dbName);
730,442✔
4127
  }
4128
  if (TSDB_CODE_SUCCESS == code) {
730,442!
4129
    code = tjsonAddStringToObject(pJson, jkColumnTableName, pNode->tableName);
730,442✔
4130
  }
4131
  if (TSDB_CODE_SUCCESS == code) {
730,442!
4132
    code = tjsonAddStringToObject(pJson, jkColumnTableAlias, pNode->tableAlias);
730,442✔
4133
  }
4134
  if (TSDB_CODE_SUCCESS == code) {
730,442!
4135
    code = tjsonAddStringToObject(pJson, jkColumnColName, pNode->colName);
730,442✔
4136
  }
4137
  if (TSDB_CODE_SUCCESS == code) {
730,442!
4138
    code = tjsonAddIntegerToObject(pJson, jkColumnDataBlockId, pNode->dataBlockId);
730,442✔
4139
  }
4140
  if (TSDB_CODE_SUCCESS == code) {
730,442!
4141
    code = tjsonAddIntegerToObject(pJson, jkColumnSlotId, pNode->slotId);
730,442✔
4142
  }
4143
  if (TSDB_CODE_SUCCESS == code) {
730,442!
4144
    code = tjsonAddBoolToObject(pJson, jkColumnTableHasPk, pNode->tableHasPk);
730,442✔
4145
  }
4146
  if (TSDB_CODE_SUCCESS == code) {
730,442!
4147
    code = tjsonAddBoolToObject(pJson, jkColumnIsPk, pNode->isPk);
730,442✔
4148
  }
4149
  if (TSDB_CODE_SUCCESS == code) {
730,442!
4150
    code = tjsonAddIntegerToObject(pJson, jkColumnNumOfPKs, pNode->numOfPKs);
730,442✔
4151
  }
4152
  return code;
730,442✔
4153
}
4154

4155
static int32_t jsonToColumnNode(const SJson* pJson, void* pObj) {
1,234,604✔
4156
  SColumnNode* pNode = (SColumnNode*)pObj;
1,234,604✔
4157

4158
  int32_t code = jsonToExprNode(pJson, pObj);
1,234,604✔
4159
  if (TSDB_CODE_SUCCESS == code) {
1,234,535!
4160
    code = tjsonGetUBigIntValue(pJson, jkColumnTableId, &pNode->tableId);
1,234,537✔
4161
  }
4162
  if (TSDB_CODE_SUCCESS == code) {
1,234,480!
4163
    code = tjsonGetTinyIntValue(pJson, jkColumnTableType, &pNode->tableType);
1,234,483✔
4164
  }
4165
  if (TSDB_CODE_SUCCESS == code) {
1,234,569!
4166
    code = tjsonGetSmallIntValue(pJson, jkColumnColId, &pNode->colId);
1,234,573✔
4167
  }
4168
  if (TSDB_CODE_SUCCESS == code) {
1,234,321!
4169
    code = tjsonGetSmallIntValue(pJson, jkColumnProjId, &pNode->projIdx);
1,234,324✔
4170
  }
4171
  if (TSDB_CODE_SUCCESS == code) {
1,234,490!
4172
    tjsonGetNumberValue(pJson, jkColumnColType, pNode->colType, code);
1,234,495✔
4173
  }
4174
  if (TSDB_CODE_SUCCESS == code) {
1,234,599!
4175
    code = tjsonGetStringValue(pJson, jkColumnDbName, pNode->dbName);
1,234,604✔
4176
  }
4177
  if (TSDB_CODE_SUCCESS == code) {
1,234,628!
4178
    code = tjsonGetStringValue(pJson, jkColumnTableName, pNode->tableName);
1,234,633✔
4179
  }
4180
  if (TSDB_CODE_SUCCESS == code) {
1,234,713✔
4181
    code = tjsonGetStringValue(pJson, jkColumnTableAlias, pNode->tableAlias);
1,234,699✔
4182
  }
4183
  if (TSDB_CODE_SUCCESS == code) {
1,234,747✔
4184
    code = tjsonGetStringValue(pJson, jkColumnColName, pNode->colName);
1,234,733✔
4185
  }
4186
  if (TSDB_CODE_SUCCESS == code) {
1,234,676✔
4187
    code = tjsonGetSmallIntValue(pJson, jkColumnDataBlockId, &pNode->dataBlockId);
1,234,661✔
4188
  }
4189
  if (TSDB_CODE_SUCCESS == code) {
1,234,666✔
4190
    code = tjsonGetSmallIntValue(pJson, jkColumnSlotId, &pNode->slotId);
1,234,652✔
4191
  }
4192
  if (TSDB_CODE_SUCCESS == code) {
1,234,696✔
4193
    code = tjsonGetBoolValue(pJson, jkColumnTableHasPk, &pNode->tableHasPk);
1,234,677✔
4194
  }
4195
  if (TSDB_CODE_SUCCESS == code) {
1,234,784✔
4196
    code = tjsonGetBoolValue(pJson, jkColumnIsPk, &pNode->isPk);
1,234,767✔
4197
  }
4198
  if (TSDB_CODE_SUCCESS == code) {
1,234,543✔
4199
    code = tjsonGetSmallIntValue(pJson, jkColumnNumOfPKs, &pNode->numOfPKs);
1,234,538✔
4200
  }
4201
  return code;
1,234,693✔
4202
}
4203

4204
static const char* jkValueLiteralSize = "LiteralSize";
4205
static const char* jkValueLiteral = "Literal";
4206
static const char* jkValueFlag = "Flag";
4207
static const char* jkValueTranslate = "Translate";
4208
static const char* jkValueNotReserved = "NotReserved";
4209
static const char* jkValueIsNull = "IsNull";
4210
static const char* jkValueUnit = "Unit";
4211
static const char* jkValueDatum = "Datum";
4212

4213
static int32_t datumToJson(const void* pObj, SJson* pJson) {
53,961✔
4214
  const SValueNode* pNode = (const SValueNode*)pObj;
53,961✔
4215

4216
  int32_t code = TSDB_CODE_SUCCESS;
53,961✔
4217
  switch (pNode->node.resType.type) {
53,961!
4218
    case TSDB_DATA_TYPE_NULL:
×
4219
      break;
×
4220
    case TSDB_DATA_TYPE_BOOL:
130✔
4221
      code = tjsonAddBoolToObject(pJson, jkValueDatum, pNode->datum.b);
130✔
4222
      break;
130✔
4223
    case TSDB_DATA_TYPE_TINYINT:
37,499✔
4224
    case TSDB_DATA_TYPE_SMALLINT:
4225
    case TSDB_DATA_TYPE_INT:
4226
    case TSDB_DATA_TYPE_BIGINT:
4227
    case TSDB_DATA_TYPE_TIMESTAMP:
4228
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.i);
37,499✔
4229
      break;
37,499✔
4230
    case TSDB_DATA_TYPE_UTINYINT:
178✔
4231
    case TSDB_DATA_TYPE_USMALLINT:
4232
    case TSDB_DATA_TYPE_UINT:
4233
    case TSDB_DATA_TYPE_UBIGINT:
4234
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.u);
178✔
4235
      break;
178✔
4236
    case TSDB_DATA_TYPE_FLOAT:
750✔
4237
    case TSDB_DATA_TYPE_DOUBLE:
4238
      code = tjsonAddDoubleToObject(pJson, jkValueDatum, pNode->datum.d);
750✔
4239
      break;
750✔
4240
    case TSDB_DATA_TYPE_NCHAR: {
×
4241
      // cJSON only support utf-8 encoding. Convert memory content to hex string.
4242
      int32_t bufSize = varDataLen(pNode->datum.p) * 2 + 1;
×
4243
      char* buf = taosMemoryCalloc(bufSize, sizeof(char));
×
4244
      if (!buf) return terrno;
×
4245
      code = taosHexEncode(varDataVal(pNode->datum.p), buf, varDataLen(pNode->datum.p), bufSize);
×
4246
      if (code != TSDB_CODE_SUCCESS) {
×
4247
        taosMemoryFree(buf);
×
4248
        return TSDB_CODE_TSC_INVALID_VALUE;
×
4249
      }
4250
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
×
4251
      taosMemoryFree(buf);
×
4252
      break;
×
4253
    }
4254
    case TSDB_DATA_TYPE_VARCHAR:
15,404✔
4255
    case TSDB_DATA_TYPE_VARBINARY:
4256
    case TSDB_DATA_TYPE_GEOMETRY:
4257
      code = tjsonAddStringToObject(pJson, jkValueDatum, varDataVal(pNode->datum.p));
15,404✔
4258
      break;
15,404✔
4259
    case TSDB_DATA_TYPE_JSON: {
×
4260
      int32_t len = getJsonValueLen(pNode->datum.p);
×
4261
      int32_t bufSize = len * 2 + 1;
×
4262
      char*   buf = taosMemoryCalloc(bufSize, sizeof(char));
×
4263
      if (!buf) return terrno;
×
4264
      code = taosHexEncode(pNode->datum.p, buf, len, bufSize);
×
4265
      if (code != TSDB_CODE_SUCCESS) {
×
4266
        taosMemoryFree(buf);
×
4267
        return TSDB_CODE_TSC_INVALID_VALUE;
×
4268
      }
4269
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
×
4270
      taosMemoryFree(buf);
×
4271
      break;
×
4272
    }
4273
    case TSDB_DATA_TYPE_DECIMAL:
×
4274
    case TSDB_DATA_TYPE_BLOB:
4275
      // todo
4276
    default:
4277
      break;
×
4278
  }
4279

4280
  return code;
53,961✔
4281
}
4282

4283
static int32_t valueNodeToJson(const void* pObj, SJson* pJson) {
60,316✔
4284
  const SValueNode* pNode = (const SValueNode*)pObj;
60,316✔
4285

4286
  int32_t code = exprNodeToJson(pObj, pJson);
60,316✔
4287
  if (TSDB_CODE_SUCCESS == code) {
60,316!
4288
    code = tjsonAddIntegerToObject(pJson, jkValueLiteralSize, NULL != pNode->literal ? strlen(pNode->literal) : 0);
60,316✔
4289
  }
4290
  if (TSDB_CODE_SUCCESS == code && NULL != pNode->literal) {
60,316!
4291
    code = tjsonAddStringToObject(pJson, jkValueLiteral, pNode->literal);
39,913✔
4292
  }
4293
  if (TSDB_CODE_SUCCESS == code) {
60,316!
4294
    code = tjsonAddBoolToObject(pJson, jkValueFlag, pNode->flag);
60,316✔
4295
  }
4296
  if (TSDB_CODE_SUCCESS == code) {
60,316!
4297
    code = tjsonAddBoolToObject(pJson, jkValueTranslate, pNode->translate);
60,316✔
4298
  }
4299
  if (TSDB_CODE_SUCCESS == code) {
60,316!
4300
    code = tjsonAddBoolToObject(pJson, jkValueNotReserved, pNode->notReserved);
60,316✔
4301
  }
4302
  if (TSDB_CODE_SUCCESS == code) {
60,316!
4303
    code = tjsonAddBoolToObject(pJson, jkValueIsNull, pNode->isNull);
60,316✔
4304
  }
4305
  if (TSDB_CODE_SUCCESS == code) {
60,316!
4306
    code = tjsonAddIntegerToObject(pJson, jkValueUnit, pNode->unit);
60,316✔
4307
  }
4308
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
60,316!
4309
    code = datumToJson(pNode, pJson);
53,961✔
4310
  }
4311

4312
  return code;
60,316✔
4313
}
4314

4315
static int32_t jsonToDatum(const SJson* pJson, void* pObj) {
85,342✔
4316
  SValueNode* pNode = (SValueNode*)pObj;
85,342✔
4317

4318
  int32_t code = TSDB_CODE_SUCCESS;
85,342✔
4319
  switch (pNode->node.resType.type) {
85,342!
4320
    case TSDB_DATA_TYPE_NULL:
×
4321
      break;
×
4322
    case TSDB_DATA_TYPE_BOOL:
185✔
4323
      code = tjsonGetBoolValue(pJson, jkValueDatum, &pNode->datum.b);
185✔
4324
      *(bool*)&pNode->typeData = pNode->datum.b;
185✔
4325
      break;
185✔
4326
    case TSDB_DATA_TYPE_TINYINT:
16,374✔
4327
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
16,374✔
4328
      *(int8_t*)&pNode->typeData = pNode->datum.i;
16,375✔
4329
      break;
16,375✔
4330
    case TSDB_DATA_TYPE_SMALLINT:
210✔
4331
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
210✔
4332
      *(int16_t*)&pNode->typeData = pNode->datum.i;
210✔
4333
      break;
210✔
4334
    case TSDB_DATA_TYPE_INT:
57✔
4335
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
57✔
4336
      *(int32_t*)&pNode->typeData = pNode->datum.i;
57✔
4337
      break;
57✔
4338
    case TSDB_DATA_TYPE_BIGINT:
43,718✔
4339
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
43,718✔
4340
      *(int64_t*)&pNode->typeData = pNode->datum.i;
43,715✔
4341
      break;
43,715✔
4342
    case TSDB_DATA_TYPE_TIMESTAMP:
×
4343
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
×
4344
      *(int64_t*)&pNode->typeData = pNode->datum.i;
×
4345
      break;
×
4346
    case TSDB_DATA_TYPE_UTINYINT:
198✔
4347
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
198✔
4348
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
198✔
4349
      break;
198✔
4350
    case TSDB_DATA_TYPE_USMALLINT:
×
4351
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
4352
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
×
4353
      break;
×
4354
    case TSDB_DATA_TYPE_UINT:
×
4355
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
4356
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
×
4357
      break;
×
4358
    case TSDB_DATA_TYPE_UBIGINT:
×
4359
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
4360
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
×
4361
      break;
×
4362
    case TSDB_DATA_TYPE_FLOAT:
×
4363
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
×
4364
      *(float*)&pNode->typeData = pNode->datum.d;
×
4365
      break;
×
4366
    case TSDB_DATA_TYPE_DOUBLE:
830✔
4367
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
830✔
4368
      *(double*)&pNode->typeData = pNode->datum.d;
830✔
4369
      break;
830✔
4370
    case TSDB_DATA_TYPE_NCHAR:
23,777✔
4371
    case TSDB_DATA_TYPE_VARCHAR:
4372
    case TSDB_DATA_TYPE_VARBINARY:
4373
    case TSDB_DATA_TYPE_GEOMETRY: {
4374
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
23,777✔
4375
      if (NULL == pNode->datum.p) {
23,779✔
4376
        code = terrno;
1✔
4377
        break;
×
4378
      }
4379
      varDataSetLen(pNode->datum.p, pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
23,778✔
4380
      if (TSDB_DATA_TYPE_NCHAR == pNode->node.resType.type) {
23,778!
4381
        char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + VARSTR_HEADER_SIZE + 1);
×
4382
        if (NULL == buf) {
×
4383
          code = terrno;
×
4384
          break;
×
4385
        }
4386
        code = tjsonGetStringValue(pJson, jkValueDatum, buf);
×
4387
        if (code != TSDB_CODE_SUCCESS) {
×
4388
          taosMemoryFree(buf);
×
4389
          break;
×
4390
        }
4391
        code = taosHexDecode(buf, varDataVal(pNode->datum.p), pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
×
4392
        if (code != TSDB_CODE_SUCCESS) {
×
4393
          taosMemoryFree(buf);
×
4394
          break;
×
4395
        }
4396
        taosMemoryFree(buf);
×
4397
      } else {
4398
        code = tjsonGetStringValue(pJson, jkValueDatum, varDataVal(pNode->datum.p));
23,778✔
4399
      }
4400
      break;
23,775✔
4401
    }
4402
    case TSDB_DATA_TYPE_JSON: {
×
4403
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes);
×
4404
      if (NULL == pNode->datum.p) {
×
4405
        code = terrno;
×
4406
        break;
×
4407
      }
4408
      char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + 1);
×
4409
      if (NULL == buf) {
×
4410
        code = terrno;
×
4411
        break;
×
4412
      }
4413
      code = tjsonGetStringValue(pJson, jkValueDatum, buf);
×
4414
      if (code != TSDB_CODE_SUCCESS) {
×
4415
        taosMemoryFree(buf);
×
4416
        break;
×
4417
      }
4418
      code = taosHexDecode(buf, pNode->datum.p, pNode->node.resType.bytes);
×
4419
      if (code != TSDB_CODE_SUCCESS) {
×
4420
        taosMemoryFree(buf);
×
4421
        break;
×
4422
      }
4423
      taosMemoryFree(buf);
×
4424
      break;
×
4425
    }
4426
    case TSDB_DATA_TYPE_DECIMAL:
×
4427
    case TSDB_DATA_TYPE_BLOB:
4428
      // todo
4429
    default:
4430
      break;
×
4431
  }
4432

4433
  return code;
85,338✔
4434
}
4435

4436
static int32_t jsonToValueNode(const SJson* pJson, void* pObj) {
92,250✔
4437
  SValueNode* pNode = (SValueNode*)pObj;
92,250✔
4438

4439
  int32_t code = jsonToExprNode(pJson, pObj);
92,250✔
4440
  int32_t literalSize = 0;
92,249✔
4441
  if (TSDB_CODE_SUCCESS == code) {
92,249!
4442
    code = tjsonGetIntValue(pJson, jkValueLiteralSize, &literalSize);
92,249✔
4443
  }
4444
  if (TSDB_CODE_SUCCESS == code && literalSize > 0) {
92,248!
4445
    code = tjsonDupStringValue(pJson, jkValueLiteral, &pNode->literal);
67,681✔
4446
  }
4447
  if (TSDB_CODE_SUCCESS == code) {
92,248✔
4448
    code = tjsonGetIntValue(pJson, jkValueFlag, &pNode->flag);
92,245✔
4449
  }
4450
  if (TSDB_CODE_SUCCESS == code) {
92,237✔
4451
    code = tjsonGetBoolValue(pJson, jkValueTranslate, &pNode->translate);
92,234✔
4452
  }
4453
  if (TSDB_CODE_SUCCESS == code) {
92,251✔
4454
    code = tjsonGetBoolValue(pJson, jkValueNotReserved, &pNode->notReserved);
92,248✔
4455
  }
4456
  if (TSDB_CODE_SUCCESS == code) {
92,259✔
4457
    code = tjsonGetBoolValue(pJson, jkValueIsNull, &pNode->isNull);
92,257✔
4458
  }
4459
  if (TSDB_CODE_SUCCESS == code) {
92,250✔
4460
    code = tjsonGetTinyIntValue(pJson, jkValueUnit, &pNode->unit);
92,248✔
4461
  }
4462
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
92,248!
4463
    code = jsonToDatum(pJson, pNode);
85,342✔
4464
  }
4465

4466
  return code;
92,237✔
4467
}
4468

4469
static const char* jkOperatorType = "OpType";
4470
static const char* jkOperatorLeft = "Left";
4471
static const char* jkOperatorRight = "Right";
4472

4473
static int32_t operatorNodeToJson(const void* pObj, SJson* pJson) {
6,513✔
4474
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
6,513✔
4475

4476
  int32_t code = exprNodeToJson(pObj, pJson);
6,513✔
4477
  if (TSDB_CODE_SUCCESS == code) {
6,513!
4478
    code = tjsonAddIntegerToObject(pJson, jkOperatorType, pNode->opType);
6,513✔
4479
  }
4480
  if (TSDB_CODE_SUCCESS == code) {
6,513!
4481
    code = tjsonAddObject(pJson, jkOperatorLeft, nodeToJson, pNode->pLeft);
6,513✔
4482
  }
4483
  if (TSDB_CODE_SUCCESS == code) {
6,513!
4484
    code = tjsonAddObject(pJson, jkOperatorRight, nodeToJson, pNode->pRight);
6,513✔
4485
  }
4486

4487
  return code;
6,513✔
4488
}
4489

4490
static int32_t jsonToOperatorNode(const SJson* pJson, void* pObj) {
16,451✔
4491
  SOperatorNode* pNode = (SOperatorNode*)pObj;
16,451✔
4492

4493
  int32_t code = jsonToExprNode(pJson, pObj);
16,451✔
4494
  if (TSDB_CODE_SUCCESS == code) {
16,449!
4495
    tjsonGetNumberValue(pJson, jkOperatorType, pNode->opType, code);
16,449✔
4496
  }
4497
  if (TSDB_CODE_SUCCESS == code) {
16,448✔
4498
    code = jsonToNodeObject(pJson, jkOperatorLeft, &pNode->pLeft);
16,447✔
4499
  }
4500
  if (TSDB_CODE_SUCCESS == code) {
16,450✔
4501
    code = jsonToNodeObject(pJson, jkOperatorRight, &pNode->pRight);
16,449✔
4502
  }
4503

4504
  return code;
16,443✔
4505
}
4506

4507
static const char* jkLogicCondType = "CondType";
4508
static const char* jkLogicCondParameters = "Parameters";
4509

4510
static int32_t logicConditionNodeToJson(const void* pObj, SJson* pJson) {
1,871✔
4511
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
1,871✔
4512

4513
  int32_t code = exprNodeToJson(pObj, pJson);
1,871✔
4514
  if (TSDB_CODE_SUCCESS == code) {
1,871!
4515
    code = tjsonAddIntegerToObject(pJson, jkLogicCondType, pNode->condType);
1,871✔
4516
  }
4517
  if (TSDB_CODE_SUCCESS == code) {
1,871!
4518
    code = nodeListToJson(pJson, jkLogicCondParameters, pNode->pParameterList);
1,871✔
4519
  }
4520

4521
  return code;
1,871✔
4522
}
4523

4524
static int32_t jsonToLogicConditionNode(const SJson* pJson, void* pObj) {
6,414✔
4525
  SLogicConditionNode* pNode = (SLogicConditionNode*)pObj;
6,414✔
4526

4527
  int32_t code = jsonToExprNode(pJson, pObj);
6,414✔
4528
  if (TSDB_CODE_SUCCESS == code) {
6,414!
4529
    tjsonGetNumberValue(pJson, jkLogicCondType, pNode->condType, code);
6,414✔
4530
  }
4531
  if (TSDB_CODE_SUCCESS == code) {
6,414!
4532
    code = jsonToNodeList(pJson, jkLogicCondParameters, &pNode->pParameterList);
6,414✔
4533
  }
4534

4535
  return code;
6,414✔
4536
}
4537

4538
static const char* jkFunctionName = "Name";
4539
static const char* jkFunctionId = "Id";
4540
static const char* jkFunctionType = "Type";
4541
static const char* jkFunctionParameter = "Parameters";
4542
static const char* jkFunctionUdfBufSize = "UdfBufSize";
4543
static const char* jkFunctionHasPk = "HasPk";
4544
static const char* jkFunctionPkBytes = "PkBytes";
4545
static const char* jkFunctionIsMergeFunc = "IsMergeFunc";
4546
static const char* jkFunctionMergeFuncOf = "MergeFuncOf";
4547
static const char* jkFunctionTrimType = "TrimType";
4548

4549
static int32_t functionNodeToJson(const void* pObj, SJson* pJson) {
362,818✔
4550
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
362,818✔
4551

4552
  int32_t code = exprNodeToJson(pObj, pJson);
362,818✔
4553
  if (TSDB_CODE_SUCCESS == code) {
362,818!
4554
    code = tjsonAddStringToObject(pJson, jkFunctionName, pNode->functionName);
362,818✔
4555
  }
4556
  if (TSDB_CODE_SUCCESS == code) {
362,818!
4557
    code = tjsonAddIntegerToObject(pJson, jkFunctionId, pNode->funcId);
362,818✔
4558
  }
4559
  if (TSDB_CODE_SUCCESS == code) {
362,818!
4560
    code = tjsonAddIntegerToObject(pJson, jkFunctionType, pNode->funcType);
362,818✔
4561
  }
4562
  if (TSDB_CODE_SUCCESS == code) {
362,818!
4563
    code = nodeListToJson(pJson, jkFunctionParameter, pNode->pParameterList);
362,818✔
4564
  }
4565
  if (TSDB_CODE_SUCCESS == code) {
362,818!
4566
    code = tjsonAddIntegerToObject(pJson, jkFunctionUdfBufSize, pNode->udfBufSize);
362,818✔
4567
  }
4568
  if (TSDB_CODE_SUCCESS == code) {
362,818!
4569
    code = tjsonAddBoolToObject(pJson, jkFunctionHasPk, pNode->hasPk);
362,818✔
4570
  }
4571
  if (TSDB_CODE_SUCCESS == code) {
362,818!
4572
    code = tjsonAddIntegerToObject(pJson, jkFunctionPkBytes, pNode->pkBytes);
362,818✔
4573
  }
4574
  if (TSDB_CODE_SUCCESS == code) {
362,818!
4575
    code = tjsonAddBoolToObject(pJson, jkFunctionIsMergeFunc, pNode->hasOriginalFunc);
362,818✔
4576
  }
4577
  if (TSDB_CODE_SUCCESS == code) {
362,818!
4578
    code = tjsonAddIntegerToObject(pJson, jkFunctionMergeFuncOf, pNode->originalFuncId);
362,818✔
4579
  }
4580
  if (TSDB_CODE_SUCCESS == code) {
362,818!
4581
    code = tjsonAddIntegerToObject(pJson, jkFunctionTrimType, pNode->trimType);
362,818✔
4582
  }
4583
  return code;
362,818✔
4584
}
4585

4586
static int32_t jsonToFunctionNode(const SJson* pJson, void* pObj) {
836,357✔
4587
  SFunctionNode* pNode = (SFunctionNode*)pObj;
836,357✔
4588

4589
  int32_t code = jsonToExprNode(pJson, pObj);
836,357✔
4590
  if (TSDB_CODE_SUCCESS == code) {
836,251!
4591
    code = tjsonGetStringValue(pJson, jkFunctionName, pNode->functionName);
836,251✔
4592
  }
4593
  if (TSDB_CODE_SUCCESS == code) {
836,140!
4594
    code = tjsonGetIntValue(pJson, jkFunctionId, &pNode->funcId);
836,140✔
4595
  }
4596
  if (TSDB_CODE_SUCCESS == code) {
835,981!
4597
    code = tjsonGetIntValue(pJson, jkFunctionType, &pNode->funcType);
835,982✔
4598
  }
4599
  if (TSDB_CODE_SUCCESS == code) {
836,177✔
4600
    code = jsonToNodeList(pJson, jkFunctionParameter, &pNode->pParameterList);
836,176✔
4601
  }
4602
  if (TSDB_CODE_SUCCESS == code) {
836,390!
4603
    code = tjsonGetIntValue(pJson, jkFunctionUdfBufSize, &pNode->udfBufSize);
836,391✔
4604
  }
4605
  if (TSDB_CODE_SUCCESS == code) {
836,366!
4606
    code = tjsonGetBoolValue(pJson, jkFunctionHasPk, &pNode->hasPk);
836,367✔
4607
  }
4608
  if (TSDB_CODE_SUCCESS == code) {
836,357!
4609
    code = tjsonGetIntValue(pJson, jkFunctionPkBytes, &pNode->pkBytes);
836,359✔
4610
  }
4611
  if (TSDB_CODE_SUCCESS == code) {
836,355✔
4612
    code = tjsonGetBoolValue(pJson, jkFunctionIsMergeFunc, &pNode->hasOriginalFunc);
836,351✔
4613
  }
4614
  if (TSDB_CODE_SUCCESS == code) {
836,400✔
4615
    code = tjsonGetIntValue(pJson, jkFunctionMergeFuncOf, &pNode->originalFuncId);
836,396✔
4616
  }
4617
  if (TSDB_CODE_SUCCESS == code) {
836,354✔
4618
    tjsonGetNumberValue(pJson, jkFunctionTrimType, pNode->trimType, code);
836,350✔
4619
  }
4620

4621
  return code;
836,389✔
4622
}
4623

4624
static const char* jkTableDbName = "DbName";
4625
static const char* jkTableTableName = "tableName";
4626
static const char* jkTableTableAlias = "tableAlias";
4627

4628
static int32_t tableNodeToJson(const void* pObj, SJson* pJson) {
1,456✔
4629
  const STableNode* pNode = (const STableNode*)pObj;
1,456✔
4630

4631
  int32_t code = exprNodeToJson(pObj, pJson);
1,456✔
4632
  if (TSDB_CODE_SUCCESS == code) {
1,456!
4633
    code = tjsonAddStringToObject(pJson, jkTableDbName, pNode->dbName);
1,456✔
4634
  }
4635
  if (TSDB_CODE_SUCCESS == code) {
1,456!
4636
    code = tjsonAddStringToObject(pJson, jkTableTableName, pNode->tableName);
1,456✔
4637
  }
4638
  if (TSDB_CODE_SUCCESS == code) {
1,456!
4639
    code = tjsonAddStringToObject(pJson, jkTableTableAlias, pNode->tableAlias);
1,456✔
4640
  }
4641

4642
  return code;
1,456✔
4643
}
4644

4645
static int32_t jsonToTableNode(const SJson* pJson, void* pObj) {
10,959✔
4646
  STableNode* pNode = (STableNode*)pObj;
10,959✔
4647

4648
  int32_t code = jsonToExprNode(pJson, pObj);
10,959✔
4649
  if (TSDB_CODE_SUCCESS == code) {
10,959!
4650
    code = tjsonGetStringValue(pJson, jkTableDbName, pNode->dbName);
10,959✔
4651
  }
4652
  if (TSDB_CODE_SUCCESS == code) {
10,959!
4653
    code = tjsonGetStringValue(pJson, jkTableTableName, pNode->tableName);
10,959✔
4654
  }
4655
  if (TSDB_CODE_SUCCESS == code) {
10,959!
4656
    code = tjsonGetStringValue(pJson, jkTableTableAlias, pNode->tableAlias);
10,959✔
4657
  }
4658

4659
  return code;
10,959✔
4660
}
4661

4662
static const char* jkTableIndexInfoIntervalUnit = "IntervalUnit";
4663
static const char* jkTableIndexInfoSlidingUnit = "SlidingUnit";
4664
static const char* jkTableIndexInfoInterval = "Interval";
4665
static const char* jkTableIndexInfoOffset = "Offset";
4666
static const char* jkTableIndexInfoSliding = "Sliding";
4667
static const char* jkTableIndexInfoDstTbUid = "DstTbUid";
4668
static const char* jkTableIndexInfoDstVgId = "DstVgId";
4669
static const char* jkTableIndexInfoEpSet = "EpSet";
4670
static const char* jkTableIndexInfoExpr = "Expr";
4671

4672
static int32_t tableIndexInfoToJson(const void* pObj, SJson* pJson) {
×
4673
  const STableIndexInfo* pNode = (const STableIndexInfo*)pObj;
×
4674

4675
  int32_t code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoIntervalUnit, pNode->intervalUnit);
×
4676
  if (TSDB_CODE_SUCCESS == code) {
×
4677
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoSlidingUnit, pNode->slidingUnit);
×
4678
  }
4679
  if (TSDB_CODE_SUCCESS == code) {
×
4680
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoInterval, pNode->interval);
×
4681
  }
4682
  if (TSDB_CODE_SUCCESS == code) {
×
4683
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoOffset, pNode->offset);
×
4684
  }
4685
  if (TSDB_CODE_SUCCESS == code) {
×
4686
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoSliding, pNode->sliding);
×
4687
  }
4688
  if (TSDB_CODE_SUCCESS == code) {
×
4689
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoDstTbUid, pNode->dstTbUid);
×
4690
  }
4691
  if (TSDB_CODE_SUCCESS == code) {
×
4692
    code = tjsonAddIntegerToObject(pJson, jkTableIndexInfoDstVgId, pNode->dstVgId);
×
4693
  }
4694
  if (TSDB_CODE_SUCCESS == code) {
×
4695
    code = tjsonAddObject(pJson, jkTableIndexInfoEpSet, epSetToJson, &pNode->epSet);
×
4696
  }
4697
  if (TSDB_CODE_SUCCESS == code) {
×
4698
    code = tjsonAddStringToObject(pJson, jkTableIndexInfoExpr, pNode->expr);
×
4699
  }
4700

4701
  return code;
×
4702
}
4703

4704
static int32_t jsonToTableIndexInfo(const SJson* pJson, void* pObj) {
×
4705
  STableIndexInfo* pNode = (STableIndexInfo*)pObj;
×
4706

4707
  int32_t code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoIntervalUnit, &pNode->intervalUnit);
×
4708
  if (TSDB_CODE_SUCCESS == code) {
×
4709
    code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoSlidingUnit, &pNode->slidingUnit);
×
4710
  }
4711
  if (TSDB_CODE_SUCCESS == code) {
×
4712
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoInterval, &pNode->interval);
×
4713
  }
4714
  if (TSDB_CODE_SUCCESS == code) {
×
4715
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoOffset, &pNode->offset);
×
4716
  }
4717
  if (TSDB_CODE_SUCCESS == code) {
×
4718
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoSliding, &pNode->sliding);
×
4719
  }
4720
  if (TSDB_CODE_SUCCESS == code) {
×
4721
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoDstTbUid, &pNode->dstTbUid);
×
4722
  }
4723
  if (TSDB_CODE_SUCCESS == code) {
×
4724
    code = tjsonGetIntValue(pJson, jkTableIndexInfoDstVgId, &pNode->dstVgId);
×
4725
  }
4726
  if (TSDB_CODE_SUCCESS == code) {
×
4727
    code = tjsonToObject(pJson, jkTableIndexInfoEpSet, jsonToEpSet, &pNode->epSet);
×
4728
  }
4729
  if (TSDB_CODE_SUCCESS == code) {
×
4730
    code = tjsonDupStringValue(pJson, jkTableIndexInfoExpr, &pNode->expr);
×
4731
  }
4732

4733
  return code;
×
4734
}
4735

4736
static const char* jkRealTableMetaSize = "MetaSize";
4737
static const char* jkRealTableMeta = "Meta";
4738
static const char* jkRealTableVgroupsInfoSize = "VgroupsInfoSize";
4739
static const char* jkRealTableVgroupsInfo = "VgroupsInfo";
4740
static const char* jkRealTableSmaIndexes = "SmaIndexes";
4741

4742
static int32_t realTableNodeToJson(const void* pObj, SJson* pJson) {
1,456✔
4743
  const SRealTableNode* pNode = (const SRealTableNode*)pObj;
1,456✔
4744

4745
  int32_t code = tableNodeToJson(pObj, pJson);
1,456✔
4746
  if (TSDB_CODE_SUCCESS == code) {
1,456!
4747
    code = tjsonAddIntegerToObject(pJson, jkRealTableMetaSize, TABLE_META_SIZE(pNode->pMeta));
1,456!
4748
  }
4749
  if (TSDB_CODE_SUCCESS == code) {
1,456!
4750
    code = tjsonAddObject(pJson, jkRealTableMeta, tableMetaToJson, pNode->pMeta);
1,456✔
4751
  }
4752
  if (TSDB_CODE_SUCCESS == code) {
1,456!
4753
    code = tjsonAddIntegerToObject(pJson, jkRealTableVgroupsInfoSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
1,456✔
4754
  }
4755
  if (TSDB_CODE_SUCCESS == code) {
1,456!
4756
    code = tjsonAddObject(pJson, jkRealTableVgroupsInfo, vgroupsInfoToJson, pNode->pVgroupList);
1,456✔
4757
  }
4758
  if (TSDB_CODE_SUCCESS == code) {
1,456!
4759
    code = tjsonAddTArray(pJson, jkRealTableSmaIndexes, tableIndexInfoToJson, pNode->pSmaIndexes);
1,456✔
4760
  }
4761

4762
  return code;
1,456✔
4763
}
4764

4765
static int32_t jsonToRealTableNode(const SJson* pJson, void* pObj) {
10,959✔
4766
  SRealTableNode* pNode = (SRealTableNode*)pObj;
10,959✔
4767

4768
  int32_t objSize = 0;
10,959✔
4769
  int32_t code = jsonToTableNode(pJson, pObj);
10,959✔
4770
  if (TSDB_CODE_SUCCESS == code) {
10,959!
4771
    code = tjsonGetIntValue(pJson, jkRealTableMetaSize, &objSize);
10,959✔
4772
  }
4773
  if (TSDB_CODE_SUCCESS == code) {
10,959!
4774
    code = tjsonMakeObject(pJson, jkRealTableMeta, jsonToTableMeta, (void**)&pNode->pMeta, objSize);
10,959✔
4775
  }
4776
  if (TSDB_CODE_SUCCESS == code) {
10,959!
4777
    code = tjsonGetIntValue(pJson, jkRealTableVgroupsInfoSize, &objSize);
10,959✔
4778
  }
4779
  if (TSDB_CODE_SUCCESS == code) {
10,959!
4780
    code = tjsonMakeObject(pJson, jkRealTableVgroupsInfo, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
10,959✔
4781
  }
4782
  if (TSDB_CODE_SUCCESS == code) {
10,959!
4783
    code =
4784
        tjsonToTArray(pJson, jkRealTableSmaIndexes, jsonToTableIndexInfo, &pNode->pSmaIndexes, sizeof(STableIndexInfo));
10,959✔
4785
  }
4786

4787
  return code;
10,959✔
4788
}
4789

4790
static const char* jkTempTableSubquery = "Subquery";
4791

4792
static int32_t tempTableNodeToJson(const void* pObj, SJson* pJson) {
×
4793
  const STempTableNode* pNode = (const STempTableNode*)pObj;
×
4794

4795
  int32_t code = tableNodeToJson(pObj, pJson);
×
4796
  if (TSDB_CODE_SUCCESS == code) {
×
4797
    code = tjsonAddObject(pJson, jkTempTableSubquery, nodeToJson, pNode->pSubquery);
×
4798
  }
4799

4800
  return code;
×
4801
}
4802

4803
static int32_t jsonToTempTableNode(const SJson* pJson, void* pObj) {
×
4804
  STempTableNode* pNode = (STempTableNode*)pObj;
×
4805

4806
  int32_t code = jsonToTableNode(pJson, pObj);
×
4807
  if (TSDB_CODE_SUCCESS == code) {
×
4808
    code = jsonToNodeObject(pJson, jkTempTableSubquery, &pNode->pSubquery);
×
4809
  }
4810

4811
  return code;
×
4812
}
4813

4814
static const char* jkJoinTableJoinType = "JoinType";
4815
static const char* jkJoinTableSubType = "SubType";
4816
static const char* jkJoinTableLeft = "Left";
4817
static const char* jkJoinTableRight = "Right";
4818
static const char* jkJoinTableOnCond = "OnCond";
4819

4820
static int32_t joinTableNodeToJson(const void* pObj, SJson* pJson) {
×
4821
  const SJoinTableNode* pNode = (const SJoinTableNode*)pObj;
×
4822

4823
  int32_t code = tableNodeToJson(pObj, pJson);
×
4824
  if (TSDB_CODE_SUCCESS == code) {
×
4825
    code = tjsonAddIntegerToObject(pJson, jkJoinTableJoinType, pNode->joinType);
×
4826
  }
4827
  if (TSDB_CODE_SUCCESS == code) {
×
4828
    code = tjsonAddIntegerToObject(pJson, jkJoinTableSubType, pNode->subType);
×
4829
  }
4830
  if (TSDB_CODE_SUCCESS == code) {
×
4831
    code = tjsonAddObject(pJson, jkJoinTableLeft, nodeToJson, pNode->pLeft);
×
4832
  }
4833
  if (TSDB_CODE_SUCCESS == code) {
×
4834
    code = tjsonAddObject(pJson, jkJoinTableRight, nodeToJson, pNode->pRight);
×
4835
  }
4836
  if (TSDB_CODE_SUCCESS == code) {
×
4837
    code = tjsonAddObject(pJson, jkJoinTableOnCond, nodeToJson, pNode->pOnCond);
×
4838
  }
4839

4840
  return code;
×
4841
}
4842

4843
static int32_t jsonToJoinTableNode(const SJson* pJson, void* pObj) {
×
4844
  SJoinTableNode* pNode = (SJoinTableNode*)pObj;
×
4845

4846
  int32_t code = jsonToTableNode(pJson, pObj);
×
4847
  if (TSDB_CODE_SUCCESS == code) {
×
4848
    tjsonGetNumberValue(pJson, jkJoinTableJoinType, pNode->joinType, code);
×
4849
  }
4850
  if (TSDB_CODE_SUCCESS == code) {
×
4851
    tjsonGetNumberValue(pJson, jkJoinTableSubType, pNode->subType, code);
×
4852
  }
4853
  if (TSDB_CODE_SUCCESS == code) {
×
4854
    code = jsonToNodeObject(pJson, jkJoinTableLeft, &pNode->pLeft);
×
4855
  }
4856
  if (TSDB_CODE_SUCCESS == code) {
×
4857
    code = jsonToNodeObject(pJson, jkJoinTableRight, &pNode->pRight);
×
4858
  }
4859
  if (TSDB_CODE_SUCCESS == code) {
×
4860
    code = jsonToNodeObject(pJson, jkJoinTableOnCond, &pNode->pOnCond);
×
4861
  }
4862

4863
  return code;
×
4864
}
4865

4866
static const char* jkGroupingSetType = "GroupingSetType";
4867
static const char* jkGroupingSetParameter = "Parameters";
4868

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

4872
  int32_t code = tjsonAddIntegerToObject(pJson, jkGroupingSetType, pNode->groupingSetType);
×
4873
  if (TSDB_CODE_SUCCESS == code) {
×
4874
    code = nodeListToJson(pJson, jkGroupingSetParameter, pNode->pParameterList);
×
4875
  }
4876

4877
  return code;
×
4878
}
4879

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

4883
  int32_t code = TSDB_CODE_SUCCESS;
×
4884
  tjsonGetNumberValue(pJson, jkGroupingSetType, pNode->groupingSetType, code);
×
4885
  if (TSDB_CODE_SUCCESS == code) {
×
4886
    code = jsonToNodeList(pJson, jkGroupingSetParameter, &pNode->pParameterList);
×
4887
  }
4888

4889
  return code;
×
4890
}
4891

4892
static const char* jkOrderByExprExpr = "Expr";
4893
static const char* jkOrderByExprOrder = "Order";
4894
static const char* jkOrderByExprNullOrder = "NullOrder";
4895

4896
static int32_t orderByExprNodeToJson(const void* pObj, SJson* pJson) {
×
4897
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
×
4898

4899
  int32_t code = tjsonAddObject(pJson, jkOrderByExprExpr, nodeToJson, pNode->pExpr);
×
4900
  if (TSDB_CODE_SUCCESS == code) {
×
4901
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprOrder, pNode->order);
×
4902
  }
4903
  if (TSDB_CODE_SUCCESS == code) {
×
4904
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprNullOrder, pNode->nullOrder);
×
4905
  }
4906

4907
  return code;
×
4908
}
4909

4910
static int32_t jsonToOrderByExprNode(const SJson* pJson, void* pObj) {
×
4911
  SOrderByExprNode* pNode = (SOrderByExprNode*)pObj;
×
4912

4913
  int32_t code = jsonToNodeObject(pJson, jkOrderByExprExpr, &pNode->pExpr);
×
4914
  if (TSDB_CODE_SUCCESS == code) {
×
4915
    tjsonGetNumberValue(pJson, jkOrderByExprOrder, pNode->order, code);
×
4916
  }
4917
  if (TSDB_CODE_SUCCESS == code) {
×
4918
    tjsonGetNumberValue(pJson, jkOrderByExprNullOrder, pNode->nullOrder, code);
×
4919
  }
4920

4921
  return code;
×
4922
}
4923

4924
static const char* jkLimitLimit = "Limit";
4925
static const char* jkLimitOffset = "Offset";
4926

4927
static int32_t limitNodeToJson(const void* pObj, SJson* pJson) {
×
4928
  const SLimitNode* pNode = (const SLimitNode*)pObj;
×
4929

4930
  int32_t code = tjsonAddIntegerToObject(pJson, jkLimitLimit, pNode->limit);
×
4931
  if (TSDB_CODE_SUCCESS == code) {
×
4932
    code = tjsonAddIntegerToObject(pJson, jkLimitOffset, pNode->offset);
×
4933
  }
4934

4935
  return code;
×
4936
}
4937

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

4941
  int32_t code = tjsonGetBigIntValue(pJson, jkLimitLimit, &pNode->limit);
×
4942
  if (TSDB_CODE_SUCCESS == code) {
×
4943
    code = tjsonGetBigIntValue(pJson, jkLimitOffset, &pNode->offset);
×
4944
  }
4945

4946
  return code;
×
4947
}
4948

4949
static const char* jkStateWindowCol = "StateWindowCol";
4950
static const char* jkStateWindowExpr = "StateWindowExpr";
4951

4952
static int32_t stateWindowNodeToJson(const void* pObj, SJson* pJson) {
60✔
4953
  const SStateWindowNode* pNode = (const SStateWindowNode*)pObj;
60✔
4954
  int32_t                 code = tjsonAddObject(pJson, jkStateWindowCol, nodeToJson, pNode->pCol);
60✔
4955
  if (TSDB_CODE_SUCCESS == code) {
60!
4956
    code = tjsonAddObject(pJson, jkStateWindowExpr, nodeToJson, pNode->pExpr);
60✔
4957
  }
4958
  return code;
60✔
4959
}
4960

4961
static int32_t jsonToStateWindowNode(const SJson* pJson, void* pObj) {
2,046✔
4962
  SStateWindowNode* pNode = (SStateWindowNode*)pObj;
2,046✔
4963

4964
  int32_t code = jsonToNodeObject(pJson, jkStateWindowCol, (SNode**)&pNode->pCol);
2,046✔
4965
  if (TSDB_CODE_SUCCESS == code) {
2,046!
4966
    code = jsonToNodeObject(pJson, jkStateWindowExpr, (SNode**)&pNode->pExpr);
2,046✔
4967
  }
4968
  return code;
2,046✔
4969
}
4970

4971
static const char* jkSessionWindowTsPrimaryKey = "TsPrimaryKey";
4972
static const char* jkSessionWindowGap = "Gap";
4973

4974
static int32_t sessionWindowNodeToJson(const void* pObj, SJson* pJson) {
92✔
4975
  const SSessionWindowNode* pNode = (const SSessionWindowNode*)pObj;
92✔
4976

4977
  int32_t code = tjsonAddObject(pJson, jkSessionWindowTsPrimaryKey, nodeToJson, pNode->pCol);
92✔
4978
  if (TSDB_CODE_SUCCESS == code) {
92!
4979
    code = tjsonAddObject(pJson, jkSessionWindowGap, nodeToJson, pNode->pGap);
92✔
4980
  }
4981
  return code;
92✔
4982
}
4983

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

4987
  int32_t code = jsonToNodeObject(pJson, jkSessionWindowTsPrimaryKey, (SNode**)&pNode->pCol);
198✔
4988
  if (TSDB_CODE_SUCCESS == code) {
198!
4989
    code = jsonToNodeObject(pJson, jkSessionWindowGap, (SNode**)&pNode->pGap);
198✔
4990
  }
4991
  return code;
198✔
4992
}
4993

4994
static const char* jkEventWindowTsPrimaryKey = "TsPrimaryKey";
4995
static const char* jkEventWindowStartCond = "StartCond";
4996
static const char* jkEventWindowEndCond = "EndCond";
4997

4998
static int32_t eventWindowNodeToJson(const void* pObj, SJson* pJson) {
9✔
4999
  const SEventWindowNode* pNode = (const SEventWindowNode*)pObj;
9✔
5000

5001
  int32_t code = tjsonAddObject(pJson, jkEventWindowTsPrimaryKey, nodeToJson, pNode->pCol);
9✔
5002
  if (TSDB_CODE_SUCCESS == code) {
9!
5003
    code = tjsonAddObject(pJson, jkEventWindowStartCond, nodeToJson, pNode->pStartCond);
9✔
5004
  }
5005
  if (TSDB_CODE_SUCCESS == code) {
9!
5006
    code = tjsonAddObject(pJson, jkEventWindowEndCond, nodeToJson, pNode->pEndCond);
9✔
5007
  }
5008
  return code;
9✔
5009
}
5010

5011
static int32_t jsonToEventWindowNode(const SJson* pJson, void* pObj) {
50✔
5012
  SEventWindowNode* pNode = (SEventWindowNode*)pObj;
50✔
5013

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

5024
static const char* jkCountWindowTsPrimaryKey = "CountTsPrimaryKey";
5025
static const char* jkCountWindowCount = "CountWindowCount";
5026
static const char* jkCountWindowSliding = "CountWindowSliding";
5027

5028
static int32_t countWindowNodeToJson(const void* pObj, SJson* pJson) {
13✔
5029
  const SCountWindowNode* pNode = (const SCountWindowNode*)pObj;
13✔
5030

5031
  int32_t code = tjsonAddObject(pJson, jkCountWindowTsPrimaryKey, nodeToJson, pNode->pCol);
13✔
5032
  if (TSDB_CODE_SUCCESS == code) {
13!
5033
    code = tjsonAddIntegerToObject(pJson, jkCountWindowCount, pNode->windowCount);
13✔
5034
  }
5035
  if (TSDB_CODE_SUCCESS == code) {
13!
5036
    code = tjsonAddIntegerToObject(pJson, jkCountWindowSliding, pNode->windowSliding);
13✔
5037
  }
5038
  return code;
13✔
5039
}
5040

5041
static int32_t jsonToCountWindowNode(const SJson* pJson, void* pObj) {
76✔
5042
  SCountWindowNode* pNode = (SCountWindowNode*)pObj;
76✔
5043

5044
  int32_t code = jsonToNodeObject(pJson, jkCountWindowTsPrimaryKey, &pNode->pCol);
76✔
5045
  if (TSDB_CODE_SUCCESS == code) {
76!
5046
    code = tjsonGetBigIntValue(pJson, jkCountWindowCount, &pNode->windowCount);
76✔
5047
  }
5048
  if (TSDB_CODE_SUCCESS == code) {
76!
5049
    code = tjsonGetBigIntValue(pJson, jkCountWindowSliding, &pNode->windowSliding);
76✔
5050
  }
5051
  return code;
76✔
5052
}
5053

5054
static const char* jkAnomalyWindowTsPrimaryKey = "AnomalyTsPrimaryKey";
5055
static const char* jkAnomalyWindowExpr = "AnomalyWindowExpr";
5056
static const char* jkAnomalyWindowOption = "AnomalyWindowOpt";
5057

5058
static int32_t anomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
5059
  const SAnomalyWindowNode* pNode = (const SAnomalyWindowNode*)pObj;
×
5060

5061
  int32_t code = tjsonAddObject(pJson, jkAnomalyWindowTsPrimaryKey, nodeToJson, pNode->pCol);
×
5062
  if (TSDB_CODE_SUCCESS == code) {
×
5063
    code = tjsonAddObject(pJson, jkAnomalyWindowExpr, nodeToJson, pNode->pExpr);
×
5064
  }
5065
  if (TSDB_CODE_SUCCESS == code) {
×
5066
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowOption, pNode->anomalyOpt);
×
5067
  }
5068
  return code;
×
5069
}
5070

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

5074
  int32_t code = jsonToNodeObject(pJson, jkAnomalyWindowTsPrimaryKey, &pNode->pCol);
×
5075
  if (TSDB_CODE_SUCCESS == code) {
×
5076
    code = jsonToNodeObject(pJson, jkAnomalyWindowExpr, (SNode**)&pNode->pExpr);
×
5077
  }
5078
  if (TSDB_CODE_SUCCESS == code) {
×
5079
    code = tjsonGetStringValue(pJson, jkAnomalyWindowOption, pNode->anomalyOpt);
×
5080
  }
5081
  return code;
×
5082
}
5083

5084
static const char* jkIntervalWindowInterval = "Interval";
5085
static const char* jkIntervalWindowOffset = "Offset";
5086
static const char* jkIntervalWindowSliding = "Sliding";
5087
static const char* jkIntervalWindowFill = "Fill";
5088
static const char* jkIntervalWindowTsPk = "TsPk";
5089
static const char* jkIntervalStartTime = "StartTime";
5090
static const char* jkIntervalEndTime = "EndTime";
5091

5092
static int32_t intervalWindowNodeToJson(const void* pObj, SJson* pJson) {
706✔
5093
  const SIntervalWindowNode* pNode = (const SIntervalWindowNode*)pObj;
706✔
5094

5095
  int32_t code = tjsonAddObject(pJson, jkIntervalWindowInterval, nodeToJson, pNode->pInterval);
706✔
5096
  if (TSDB_CODE_SUCCESS == code) {
706!
5097
    code = tjsonAddObject(pJson, jkIntervalWindowOffset, nodeToJson, pNode->pOffset);
706✔
5098
  }
5099
  if (TSDB_CODE_SUCCESS == code) {
706!
5100
    code = tjsonAddObject(pJson, jkIntervalWindowSliding, nodeToJson, pNode->pSliding);
706✔
5101
  }
5102
  if (TSDB_CODE_SUCCESS == code) {
706!
5103
    code = tjsonAddObject(pJson, jkIntervalWindowFill, nodeToJson, pNode->pFill);
706✔
5104
  }
5105
  if (TSDB_CODE_SUCCESS == code) {
706!
5106
    code = tjsonAddObject(pJson, jkIntervalWindowTsPk, nodeToJson, pNode->pCol);
706✔
5107
  }
5108
  if (TSDB_CODE_SUCCESS == code) {
706!
5109
    code = tjsonAddIntegerToObject(pJson, jkIntervalStartTime, pNode->timeRange.skey);
706✔
5110
  }
5111
  if (TSDB_CODE_SUCCESS == code) {
706!
5112
    code = tjsonAddIntegerToObject(pJson, jkIntervalEndTime, pNode->timeRange.ekey);
706✔
5113
  }
5114

5115
  return code;
706✔
5116
}
5117

5118
static int32_t jsonToIntervalWindowNode(const SJson* pJson, void* pObj) {
6,815✔
5119
  SIntervalWindowNode* pNode = (SIntervalWindowNode*)pObj;
6,815✔
5120

5121
  int32_t code = jsonToNodeObject(pJson, jkIntervalWindowInterval, &pNode->pInterval);
6,815✔
5122
  if (TSDB_CODE_SUCCESS == code) {
6,815!
5123
    code = jsonToNodeObject(pJson, jkIntervalWindowOffset, &pNode->pOffset);
6,815✔
5124
  }
5125
  if (TSDB_CODE_SUCCESS == code) {
6,815!
5126
    code = jsonToNodeObject(pJson, jkIntervalWindowSliding, &pNode->pSliding);
6,815✔
5127
  }
5128
  if (TSDB_CODE_SUCCESS == code) {
6,815!
5129
    code = jsonToNodeObject(pJson, jkIntervalWindowFill, &pNode->pFill);
6,815✔
5130
  }
5131
  if (TSDB_CODE_SUCCESS == code) {
6,815!
5132
    code = jsonToNodeObject(pJson, jkIntervalWindowTsPk, &pNode->pCol);
6,815✔
5133
  }
5134
  if (TSDB_CODE_SUCCESS == code) {
6,815!
5135
    code = tjsonGetBigIntValue(pJson, jkIntervalStartTime, &pNode->timeRange.skey);
6,815✔
5136
  }
5137
  if (TSDB_CODE_SUCCESS == code) {
6,815!
5138
    code = tjsonGetBigIntValue(pJson, jkIntervalEndTime, &pNode->timeRange.ekey);
6,815✔
5139
  }
5140

5141
  return code;
6,815✔
5142
}
5143

5144
static const char* jkNodeListDataType = "DataType";
5145
static const char* jkNodeListNodeList = "NodeList";
5146

5147
static int32_t nodeListNodeToJson(const void* pObj, SJson* pJson) {
2,879✔
5148
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
2,879✔
5149

5150
  int32_t code = tjsonAddObject(pJson, jkNodeListDataType, dataTypeToJson, &pNode->node.resType);
2,879✔
5151
  if (TSDB_CODE_SUCCESS == code) {
2,879!
5152
    code = nodeListToJson(pJson, jkNodeListNodeList, pNode->pNodeList);
2,879✔
5153
  }
5154

5155
  return code;
2,879✔
5156
}
5157

5158
static int32_t jsonToNodeListNode(const SJson* pJson, void* pObj) {
3,046✔
5159
  SNodeListNode* pNode = (SNodeListNode*)pObj;
3,046✔
5160

5161
  int32_t code = tjsonToObject(pJson, jkNodeListDataType, jsonToDataType, &pNode->node.resType);
3,046✔
5162
  if (TSDB_CODE_SUCCESS == code) {
3,046!
5163
    code = jsonToNodeList(pJson, jkNodeListNodeList, &pNode->pNodeList);
3,046✔
5164
  }
5165

5166
  return code;
3,046✔
5167
}
5168

5169
static const char* jkFillMode = "Mode";
5170
static const char* jkFillValues = "Values";
5171
static const char* jkFillWStartTs = "WStartTs";
5172
static const char* jkFillStartTime = "StartTime";
5173
static const char* jkFillEndTime = "EndTime";
5174

5175
static int32_t fillNodeToJson(const void* pObj, SJson* pJson) {
156✔
5176
  const SFillNode* pNode = (const SFillNode*)pObj;
156✔
5177

5178
  int32_t code = tjsonAddIntegerToObject(pJson, jkFillMode, pNode->mode);
156✔
5179
  if (TSDB_CODE_SUCCESS == code) {
156!
5180
    code = tjsonAddObject(pJson, jkFillValues, nodeToJson, pNode->pValues);
156✔
5181
  }
5182
  if (TSDB_CODE_SUCCESS == code) {
156!
5183
    code = tjsonAddObject(pJson, jkFillWStartTs, nodeToJson, pNode->pWStartTs);
156✔
5184
  }
5185
  if (TSDB_CODE_SUCCESS == code) {
156!
5186
    code = tjsonAddIntegerToObject(pJson, jkFillStartTime, pNode->timeRange.skey);
156✔
5187
  }
5188
  if (TSDB_CODE_SUCCESS == code) {
156!
5189
    code = tjsonAddIntegerToObject(pJson, jkFillEndTime, pNode->timeRange.ekey);
156✔
5190
  }
5191

5192
  return code;
156✔
5193
}
5194

5195
static int32_t jsonToFillNode(const SJson* pJson, void* pObj) {
219✔
5196
  SFillNode* pNode = (SFillNode*)pObj;
219✔
5197

5198
  int32_t code;
5199
  tjsonGetNumberValue(pJson, jkFillMode, pNode->mode, code);
219✔
5200
  if (TSDB_CODE_SUCCESS == code) {
219!
5201
    code = jsonToNodeObject(pJson, jkFillValues, &pNode->pValues);
219✔
5202
  }
5203
  if (TSDB_CODE_SUCCESS == code) {
219!
5204
    code = jsonToNodeObject(pJson, jkFillWStartTs, &pNode->pWStartTs);
219✔
5205
  }
5206
  if (TSDB_CODE_SUCCESS == code) {
219!
5207
    code = tjsonGetBigIntValue(pJson, jkFillStartTime, &pNode->timeRange.skey);
219✔
5208
  }
5209
  if (TSDB_CODE_SUCCESS == code) {
219!
5210
    code = tjsonGetBigIntValue(pJson, jkFillEndTime, &pNode->timeRange.ekey);
219✔
5211
  }
5212

5213
  return code;
219✔
5214
}
5215

5216
static const char* jkTargetDataBlockId = "DataBlockId";
5217
static const char* jkTargetSlotId = "SlotId";
5218
static const char* jkTargetExpr = "Expr";
5219

5220
static int32_t targetNodeToJson(const void* pObj, SJson* pJson) {
616,174✔
5221
  const STargetNode* pNode = (const STargetNode*)pObj;
616,174✔
5222

5223
  int32_t code = tjsonAddIntegerToObject(pJson, jkTargetDataBlockId, pNode->dataBlockId);
616,174✔
5224
  if (TSDB_CODE_SUCCESS == code) {
616,174!
5225
    code = tjsonAddIntegerToObject(pJson, jkTargetSlotId, pNode->slotId);
616,174✔
5226
  }
5227
  if (TSDB_CODE_SUCCESS == code) {
616,174!
5228
    code = tjsonAddObject(pJson, jkTargetExpr, nodeToJson, pNode->pExpr);
616,174✔
5229
  }
5230

5231
  return code;
616,174✔
5232
}
5233

5234
static int32_t jsonToTargetNode(const SJson* pJson, void* pObj) {
621,973✔
5235
  STargetNode* pNode = (STargetNode*)pObj;
621,973✔
5236

5237
  int32_t code = tjsonGetSmallIntValue(pJson, jkTargetDataBlockId, &pNode->dataBlockId);
621,973✔
5238
  if (TSDB_CODE_SUCCESS == code) {
621,823!
5239
    code = tjsonGetSmallIntValue(pJson, jkTargetSlotId, &pNode->slotId);
621,823✔
5240
  }
5241
  if (TSDB_CODE_SUCCESS == code) {
621,856✔
5242
    code = jsonToNodeObject(pJson, jkTargetExpr, &pNode->pExpr);
621,849✔
5243
  }
5244

5245
  return code;
622,064✔
5246
}
5247

5248
static const char* jkSlotDescSlotId = "SlotId";
5249
static const char* jkSlotDescDataType = "DataType";
5250
static const char* jkSlotDescReserve = "Reserve";
5251
static const char* jkSlotDescOutput = "Output";
5252
static const char* jkSlotDescName = "Name";
5253

5254
static int32_t slotDescNodeToJson(const void* pObj, SJson* pJson) {
615,527✔
5255
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
615,527✔
5256

5257
  int32_t code = tjsonAddIntegerToObject(pJson, jkSlotDescSlotId, pNode->slotId);
615,527✔
5258
  if (TSDB_CODE_SUCCESS == code) {
615,527!
5259
    code = tjsonAddObject(pJson, jkSlotDescDataType, dataTypeToJson, &pNode->dataType);
615,527✔
5260
  }
5261
  if (TSDB_CODE_SUCCESS == code) {
615,527!
5262
    code = tjsonAddBoolToObject(pJson, jkSlotDescReserve, pNode->reserve);
615,527✔
5263
  }
5264
  if (TSDB_CODE_SUCCESS == code) {
615,527!
5265
    code = tjsonAddBoolToObject(pJson, jkSlotDescOutput, pNode->output);
615,527✔
5266
  }
5267
  if (TSDB_CODE_SUCCESS == code) {
615,527!
5268
    code = tjsonAddStringToObject(pJson, jkSlotDescName, pNode->name);
615,527✔
5269
  }
5270

5271
  return code;
615,527✔
5272
}
5273

5274
static int32_t jsonToSlotDescNode(const SJson* pJson, void* pObj) {
621,214✔
5275
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
621,214✔
5276

5277
  int32_t code = tjsonGetSmallIntValue(pJson, jkSlotDescSlotId, &pNode->slotId);
621,214✔
5278
  if (TSDB_CODE_SUCCESS == code) {
621,014!
5279
    code = tjsonToObject(pJson, jkSlotDescDataType, jsonToDataType, &pNode->dataType);
621,014✔
5280
  }
5281
  if (TSDB_CODE_SUCCESS == code) {
620,533✔
5282
    code = tjsonGetBoolValue(pJson, jkSlotDescReserve, &pNode->reserve);
620,524✔
5283
  }
5284
  if (TSDB_CODE_SUCCESS == code) {
621,052✔
5285
    code = tjsonGetBoolValue(pJson, jkSlotDescOutput, &pNode->output);
621,043✔
5286
  }
5287
  if (TSDB_CODE_SUCCESS == code) {
620,928✔
5288
    code = tjsonGetStringValue(pJson, jkSlotDescName, pNode->name);
620,919✔
5289
  }
5290

5291
  return code;
620,504✔
5292
}
5293

5294
static const char* jkColumnDefColName = "ColName";
5295
static const char* jkColumnDefDataType = "DataType";
5296
static const char* jkColumnDefComments = "Comments";
5297
static const char* jkColumnDefSma = "Sma";
5298
static const char* jkColumnDefOptions = "ColumnOptions";
5299

5300
static int32_t columnDefNodeToJson(const void* pObj, SJson* pJson) {
×
5301
  const SColumnDefNode* pNode = (const SColumnDefNode*)pObj;
×
5302

5303
  int32_t code = tjsonAddStringToObject(pJson, jkColumnDefColName, pNode->colName);
×
5304
  if (TSDB_CODE_SUCCESS == code) {
×
5305
    code = tjsonAddObject(pJson, jkColumnDefDataType, dataTypeToJson, &pNode->dataType);
×
5306
  }
5307
  if (TSDB_CODE_SUCCESS == code) {
×
5308
    code = tjsonAddBoolToObject(pJson, jkColumnDefSma, pNode->sma);
×
5309
  }
5310
  if (TSDB_CODE_SUCCESS == code) {
×
5311
    code = tjsonAddObject(pJson, jkColumnDefOptions, nodeToJson, pNode->pOptions);
×
5312
  }
5313

5314
  return code;
×
5315
}
5316

5317
static int32_t jsonToColumnDefNode(const SJson* pJson, void* pObj) {
×
5318
  SColumnDefNode* pNode = (SColumnDefNode*)pObj;
×
5319

5320
  int32_t code = tjsonGetStringValue(pJson, jkColumnDefColName, pNode->colName);
×
5321
  if (TSDB_CODE_SUCCESS == code) {
×
5322
    code = tjsonToObject(pJson, jkColumnDefDataType, jsonToDataType, &pNode->dataType);
×
5323
  }
5324
  if (TSDB_CODE_SUCCESS == code) {
×
5325
    code = tjsonGetBoolValue(pJson, jkColumnDefSma, &pNode->sma);
×
5326
  }
5327
  if (TSDB_CODE_SUCCESS == code) {
×
5328
    code = jsonToNodeObject(pJson, jkColumnDefOptions, (SNode**)&pNode->pOptions);
×
5329
  }
5330
  return code;
×
5331
}
5332

5333
static const char* jkDownstreamSourceAddr = "Addr";
5334
static const char* jkDownstreamSourceClientId = "ClientId";
5335
static const char* jkDownstreamSourceTaskId = "TaskId";
5336
static const char* jkDownstreamSourceSchedId = "SchedId";
5337
static const char* jkDownstreamSourceExecId = "ExecId";
5338
static const char* jkDownstreamSourceFetchMsgType = "FetchMsgType";
5339

5340
static int32_t downstreamSourceNodeToJson(const void* pObj, SJson* pJson) {
×
5341
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
×
5342

5343
  int32_t code = tjsonAddObject(pJson, jkDownstreamSourceAddr, queryNodeAddrToJson, &pNode->addr);
×
5344
  if (TSDB_CODE_SUCCESS == code) {
×
5345
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceClientId, pNode->clientId);
×
5346
  }
5347
  if (TSDB_CODE_SUCCESS == code) {
×
5348
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceTaskId, pNode->taskId);
×
5349
  }
5350
  if (TSDB_CODE_SUCCESS == code) {
×
5351
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceSchedId, pNode->schedId);
×
5352
  }
5353
  if (TSDB_CODE_SUCCESS == code) {
×
5354
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceExecId, pNode->execId);
×
5355
  }
5356
  if (TSDB_CODE_SUCCESS == code) {
×
5357
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceFetchMsgType, pNode->fetchMsgType);
×
5358
  }
5359

5360
  return code;
×
5361
}
5362

5363
static int32_t jsonToDownstreamSourceNode(const SJson* pJson, void* pObj) {
×
5364
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
×
5365

5366
  int32_t code = tjsonToObject(pJson, jkDownstreamSourceAddr, jsonToQueryNodeAddr, &pNode->addr);
×
5367
  if (TSDB_CODE_SUCCESS == code) {
×
5368
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceClientId, &pNode->clientId);
×
5369
  }
5370
  if (TSDB_CODE_SUCCESS == code) {
×
5371
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceTaskId, &pNode->taskId);
×
5372
  }
5373
  if (TSDB_CODE_SUCCESS == code) {
×
5374
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceSchedId, &pNode->schedId);
×
5375
  }
5376
  if (TSDB_CODE_SUCCESS == code) {
×
5377
    code = tjsonGetIntValue(pJson, jkDownstreamSourceExecId, &pNode->execId);
×
5378
  }
5379
  if (TSDB_CODE_SUCCESS == code) {
×
5380
    code = tjsonGetIntValue(pJson, jkDownstreamSourceFetchMsgType, &pNode->fetchMsgType);
×
5381
  }
5382

5383
  return code;
×
5384
}
5385

5386
static const char* jkWindowOffsetStartOffset = "StartOffset";
5387
static const char* jkWindowOffsetEndOffset = "EndOffset";
5388
static int32_t     windowOffsetNodeToJson(const void* pObj, SJson* pJson) {
×
5389
      const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
×
5390

5391
      int32_t code = tjsonAddObject(pJson, jkWindowOffsetStartOffset, nodeToJson, pNode->pStartOffset);
×
5392
      if (TSDB_CODE_SUCCESS == code) {
×
5393
        code = tjsonAddObject(pJson, jkWindowOffsetEndOffset, nodeToJson, pNode->pEndOffset);
×
5394
  }
5395
      return code;
×
5396
}
5397

5398
static int32_t jsonToWindowOffsetNode(const SJson* pJson, void* pObj) {
×
5399
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
×
5400

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

5408
static const char* jkDatabaseOptionsBuffer = "Buffer";
5409
static const char* jkDatabaseOptionsCacheModel = "CacheModel";
5410
static const char* jkDatabaseOptionsCompressionLevel = "CompressionLevel";
5411
static const char* jkDatabaseOptionsDaysPerFileNode = "DaysPerFileNode";
5412
static const char* jkDatabaseOptionsDaysPerFile = "DaysPerFile";
5413
static const char* jkDatabaseOptionsFsyncPeriod = "FsyncPeriod";
5414
static const char* jkDatabaseOptionsMaxRowsPerBlock = "MaxRowsPerBlock";
5415
static const char* jkDatabaseOptionsMinRowsPerBlock = "MinRowsPerBlock";
5416
static const char* jkDatabaseOptionsKeep = "Keep";
5417
static const char* jkDatabaseOptionsPages = "Pages";
5418
static const char* jkDatabaseOptionsPagesize = "Pagesize";
5419
static const char* jkDatabaseOptionsPrecision = "Precision";
5420
static const char* jkDatabaseOptionsReplica = "Replica";
5421
static const char* jkDatabaseOptionsStrict = "Strict";
5422
static const char* jkDatabaseOptionsWalLevel = "WalLevel";
5423
static const char* jkDatabaseOptionsNumOfVgroups = "NumOfVgroups";
5424
static const char* jkDatabaseOptionsSingleStable = "SingleStable";
5425
static const char* jkDatabaseOptionsRetentions = "Retentions";
5426
static const char* jkDatabaseOptionsSchemaless = "Schemaless";
5427
static const char* jkDatabaseOptionsS3ChunkSize = "S3ChunkSize";
5428
static const char* jkDatabaseOptionsS3KeepLocalNode = "S3KeepLocalNode";
5429
static const char* jkDatabaseOptionsS3KeepLocal = "S3KeepLocal";
5430
static const char* jkDatabaseOptionsS3Compact = "S3Compact";
5431

5432
static int32_t databaseOptionsToJson(const void* pObj, SJson* pJson) {
×
5433
  const SDatabaseOptions* pNode = (const SDatabaseOptions*)pObj;
×
5434

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

5503
  return code;
×
5504
}
5505

5506
static int32_t jsonToDatabaseOptions(const SJson* pJson, void* pObj) {
×
5507
  SDatabaseOptions* pNode = (SDatabaseOptions*)pObj;
×
5508

5509
  int32_t code = tjsonGetIntValue(pJson, jkDatabaseOptionsBuffer, &pNode->buffer);
×
5510
  if (TSDB_CODE_SUCCESS == code) {
×
5511
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCacheModel, &pNode->cacheModel);
×
5512
  }
5513
  if (TSDB_CODE_SUCCESS == code) {
×
5514
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCompressionLevel, &pNode->compressionLevel);
×
5515
  }
5516
  if (TSDB_CODE_SUCCESS == code) {
×
5517
    code = jsonToNodeObject(pJson, jkDatabaseOptionsDaysPerFileNode, (SNode**)&pNode->pDaysPerFile);
×
5518
  }
5519
  if (TSDB_CODE_SUCCESS == code) {
×
5520
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsDaysPerFile, &pNode->daysPerFile);
×
5521
  }
5522
  if (TSDB_CODE_SUCCESS == code) {
×
5523
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsFsyncPeriod, &pNode->fsyncPeriod);
×
5524
  }
5525
  if (TSDB_CODE_SUCCESS == code) {
×
5526
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMaxRowsPerBlock, &pNode->maxRowsPerBlock);
×
5527
  }
5528
  if (TSDB_CODE_SUCCESS == code) {
×
5529
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMinRowsPerBlock, &pNode->minRowsPerBlock);
×
5530
  }
5531
  if (TSDB_CODE_SUCCESS == code) {
×
5532
    code = jsonToNodeList(pJson, jkDatabaseOptionsKeep, &pNode->pKeep);
×
5533
  }
5534
  if (TSDB_CODE_SUCCESS == code) {
×
5535
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPages, &pNode->pages);
×
5536
  }
5537
  if (TSDB_CODE_SUCCESS == code) {
×
5538
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPagesize, &pNode->pagesize);
×
5539
  }
5540
  if (TSDB_CODE_SUCCESS == code) {
×
5541
    code = tjsonGetStringValue(pJson, jkDatabaseOptionsPrecision, pNode->precisionStr);
×
5542
  }
5543
  if (TSDB_CODE_SUCCESS == code) {
×
5544
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsReplica, &pNode->replica);
×
5545
  }
5546
  if (TSDB_CODE_SUCCESS == code) {
×
5547
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsStrict, &pNode->strict);
×
5548
  }
5549
  if (TSDB_CODE_SUCCESS == code) {
×
5550
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsWalLevel, &pNode->walLevel);
×
5551
  }
5552
  if (TSDB_CODE_SUCCESS == code) {
×
5553
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsNumOfVgroups, &pNode->numOfVgroups);
×
5554
  }
5555
  if (TSDB_CODE_SUCCESS == code) {
×
5556
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSingleStable, &pNode->singleStable);
×
5557
  }
5558
  if (TSDB_CODE_SUCCESS == code) {
×
5559
    code = jsonToNodeList(pJson, jkDatabaseOptionsRetentions, &pNode->pRetentions);
×
5560
  }
5561
  if (TSDB_CODE_SUCCESS == code) {
×
5562
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSchemaless, &pNode->schemaless);
×
5563
  }
5564
  if (TSDB_CODE_SUCCESS == code) {
×
5565
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3ChunkSize, &pNode->s3ChunkSize);
×
5566
  }
5567
  if (TSDB_CODE_SUCCESS == code) {
×
5568
    code = jsonToNodeObject(pJson, jkDatabaseOptionsS3KeepLocalNode, (SNode**)&pNode->s3KeepLocalStr);
×
5569
  }
5570
  if (TSDB_CODE_SUCCESS == code) {
×
5571
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3KeepLocal, &pNode->s3KeepLocal);
×
5572
  }
5573
  if (TSDB_CODE_SUCCESS == code) {
×
5574
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsS3Compact, &pNode->s3Compact);
×
5575
  }
5576

5577
  return code;
×
5578
}
5579

5580
static const char* jkTableOptionsComment = "Comment";
5581
static const char* jkTableOptionsMaxDelay = "MaxDelay";
5582
static const char* jkTableOptionsWatermark = "Watermark";
5583
static const char* jkTableOptionsDeleteMark = "DeleteMark";
5584
static const char* jkTableOptionsRollupFuncs = "RollupFuncs";
5585
static const char* jkTableOptionsTtl = "Ttl";
5586
static const char* jkTableOptionsSma = "Sma";
5587

5588
static int32_t tableOptionsToJson(const void* pObj, SJson* pJson) {
×
5589
  const STableOptions* pNode = (const STableOptions*)pObj;
×
5590

5591
  int32_t code = tjsonAddStringToObject(pJson, jkTableOptionsComment, pNode->comment);
×
5592
  if (TSDB_CODE_SUCCESS == code) {
×
5593
    code = nodeListToJson(pJson, jkTableOptionsMaxDelay, pNode->pMaxDelay);
×
5594
  }
5595
  if (TSDB_CODE_SUCCESS == code) {
×
5596
    code = nodeListToJson(pJson, jkTableOptionsWatermark, pNode->pWatermark);
×
5597
  }
5598
  if (TSDB_CODE_SUCCESS == code) {
×
5599
    code = nodeListToJson(pJson, jkTableOptionsDeleteMark, pNode->pDeleteMark);
×
5600
  }
5601
  if (TSDB_CODE_SUCCESS == code) {
×
5602
    code = nodeListToJson(pJson, jkTableOptionsRollupFuncs, pNode->pRollupFuncs);
×
5603
  }
5604
  if (TSDB_CODE_SUCCESS == code) {
×
5605
    code = tjsonAddIntegerToObject(pJson, jkTableOptionsTtl, pNode->ttl);
×
5606
  }
5607
  if (TSDB_CODE_SUCCESS == code) {
×
5608
    code = nodeListToJson(pJson, jkTableOptionsSma, pNode->pSma);
×
5609
  }
5610

5611
  return code;
×
5612
}
5613

5614
static int32_t jsonToTableOptions(const SJson* pJson, void* pObj) {
×
5615
  STableOptions* pNode = (STableOptions*)pObj;
×
5616

5617
  int32_t code = tjsonGetStringValue(pJson, jkTableOptionsComment, pNode->comment);
×
5618
  if (TSDB_CODE_SUCCESS == code) {
×
5619
    code = jsonToNodeList(pJson, jkTableOptionsMaxDelay, &pNode->pMaxDelay);
×
5620
  }
5621
  if (TSDB_CODE_SUCCESS == code) {
×
5622
    code = jsonToNodeList(pJson, jkTableOptionsWatermark, &pNode->pWatermark);
×
5623
  }
5624
  if (TSDB_CODE_SUCCESS == code) {
×
5625
    code = jsonToNodeList(pJson, jkTableOptionsDeleteMark, &pNode->pDeleteMark);
×
5626
  }
5627
  if (TSDB_CODE_SUCCESS == code) {
×
5628
    code = jsonToNodeList(pJson, jkTableOptionsRollupFuncs, &pNode->pRollupFuncs);
×
5629
  }
5630
  if (TSDB_CODE_SUCCESS == code) {
×
5631
    code = tjsonGetIntValue(pJson, jkTableOptionsTtl, &pNode->ttl);
×
5632
  }
5633
  if (TSDB_CODE_SUCCESS == code) {
×
5634
    code = jsonToNodeList(pJson, jkTableOptionsSma, &pNode->pSma);
×
5635
  }
5636

5637
  return code;
×
5638
}
5639

5640
static const char* jkColumnOptionsEncode = "encode";
5641
static const char* jkColumnOptionsCompress = "compress";
5642
static const char* jkColumnOptionsLevel = "level";
5643
static int32_t     columnOptionsToJson(const void* pObj, SJson* pJson) {
×
5644
      const SColumnOptions* pNode = (const SColumnOptions*)pObj;
×
5645
      int32_t               code = tjsonAddStringToObject(pJson, jkColumnOptionsEncode, pNode->encode);
×
5646
      code = tjsonAddStringToObject(pJson, jkColumnOptionsCompress, pNode->compress);
×
5647
      code = tjsonAddStringToObject(pJson, jkColumnOptionsLevel, pNode->compressLevel);
×
5648
      return code;
×
5649
}
5650

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

5654
  int32_t code = tjsonGetStringValue(pJson, jkColumnOptionsEncode, pNode->encode);
×
5655
  code = tjsonGetStringValue(pJson, jkColumnOptionsCompress, pNode->compress);
×
5656
  code = tjsonGetStringValue(pJson, jkColumnOptionsLevel, pNode->compressLevel);
×
5657
  return code;
×
5658
}
5659

5660
static const char* jkIndexOptionsFuncs = "Funcs";
5661
static const char* jkIndexOptionsInterval = "Interval";
5662
static const char* jkIndexOptionsOffset = "Offset";
5663
static const char* jkIndexOptionsSliding = "Sliding";
5664
static const char* jkIndexOptionsStreamOptions = "StreamOptions";
5665

5666
static int32_t indexOptionsToJson(const void* pObj, SJson* pJson) {
×
5667
  const SIndexOptions* pNode = (const SIndexOptions*)pObj;
×
5668

5669
  int32_t code = nodeListToJson(pJson, jkIndexOptionsFuncs, pNode->pFuncs);
×
5670
  if (TSDB_CODE_SUCCESS == code) {
×
5671
    code = tjsonAddObject(pJson, jkIndexOptionsInterval, nodeToJson, pNode->pInterval);
×
5672
  }
5673
  if (TSDB_CODE_SUCCESS == code) {
×
5674
    code = tjsonAddObject(pJson, jkIndexOptionsOffset, nodeToJson, pNode->pOffset);
×
5675
  }
5676
  if (TSDB_CODE_SUCCESS == code) {
×
5677
    code = tjsonAddObject(pJson, jkIndexOptionsSliding, nodeToJson, pNode->pSliding);
×
5678
  }
5679
  if (TSDB_CODE_SUCCESS == code) {
×
5680
    code = tjsonAddObject(pJson, jkIndexOptionsStreamOptions, nodeToJson, pNode->pStreamOptions);
×
5681
  }
5682

5683
  return code;
×
5684
}
5685

5686
static int32_t jsonToIndexOptions(const SJson* pJson, void* pObj) {
×
5687
  SIndexOptions* pNode = (SIndexOptions*)pObj;
×
5688

5689
  int32_t code = jsonToNodeList(pJson, jkIndexOptionsFuncs, &pNode->pFuncs);
×
5690
  if (TSDB_CODE_SUCCESS == code) {
×
5691
    code = jsonToNodeObject(pJson, jkIndexOptionsInterval, &pNode->pInterval);
×
5692
  }
5693
  if (TSDB_CODE_SUCCESS == code) {
×
5694
    code = jsonToNodeObject(pJson, jkIndexOptionsOffset, &pNode->pOffset);
×
5695
  }
5696
  if (TSDB_CODE_SUCCESS == code) {
×
5697
    code = jsonToNodeObject(pJson, jkIndexOptionsSliding, &pNode->pSliding);
×
5698
  }
5699
  if (TSDB_CODE_SUCCESS == code) {
×
5700
    code = jsonToNodeObject(pJson, jkIndexOptionsStreamOptions, &pNode->pStreamOptions);
×
5701
  }
5702

5703
  return code;
×
5704
}
5705

5706
static const char* jkExplainOptionsVerbose = "Verbose";
5707
static const char* jkExplainOptionsRatio = "Ratio";
5708

5709
static int32_t explainOptionsToJson(const void* pObj, SJson* pJson) {
×
5710
  const SExplainOptions* pNode = (const SExplainOptions*)pObj;
×
5711

5712
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainOptionsVerbose, pNode->verbose);
×
5713
  if (TSDB_CODE_SUCCESS == code) {
×
5714
    code = tjsonAddDoubleToObject(pJson, jkExplainOptionsRatio, pNode->ratio);
×
5715
  }
5716

5717
  return code;
×
5718
}
5719

5720
static int32_t jsonToExplainOptions(const SJson* pJson, void* pObj) {
×
5721
  SExplainOptions* pNode = (SExplainOptions*)pObj;
×
5722

5723
  int32_t code = tjsonGetBoolValue(pJson, jkExplainOptionsVerbose, &pNode->verbose);
×
5724
  if (TSDB_CODE_SUCCESS == code) {
×
5725
    code = tjsonGetDoubleValue(pJson, jkExplainOptionsRatio, &pNode->ratio);
×
5726
  }
5727

5728
  return code;
×
5729
}
5730

5731
static const char* jkStreamOptionsTriggerType = "TriggerType";
5732
static const char* jkStreamOptionsDelay = "Delay";
5733
static const char* jkStreamOptionsWatermark = "Watermark";
5734
static const char* jkStreamOptionsDeleteMark = "DeleteMark";
5735
static const char* jkStreamOptionsFillHistory = "FillHistory";
5736
static const char* jkStreamOptionsIgnoreExpired = "IgnoreExpired";
5737

5738
static int32_t streamOptionsToJson(const void* pObj, SJson* pJson) {
×
5739
  const SStreamOptions* pNode = (const SStreamOptions*)pObj;
×
5740

5741
  int32_t code = tjsonAddIntegerToObject(pJson, jkStreamOptionsTriggerType, pNode->triggerType);
×
5742
  if (TSDB_CODE_SUCCESS == code) {
×
5743
    code = tjsonAddObject(pJson, jkStreamOptionsDelay, nodeToJson, pNode->pDelay);
×
5744
  }
5745
  if (TSDB_CODE_SUCCESS == code) {
×
5746
    code = tjsonAddObject(pJson, jkStreamOptionsWatermark, nodeToJson, pNode->pWatermark);
×
5747
  }
5748
  if (TSDB_CODE_SUCCESS == code) {
×
5749
    code = tjsonAddObject(pJson, jkStreamOptionsDeleteMark, nodeToJson, pNode->pDeleteMark);
×
5750
  }
5751
  if (TSDB_CODE_SUCCESS == code) {
×
5752
    code = tjsonAddIntegerToObject(pJson, jkStreamOptionsFillHistory, pNode->fillHistory);
×
5753
  }
5754
  if (TSDB_CODE_SUCCESS == code) {
×
5755
    code = tjsonAddIntegerToObject(pJson, jkStreamOptionsIgnoreExpired, pNode->ignoreExpired);
×
5756
  }
5757

5758
  return code;
×
5759
}
5760

5761
static int32_t jsonToStreamOptions(const SJson* pJson, void* pObj) {
×
5762
  SStreamOptions* pNode = (SStreamOptions*)pObj;
×
5763

5764
  int32_t code = tjsonGetTinyIntValue(pJson, jkStreamOptionsTriggerType, &pNode->triggerType);
×
5765
  if (TSDB_CODE_SUCCESS == code) {
×
5766
    code = jsonToNodeObject(pJson, jkStreamOptionsDelay, &pNode->pDelay);
×
5767
  }
5768
  if (TSDB_CODE_SUCCESS == code) {
×
5769
    code = jsonToNodeObject(pJson, jkStreamOptionsWatermark, &pNode->pWatermark);
×
5770
  }
5771
  if (TSDB_CODE_SUCCESS == code) {
×
5772
    code = jsonToNodeObject(pJson, jkStreamOptionsDeleteMark, &pNode->pDeleteMark);
×
5773
  }
5774
  if (TSDB_CODE_SUCCESS == code) {
×
5775
    code = tjsonGetTinyIntValue(pJson, jkStreamOptionsFillHistory, &pNode->fillHistory);
×
5776
  }
5777
  if (TSDB_CODE_SUCCESS == code) {
×
5778
    code = tjsonGetTinyIntValue(pJson, jkStreamOptionsIgnoreExpired, &pNode->ignoreExpired);
×
5779
  }
5780

5781
  return code;
×
5782
}
5783

5784
static const char* jkWhenThenWhen = "When";
5785
static const char* jkWhenThenThen = "Then";
5786

5787
static int32_t whenThenNodeToJson(const void* pObj, SJson* pJson) {
85✔
5788
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
85✔
5789

5790
  int32_t code = exprNodeToJson(pObj, pJson);
85✔
5791
  if (TSDB_CODE_SUCCESS == code) {
85!
5792
    code = tjsonAddObject(pJson, jkWhenThenWhen, nodeToJson, pNode->pWhen);
85✔
5793
  }
5794
  if (TSDB_CODE_SUCCESS == code) {
85!
5795
    code = tjsonAddObject(pJson, jkWhenThenThen, nodeToJson, pNode->pThen);
85✔
5796
  }
5797

5798
  return code;
85✔
5799
}
5800

5801
static int32_t jsonToWhenThenNode(const SJson* pJson, void* pObj) {
95✔
5802
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
95✔
5803

5804
  int32_t code = jsonToExprNode(pJson, pObj);
95✔
5805
  if (TSDB_CODE_SUCCESS == code) {
95!
5806
    code = jsonToNodeObject(pJson, jkWhenThenWhen, &pNode->pWhen);
95✔
5807
  }
5808
  if (TSDB_CODE_SUCCESS == code) {
95!
5809
    code = jsonToNodeObject(pJson, jkWhenThenThen, &pNode->pThen);
95✔
5810
  }
5811

5812
  return code;
95✔
5813
}
5814

5815
static const char* jkCaseWhenCase = "Case";
5816
static const char* jkCaseWhenWhenThenList = "WhenThenList";
5817
static const char* jkCaseWhenElse = "Else";
5818

5819
static int32_t caseWhenNodeToJson(const void* pObj, SJson* pJson) {
85✔
5820
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
85✔
5821

5822
  int32_t code = exprNodeToJson(pObj, pJson);
85✔
5823
  if (TSDB_CODE_SUCCESS == code) {
85!
5824
    code = tjsonAddObject(pJson, jkCaseWhenCase, nodeToJson, pNode->pCase);
85✔
5825
  }
5826
  if (TSDB_CODE_SUCCESS == code) {
85!
5827
    code = nodeListToJson(pJson, jkCaseWhenWhenThenList, pNode->pWhenThenList);
85✔
5828
  }
5829
  if (TSDB_CODE_SUCCESS == code) {
85!
5830
    code = tjsonAddObject(pJson, jkCaseWhenElse, nodeToJson, pNode->pElse);
85✔
5831
  }
5832

5833
  return code;
85✔
5834
}
5835

5836
static int32_t jsonToCaseWhenNode(const SJson* pJson, void* pObj) {
95✔
5837
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
95✔
5838

5839
  int32_t code = jsonToExprNode(pJson, pObj);
95✔
5840
  if (TSDB_CODE_SUCCESS == code) {
95!
5841
    code = jsonToNodeObject(pJson, jkCaseWhenCase, &pNode->pCase);
95✔
5842
  }
5843
  if (TSDB_CODE_SUCCESS == code) {
95!
5844
    code = jsonToNodeList(pJson, jkCaseWhenWhenThenList, &pNode->pWhenThenList);
95✔
5845
  }
5846
  if (TSDB_CODE_SUCCESS == code) {
95!
5847
    code = jsonToNodeObject(pJson, jkCaseWhenElse, &pNode->pElse);
95✔
5848
  }
5849

5850
  return code;
95✔
5851
}
5852

5853
static const char* jkDataBlockDescDataBlockId = "DataBlockId";
5854
static const char* jkDataBlockDescSlots = "Slots";
5855
static const char* jkDataBlockTotalRowSize = "TotalRowSize";
5856
static const char* jkDataBlockOutputRowSize = "OutputRowSize";
5857
static const char* jkDataBlockPrecision = "Precision";
5858

5859
static int32_t dataBlockDescNodeToJson(const void* pObj, SJson* pJson) {
28,129✔
5860
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
28,129✔
5861

5862
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataBlockDescDataBlockId, pNode->dataBlockId);
28,129✔
5863
  if (TSDB_CODE_SUCCESS == code) {
28,129!
5864
    code = tjsonAddIntegerToObject(pJson, jkDataBlockTotalRowSize, pNode->totalRowSize);
28,129✔
5865
  }
5866
  if (TSDB_CODE_SUCCESS == code) {
28,129!
5867
    code = tjsonAddIntegerToObject(pJson, jkDataBlockOutputRowSize, pNode->outputRowSize);
28,129✔
5868
  }
5869
  if (TSDB_CODE_SUCCESS == code) {
28,129!
5870
    code = nodeListToJson(pJson, jkDataBlockDescSlots, pNode->pSlots);
28,129✔
5871
  }
5872
  if (TSDB_CODE_SUCCESS == code) {
28,129!
5873
    code = tjsonAddIntegerToObject(pJson, jkDataBlockPrecision, pNode->precision);
28,129✔
5874
  }
5875

5876
  return code;
28,129✔
5877
}
5878

5879
static int32_t jsonToDataBlockDescNode(const SJson* pJson, void* pObj) {
28,016✔
5880
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
28,016✔
5881

5882
  int32_t code = tjsonGetSmallIntValue(pJson, jkDataBlockDescDataBlockId, &pNode->dataBlockId);
28,016✔
5883
  if (TSDB_CODE_SUCCESS == code) {
28,018!
5884
    code = tjsonGetIntValue(pJson, jkDataBlockTotalRowSize, &pNode->totalRowSize);
28,018✔
5885
  }
5886
  if (TSDB_CODE_SUCCESS == code) {
28,015!
5887
    code = tjsonGetIntValue(pJson, jkDataBlockOutputRowSize, &pNode->outputRowSize);
28,015✔
5888
  }
5889
  if (TSDB_CODE_SUCCESS == code) {
28,020!
5890
    code = jsonToNodeList(pJson, jkDataBlockDescSlots, &pNode->pSlots);
28,020✔
5891
  }
5892
  if (TSDB_CODE_SUCCESS == code) {
28,022!
5893
    code = tjsonGetUTinyIntValue(pJson, jkDataBlockPrecision, &pNode->precision);
28,022✔
5894
  }
5895

5896
  return code;
28,018✔
5897
}
5898

5899
static const char* jkSetOperatorOpType = "OpType";
5900
static const char* jkSetOperatorProjections = "Projections";
5901
static const char* jkSetOperatorLeft = "Left";
5902
static const char* jkSetOperatorRight = "Right";
5903
static const char* jkSetOperatorOrderByList = "OrderByList";
5904
static const char* jkSetOperatorLimit = "Limit";
5905

5906
static int32_t setOperatorToJson(const void* pObj, SJson* pJson) {
×
5907
  const SSetOperator* pNode = (const SSetOperator*)pObj;
×
5908

5909
  int32_t code = tjsonAddIntegerToObject(pJson, jkSetOperatorOpType, pNode->opType);
×
5910
  if (TSDB_CODE_SUCCESS == code) {
×
5911
    code = nodeListToJson(pJson, jkSetOperatorProjections, pNode->pProjectionList);
×
5912
  }
5913
  if (TSDB_CODE_SUCCESS == code) {
×
5914
    code = tjsonAddObject(pJson, jkSetOperatorLeft, nodeToJson, pNode->pLeft);
×
5915
  }
5916
  if (TSDB_CODE_SUCCESS == code) {
×
5917
    code = tjsonAddObject(pJson, jkSetOperatorRight, nodeToJson, pNode->pRight);
×
5918
  }
5919
  if (TSDB_CODE_SUCCESS == code) {
×
5920
    code = nodeListToJson(pJson, jkSetOperatorOrderByList, pNode->pOrderByList);
×
5921
  }
5922
  if (TSDB_CODE_SUCCESS == code) {
×
5923
    code = tjsonAddObject(pJson, jkSetOperatorLimit, nodeToJson, pNode->pLimit);
×
5924
  }
5925

5926
  return code;
×
5927
}
5928

5929
static int32_t jsonToSetOperator(const SJson* pJson, void* pObj) {
×
5930
  SSetOperator* pNode = (SSetOperator*)pObj;
×
5931

5932
  int32_t code = TSDB_CODE_SUCCESS;
×
5933
  tjsonGetNumberValue(pJson, jkSetOperatorOpType, pNode->opType, code);
×
5934
  if (TSDB_CODE_SUCCESS == code) {
×
5935
    code = jsonToNodeList(pJson, jkSetOperatorProjections, &pNode->pProjectionList);
×
5936
  }
5937
  if (TSDB_CODE_SUCCESS == code) {
×
5938
    code = jsonToNodeObject(pJson, jkSetOperatorLeft, &pNode->pLeft);
×
5939
  }
5940
  if (TSDB_CODE_SUCCESS == code) {
×
5941
    code = jsonToNodeObject(pJson, jkSetOperatorRight, &pNode->pRight);
×
5942
  }
5943
  if (TSDB_CODE_SUCCESS == code) {
×
5944
    code = jsonToNodeList(pJson, jkSetOperatorOrderByList, &pNode->pOrderByList);
×
5945
  }
5946
  if (TSDB_CODE_SUCCESS == code) {
×
5947
    code = jsonToNodeObject(pJson, jkSetOperatorLimit, &pNode->pLimit);
×
5948
  }
5949

5950
  return code;
×
5951
}
5952

5953
static const char* jkSelectStmtDistinct = "Distinct";
5954
static const char* jkSelectStmtProjections = "Projections";
5955
static const char* jkSelectStmtFrom = "From";
5956
static const char* jkSelectStmtWhere = "Where";
5957
static const char* jkSelectStmtPartitionBy = "PartitionBy";
5958
static const char* jkSelectStmtTags = "Tags";
5959
static const char* jkSelectStmtSubtable = "Subtable";
5960
static const char* jkSelectStmtWindow = "Window";
5961
static const char* jkSelectStmtGroupBy = "GroupBy";
5962
static const char* jkSelectStmtHaving = "Having";
5963
static const char* jkSelectStmtOrderBy = "OrderBy";
5964
static const char* jkSelectStmtLimit = "Limit";
5965
static const char* jkSelectStmtSlimit = "Slimit";
5966
static const char* jkSelectStmtStmtName = "StmtName";
5967
static const char* jkSelectStmtHasAggFuncs = "HasAggFuncs";
5968
static const char* jkSelectStmtInterpFuncs = "HasInterpFuncs";
5969
static const char* jkSelectStmtInterpFill = "InterpFill";
5970
static const char* jkSelectStmtInterpEvery = "InterpEvery";
5971
static const char* jkSelectStmtTwaOrElapsedFuncs = "HasTwaOrElapsedFuncs";
5972

5973
static int32_t selectStmtToJson(const void* pObj, SJson* pJson) {
1,456✔
5974
  const SSelectStmt* pNode = (const SSelectStmt*)pObj;
1,456✔
5975

5976
  int32_t code = tjsonAddBoolToObject(pJson, jkSelectStmtDistinct, pNode->isDistinct);
1,456✔
5977
  if (TSDB_CODE_SUCCESS == code) {
1,456!
5978
    code = nodeListToJson(pJson, jkSelectStmtProjections, pNode->pProjectionList);
1,456✔
5979
  }
5980
  if (TSDB_CODE_SUCCESS == code) {
1,456!
5981
    code = tjsonAddObject(pJson, jkSelectStmtFrom, nodeToJson, pNode->pFromTable);
1,456✔
5982
  }
5983
  if (TSDB_CODE_SUCCESS == code) {
1,456!
5984
    code = tjsonAddObject(pJson, jkSelectStmtWhere, nodeToJson, pNode->pWhere);
1,456✔
5985
  }
5986
  if (TSDB_CODE_SUCCESS == code) {
1,456!
5987
    code = nodeListToJson(pJson, jkSelectStmtPartitionBy, pNode->pPartitionByList);
1,456✔
5988
  }
5989
  if (TSDB_CODE_SUCCESS == code) {
1,456!
5990
    code = nodeListToJson(pJson, jkSelectStmtTags, pNode->pTags);
1,456✔
5991
  }
5992
  if (TSDB_CODE_SUCCESS == code) {
1,456!
5993
    code = tjsonAddObject(pJson, jkSelectStmtSubtable, nodeToJson, pNode->pSubtable);
1,456✔
5994
  }
5995
  if (TSDB_CODE_SUCCESS == code) {
1,456!
5996
    code = tjsonAddObject(pJson, jkSelectStmtWindow, nodeToJson, pNode->pWindow);
1,456✔
5997
  }
5998
  if (TSDB_CODE_SUCCESS == code) {
1,456!
5999
    code = nodeListToJson(pJson, jkSelectStmtGroupBy, pNode->pGroupByList);
1,456✔
6000
  }
6001
  if (TSDB_CODE_SUCCESS == code) {
1,456!
6002
    code = tjsonAddObject(pJson, jkSelectStmtHaving, nodeToJson, pNode->pHaving);
1,456✔
6003
  }
6004
  if (TSDB_CODE_SUCCESS == code) {
1,456!
6005
    code = nodeListToJson(pJson, jkSelectStmtOrderBy, pNode->pOrderByList);
1,456✔
6006
  }
6007
  if (TSDB_CODE_SUCCESS == code) {
1,456!
6008
    code = tjsonAddObject(pJson, jkSelectStmtLimit, nodeToJson, pNode->pLimit);
1,456✔
6009
  }
6010
  if (TSDB_CODE_SUCCESS == code) {
1,456!
6011
    code = tjsonAddObject(pJson, jkSelectStmtSlimit, nodeToJson, pNode->pSlimit);
1,456✔
6012
  }
6013
  if (TSDB_CODE_SUCCESS == code) {
1,456!
6014
    code = tjsonAddStringToObject(pJson, jkSelectStmtStmtName, pNode->stmtName);
1,456✔
6015
  }
6016
  if (TSDB_CODE_SUCCESS == code) {
1,456!
6017
    code = tjsonAddBoolToObject(pJson, jkSelectStmtHasAggFuncs, pNode->hasAggFuncs);
1,456✔
6018
  }
6019
  if (TSDB_CODE_SUCCESS == code) {
1,456!
6020
    code = tjsonAddBoolToObject(pJson, jkSelectStmtInterpFuncs, pNode->hasInterpFunc);
1,456✔
6021
  }
6022
  if (TSDB_CODE_SUCCESS == code) {
1,456!
6023
    code = tjsonAddBoolToObject(pJson, jkSelectStmtTwaOrElapsedFuncs, pNode->hasTwaOrElapsedFunc);
1,456✔
6024
  }
6025
  if (TSDB_CODE_SUCCESS == code) {
1,456!
6026
    code = tjsonAddObject(pJson, jkSelectStmtInterpFill, nodeToJson, pNode->pFill);
1,456✔
6027
  }
6028
  if (TSDB_CODE_SUCCESS == code) {
1,456!
6029
    code = tjsonAddObject(pJson, jkSelectStmtInterpEvery, nodeToJson, pNode->pEvery);
1,456✔
6030
  }
6031

6032
  return code;
1,456✔
6033
}
6034

6035
static int32_t jsonToSelectStmt(const SJson* pJson, void* pObj) {
10,959✔
6036
  SSelectStmt* pNode = (SSelectStmt*)pObj;
10,959✔
6037

6038
  int32_t code = tjsonGetBoolValue(pJson, jkSelectStmtDistinct, &pNode->isDistinct);
10,959✔
6039
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6040
    code = jsonToNodeList(pJson, jkSelectStmtProjections, &pNode->pProjectionList);
10,959✔
6041
  }
6042
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6043
    code = jsonToNodeObject(pJson, jkSelectStmtFrom, &pNode->pFromTable);
10,959✔
6044
  }
6045
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6046
    code = jsonToNodeObject(pJson, jkSelectStmtWhere, &pNode->pWhere);
10,959✔
6047
  }
6048
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6049
    code = jsonToNodeList(pJson, jkSelectStmtPartitionBy, &pNode->pPartitionByList);
10,959✔
6050
  }
6051
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6052
    code = jsonToNodeList(pJson, jkSelectStmtTags, &pNode->pTags);
10,959✔
6053
  }
6054
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6055
    code = jsonToNodeObject(pJson, jkSelectStmtSubtable, &pNode->pSubtable);
10,959✔
6056
  }
6057
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6058
    code = jsonToNodeObject(pJson, jkSelectStmtWindow, &pNode->pWindow);
10,959✔
6059
  }
6060
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6061
    code = jsonToNodeList(pJson, jkSelectStmtGroupBy, &pNode->pGroupByList);
10,959✔
6062
  }
6063
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6064
    code = jsonToNodeObject(pJson, jkSelectStmtHaving, &pNode->pHaving);
10,959✔
6065
  }
6066
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6067
    code = jsonToNodeList(pJson, jkSelectStmtOrderBy, &pNode->pOrderByList);
10,959✔
6068
  }
6069
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6070
    code = jsonToNodeObject(pJson, jkSelectStmtLimit, (SNode**)&pNode->pLimit);
10,959✔
6071
  }
6072
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6073
    code = jsonToNodeObject(pJson, jkSelectStmtSlimit, (SNode**)&pNode->pSlimit);
10,959✔
6074
  }
6075
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6076
    code = tjsonGetStringValue(pJson, jkSelectStmtStmtName, pNode->stmtName);
10,959✔
6077
  }
6078
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6079
    code = tjsonGetBoolValue(pJson, jkSelectStmtHasAggFuncs, &pNode->hasAggFuncs);
10,959✔
6080
  }
6081
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6082
    code = tjsonGetBoolValue(pJson, jkSelectStmtInterpFuncs, &pNode->hasInterpFunc);
10,959✔
6083
  }
6084
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6085
    code = tjsonGetBoolValue(pJson, jkSelectStmtTwaOrElapsedFuncs, &pNode->hasTwaOrElapsedFunc);
10,959✔
6086
  }
6087
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6088
    code = jsonToNodeObject(pJson, jkSelectStmtInterpFill, &pNode->pFill);
10,959✔
6089
  }
6090
  if (TSDB_CODE_SUCCESS == code) {
10,959!
6091
    code = jsonToNodeObject(pJson, jkSelectStmtInterpEvery, &pNode->pEvery);
10,959✔
6092
  }
6093

6094
  return code;
10,959✔
6095
}
6096

6097
static const char* jkVnodeModifyOpStmtSqlNodeType = "SqlNodeType";
6098
static const char* jkVnodeModifyOpStmtTotalRowsNum = "TotalRowsNum";
6099
static const char* jkVnodeModifyOpStmtTotalTbNum = "TotalTbNum";
6100

6101
static int32_t vnodeModifyStmtToJson(const void* pObj, SJson* pJson) {
×
6102
  const SVnodeModifyOpStmt* pNode = (const SVnodeModifyOpStmt*)pObj;
×
6103

6104
  int32_t code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType);
×
6105
  if (TSDB_CODE_SUCCESS == code) {
×
6106
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalRowsNum, pNode->totalRowsNum);
×
6107
  }
6108
  if (TSDB_CODE_SUCCESS == code) {
×
6109
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalTbNum, pNode->totalTbNum);
×
6110
  }
6111

6112
  return code;
×
6113
}
6114

6115
static int32_t jsonToVnodeModifyStmt(const SJson* pJson, void* pObj) {
×
6116
  SVnodeModifyOpStmt* pNode = (SVnodeModifyOpStmt*)pObj;
×
6117

6118
  int32_t code = TSDB_CODE_SUCCESS;
×
6119
  tjsonGetNumberValue(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType, code);
×
6120
  if (TSDB_CODE_SUCCESS == code) {
×
6121
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalRowsNum, &pNode->totalRowsNum);
×
6122
  }
6123
  if (TSDB_CODE_SUCCESS == code) {
×
6124
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalTbNum, &pNode->totalTbNum);
×
6125
  }
6126

6127
  return code;
×
6128
}
6129

6130
static const char* jkCreateDatabaseStmtDbName = "DbName";
6131
static const char* jkCreateDatabaseStmtIgnoreExists = "IgnoreExists";
6132
static const char* jkCreateDatabaseStmtOptions = "Options";
6133

6134
static int32_t createDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6135
  const SCreateDatabaseStmt* pNode = (const SCreateDatabaseStmt*)pObj;
×
6136

6137
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
×
6138
  if (TSDB_CODE_SUCCESS == code) {
×
6139
    code = tjsonAddBoolToObject(pJson, jkCreateDatabaseStmtIgnoreExists, pNode->ignoreExists);
×
6140
  }
6141
  if (TSDB_CODE_SUCCESS == code) {
×
6142
    code = tjsonAddObject(pJson, jkCreateDatabaseStmtOptions, nodeToJson, pNode->pOptions);
×
6143
  }
6144

6145
  return code;
×
6146
}
6147

6148
static int32_t jsonToCreateDatabaseStmt(const SJson* pJson, void* pObj) {
×
6149
  SCreateDatabaseStmt* pNode = (SCreateDatabaseStmt*)pObj;
×
6150

6151
  int32_t code = tjsonGetStringValue(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
×
6152
  if (TSDB_CODE_SUCCESS == code) {
×
6153
    code = tjsonGetBoolValue(pJson, jkCreateDatabaseStmtIgnoreExists, &pNode->ignoreExists);
×
6154
  }
6155
  if (TSDB_CODE_SUCCESS == code) {
×
6156
    code = jsonToNodeObject(pJson, jkCreateDatabaseStmtOptions, (SNode**)&pNode->pOptions);
×
6157
  }
6158

6159
  return code;
×
6160
}
6161

6162
static const char* jkAlterDatabaseStmtDbName = "DbName";
6163
static const char* jkAlterDatabaseStmtOptions = "Options";
6164

6165
static int32_t alterDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6166
  const SAlterDatabaseStmt* pNode = (const SAlterDatabaseStmt*)pObj;
×
6167

6168
  int32_t code = tjsonAddStringToObject(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
×
6169
  if (TSDB_CODE_SUCCESS == code) {
×
6170
    code = tjsonAddObject(pJson, jkAlterDatabaseStmtOptions, nodeToJson, pNode->pOptions);
×
6171
  }
6172

6173
  return code;
×
6174
}
6175

6176
static int32_t jsonToAlterDatabaseStmt(const SJson* pJson, void* pObj) {
×
6177
  SAlterDatabaseStmt* pNode = (SAlterDatabaseStmt*)pObj;
×
6178

6179
  int32_t code = tjsonGetStringValue(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
×
6180
  if (TSDB_CODE_SUCCESS == code) {
×
6181
    code = jsonToNodeObject(pJson, jkAlterDatabaseStmtOptions, (SNode**)&pNode->pOptions);
×
6182
  }
6183

6184
  return code;
×
6185
}
6186

6187
static const char* jkTrimDatabaseStmtDbName = "DbName";
6188
static const char* jkTrimDatabaseStmtMaxSpeed = "MaxSpeed";
6189

6190
static int32_t trimDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6191
  const STrimDatabaseStmt* pNode = (const STrimDatabaseStmt*)pObj;
×
6192

6193
  int32_t code = tjsonAddStringToObject(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
×
6194
  if (TSDB_CODE_SUCCESS == code) {
×
6195
    code = tjsonAddIntegerToObject(pJson, jkTrimDatabaseStmtMaxSpeed, pNode->maxSpeed);
×
6196
  }
6197

6198
  return code;
×
6199
}
6200

6201
static int32_t jsonToTrimDatabaseStmt(const SJson* pJson, void* pObj) {
×
6202
  STrimDatabaseStmt* pNode = (STrimDatabaseStmt*)pObj;
×
6203

6204
  int32_t code = tjsonGetStringValue(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
×
6205
  if (TSDB_CODE_SUCCESS == code) {
×
6206
    code = tjsonGetIntValue(pJson, jkTrimDatabaseStmtMaxSpeed, &pNode->maxSpeed);
×
6207
  }
6208

6209
  return code;
×
6210
}
6211

6212
static const char* jkS3MigrateDatabaseStmtDbName = "DbName";
6213

6214
static int32_t s3migrateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6215
  const SS3MigrateDatabaseStmt* pNode = (const SS3MigrateDatabaseStmt*)pObj;
×
6216

6217
  int32_t code = tjsonAddStringToObject(pJson, jkS3MigrateDatabaseStmtDbName, pNode->dbName);
×
6218

6219
  return code;
×
6220
}
6221

6222
static int32_t jsonToS3MigrateDatabaseStmt(const SJson* pJson, void* pObj) {
×
6223
  SS3MigrateDatabaseStmt* pNode = (SS3MigrateDatabaseStmt*)pObj;
×
6224

6225
  int32_t code = tjsonGetStringValue(pJson, jkS3MigrateDatabaseStmtDbName, pNode->dbName);
×
6226

6227
  return code;
×
6228
}
6229

6230
static const char* jkCreateTableStmtDbName = "DbName";
6231
static const char* jkCreateTableStmtTableName = "TableName";
6232
static const char* jkCreateTableStmtIgnoreExists = "IgnoreExists";
6233
static const char* jkCreateTableStmtCols = "Cols";
6234
static const char* jkCreateTableStmtTags = "Tags";
6235
static const char* jkCreateTableStmtOptions = "Options";
6236

6237
static int32_t createTableStmtToJson(const void* pObj, SJson* pJson) {
×
6238
  const SCreateTableStmt* pNode = (const SCreateTableStmt*)pObj;
×
6239

6240
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTableStmtDbName, pNode->dbName);
×
6241
  if (TSDB_CODE_SUCCESS == code) {
×
6242
    code = tjsonAddStringToObject(pJson, jkCreateTableStmtTableName, pNode->tableName);
×
6243
  }
6244
  if (TSDB_CODE_SUCCESS == code) {
×
6245
    code = tjsonAddBoolToObject(pJson, jkCreateTableStmtIgnoreExists, pNode->ignoreExists);
×
6246
  }
6247
  if (TSDB_CODE_SUCCESS == code) {
×
6248
    code = nodeListToJson(pJson, jkCreateTableStmtCols, pNode->pCols);
×
6249
  }
6250
  if (TSDB_CODE_SUCCESS == code) {
×
6251
    code = nodeListToJson(pJson, jkCreateTableStmtTags, pNode->pTags);
×
6252
  }
6253
  if (TSDB_CODE_SUCCESS == code) {
×
6254
    code = tjsonAddObject(pJson, jkCreateTableStmtOptions, nodeToJson, pNode->pOptions);
×
6255
  }
6256

6257
  return code;
×
6258
}
6259

6260
static int32_t jsonToCreateTableStmt(const SJson* pJson, void* pObj) {
×
6261
  SCreateTableStmt* pNode = (SCreateTableStmt*)pObj;
×
6262

6263
  int32_t code = tjsonGetStringValue(pJson, jkCreateTableStmtDbName, pNode->dbName);
×
6264
  if (TSDB_CODE_SUCCESS == code) {
×
6265
    code = tjsonGetStringValue(pJson, jkCreateTableStmtTableName, pNode->tableName);
×
6266
  }
6267
  if (TSDB_CODE_SUCCESS == code) {
×
6268
    code = tjsonGetBoolValue(pJson, jkCreateTableStmtIgnoreExists, &pNode->ignoreExists);
×
6269
  }
6270
  if (TSDB_CODE_SUCCESS == code) {
×
6271
    code = jsonToNodeList(pJson, jkCreateTableStmtCols, &pNode->pCols);
×
6272
  }
6273
  if (TSDB_CODE_SUCCESS == code) {
×
6274
    code = jsonToNodeList(pJson, jkCreateTableStmtTags, &pNode->pTags);
×
6275
  }
6276
  if (TSDB_CODE_SUCCESS == code) {
×
6277
    code = jsonToNodeObject(pJson, jkCreateTableStmtOptions, (SNode**)&pNode->pOptions);
×
6278
  }
6279

6280
  return code;
×
6281
}
6282

6283
static const char* jkCreateSubTableClauseDbName = "DbName";
6284
static const char* jkCreateSubTableClauseTableName = "TableName";
6285
static const char* jkCreateSubTableClauseUseDbName = "UseDbName";
6286
static const char* jkCreateSubTableClauseUseTableName = "UseTableName";
6287
static const char* jkCreateSubTableClauseIgnoreExists = "IgnoreExists";
6288
static const char* jkCreateSubTableClauseSpecificTags = "SpecificTags";
6289
static const char* jkCreateSubTableClauseValsOfTags = "ValsOfTags";
6290
static const char* jkCreateSubTableClauseOptions = "Options";
6291

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

6295
  int32_t code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
×
6296
  if (TSDB_CODE_SUCCESS == code) {
×
6297
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
×
6298
  }
6299
  if (TSDB_CODE_SUCCESS == code) {
×
6300
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
×
6301
  }
6302
  if (TSDB_CODE_SUCCESS == code) {
×
6303
    code = tjsonAddStringToObject(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
×
6304
  }
6305
  if (TSDB_CODE_SUCCESS == code) {
×
6306
    code = tjsonAddBoolToObject(pJson, jkCreateSubTableClauseIgnoreExists, pNode->ignoreExists);
×
6307
  }
6308
  if (TSDB_CODE_SUCCESS == code) {
×
6309
    code = nodeListToJson(pJson, jkCreateSubTableClauseSpecificTags, pNode->pSpecificTags);
×
6310
  }
6311
  if (TSDB_CODE_SUCCESS == code) {
×
6312
    code = nodeListToJson(pJson, jkCreateSubTableClauseValsOfTags, pNode->pValsOfTags);
×
6313
  }
6314
  if (TSDB_CODE_SUCCESS == code) {
×
6315
    code = tjsonAddObject(pJson, jkCreateSubTableClauseOptions, nodeToJson, pNode->pOptions);
×
6316
  }
6317

6318
  return code;
×
6319
}
6320

6321
static int32_t jsonToCreateSubTableClause(const SJson* pJson, void* pObj) {
×
6322
  SCreateSubTableClause* pNode = (SCreateSubTableClause*)pObj;
×
6323

6324
  int32_t code = tjsonGetStringValue(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
×
6325
  if (TSDB_CODE_SUCCESS == code) {
×
6326
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
×
6327
  }
6328
  if (TSDB_CODE_SUCCESS == code) {
×
6329
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
×
6330
  }
6331
  if (TSDB_CODE_SUCCESS == code) {
×
6332
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
×
6333
  }
6334
  if (TSDB_CODE_SUCCESS == code) {
×
6335
    code = tjsonGetBoolValue(pJson, jkCreateSubTableClauseIgnoreExists, &pNode->ignoreExists);
×
6336
  }
6337
  if (TSDB_CODE_SUCCESS == code) {
×
6338
    code = jsonToNodeList(pJson, jkCreateSubTableClauseSpecificTags, &pNode->pSpecificTags);
×
6339
  }
6340
  if (TSDB_CODE_SUCCESS == code) {
×
6341
    code = jsonToNodeList(pJson, jkCreateSubTableClauseValsOfTags, &pNode->pValsOfTags);
×
6342
  }
6343
  if (TSDB_CODE_SUCCESS == code) {
×
6344
    code = jsonToNodeObject(pJson, jkCreateSubTableClauseOptions, (SNode**)&pNode->pOptions);
×
6345
  }
6346

6347
  return code;
×
6348
}
6349

6350
static const char* jkCreateMultiTablesStmtSubTables = "SubTables";
6351

6352
static int32_t createMultiTablesStmtToJson(const void* pObj, SJson* pJson) {
×
6353
  const SCreateMultiTablesStmt* pNode = (const SCreateMultiTablesStmt*)pObj;
×
6354
  return nodeListToJson(pJson, jkCreateMultiTablesStmtSubTables, pNode->pSubTables);
×
6355
}
6356

6357
static int32_t jsonToCreateMultiTablesStmt(const SJson* pJson, void* pObj) {
×
6358
  SCreateMultiTablesStmt* pNode = (SCreateMultiTablesStmt*)pObj;
×
6359
  return jsonToNodeList(pJson, jkCreateMultiTablesStmtSubTables, &pNode->pSubTables);
×
6360
}
6361

6362
static const char* jkDropTableClauseDbName = "DbName";
6363
static const char* jkDropTableClauseTableName = "TableName";
6364
static const char* jkDropTableClauseIgnoreNotExists = "IgnoreNotExists";
6365

6366
static int32_t dropTableClauseToJson(const void* pObj, SJson* pJson) {
×
6367
  const SDropTableClause* pNode = (const SDropTableClause*)pObj;
×
6368

6369
  int32_t code = tjsonAddStringToObject(pJson, jkDropTableClauseDbName, pNode->dbName);
×
6370
  if (TSDB_CODE_SUCCESS == code) {
×
6371
    code = tjsonAddStringToObject(pJson, jkDropTableClauseTableName, pNode->tableName);
×
6372
  }
6373
  if (TSDB_CODE_SUCCESS == code) {
×
6374
    code = tjsonAddBoolToObject(pJson, jkDropTableClauseIgnoreNotExists, pNode->ignoreNotExists);
×
6375
  }
6376

6377
  return code;
×
6378
}
6379

6380
static int32_t jsonToDropTableClause(const SJson* pJson, void* pObj) {
×
6381
  SDropTableClause* pNode = (SDropTableClause*)pObj;
×
6382

6383
  int32_t code = tjsonGetStringValue(pJson, jkDropTableClauseDbName, pNode->dbName);
×
6384
  if (TSDB_CODE_SUCCESS == code) {
×
6385
    code = tjsonGetStringValue(pJson, jkDropTableClauseTableName, pNode->tableName);
×
6386
  }
6387
  if (TSDB_CODE_SUCCESS == code) {
×
6388
    code = tjsonGetBoolValue(pJson, jkDropTableClauseIgnoreNotExists, &pNode->ignoreNotExists);
×
6389
  }
6390

6391
  return code;
×
6392
}
6393

6394
static const char* jkDropTableStmtTables = "Tables";
6395

6396
static int32_t dropTableStmtToJson(const void* pObj, SJson* pJson) {
×
6397
  const SDropTableStmt* pNode = (const SDropTableStmt*)pObj;
×
6398
  return nodeListToJson(pJson, jkDropTableStmtTables, pNode->pTables);
×
6399
}
6400

6401
static int32_t jsonToDropTableStmt(const SJson* pJson, void* pObj) {
×
6402
  SDropTableStmt* pNode = (SDropTableStmt*)pObj;
×
6403
  return jsonToNodeList(pJson, jkDropTableStmtTables, &pNode->pTables);
×
6404
}
6405

6406
static const char* jkDropSuperTableStmtDbName = "DbName";
6407
static const char* jkDropSuperTableStmtTableName = "TableName";
6408
static const char* jkDropSuperTableStmtIgnoreNotExists = "IgnoreNotExists";
6409
static const char* jkDropSuperTableStmtwithOpt = "withOpt";
6410

6411
static int32_t dropStableStmtToJson(const void* pObj, SJson* pJson) {
×
6412
  const SDropSuperTableStmt* pNode = (const SDropSuperTableStmt*)pObj;
×
6413

6414
  int32_t code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
×
6415
  if (TSDB_CODE_SUCCESS == code) {
×
6416
    code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
×
6417
  }
6418
  if (TSDB_CODE_SUCCESS == code) {
×
6419
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtIgnoreNotExists, pNode->ignoreNotExists);
×
6420
  }
6421
  if (TSDB_CODE_SUCCESS == code) {
×
6422
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtwithOpt, pNode->withOpt);
×
6423
  }
6424

6425
  return code;
×
6426
}
6427

6428
static int32_t jsonToDropStableStmt(const SJson* pJson, void* pObj) {
×
6429
  SDropSuperTableStmt* pNode = (SDropSuperTableStmt*)pObj;
×
6430

6431
  int32_t code = tjsonGetStringValue(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
×
6432
  if (TSDB_CODE_SUCCESS == code) {
×
6433
    code = tjsonGetStringValue(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
×
6434
  }
6435
  if (TSDB_CODE_SUCCESS == code) {
×
6436
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
6437
  }
6438
  if (TSDB_CODE_SUCCESS == code) {
×
6439
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtwithOpt, &pNode->withOpt);
×
6440
  }
6441

6442
  return code;
×
6443
}
6444

6445
static const char* jkAlterTableStmtDbName = "DbName";
6446
static const char* jkAlterTableStmtTableName = "TableName";
6447
static const char* jkAlterTableStmtAlterType = "AlterType";
6448
static const char* jkAlterTableStmtColName = "ColName";
6449
static const char* jkAlterTableStmtNewColName = "NewColName";
6450
static const char* jkAlterTableStmtOptions = "Options";
6451
static const char* jkAlterTableStmtNewDataType = "NewDataType";
6452
static const char* jkAlterTableStmtNewTagVal = "NewTagVal";
6453

6454
static int32_t alterTableStmtToJson(const void* pObj, SJson* pJson) {
×
6455
  const SAlterTableStmt* pNode = (const SAlterTableStmt*)pObj;
×
6456

6457
  int32_t code = tjsonAddStringToObject(pJson, jkAlterTableStmtDbName, pNode->dbName);
×
6458
  if (TSDB_CODE_SUCCESS == code) {
×
6459
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtTableName, pNode->tableName);
×
6460
  }
6461
  if (TSDB_CODE_SUCCESS == code) {
×
6462
    code = tjsonAddIntegerToObject(pJson, jkAlterTableStmtAlterType, pNode->alterType);
×
6463
  }
6464
  if (TSDB_CODE_SUCCESS == code) {
×
6465
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtColName, pNode->colName);
×
6466
  }
6467
  if (TSDB_CODE_SUCCESS == code) {
×
6468
    code = tjsonAddStringToObject(pJson, jkAlterTableStmtNewColName, pNode->newColName);
×
6469
  }
6470
  if (TSDB_CODE_SUCCESS == code) {
×
6471
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pOptions);
×
6472
  }
6473
  if (TSDB_CODE_SUCCESS == code) {
×
6474
    code = tjsonAddObject(pJson, jkAlterTableStmtNewDataType, dataTypeToJson, &pNode->dataType);
×
6475
  }
6476
  if (TSDB_CODE_SUCCESS == code) {
×
6477
    code = tjsonAddObject(pJson, jkAlterTableStmtOptions, nodeToJson, pNode->pVal);
×
6478
  }
6479

6480
  return code;
×
6481
}
6482

6483
static int32_t jsonToAlterTableStmt(const SJson* pJson, void* pObj) {
×
6484
  SAlterTableStmt* pNode = (SAlterTableStmt*)pObj;
×
6485

6486
  int32_t code = tjsonGetStringValue(pJson, jkAlterTableStmtDbName, pNode->dbName);
×
6487
  if (TSDB_CODE_SUCCESS == code) {
×
6488
    code = tjsonGetStringValue(pJson, jkAlterTableStmtTableName, pNode->tableName);
×
6489
  }
6490
  if (TSDB_CODE_SUCCESS == code) {
×
6491
    code = tjsonGetTinyIntValue(pJson, jkAlterTableStmtAlterType, &pNode->alterType);
×
6492
  }
6493
  if (TSDB_CODE_SUCCESS == code) {
×
6494
    code = tjsonGetStringValue(pJson, jkAlterTableStmtColName, pNode->colName);
×
6495
  }
6496
  if (TSDB_CODE_SUCCESS == code) {
×
6497
    code = tjsonGetStringValue(pJson, jkAlterTableStmtNewColName, pNode->newColName);
×
6498
  }
6499
  if (TSDB_CODE_SUCCESS == code) {
×
6500
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pOptions);
×
6501
  }
6502
  if (TSDB_CODE_SUCCESS == code) {
×
6503
    code = tjsonToObject(pJson, jkAlterTableStmtNewDataType, jsonToDataType, &pNode->dataType);
×
6504
  }
6505
  if (TSDB_CODE_SUCCESS == code) {
×
6506
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pVal);
×
6507
  }
6508

6509
  return code;
×
6510
}
6511

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

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

6516
static const char* jkCreateUserStmtUserName = "UserName";
6517
static const char* jkCreateUserStmtPassword = "Password";
6518
static const char* jkCreateUserStmtSysinfo = "Sysinfo";
6519

6520
static int32_t createUserStmtToJson(const void* pObj, SJson* pJson) {
×
6521
  const SCreateUserStmt* pNode = (const SCreateUserStmt*)pObj;
×
6522

6523
  int32_t code = tjsonAddStringToObject(pJson, jkCreateUserStmtUserName, pNode->userName);
×
6524
  if (TSDB_CODE_SUCCESS == code) {
×
6525
    code = tjsonAddStringToObject(pJson, jkCreateUserStmtPassword, pNode->password);
×
6526
  }
6527
  if (TSDB_CODE_SUCCESS == code) {
×
6528
    code = tjsonAddIntegerToObject(pJson, jkCreateUserStmtSysinfo, pNode->sysinfo);
×
6529
  }
6530

6531
  return code;
×
6532
}
6533

6534
static int32_t jsonToCreateUserStmt(const SJson* pJson, void* pObj) {
×
6535
  SCreateUserStmt* pNode = (SCreateUserStmt*)pObj;
×
6536

6537
  int32_t code = tjsonGetStringValue(pJson, jkCreateUserStmtUserName, pNode->userName);
×
6538
  if (TSDB_CODE_SUCCESS == code) {
×
6539
    code = tjsonGetStringValue(pJson, jkCreateUserStmtPassword, pNode->password);
×
6540
  }
6541
  if (TSDB_CODE_SUCCESS == code) {
×
6542
    code = tjsonGetTinyIntValue(pJson, jkCreateUserStmtSysinfo, &pNode->sysinfo);
×
6543
  }
6544

6545
  return code;
×
6546
}
6547

6548
static const char* jkAlterUserStmtUserName = "UserName";
6549
static const char* jkAlterUserStmtAlterType = "AlterType";
6550
static const char* jkAlterUserStmtPassword = "Password";
6551
static const char* jkAlterUserStmtEnable = "Enable";
6552
static const char* jkAlterUserStmtSysinfo = "Sysinfo";
6553
static const char* jkAlterUserStmtCreatedb = "Createdb";
6554

6555
static int32_t alterUserStmtToJson(const void* pObj, SJson* pJson) {
×
6556
  const SAlterUserStmt* pNode = (const SAlterUserStmt*)pObj;
×
6557

6558
  int32_t code = tjsonAddStringToObject(pJson, jkAlterUserStmtUserName, pNode->userName);
×
6559
  if (TSDB_CODE_SUCCESS == code) {
×
6560
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtAlterType, pNode->alterType);
×
6561
  }
6562
  if (TSDB_CODE_SUCCESS == code) {
×
6563
    code = tjsonAddStringToObject(pJson, jkAlterUserStmtPassword, pNode->password);
×
6564
  }
6565
  if (TSDB_CODE_SUCCESS == code) {
×
6566
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtEnable, pNode->enable);
×
6567
  }
6568
  if (TSDB_CODE_SUCCESS == code) {
×
6569
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtSysinfo, pNode->sysinfo);
×
6570
  }
6571
  if (TSDB_CODE_SUCCESS == code) {
×
6572
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtCreatedb, pNode->createdb);
×
6573
  }
6574

6575
  return code;
×
6576
}
6577

6578
static int32_t jsonToAlterUserStmt(const SJson* pJson, void* pObj) {
×
6579
  SAlterUserStmt* pNode = (SAlterUserStmt*)pObj;
×
6580

6581
  int32_t code = tjsonGetStringValue(pJson, jkAlterUserStmtUserName, pNode->userName);
×
6582
  if (TSDB_CODE_SUCCESS == code) {
×
6583
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtAlterType, &pNode->alterType);
×
6584
  }
6585
  if (TSDB_CODE_SUCCESS == code) {
×
6586
    code = tjsonGetStringValue(pJson, jkAlterUserStmtPassword, pNode->password);
×
6587
  }
6588
  if (TSDB_CODE_SUCCESS == code) {
×
6589
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtEnable, &pNode->enable);
×
6590
  }
6591
  if (TSDB_CODE_SUCCESS == code) {
×
6592
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtSysinfo, &pNode->sysinfo);
×
6593
  }
6594
  if (TSDB_CODE_SUCCESS == code) {
×
6595
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtCreatedb, &pNode->createdb);
×
6596
  }
6597

6598
  return code;
×
6599
}
6600

6601
static const char* jkDropUserStmtUserName = "UserName";
6602

6603
static int32_t dropUserStmtToJson(const void* pObj, SJson* pJson) {
×
6604
  const SDropUserStmt* pNode = (const SDropUserStmt*)pObj;
×
6605
  return tjsonAddStringToObject(pJson, jkDropUserStmtUserName, pNode->userName);
×
6606
}
6607

6608
static int32_t jsonToDropUserStmt(const SJson* pJson, void* pObj) {
×
6609
  SDropUserStmt* pNode = (SDropUserStmt*)pObj;
×
6610
  return tjsonGetStringValue(pJson, jkDropUserStmtUserName, pNode->userName);
×
6611
}
6612

6613
static const char* jkUseDatabaseStmtDbName = "DbName";
6614

6615
static int32_t useDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6616
  const SUseDatabaseStmt* pNode = (const SUseDatabaseStmt*)pObj;
×
6617
  return tjsonAddStringToObject(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
×
6618
}
6619

6620
static int32_t jsonToUseDatabaseStmt(const SJson* pJson, void* pObj) {
×
6621
  SUseDatabaseStmt* pNode = (SUseDatabaseStmt*)pObj;
×
6622
  return tjsonGetStringValue(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
×
6623
}
6624

6625
static const char* jkCreateDnodeStmtFqdn = "Fqdn";
6626
static const char* jkCreateDnodeStmtPort = "Port";
6627

6628
static int32_t createDnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6629
  const SCreateDnodeStmt* pNode = (const SCreateDnodeStmt*)pObj;
×
6630

6631
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
×
6632
  if (TSDB_CODE_SUCCESS == code) {
×
6633
    code = tjsonAddIntegerToObject(pJson, jkCreateDnodeStmtPort, pNode->port);
×
6634
  }
6635

6636
  return code;
×
6637
}
6638

6639
static int32_t jsonToCreateDnodeStmt(const SJson* pJson, void* pObj) {
×
6640
  SCreateDnodeStmt* pNode = (SCreateDnodeStmt*)pObj;
×
6641

6642
  int32_t code = tjsonGetStringValue(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
×
6643
  if (TSDB_CODE_SUCCESS == code) {
×
6644
    code = tjsonGetIntValue(pJson, jkCreateDnodeStmtPort, &pNode->port);
×
6645
  }
6646

6647
  return code;
×
6648
}
6649

6650
static const char* jkAlterDnodeStmtDnodeId = "DnodeId";
6651
static const char* jkAlterDnodeStmtConfig = "Config";
6652
static const char* jkAlterDnodeStmtValue = "Value";
6653

6654
static int32_t alterDnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6655
  const SAlterDnodeStmt* pNode = (const SAlterDnodeStmt*)pObj;
×
6656

6657
  int32_t code = tjsonAddIntegerToObject(pJson, jkAlterDnodeStmtDnodeId, pNode->dnodeId);
×
6658
  if (TSDB_CODE_SUCCESS == code) {
×
6659
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtConfig, pNode->config);
×
6660
  }
6661
  if (TSDB_CODE_SUCCESS == code) {
×
6662
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtValue, pNode->value);
×
6663
  }
6664

6665
  return code;
×
6666
}
6667

6668
static int32_t jsonToAlterDnodeStmt(const SJson* pJson, void* pObj) {
×
6669
  SAlterDnodeStmt* pNode = (SAlterDnodeStmt*)pObj;
×
6670

6671
  int32_t code = tjsonGetIntValue(pJson, jkAlterDnodeStmtDnodeId, &pNode->dnodeId);
×
6672
  if (TSDB_CODE_SUCCESS == code) {
×
6673
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtConfig, pNode->config);
×
6674
  }
6675
  if (TSDB_CODE_SUCCESS == code) {
×
6676
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtValue, pNode->value);
×
6677
  }
6678

6679
  return code;
×
6680
}
6681

6682
static const char* jkCreateIndexStmtIndexType = "IndexType";
6683
static const char* jkCreateIndexStmtIgnoreExists = "IgnoreExists";
6684
static const char* jkCreateIndexStmtIndexDbName = "IndexDbName";
6685
static const char* jkCreateIndexStmtIndexName = "indexName";
6686
static const char* jkCreateIndexStmtDbName = "DbName";
6687
static const char* jkCreateIndexStmtTableName = "TableName";
6688
static const char* jkCreateIndexStmtCols = "Cols";
6689
static const char* jkCreateIndexStmtOptions = "Options";
6690

6691
static int32_t createIndexStmtToJson(const void* pObj, SJson* pJson) {
×
6692
  const SCreateIndexStmt* pNode = (const SCreateIndexStmt*)pObj;
×
6693

6694
  int32_t code = tjsonAddIntegerToObject(pJson, jkCreateIndexStmtIndexType, pNode->indexType);
×
6695
  if (TSDB_CODE_SUCCESS == code) {
×
6696
    code = tjsonAddBoolToObject(pJson, jkCreateIndexStmtIgnoreExists, pNode->ignoreExists);
×
6697
  }
6698
  if (TSDB_CODE_SUCCESS == code) {
×
6699
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
×
6700
  }
6701
  if (TSDB_CODE_SUCCESS == code) {
×
6702
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
×
6703
  }
6704
  if (TSDB_CODE_SUCCESS == code) {
×
6705
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtDbName, pNode->dbName);
×
6706
  }
6707
  if (TSDB_CODE_SUCCESS == code) {
×
6708
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtTableName, pNode->tableName);
×
6709
  }
6710
  if (TSDB_CODE_SUCCESS == code) {
×
6711
    code = nodeListToJson(pJson, jkCreateIndexStmtCols, pNode->pCols);
×
6712
  }
6713
  if (TSDB_CODE_SUCCESS == code) {
×
6714
    code = tjsonAddObject(pJson, jkCreateIndexStmtOptions, nodeToJson, pNode->pOptions);
×
6715
  }
6716

6717
  return code;
×
6718
}
6719

6720
static int32_t jsonToCreateIndexStmt(const SJson* pJson, void* pObj) {
×
6721
  SCreateIndexStmt* pNode = (SCreateIndexStmt*)pObj;
×
6722

6723
  int32_t code = TSDB_CODE_SUCCESS;
×
6724
  tjsonGetNumberValue(pJson, jkCreateIndexStmtIndexType, pNode->indexType, code);
×
6725
  if (TSDB_CODE_SUCCESS == code) {
×
6726
    code = tjsonGetBoolValue(pJson, jkCreateIndexStmtIgnoreExists, &pNode->ignoreExists);
×
6727
  }
6728
  if (TSDB_CODE_SUCCESS == code) {
×
6729
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
×
6730
  }
6731
  if (TSDB_CODE_SUCCESS == code) {
×
6732
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
×
6733
  }
6734
  if (TSDB_CODE_SUCCESS == code) {
×
6735
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtDbName, pNode->dbName);
×
6736
  }
6737
  if (TSDB_CODE_SUCCESS == code) {
×
6738
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtTableName, pNode->tableName);
×
6739
  }
6740
  if (TSDB_CODE_SUCCESS == code) {
×
6741
    code = jsonToNodeList(pJson, jkCreateIndexStmtCols, &pNode->pCols);
×
6742
  }
6743
  if (TSDB_CODE_SUCCESS == code) {
×
6744
    code = jsonToNodeObject(pJson, jkCreateIndexStmtOptions, (SNode**)&pNode->pOptions);
×
6745
  }
6746

6747
  return code;
×
6748
}
6749

6750
static const char* jkDropIndexStmtIgnoreNotExists = "IgnoreNotExists";
6751
static const char* jkDropIndexStmtIndexDbName = "IndexDbName";
6752
static const char* jkDropIndexStmtIndexName = "IndexName";
6753

6754
static int32_t dropIndexStmtToJson(const void* pObj, SJson* pJson) {
×
6755
  const SDropIndexStmt* pNode = (const SDropIndexStmt*)pObj;
×
6756

6757
  int32_t code = tjsonAddBoolToObject(pJson, jkDropIndexStmtIgnoreNotExists, pNode->ignoreNotExists);
×
6758
  if (TSDB_CODE_SUCCESS == code) {
×
6759
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
×
6760
  }
6761
  if (TSDB_CODE_SUCCESS == code) {
×
6762
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexName, pNode->indexName);
×
6763
  }
6764

6765
  return code;
×
6766
}
6767

6768
static int32_t jsonToDropIndexStmt(const SJson* pJson, void* pObj) {
×
6769
  SDropIndexStmt* pNode = (SDropIndexStmt*)pObj;
×
6770

6771
  int32_t code = tjsonGetBoolValue(pJson, jkDropIndexStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
6772
  if (TSDB_CODE_SUCCESS == code) {
×
6773
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
×
6774
  }
6775
  if (TSDB_CODE_SUCCESS == code) {
×
6776
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexName, pNode->indexName);
×
6777
  }
6778

6779
  return code;
×
6780
}
6781

6782
static const char* jkCreateComponentNodeStmtDnodeId = "DnodeId";
6783

6784
static int32_t createComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
6785
  const SCreateComponentNodeStmt* pNode = (const SCreateComponentNodeStmt*)pObj;
×
6786
  return tjsonAddIntegerToObject(pJson, jkCreateComponentNodeStmtDnodeId, pNode->dnodeId);
×
6787
}
6788

6789
static int32_t jsonToCreateComponentNodeStmt(const SJson* pJson, void* pObj) {
×
6790
  SCreateComponentNodeStmt* pNode = (SCreateComponentNodeStmt*)pObj;
×
6791
  return tjsonGetIntValue(pJson, jkCreateComponentNodeStmtDnodeId, &pNode->dnodeId);
×
6792
}
6793

6794
static const char* jkDropComponentNodeStmtDnodeId = "DnodeId";
6795

6796
static int32_t dropComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
6797
  const SDropComponentNodeStmt* pNode = (const SDropComponentNodeStmt*)pObj;
×
6798
  return tjsonAddIntegerToObject(pJson, jkDropComponentNodeStmtDnodeId, pNode->dnodeId);
×
6799
}
6800

6801
static int32_t jsonToDropComponentNodeStmt(const SJson* pJson, void* pObj) {
×
6802
  SDropComponentNodeStmt* pNode = (SDropComponentNodeStmt*)pObj;
×
6803
  return tjsonGetIntValue(pJson, jkDropComponentNodeStmtDnodeId, &pNode->dnodeId);
×
6804
}
6805

6806
static int32_t createQnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6807
  return createComponentNodeStmtToJson(pObj, pJson);
×
6808
}
6809

6810
static int32_t jsonToCreateQnodeStmt(const SJson* pJson, void* pObj) {
×
6811
  return jsonToCreateComponentNodeStmt(pJson, pObj);
×
6812
}
6813

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

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

6818
static const char* jkCreateAnodeStmtUrl = "Url";
6819
static const char*  jkUpdateDropANodeStmtId = "AnodeId";
6820

6821
static int32_t createAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6822
  const SCreateAnodeStmt* pNode = (const SCreateAnodeStmt*)pObj;
×
6823
  return tjsonAddStringToObject(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
6824
}
6825

6826
static int32_t jsonToCreateAnodeStmt(const SJson* pJson, void* pObj) {
×
6827
  SCreateAnodeStmt* pNode = (SCreateAnodeStmt*)pObj;
×
6828
  return tjsonGetStringValue(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
6829
}
6830

6831
static int32_t updateAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6832
  const SUpdateAnodeStmt* pNode = (const SUpdateAnodeStmt*)pObj;
×
6833
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
6834
}
6835

6836
static int32_t jsonToUpdateAnodeStmt(const SJson* pJson, void* pObj) {
×
6837
  SUpdateAnodeStmt* pNode = (SUpdateAnodeStmt*)pObj;
×
6838
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
6839
}
6840

6841
static int32_t dropAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6842
  const SDropAnodeStmt* pNode = (const SDropAnodeStmt*)pObj;
×
6843
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
6844
}
6845

6846
static int32_t jsonToDropAnodeStmt(const SJson* pJson, void* pObj) {
×
6847
  SDropAnodeStmt* pNode = (SDropAnodeStmt*)pObj;
×
6848
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
6849
}
6850

6851
static int32_t createSnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6852
  return createComponentNodeStmtToJson(pObj, pJson);
×
6853
}
6854

6855
static int32_t jsonToCreateSnodeStmt(const SJson* pJson, void* pObj) {
×
6856
  return jsonToCreateComponentNodeStmt(pJson, pObj);
×
6857
}
6858

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

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

6863
static int32_t createMnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6864
  return createComponentNodeStmtToJson(pObj, pJson);
×
6865
}
6866

6867
static int32_t jsonToCreateMnodeStmt(const SJson* pJson, void* pObj) {
×
6868
  return jsonToCreateComponentNodeStmt(pJson, pObj);
×
6869
}
6870

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

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

6875
static const char* jkDropDnodeStmtDnodeId = "DnodeId";
6876
static const char* jkDropDnodeStmtFqdn = "Fqdn";
6877
static const char* jkDropDnodeStmtPort = "Port";
6878
static const char* jkDropDnodeStmtForce = "Force";
6879
static const char* jkDropDnodeStmtUnsafe = "Unsafe";
6880

6881
static int32_t dropDnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6882
  const SDropDnodeStmt* pNode = (const SDropDnodeStmt*)pObj;
×
6883

6884
  int32_t code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtDnodeId, pNode->dnodeId);
×
6885
  if (TSDB_CODE_SUCCESS == code) {
×
6886
    code = tjsonAddStringToObject(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
×
6887
  }
6888
  if (TSDB_CODE_SUCCESS == code) {
×
6889
    code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtPort, pNode->port);
×
6890
  }
6891
  if (TSDB_CODE_SUCCESS == code) {
×
6892
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtForce, pNode->force);
×
6893
  }
6894
  if (TSDB_CODE_SUCCESS == code) {
×
6895
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtUnsafe, pNode->unsafe);
×
6896
  }
6897

6898
  return code;
×
6899
}
6900

6901
static int32_t jsonToDropDnodeStmt(const SJson* pJson, void* pObj) {
×
6902
  SDropDnodeStmt* pNode = (SDropDnodeStmt*)pObj;
×
6903

6904
  int32_t code = tjsonGetIntValue(pJson, jkDropDnodeStmtDnodeId, &pNode->dnodeId);
×
6905
  if (TSDB_CODE_SUCCESS == code) {
×
6906
    code = tjsonGetStringValue(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
×
6907
  }
6908
  if (TSDB_CODE_SUCCESS == code) {
×
6909
    code = tjsonGetIntValue(pJson, jkDropDnodeStmtPort, &pNode->port);
×
6910
  }
6911
  if (TSDB_CODE_SUCCESS == code) {
×
6912
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtForce, &pNode->force);
×
6913
  }
6914
  if (TSDB_CODE_SUCCESS == code) {
×
6915
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtUnsafe, &pNode->unsafe);
×
6916
  }
6917

6918
  return code;
×
6919
}
6920

6921
static const char* jkRestoreComponentNodeStmtDnodeId = "DnodeId";
6922

6923
static int32_t restoreComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
6924
  const SRestoreComponentNodeStmt* pNode = (const SRestoreComponentNodeStmt*)pObj;
×
6925
  return tjsonAddIntegerToObject(pJson, jkRestoreComponentNodeStmtDnodeId, pNode->dnodeId);
×
6926
}
6927

6928
static int32_t jsonToRestoreComponentNodeStmt(const SJson* pJson, void* pObj) {
×
6929
  SRestoreComponentNodeStmt* pNode = (SRestoreComponentNodeStmt*)pObj;
×
6930
  return tjsonGetIntValue(pJson, jkRestoreComponentNodeStmtDnodeId, &pNode->dnodeId);
×
6931
}
6932

6933
static int32_t jsonToRestoreDnodeStmt(const SJson* pJson, void* pObj) {
×
6934
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
6935
}
6936
static int32_t jsonToRestoreQnodeStmt(const SJson* pJson, void* pObj) {
×
6937
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
6938
}
6939
static int32_t jsonToRestoreMnodeStmt(const SJson* pJson, void* pObj) {
×
6940
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
6941
}
6942
static int32_t jsonToRestoreVnodeStmt(const SJson* pJson, void* pObj) {
×
6943
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
6944
}
6945

6946
static const char* jkCreateTopicStmtTopicName = "TopicName";
6947
static const char* jkCreateTopicStmtSubscribeDbName = "SubscribeDbName";
6948
static const char* jkCreateTopicStmtIgnoreExists = "IgnoreExists";
6949
static const char* jkCreateTopicStmtQuery = "Query";
6950

6951
static int32_t createTopicStmtToJson(const void* pObj, SJson* pJson) {
×
6952
  const SCreateTopicStmt* pNode = (const SCreateTopicStmt*)pObj;
×
6953

6954
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
×
6955
  if (TSDB_CODE_SUCCESS == code) {
×
6956
    code = tjsonAddStringToObject(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
×
6957
  }
6958
  if (TSDB_CODE_SUCCESS == code) {
×
6959
    code = tjsonAddBoolToObject(pJson, jkCreateTopicStmtIgnoreExists, pNode->ignoreExists);
×
6960
  }
6961
  if (TSDB_CODE_SUCCESS == code) {
×
6962
    code = tjsonAddObject(pJson, jkCreateTopicStmtQuery, nodeToJson, pNode->pQuery);
×
6963
  }
6964

6965
  return code;
×
6966
}
6967

6968
static int32_t jsonToCreateTopicStmt(const SJson* pJson, void* pObj) {
×
6969
  SCreateTopicStmt* pNode = (SCreateTopicStmt*)pObj;
×
6970

6971
  int32_t code = tjsonGetStringValue(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
×
6972
  if (TSDB_CODE_SUCCESS == code) {
×
6973
    code = tjsonGetStringValue(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
×
6974
  }
6975
  if (TSDB_CODE_SUCCESS == code) {
×
6976
    code = tjsonGetBoolValue(pJson, jkCreateTopicStmtIgnoreExists, &pNode->ignoreExists);
×
6977
  }
6978
  if (TSDB_CODE_SUCCESS == code) {
×
6979
    code = jsonToNodeObject(pJson, jkCreateTopicStmtQuery, &pNode->pQuery);
×
6980
  }
6981

6982
  return code;
×
6983
}
6984

6985
static const char* jkDropTopicStmtTopicName = "TopicName";
6986
static const char* jkDropTopicStmtIgnoreNotExists = "IgnoreNotExists";
6987

6988
static int32_t dropTopicStmtToJson(const void* pObj, SJson* pJson) {
×
6989
  const SDropTopicStmt* pNode = (const SDropTopicStmt*)pObj;
×
6990

6991
  int32_t code = tjsonAddStringToObject(pJson, jkDropTopicStmtTopicName, pNode->topicName);
×
6992
  if (TSDB_CODE_SUCCESS == code) {
×
6993
    code = tjsonAddBoolToObject(pJson, jkDropTopicStmtIgnoreNotExists, pNode->ignoreNotExists);
×
6994
  }
6995

6996
  return code;
×
6997
}
6998

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

7002
  int32_t code = tjsonGetStringValue(pJson, jkDropTopicStmtTopicName, pNode->topicName);
×
7003
  if (TSDB_CODE_SUCCESS == code) {
×
7004
    code = tjsonGetBoolValue(pJson, jkDropTopicStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7005
  }
7006

7007
  return code;
×
7008
}
7009

7010
static const char* jkDropCGroupStmtTopicName = "TopicName";
7011
static const char* jkDropCGroupStmtConsumerGroup = "ConsumerGroup";
7012
static const char* jkDropCGroupStmtIgnoreNotExists = "IgnoreNotExists";
7013

7014
static int32_t dropConsumerGroupStmtToJson(const void* pObj, SJson* pJson) {
×
7015
  const SDropCGroupStmt* pNode = (const SDropCGroupStmt*)pObj;
×
7016

7017
  int32_t code = tjsonAddStringToObject(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
×
7018
  if (TSDB_CODE_SUCCESS == code) {
×
7019
    code = tjsonAddStringToObject(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
×
7020
  }
7021
  if (TSDB_CODE_SUCCESS == code) {
×
7022
    code = tjsonAddBoolToObject(pJson, jkDropCGroupStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7023
  }
7024

7025
  return code;
×
7026
}
7027

7028
static int32_t jsonToDropConsumerGroupStmt(const SJson* pJson, void* pObj) {
×
7029
  SDropCGroupStmt* pNode = (SDropCGroupStmt*)pObj;
×
7030

7031
  int32_t code = tjsonGetStringValue(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
×
7032
  if (TSDB_CODE_SUCCESS == code) {
×
7033
    code = tjsonGetStringValue(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
×
7034
  }
7035
  if (TSDB_CODE_SUCCESS == code) {
×
7036
    code = tjsonGetBoolValue(pJson, jkDropCGroupStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7037
  }
7038

7039
  return code;
×
7040
}
7041

7042
static const char* jkAlterClusterStmtConfig = "Config";
7043
static const char* jkAlterClusterStmtValue = "Value";
7044

7045
static int32_t alterClusterStmtToJson(const void* pObj, SJson* pJson) {
×
7046
  const SAlterClusterStmt* pNode = (const SAlterClusterStmt*)pObj;
×
7047

7048
  int32_t code = tjsonAddStringToObject(pJson, jkAlterClusterStmtConfig, pNode->config);
×
7049
  if (TSDB_CODE_SUCCESS == code) {
×
7050
    code = tjsonAddStringToObject(pJson, jkAlterClusterStmtValue, pNode->value);
×
7051
  }
7052

7053
  return code;
×
7054
}
7055

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

7059
  int32_t code = tjsonGetStringValue(pJson, jkAlterClusterStmtConfig, pNode->config);
×
7060
  if (TSDB_CODE_SUCCESS == code) {
×
7061
    code = tjsonGetStringValue(pJson, jkAlterClusterStmtValue, pNode->value);
×
7062
  }
7063

7064
  return code;
×
7065
}
7066

7067
static const char* jkAlterLocalStmtConfig = "Config";
7068
static const char* jkAlterLocalStmtValue = "Value";
7069

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

7073
  int32_t code = tjsonAddStringToObject(pJson, jkAlterLocalStmtConfig, pNode->config);
×
7074
  if (TSDB_CODE_SUCCESS == code) {
×
7075
    code = tjsonAddStringToObject(pJson, jkAlterLocalStmtValue, pNode->value);
×
7076
  }
7077

7078
  return code;
×
7079
}
7080

7081
static int32_t jsonToAlterLocalStmt(const SJson* pJson, void* pObj) {
×
7082
  SAlterLocalStmt* pNode = (SAlterLocalStmt*)pObj;
×
7083

7084
  int32_t code = tjsonGetStringValue(pJson, jkAlterLocalStmtConfig, pNode->config);
×
7085
  if (TSDB_CODE_SUCCESS == code) {
×
7086
    code = tjsonGetStringValue(pJson, jkAlterLocalStmtValue, pNode->value);
×
7087
  }
7088

7089
  return code;
×
7090
}
7091

7092
static const char* jkExplainStmtAnalyze = "Analyze";
7093
static const char* jkExplainStmtOptions = "Options";
7094
static const char* jkExplainStmtQuery = "Query";
7095

7096
static int32_t explainStmtToJson(const void* pObj, SJson* pJson) {
×
7097
  const SExplainStmt* pNode = (const SExplainStmt*)pObj;
×
7098

7099
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainStmtAnalyze, pNode->analyze);
×
7100
  if (TSDB_CODE_SUCCESS == code) {
×
7101
    code = tjsonAddObject(pJson, jkExplainStmtOptions, nodeToJson, pNode->pOptions);
×
7102
  }
7103
  if (TSDB_CODE_SUCCESS == code) {
×
7104
    code = tjsonAddObject(pJson, jkExplainStmtQuery, nodeToJson, pNode->pQuery);
×
7105
  }
7106

7107
  return code;
×
7108
}
7109

7110
static int32_t jsonToExplainStmt(const SJson* pJson, void* pObj) {
×
7111
  SExplainStmt* pNode = (SExplainStmt*)pObj;
×
7112

7113
  int32_t code = tjsonGetBoolValue(pJson, jkExplainStmtAnalyze, &pNode->analyze);
×
7114
  if (TSDB_CODE_SUCCESS == code) {
×
7115
    code = jsonToNodeObject(pJson, jkExplainStmtOptions, (SNode**)&pNode->pOptions);
×
7116
  }
7117
  if (TSDB_CODE_SUCCESS == code) {
×
7118
    code = jsonToNodeObject(pJson, jkExplainStmtQuery, &pNode->pQuery);
×
7119
  }
7120

7121
  return code;
×
7122
}
7123

7124
static const char* jkDescribeStmtDbName = "DbName";
7125
static const char* jkDescribeStmtTableName = "TableName";
7126

7127
static int32_t describeStmtToJson(const void* pObj, SJson* pJson) {
×
7128
  const SDescribeStmt* pNode = (const SDescribeStmt*)pObj;
×
7129

7130
  int32_t code = tjsonAddStringToObject(pJson, jkDescribeStmtDbName, pNode->dbName);
×
7131
  if (TSDB_CODE_SUCCESS == code) {
×
7132
    code = tjsonAddStringToObject(pJson, jkDescribeStmtTableName, pNode->tableName);
×
7133
  }
7134

7135
  return code;
×
7136
}
7137

7138
static int32_t jsonToDescribeStmt(const SJson* pJson, void* pObj) {
×
7139
  SDescribeStmt* pNode = (SDescribeStmt*)pObj;
×
7140

7141
  int32_t code = tjsonGetStringValue(pJson, jkDescribeStmtDbName, pNode->dbName);
×
7142
  if (TSDB_CODE_SUCCESS == code) {
×
7143
    code = tjsonGetStringValue(pJson, jkDescribeStmtTableName, pNode->tableName);
×
7144
  }
7145

7146
  return code;
×
7147
}
7148

7149
static const char* jkCompactDatabaseStmtDbName = "DbName";
7150

7151
static int32_t compactDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
7152
  const SCompactDatabaseStmt* pNode = (const SCompactDatabaseStmt*)pObj;
×
7153
  return tjsonAddStringToObject(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
×
7154
}
7155

7156
static int32_t jsonToCompactDatabaseStmt(const SJson* pJson, void* pObj) {
×
7157
  SCompactDatabaseStmt* pNode = (SCompactDatabaseStmt*)pObj;
×
7158
  return tjsonGetStringValue(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
×
7159
}
7160

7161
static const char* jkCreateStreamStmtStreamName = "StreamName";
7162
static const char* jkCreateStreamStmtTargetDbName = "TargetDbName";
7163
static const char* jkCreateStreamStmtTargetTabName = "TargetTabName";
7164
static const char* jkCreateStreamStmtIgnoreExists = "IgnoreExists";
7165
static const char* jkCreateStreamStmtOptions = "Options";
7166
static const char* jkCreateStreamStmtQuery = "Query";
7167
static const char* jkCreateStreamStmtTags = "Tags";
7168
static const char* jkCreateStreamStmtSubtable = "Subtable";
7169

7170
static int32_t createStreamStmtToJson(const void* pObj, SJson* pJson) {
×
7171
  const SCreateStreamStmt* pNode = (const SCreateStreamStmt*)pObj;
×
7172

7173
  int32_t code = tjsonAddStringToObject(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
×
7174
  if (TSDB_CODE_SUCCESS == code) {
×
7175
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
×
7176
  }
7177
  if (TSDB_CODE_SUCCESS == code) {
×
7178
    code = tjsonAddStringToObject(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
×
7179
  }
7180
  if (TSDB_CODE_SUCCESS == code) {
×
7181
    code = tjsonAddBoolToObject(pJson, jkCreateStreamStmtIgnoreExists, pNode->ignoreExists);
×
7182
  }
7183
  if (TSDB_CODE_SUCCESS == code) {
×
7184
    code = tjsonAddObject(pJson, jkCreateStreamStmtOptions, nodeToJson, pNode->pOptions);
×
7185
  }
7186
  if (TSDB_CODE_SUCCESS == code) {
×
7187
    code = tjsonAddObject(pJson, jkCreateStreamStmtQuery, nodeToJson, pNode->pQuery);
×
7188
  }
7189
  if (TSDB_CODE_SUCCESS == code) {
×
7190
    code = nodeListToJson(pJson, jkCreateStreamStmtTags, pNode->pTags);
×
7191
  }
7192
  if (TSDB_CODE_SUCCESS == code) {
×
7193
    code = tjsonAddObject(pJson, jkCreateStreamStmtSubtable, nodeToJson, pNode->pSubtable);
×
7194
  }
7195

7196
  return code;
×
7197
}
7198

7199
static int32_t jsonToCreateStreamStmt(const SJson* pJson, void* pObj) {
×
7200
  SCreateStreamStmt* pNode = (SCreateStreamStmt*)pObj;
×
7201

7202
  int32_t code = tjsonGetStringValue(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
×
7203
  if (TSDB_CODE_SUCCESS == code) {
×
7204
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
×
7205
  }
7206
  if (TSDB_CODE_SUCCESS == code) {
×
7207
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
×
7208
  }
7209
  if (TSDB_CODE_SUCCESS == code) {
×
7210
    code = tjsonGetBoolValue(pJson, jkCreateStreamStmtIgnoreExists, &pNode->ignoreExists);
×
7211
  }
7212
  if (TSDB_CODE_SUCCESS == code) {
×
7213
    code = jsonToNodeObject(pJson, jkCreateStreamStmtOptions, (SNode**)&pNode->pOptions);
×
7214
  }
7215
  if (TSDB_CODE_SUCCESS == code) {
×
7216
    code = jsonToNodeObject(pJson, jkCreateStreamStmtQuery, &pNode->pQuery);
×
7217
  }
7218
  if (TSDB_CODE_SUCCESS == code) {
×
7219
    code = jsonToNodeList(pJson, jkCreateStreamStmtTags, &pNode->pTags);
×
7220
  }
7221
  if (TSDB_CODE_SUCCESS == code) {
×
7222
    code = jsonToNodeObject(pJson, jkCreateStreamStmtSubtable, &pNode->pSubtable);
×
7223
  }
7224

7225
  return code;
×
7226
}
7227

7228
static const char* jkDropStreamStmtStreamName = "StreamName";
7229
static const char* jkDropStreamStmtIgnoreNotExists = "IgnoreNotExists";
7230

7231
static int32_t dropStreamStmtToJson(const void* pObj, SJson* pJson) {
×
7232
  const SDropStreamStmt* pNode = (const SDropStreamStmt*)pObj;
×
7233

7234
  int32_t code = tjsonAddStringToObject(pJson, jkDropStreamStmtStreamName, pNode->streamName);
×
7235
  if (TSDB_CODE_SUCCESS == code) {
×
7236
    code = tjsonAddBoolToObject(pJson, jkDropStreamStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7237
  }
7238

7239
  return code;
×
7240
}
7241

7242
static int32_t jsonToDropStreamStmt(const SJson* pJson, void* pObj) {
×
7243
  SDropStreamStmt* pNode = (SDropStreamStmt*)pObj;
×
7244

7245
  int32_t code = tjsonGetStringValue(pJson, jkDropStreamStmtStreamName, pNode->streamName);
×
7246
  if (TSDB_CODE_SUCCESS == code) {
×
7247
    code = tjsonGetBoolValue(pJson, jkDropStreamStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7248
  }
7249

7250
  return code;
×
7251
}
7252

7253
static const char* jkMergeVgroupStmtVgroupId1 = "VgroupId1";
7254
static const char* jkMergeVgroupStmtVgroupId2 = "VgroupId2";
7255

7256
static int32_t mergeVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
7257
  const SMergeVgroupStmt* pNode = (const SMergeVgroupStmt*)pObj;
×
7258

7259
  int32_t code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId1, pNode->vgId1);
×
7260
  if (TSDB_CODE_SUCCESS == code) {
×
7261
    code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId2, pNode->vgId2);
×
7262
  }
7263

7264
  return code;
×
7265
}
7266

7267
static int32_t jsonToMergeVgroupStmt(const SJson* pJson, void* pObj) {
×
7268
  SMergeVgroupStmt* pNode = (SMergeVgroupStmt*)pObj;
×
7269

7270
  int32_t code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId1, &pNode->vgId1);
×
7271
  if (TSDB_CODE_SUCCESS == code) {
×
7272
    code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId2, &pNode->vgId2);
×
7273
  }
7274

7275
  return code;
×
7276
}
7277

7278
static const char* jkRedistributeVgroupStmtVgroupId = "VgroupId";
7279
static const char* jkRedistributeVgroupStmtDnodeId1 = "DnodeId1";
7280
static const char* jkRedistributeVgroupStmtDnodeId2 = "DnodeId2";
7281
static const char* jkRedistributeVgroupStmtDnodeId3 = "DnodeId3";
7282
static const char* jkRedistributeVgroupStmtDnodes = "Dnodes";
7283

7284
static int32_t redistributeVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
7285
  const SRedistributeVgroupStmt* pNode = (const SRedistributeVgroupStmt*)pObj;
×
7286

7287
  int32_t code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtVgroupId, pNode->vgId);
×
7288
  if (TSDB_CODE_SUCCESS == code) {
×
7289
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId1, pNode->dnodeId1);
×
7290
  }
7291
  if (TSDB_CODE_SUCCESS == code) {
×
7292
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId2, pNode->dnodeId2);
×
7293
  }
7294
  if (TSDB_CODE_SUCCESS == code) {
×
7295
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId3, pNode->dnodeId3);
×
7296
  }
7297
  if (TSDB_CODE_SUCCESS == code) {
×
7298
    code = nodeListToJson(pJson, jkRedistributeVgroupStmtDnodes, pNode->pDnodes);
×
7299
  }
7300

7301
  return code;
×
7302
}
7303

7304
static int32_t jsonToRedistributeVgroupStmt(const SJson* pJson, void* pObj) {
×
7305
  SRedistributeVgroupStmt* pNode = (SRedistributeVgroupStmt*)pObj;
×
7306

7307
  int32_t code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtVgroupId, &pNode->vgId);
×
7308
  if (TSDB_CODE_SUCCESS == code) {
×
7309
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId1, &pNode->dnodeId1);
×
7310
  }
7311
  if (TSDB_CODE_SUCCESS == code) {
×
7312
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId2, &pNode->dnodeId2);
×
7313
  }
7314
  if (TSDB_CODE_SUCCESS == code) {
×
7315
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId3, &pNode->dnodeId3);
×
7316
  }
7317
  if (TSDB_CODE_SUCCESS == code) {
×
7318
    code = jsonToNodeList(pJson, jkRedistributeVgroupStmtDnodes, &pNode->pDnodes);
×
7319
  }
7320

7321
  return code;
×
7322
}
7323

7324
static const char* jkSplitVgroupStmtVgroupId = "VgroupId";
7325

7326
static int32_t splitVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
7327
  const SSplitVgroupStmt* pNode = (const SSplitVgroupStmt*)pObj;
×
7328
  return tjsonAddIntegerToObject(pJson, jkSplitVgroupStmtVgroupId, pNode->vgId);
×
7329
}
7330

7331
static int32_t jsonToSplitVgroupStmt(const SJson* pJson, void* pObj) {
×
7332
  SSplitVgroupStmt* pNode = (SSplitVgroupStmt*)pObj;
×
7333
  return tjsonGetIntValue(pJson, jkSplitVgroupStmtVgroupId, &pNode->vgId);
×
7334
}
7335

7336
static const char* jkGrantStmtUserName = "UserName";
7337
static const char* jkGrantStmtObjName = "ObjName";
7338
static const char* jkGrantStmtPrivileges = "Privileges";
7339

7340
static int32_t grantStmtToJson(const void* pObj, SJson* pJson) {
×
7341
  const SGrantStmt* pNode = (const SGrantStmt*)pObj;
×
7342

7343
  int32_t code = tjsonAddStringToObject(pJson, jkGrantStmtUserName, pNode->userName);
×
7344
  if (TSDB_CODE_SUCCESS == code) {
×
7345
    code = tjsonAddStringToObject(pJson, jkGrantStmtObjName, pNode->objName);
×
7346
  }
7347
  if (TSDB_CODE_SUCCESS == code) {
×
7348
    code = tjsonAddIntegerToObject(pJson, jkGrantStmtPrivileges, pNode->privileges);
×
7349
  }
7350

7351
  return code;
×
7352
}
7353

7354
static int32_t jsonToGrantStmt(const SJson* pJson, void* pObj) {
×
7355
  SGrantStmt* pNode = (SGrantStmt*)pObj;
×
7356

7357
  int32_t code = tjsonGetStringValue(pJson, jkGrantStmtUserName, pNode->userName);
×
7358
  if (TSDB_CODE_SUCCESS == code) {
×
7359
    code = tjsonGetStringValue(pJson, jkGrantStmtObjName, pNode->objName);
×
7360
  }
7361
  if (TSDB_CODE_SUCCESS == code) {
×
7362
    code = tjsonGetBigIntValue(pJson, jkGrantStmtPrivileges, &pNode->privileges);
×
7363
  }
7364

7365
  return code;
×
7366
}
7367

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

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

7372
static const char* jkShowStmtDbName = "DbName";
7373
static const char* jkShowStmtTbName = "TbName";
7374
static const char* jkShowStmtTableCondType = "TableCondType";
7375

7376
static int32_t showStmtToJson(const void* pObj, SJson* pJson) {
×
7377
  const SShowStmt* pNode = (const SShowStmt*)pObj;
×
7378

7379
  int32_t code = tjsonAddObject(pJson, jkShowStmtDbName, nodeToJson, pNode->pDbName);
×
7380
  if (TSDB_CODE_SUCCESS == code) {
×
7381
    code = tjsonAddObject(pJson, jkShowStmtTbName, nodeToJson, pNode->pTbName);
×
7382
  }
7383
  if (TSDB_CODE_SUCCESS == code) {
×
7384
    code = tjsonAddIntegerToObject(pJson, jkShowStmtTableCondType, pNode->tableCondType);
×
7385
  }
7386

7387
  return code;
×
7388
}
7389

7390
static int32_t jsonToShowStmt(const SJson* pJson, void* pObj) {
×
7391
  SShowStmt* pNode = (SShowStmt*)pObj;
×
7392

7393
  int32_t code = jsonToNodeObject(pJson, jkShowStmtDbName, &pNode->pDbName);
×
7394
  if (TSDB_CODE_SUCCESS == code) {
×
7395
    code = jsonToNodeObject(pJson, jkShowStmtTbName, &pNode->pTbName);
×
7396
  }
7397
  if (TSDB_CODE_SUCCESS == code) {
×
7398
    tjsonGetNumberValue(pJson, jkShowStmtTableCondType, pNode->tableCondType, code);
×
7399
  }
7400

7401
  return code;
×
7402
}
7403

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7492
static int32_t showUsageStmtStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7493
static int32_t  jsonToShowUsageStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7494

7495
static const char* jkShowDnodeVariablesStmtDnodeId = "DnodeId";
7496
static const char* jkShowDnodeVariablesStmtLikePattern = "LikePattern";
7497

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

7501
  int32_t code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtDnodeId, nodeToJson, pNode->pDnodeId);
×
7502
  if (TSDB_CODE_SUCCESS == code) {
×
7503
    code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtLikePattern, nodeToJson, pNode->pLikePattern);
×
7504
  }
7505

7506
  return code;
×
7507
}
7508

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

7512
  int32_t code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtDnodeId, &pNode->pDnodeId);
×
7513
  if (TSDB_CODE_SUCCESS == code) {
×
7514
    code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtLikePattern, &pNode->pLikePattern);
×
7515
  }
7516

7517
  return code;
×
7518
}
7519

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

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

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

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

7528
static const char* jkShowVnodesStmtDnodeId = "DnodeId";
7529
static const char* jkShowVnodesStmtDnodeEndpoint = "DnodeEndpoint";
7530

7531
static int32_t showVnodesStmtToJson(const void* pObj, SJson* pJson) {
×
7532
  const SShowVnodesStmt* pNode = (const SShowVnodesStmt*)pObj;
×
7533

7534
  int32_t code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeId, nodeToJson, pNode->pDnodeId);
×
7535
  if (TSDB_CODE_SUCCESS == code) {
×
7536
    code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeEndpoint, nodeToJson, pNode->pDnodeEndpoint);
×
7537
  }
7538

7539
  return code;
×
7540
}
7541

7542
static int32_t jsonToShowVnodesStmt(const SJson* pJson, void* pObj) {
×
7543
  SShowVnodesStmt* pNode = (SShowVnodesStmt*)pObj;
×
7544

7545
  int32_t code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeId, &pNode->pDnodeId);
×
7546
  if (TSDB_CODE_SUCCESS == code) {
×
7547
    code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeEndpoint, &pNode->pDnodeEndpoint);
×
7548
  }
7549

7550
  return code;
×
7551
}
7552

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

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

7557
static const char* jkShowCreateDatabaseStmtDbName = "DbName";
7558

7559
static int32_t showCreateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
7560
  const SShowCreateDatabaseStmt* pNode = (const SShowCreateDatabaseStmt*)pObj;
×
7561
  return tjsonAddStringToObject(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
×
7562
}
7563

7564
static int32_t jsonToShowCreateDatabaseStmt(const SJson* pJson, void* pObj) {
×
7565
  SShowCreateDatabaseStmt* pNode = (SShowCreateDatabaseStmt*)pObj;
×
7566
  return tjsonGetStringValue(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
×
7567
}
7568

7569
static const char* jkShowCreateTableStmtDbName = "DbName";
7570
static const char* jkShowCreateTableStmtTableName = "TableName";
7571

7572
static int32_t showCreateTableStmtToJson(const void* pObj, SJson* pJson) {
×
7573
  const SShowCreateTableStmt* pNode = (const SShowCreateTableStmt*)pObj;
×
7574

7575
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
×
7576
  if (TSDB_CODE_SUCCESS == code) {
×
7577
    code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
×
7578
  }
7579

7580
  return code;
×
7581
}
7582

7583
static int32_t jsonToShowCreateTableStmt(const SJson* pJson, void* pObj) {
×
7584
  SShowCreateTableStmt* pNode = (SShowCreateTableStmt*)pObj;
×
7585

7586
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
×
7587
  if (TSDB_CODE_SUCCESS == code) {
×
7588
    code = tjsonGetStringValue(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
×
7589
  }
7590

7591
  return code;
×
7592
}
7593

7594
static int32_t showCreateStableStmtToJson(const void* pObj, SJson* pJson) {
×
7595
  return showCreateTableStmtToJson(pObj, pJson);
×
7596
}
7597

7598
static int32_t jsonToShowCreateStableStmt(const SJson* pJson, void* pObj) {
×
7599
  return jsonToShowCreateTableStmt(pJson, pObj);
×
7600
}
7601

7602
static const char* jkShowCreateViewStmtDbName = "DbName";
7603
static const char* jkShowCreateViewStmtViewName = "ViewName";
7604

7605
static int32_t showCreateViewStmtToJson(const void* pObj, SJson* pJson) {
×
7606
  const SShowCreateViewStmt* pNode = (const SShowCreateViewStmt*)pObj;
×
7607

7608
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
7609
  if (TSDB_CODE_SUCCESS == code) {
×
7610
    code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
7611
  }
7612

7613
  return code;
×
7614
}
7615

7616
static int32_t jsonToShowCreateViewStmt(const SJson* pJson, void* pObj) {
×
7617
  SShowCreateViewStmt* pNode = (SShowCreateViewStmt*)pObj;
×
7618

7619
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
7620
  if (TSDB_CODE_SUCCESS == code) {
×
7621
    code = tjsonGetStringValue(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
7622
  }
7623

7624
  return code;
×
7625
}
7626

7627
static const char* jkShowTableDistributedStmtDbName = "DbName";
7628
static const char* jkShowTableDistributedStmtTableName = "TableName";
7629

7630
static int32_t showTableDistributedStmtToJson(const void* pObj, SJson* pJson) {
×
7631
  const SShowTableDistributedStmt* pNode = (const SShowTableDistributedStmt*)pObj;
×
7632

7633
  int32_t code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
×
7634
  if (TSDB_CODE_SUCCESS == code) {
×
7635
    code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
×
7636
  }
7637

7638
  return code;
×
7639
}
7640

7641
static int32_t jsonToShowTableDistributedStmt(const SJson* pJson, void* pObj) {
×
7642
  SShowTableDistributedStmt* pNode = (SShowTableDistributedStmt*)pObj;
×
7643

7644
  int32_t code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
×
7645
  if (TSDB_CODE_SUCCESS == code) {
×
7646
    code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
×
7647
  }
7648

7649
  return code;
×
7650
}
7651

7652
static int32_t showLocalVariablesStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7653

7654
static int32_t jsonToShowLocalVariablesStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7655

7656
static const char* jkShowTableTagsStmtDbName = "DbName";
7657
static const char* jkShowTableTagsStmtTbName = "TbName";
7658
static const char* jkShowTableTagsStmtTags = "Tags";
7659

7660
static int32_t showTableTagsStmtToJson(const void* pObj, SJson* pJson) {
×
7661
  const SShowTableTagsStmt* pNode = (const SShowTableTagsStmt*)pObj;
×
7662

7663
  int32_t code = tjsonAddObject(pJson, jkShowTableTagsStmtDbName, nodeToJson, pNode->pDbName);
×
7664
  if (TSDB_CODE_SUCCESS == code) {
×
7665
    code = tjsonAddObject(pJson, jkShowTableTagsStmtTbName, nodeToJson, pNode->pTbName);
×
7666
  }
7667
  if (TSDB_CODE_SUCCESS == code) {
×
7668
    code = nodeListToJson(pJson, jkShowTableTagsStmtTags, pNode->pTags);
×
7669
  }
7670

7671
  return code;
×
7672
}
7673

7674
static int32_t jsonToShowTableTagsStmt(const SJson* pJson, void* pObj) {
×
7675
  SShowTableTagsStmt* pNode = (SShowTableTagsStmt*)pObj;
×
7676

7677
  int32_t code = jsonToNodeObject(pJson, jkShowTableTagsStmtDbName, &pNode->pDbName);
×
7678
  if (TSDB_CODE_SUCCESS == code) {
×
7679
    code = jsonToNodeObject(pJson, jkShowTableTagsStmtTbName, &pNode->pTbName);
×
7680
  }
7681
  if (TSDB_CODE_SUCCESS == code) {
×
7682
    code = jsonToNodeList(pJson, jkShowTableTagsStmtTags, &pNode->pTags);
×
7683
  }
7684

7685
  return code;
×
7686
}
7687

7688
static const char* jkDeleteStmtFromTable = "FromTable";
7689
static const char* jkDeleteStmtWhere = "Where";
7690
static const char* jkDeleteStmtCountFunc = "CountFunc";
7691
static const char* jkDeleteStmtTagIndexCond = "TagIndexCond";
7692
static const char* jkDeleteStmtTimeRangeStartKey = "TimeRangeStartKey";
7693
static const char* jkDeleteStmtTimeRangeEndKey = "TimeRangeEndKey";
7694
static const char* jkDeleteStmtPrecision = "Precision";
7695
static const char* jkDeleteStmtDeleteZeroRows = "DeleteZeroRows";
7696

7697
static int32_t deleteStmtToJson(const void* pObj, SJson* pJson) {
×
7698
  const SDeleteStmt* pNode = (const SDeleteStmt*)pObj;
×
7699

7700
  int32_t code = tjsonAddObject(pJson, jkDeleteStmtFromTable, nodeToJson, pNode->pFromTable);
×
7701
  if (TSDB_CODE_SUCCESS == code) {
×
7702
    code = tjsonAddObject(pJson, jkDeleteStmtWhere, nodeToJson, pNode->pWhere);
×
7703
  }
7704
  if (TSDB_CODE_SUCCESS == code) {
×
7705
    code = tjsonAddObject(pJson, jkDeleteStmtCountFunc, nodeToJson, pNode->pCountFunc);
×
7706
  }
7707
  if (TSDB_CODE_SUCCESS == code) {
×
7708
    code = tjsonAddObject(pJson, jkDeleteStmtTagIndexCond, nodeToJson, pNode->pTagCond);
×
7709
  }
7710
  if (TSDB_CODE_SUCCESS == code) {
×
7711
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeStartKey, pNode->timeRange.skey);
×
7712
  }
7713
  if (TSDB_CODE_SUCCESS == code) {
×
7714
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeEndKey, pNode->timeRange.ekey);
×
7715
  }
7716
  if (TSDB_CODE_SUCCESS == code) {
×
7717
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtPrecision, pNode->precision);
×
7718
  }
7719
  if (TSDB_CODE_SUCCESS == code) {
×
7720
    code = tjsonAddBoolToObject(pJson, jkDeleteStmtDeleteZeroRows, pNode->deleteZeroRows);
×
7721
  }
7722

7723
  return code;
×
7724
}
7725

7726
static int32_t jsonToDeleteStmt(const SJson* pJson, void* pObj) {
×
7727
  SDeleteStmt* pNode = (SDeleteStmt*)pObj;
×
7728

7729
  int32_t code = jsonToNodeObject(pJson, jkDeleteStmtFromTable, &pNode->pFromTable);
×
7730
  if (TSDB_CODE_SUCCESS == code) {
×
7731
    code = jsonToNodeObject(pJson, jkDeleteStmtWhere, &pNode->pWhere);
×
7732
  }
7733
  if (TSDB_CODE_SUCCESS == code) {
×
7734
    code = jsonToNodeObject(pJson, jkDeleteStmtCountFunc, &pNode->pCountFunc);
×
7735
  }
7736
  if (TSDB_CODE_SUCCESS == code) {
×
7737
    code = jsonToNodeObject(pJson, jkDeleteStmtTagIndexCond, &pNode->pTagCond);
×
7738
  }
7739
  if (TSDB_CODE_SUCCESS == code) {
×
7740
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeStartKey, &pNode->timeRange.skey);
×
7741
  }
7742
  if (TSDB_CODE_SUCCESS == code) {
×
7743
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeEndKey, &pNode->timeRange.ekey);
×
7744
  }
7745
  if (TSDB_CODE_SUCCESS == code) {
×
7746
    code = tjsonGetUTinyIntValue(pJson, jkDeleteStmtPrecision, &pNode->precision);
×
7747
  }
7748
  if (TSDB_CODE_SUCCESS == code) {
×
7749
    code = tjsonGetBoolValue(pJson, jkDeleteStmtDeleteZeroRows, &pNode->deleteZeroRows);
×
7750
  }
7751

7752
  return code;
×
7753
}
7754

7755
static const char* jkInsertStmtTable = "Table";
7756
static const char* jkInsertStmtCols = "Cols";
7757
static const char* jkInsertStmtQuery = "Query";
7758
static const char* jkInsertStmtPrecision = "Precision";
7759

7760
static int32_t insertStmtToJson(const void* pObj, SJson* pJson) {
×
7761
  const SInsertStmt* pNode = (const SInsertStmt*)pObj;
×
7762

7763
  int32_t code = tjsonAddObject(pJson, jkInsertStmtTable, nodeToJson, pNode->pTable);
×
7764
  if (TSDB_CODE_SUCCESS == code) {
×
7765
    code = nodeListToJson(pJson, jkInsertStmtCols, pNode->pCols);
×
7766
  }
7767
  if (TSDB_CODE_SUCCESS == code) {
×
7768
    code = tjsonAddObject(pJson, jkInsertStmtQuery, nodeToJson, pNode->pQuery);
×
7769
  }
7770
  if (TSDB_CODE_SUCCESS == code) {
×
7771
    code = tjsonAddIntegerToObject(pJson, jkInsertStmtPrecision, pNode->precision);
×
7772
  }
7773

7774
  return code;
×
7775
}
7776

7777
static int32_t jsonToInsertStmt(const SJson* pJson, void* pObj) {
×
7778
  SInsertStmt* pNode = (SInsertStmt*)pObj;
×
7779

7780
  int32_t code = jsonToNodeObject(pJson, jkInsertStmtTable, &pNode->pTable);
×
7781
  if (TSDB_CODE_SUCCESS == code) {
×
7782
    code = jsonToNodeList(pJson, jkInsertStmtCols, &pNode->pCols);
×
7783
  }
7784
  if (TSDB_CODE_SUCCESS == code) {
×
7785
    code = jsonToNodeObject(pJson, jkInsertStmtQuery, &pNode->pQuery);
×
7786
  }
7787
  if (TSDB_CODE_SUCCESS == code) {
×
7788
    code = tjsonGetUTinyIntValue(pJson, jkInsertStmtPrecision, &pNode->precision);
×
7789
  }
7790

7791
  return code;
×
7792
}
7793

7794
static const char* jkTSMAOptionFuncs = "Funcs";
7795
static const char* jkTSMAOptionCols = "Cols";
7796
static const char* jkTSMAOptionInterval = "Interval";
7797
static const char* jkTSMAOptionTsPrecision = "Precision";
7798

7799
static int32_t tsmaOptionToJson(const void* pObj, SJson* pJson) {
×
7800
  const STSMAOptions* pNode = (const STSMAOptions*)pObj;
×
7801
  int32_t             code = nodeListToJson(pJson, jkTSMAOptionFuncs, pNode->pFuncs);
×
7802
  if (TSDB_CODE_SUCCESS == code) {
×
7803
    code = tjsonAddObject(pJson, jkTSMAOptionInterval, nodeToJson, pNode->pInterval);
×
7804
  }
7805
  if (TSDB_CODE_SUCCESS == code) {
×
7806
    code = tjsonAddIntegerToObject(pJson, jkTSMAOptionTsPrecision, pNode->tsPrecision);
×
7807
  }
7808
  return code;
×
7809
}
7810

7811
static int32_t jsonToTSMAOption(const SJson* pJson, void* pObj) {
×
7812
  STSMAOptions* pNode = (STSMAOptions*)pObj;
×
7813
  int32_t       code = jsonToNodeList(pJson, jkTSMAOptionFuncs, &pNode->pFuncs);
×
7814
  if (TSDB_CODE_SUCCESS == code) {
×
7815
    code = jsonToNodeObject(pJson, jkTSMAOptionInterval, &pNode->pInterval);
×
7816
  }
7817
  if (TSDB_CODE_SUCCESS == code) {
×
7818
    code = tjsonGetUTinyIntValue(pJson, jkTSMAOptionTsPrecision, &pNode->tsPrecision);
×
7819
  }
7820
  return code;
×
7821
}
7822

7823
static const char* jkCreateTSMAStmtIgnoreExists = "IgnoreExists";
7824
static const char* jkCreateTSMAStmtTsmaName = "TSMAName";
7825
static const char* jkCreateTSMAStmtDbName = "DbName";
7826
static const char* jkCreateTSMAStmtTableName = "TableName";
7827
static const char* jkCreateTSMAStmtpOptions = "Options";
7828

7829
static int32_t createTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
7830
  const SCreateTSMAStmt* pNode = (const SCreateTSMAStmt*)pObj;
×
7831
  int32_t                code = tjsonAddBoolToObject(pJson, jkCreateTSMAStmtIgnoreExists, pNode->ignoreExists);
×
7832
  if (TSDB_CODE_SUCCESS == code) {
×
7833
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
7834
  }
7835
  if (TSDB_CODE_SUCCESS == code) {
×
7836
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
7837
  }
7838
  if (TSDB_CODE_SUCCESS == code) {
×
7839
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
7840
  }
7841
  if (TSDB_CODE_SUCCESS == code) {
×
7842
    code = tjsonAddObject(pJson, jkCreateTSMAStmtpOptions, nodeToJson, pNode->pOptions);
×
7843
  }
7844
  return code;
×
7845
}
7846

7847
static int32_t jsonToCreateTSMAStmt(const SJson* pJson, void* pObj) {
×
7848
  SCreateTSMAStmt* pNode = (SCreateTSMAStmt*)pObj;
×
7849
  int32_t          code = tjsonGetBoolValue(pJson, jkCreateTSMAStmtIgnoreExists, &pNode->ignoreExists);
×
7850
  if (TSDB_CODE_SUCCESS == code) {
×
7851
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
7852
  }
7853
  if (TSDB_CODE_SUCCESS == code) {
×
7854
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
7855
  }
7856
  if (TSDB_CODE_SUCCESS == code) {
×
7857
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
7858
  }
7859
  if (TSDB_CODE_SUCCESS == code) {
×
7860
    code = jsonToNodeObject(pJson, jkCreateTSMAStmtpOptions, (SNode**)&pNode->pOptions);
×
7861
  }
7862
  return code;
×
7863
}
7864

7865
static const char* jkDropTSMAStmtIgnoreNotExists = "IgnoreNotExists";
7866
static const char* jkDropTSMAStmtDbName = "DbName";
7867
static const char* jkDropTSMAStmtTsmaName = "TSMAName";
7868

7869
static int32_t dropTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
7870
  const SDropTSMAStmt* pNode = (const SDropTSMAStmt*)pObj;
×
7871
  int32_t              code = tjsonAddBoolToObject(pJson, jkDropTSMAStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7872
  if (TSDB_CODE_SUCCESS == code) {
×
7873
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
7874
  }
7875
  if (TSDB_CODE_SUCCESS == code) {
×
7876
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
7877
  }
7878
  return code;
×
7879
}
7880

7881
static int32_t jsonToDropTSMAStmt(const SJson* pJson, void* pObj) {
×
7882
  SDropTSMAStmt* pNode = (SDropTSMAStmt*)pObj;
×
7883
  int32_t        code = tjsonGetBoolValue(pJson, jkDropTSMAStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7884
  if (TSDB_CODE_SUCCESS == code) {
×
7885
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
7886
  }
7887
  if (TSDB_CODE_SUCCESS == code) {
×
7888
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
7889
  }
7890
  return code;
×
7891
}
7892

7893
static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
2,470,639✔
7894
  switch (nodeType(pObj)) {
2,470,639!
7895
    case QUERY_NODE_COLUMN:
730,442✔
7896
      return columnNodeToJson(pObj, pJson);
730,442✔
7897
    case QUERY_NODE_VALUE:
60,316✔
7898
      return valueNodeToJson(pObj, pJson);
60,316✔
7899
    case QUERY_NODE_OPERATOR:
6,513✔
7900
      return operatorNodeToJson(pObj, pJson);
6,513✔
7901
    case QUERY_NODE_LOGIC_CONDITION:
1,871✔
7902
      return logicConditionNodeToJson(pObj, pJson);
1,871✔
7903
    case QUERY_NODE_FUNCTION:
362,818✔
7904
      return functionNodeToJson(pObj, pJson);
362,818✔
7905
    case QUERY_NODE_REAL_TABLE:
1,456✔
7906
      return realTableNodeToJson(pObj, pJson);
1,456✔
7907
    case QUERY_NODE_TEMP_TABLE:
×
7908
      return tempTableNodeToJson(pObj, pJson);
×
7909
    case QUERY_NODE_JOIN_TABLE:
×
7910
      return joinTableNodeToJson(pObj, pJson);
×
7911
    case QUERY_NODE_GROUPING_SET:
×
7912
      return groupingSetNodeToJson(pObj, pJson);
×
7913
    case QUERY_NODE_ORDER_BY_EXPR:
×
7914
      return orderByExprNodeToJson(pObj, pJson);
×
7915
    case QUERY_NODE_LIMIT:
×
7916
      return limitNodeToJson(pObj, pJson);
×
7917
    case QUERY_NODE_STATE_WINDOW:
60✔
7918
      return stateWindowNodeToJson(pObj, pJson);
60✔
7919
    case QUERY_NODE_SESSION_WINDOW:
92✔
7920
      return sessionWindowNodeToJson(pObj, pJson);
92✔
7921
    case QUERY_NODE_INTERVAL_WINDOW:
706✔
7922
      return intervalWindowNodeToJson(pObj, pJson);
706✔
7923
    case QUERY_NODE_NODE_LIST:
2,879✔
7924
      return nodeListNodeToJson(pObj, pJson);
2,879✔
7925
    case QUERY_NODE_FILL:
156✔
7926
      return fillNodeToJson(pObj, pJson);
156✔
7927
    case QUERY_NODE_RAW_EXPR:
×
7928
      break;
×
7929
    case QUERY_NODE_TARGET:
616,174✔
7930
      return targetNodeToJson(pObj, pJson);
616,174✔
7931
    case QUERY_NODE_DATABLOCK_DESC:
28,129✔
7932
      return dataBlockDescNodeToJson(pObj, pJson);
28,129✔
7933
    case QUERY_NODE_SLOT_DESC:
615,527✔
7934
      return slotDescNodeToJson(pObj, pJson);
615,527✔
7935
    case QUERY_NODE_COLUMN_DEF:
×
7936
      return columnDefNodeToJson(pObj, pJson);
×
7937
    case QUERY_NODE_DOWNSTREAM_SOURCE:
×
7938
      return downstreamSourceNodeToJson(pObj, pJson);
×
7939
    case QUERY_NODE_DATABASE_OPTIONS:
×
7940
      return databaseOptionsToJson(pObj, pJson);
×
7941
    case QUERY_NODE_TABLE_OPTIONS:
×
7942
      return tableOptionsToJson(pObj, pJson);
×
7943
    case QUERY_NODE_COLUMN_OPTIONS:
×
7944
      return columnOptionsToJson(pObj, pJson);
×
7945
    case QUERY_NODE_INDEX_OPTIONS:
×
7946
      return indexOptionsToJson(pObj, pJson);
×
7947
    case QUERY_NODE_EXPLAIN_OPTIONS:
×
7948
      return explainOptionsToJson(pObj, pJson);
×
7949
    case QUERY_NODE_STREAM_OPTIONS:
×
7950
      return streamOptionsToJson(pObj, pJson);
×
7951
    case QUERY_NODE_LEFT_VALUE:
×
7952
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to serialize.
×
7953
    case QUERY_NODE_WHEN_THEN:
85✔
7954
      return whenThenNodeToJson(pObj, pJson);
85✔
7955
    case QUERY_NODE_CASE_WHEN:
85✔
7956
      return caseWhenNodeToJson(pObj, pJson);
85✔
7957
    case QUERY_NODE_EVENT_WINDOW:
9✔
7958
      return eventWindowNodeToJson(pObj, pJson);
9✔
7959
    case QUERY_NODE_WINDOW_OFFSET:
×
7960
      return windowOffsetNodeToJson(pObj, pJson);
×
7961
    case QUERY_NODE_COUNT_WINDOW:
13✔
7962
      return countWindowNodeToJson(pObj, pJson);
13✔
7963
    case QUERY_NODE_ANOMALY_WINDOW:
×
7964
      return anomalyWindowNodeToJson(pObj, pJson);
×
7965
    case QUERY_NODE_SET_OPERATOR:
×
7966
      return setOperatorToJson(pObj, pJson);
×
7967
    case QUERY_NODE_SELECT_STMT:
1,456✔
7968
      return selectStmtToJson(pObj, pJson);
1,456✔
7969
    case QUERY_NODE_VNODE_MODIFY_STMT:
×
7970
      return vnodeModifyStmtToJson(pObj, pJson);
×
7971
    case QUERY_NODE_CREATE_DATABASE_STMT:
×
7972
      return createDatabaseStmtToJson(pObj, pJson);
×
7973
    case QUERY_NODE_ALTER_DATABASE_STMT:
×
7974
      return alterDatabaseStmtToJson(pObj, pJson);
×
7975
    case QUERY_NODE_TRIM_DATABASE_STMT:
×
7976
      return trimDatabaseStmtToJson(pObj, pJson);
×
7977
    case QUERY_NODE_S3MIGRATE_DATABASE_STMT:
×
7978
      return s3migrateDatabaseStmtToJson(pObj, pJson);
×
7979
    case QUERY_NODE_CREATE_TABLE_STMT:
×
7980
      return createTableStmtToJson(pObj, pJson);
×
7981
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
×
7982
      return createSubTableClauseToJson(pObj, pJson);
×
7983
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
×
7984
      return createMultiTablesStmtToJson(pObj, pJson);
×
7985
    case QUERY_NODE_DROP_TABLE_CLAUSE:
×
7986
      return dropTableClauseToJson(pObj, pJson);
×
7987
    case QUERY_NODE_DROP_TABLE_STMT:
×
7988
      return dropTableStmtToJson(pObj, pJson);
×
7989
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
×
7990
      return dropStableStmtToJson(pObj, pJson);
×
7991
    case QUERY_NODE_ALTER_TABLE_STMT:
×
7992
      return alterTableStmtToJson(pObj, pJson);
×
7993
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
×
7994
      return alterStableStmtToJson(pObj, pJson);
×
7995
    case QUERY_NODE_CREATE_USER_STMT:
×
7996
      return createUserStmtToJson(pObj, pJson);
×
7997
    case QUERY_NODE_ALTER_USER_STMT:
×
7998
      return alterUserStmtToJson(pObj, pJson);
×
7999
    case QUERY_NODE_DROP_USER_STMT:
×
8000
      return dropUserStmtToJson(pObj, pJson);
×
8001
    case QUERY_NODE_USE_DATABASE_STMT:
×
8002
      return useDatabaseStmtToJson(pObj, pJson);
×
8003
    case QUERY_NODE_CREATE_DNODE_STMT:
×
8004
      return createDnodeStmtToJson(pObj, pJson);
×
8005
    case QUERY_NODE_DROP_DNODE_STMT:
×
8006
      return dropDnodeStmtToJson(pObj, pJson);
×
8007
    case QUERY_NODE_ALTER_DNODE_STMT:
×
8008
      return alterDnodeStmtToJson(pObj, pJson);
×
8009
    case QUERY_NODE_CREATE_INDEX_STMT:
×
8010
      return createIndexStmtToJson(pObj, pJson);
×
8011
    case QUERY_NODE_DROP_INDEX_STMT:
×
8012
      return dropIndexStmtToJson(pObj, pJson);
×
8013
    case QUERY_NODE_CREATE_QNODE_STMT:
×
8014
      return createQnodeStmtToJson(pObj, pJson);
×
8015
    case QUERY_NODE_DROP_QNODE_STMT:
×
8016
      return dropQnodeStmtToJson(pObj, pJson);
×
8017
    case QUERY_NODE_CREATE_ANODE_STMT:
×
8018
      return createAnodeStmtToJson(pObj, pJson);
×
8019
    case QUERY_NODE_DROP_ANODE_STMT:
×
8020
      return dropAnodeStmtToJson(pObj, pJson);
×
8021
    case QUERY_NODE_UPDATE_ANODE_STMT:
×
8022
      return updateAnodeStmtToJson(pObj, pJson);
×
8023
    case QUERY_NODE_CREATE_SNODE_STMT:
×
8024
      return createSnodeStmtToJson(pObj, pJson);
×
8025
    case QUERY_NODE_DROP_SNODE_STMT:
×
8026
      return dropSnodeStmtToJson(pObj, pJson);
×
8027
    case QUERY_NODE_CREATE_MNODE_STMT:
×
8028
      return createMnodeStmtToJson(pObj, pJson);
×
8029
    case QUERY_NODE_DROP_MNODE_STMT:
×
8030
      return dropMnodeStmtToJson(pObj, pJson);
×
8031
    case QUERY_NODE_CREATE_TOPIC_STMT:
×
8032
      return createTopicStmtToJson(pObj, pJson);
×
8033
    case QUERY_NODE_DROP_TOPIC_STMT:
×
8034
      return dropTopicStmtToJson(pObj, pJson);
×
8035
    case QUERY_NODE_DROP_CGROUP_STMT:
×
8036
      return dropConsumerGroupStmtToJson(pObj, pJson);
×
8037
    case QUERY_NODE_ALTER_LOCAL_STMT:
×
8038
      return alterLocalStmtToJson(pObj, pJson);
×
8039
    case QUERY_NODE_EXPLAIN_STMT:
×
8040
      return explainStmtToJson(pObj, pJson);
×
8041
    case QUERY_NODE_DESCRIBE_STMT:
×
8042
      return describeStmtToJson(pObj, pJson);
×
8043
    case QUERY_NODE_COMPACT_DATABASE_STMT:
×
8044
      return compactDatabaseStmtToJson(pObj, pJson);
×
8045
    case QUERY_NODE_CREATE_STREAM_STMT:
×
8046
      return createStreamStmtToJson(pObj, pJson);
×
8047
    case QUERY_NODE_DROP_STREAM_STMT:
×
8048
      return dropStreamStmtToJson(pObj, pJson);
×
8049
    case QUERY_NODE_BALANCE_VGROUP_STMT:
×
8050
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to serialize.
×
8051
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
×
8052
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to serialize.
×
8053
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
8054
      return TSDB_CODE_SUCCESS;
×
8055
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
8056
      return mergeVgroupStmtToJson(pObj, pJson);
×
8057
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
×
8058
      return redistributeVgroupStmtToJson(pObj, pJson);
×
8059
    case QUERY_NODE_SPLIT_VGROUP_STMT:
×
8060
      return splitVgroupStmtToJson(pObj, pJson);
×
8061
    case QUERY_NODE_GRANT_STMT:
×
8062
      return grantStmtToJson(pObj, pJson);
×
8063
    case QUERY_NODE_REVOKE_STMT:
×
8064
      return revokeStmtToJson(pObj, pJson);
×
8065
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
8066
      return alterClusterStmtToJson(pObj, pJson);
×
8067
    case QUERY_NODE_SHOW_DNODES_STMT:
×
8068
      return showDnodesStmtToJson(pObj, pJson);
×
8069
    case QUERY_NODE_SHOW_MNODES_STMT:
×
8070
      return showMnodesStmtToJson(pObj, pJson);
×
8071
    case QUERY_NODE_SHOW_QNODES_STMT:
×
8072
      return showQnodesStmtToJson(pObj, pJson);
×
8073
    case QUERY_NODE_SHOW_ANODES_STMT:
×
8074
      return showAnodesStmtToJson(pObj, pJson);
×
8075
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
8076
      return showAnodesFullStmtToJson(pObj, pJson);
×
8077
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
8078
      return showArbGroupsStmtToJson(pObj, pJson);
×
8079
    case QUERY_NODE_SHOW_CLUSTER_STMT:
×
8080
      return showClusterStmtToJson(pObj, pJson);
×
8081
    case QUERY_NODE_SHOW_DATABASES_STMT:
×
8082
      return showDatabasesStmtToJson(pObj, pJson);
×
8083
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
×
8084
      return showFunctionsStmtToJson(pObj, pJson);
×
8085
    case QUERY_NODE_SHOW_INDEXES_STMT:
×
8086
      return showIndexesStmtToJson(pObj, pJson);
×
8087
    case QUERY_NODE_SHOW_STABLES_STMT:
×
8088
      return showStablesStmtToJson(pObj, pJson);
×
8089
    case QUERY_NODE_SHOW_STREAMS_STMT:
×
8090
      return showStreamsStmtToJson(pObj, pJson);
×
8091
    case QUERY_NODE_SHOW_TABLES_STMT:
×
8092
      return showTablesStmtToJson(pObj, pJson);
×
8093
    case QUERY_NODE_SHOW_TAGS_STMT:
×
8094
      return showTagsStmtToJson(pObj, pJson);
×
8095
    case QUERY_NODE_SHOW_USERS_STMT:
×
8096
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
8097
      return showUsersStmtToJson(pObj, pJson);
×
8098
    case QUERY_NODE_SHOW_VGROUPS_STMT:
×
8099
      return showVgroupsStmtToJson(pObj, pJson);
×
8100
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
×
8101
      return showConsumersStmtToJson(pObj, pJson);
×
8102
    case QUERY_NODE_SHOW_VARIABLES_STMT:
×
8103
      return showVariablesStmtToJson(pObj, pJson);
×
8104
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
8105
      return showGrantsFullStmtToJson(pObj, pJson);
×
8106
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
8107
      return showGrantsLogsStmtToJson(pObj, pJson);
×
8108
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
8109
      return showClusterMachinesStmtToJson(pObj, pJson);
×
8110
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
8111
      return showEncryptionsStmtToJson(pObj, pJson);
×
8112
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
×
8113
      return showDnodeVariablesStmtToJson(pObj, pJson);
×
8114
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
×
8115
      return showTransactionsStmtToJson(pObj, pJson);
×
8116
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
×
8117
      return showSubscriptionsStmtToJson(pObj, pJson);
×
8118
    case QUERY_NODE_SHOW_VNODES_STMT:
×
8119
      return showVnodesStmtToJson(pObj, pJson);
×
8120
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
×
8121
      return showUserPrivilegesStmtToJson(pObj, pJson);
×
8122
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
×
8123
      return showCreateDatabaseStmtToJson(pObj, pJson);
×
8124
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
×
8125
      return showCreateTableStmtToJson(pObj, pJson);
×
8126
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
×
8127
      return showCreateStableStmtToJson(pObj, pJson);
×
8128
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
8129
      return showCreateViewStmtToJson(pObj, pJson);
×
8130
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
×
8131
      return showTableDistributedStmtToJson(pObj, pJson);
×
8132
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
×
8133
      return showLocalVariablesStmtToJson(pObj, pJson);
×
8134
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
×
8135
      return showTableTagsStmtToJson(pObj, pJson);
×
8136
    case QUERY_NODE_SHOW_USAGE_STMT:
×
8137
      return showUsageStmtStmtToJson(pObj, pJson);
×
8138
    case QUERY_NODE_DELETE_STMT:
×
8139
      return deleteStmtToJson(pObj, pJson);
×
8140
    case QUERY_NODE_INSERT_STMT:
×
8141
      return insertStmtToJson(pObj, pJson);
×
8142
    case QUERY_NODE_LOGIC_PLAN_SCAN:
×
8143
      return logicScanNodeToJson(pObj, pJson);
×
8144
    case QUERY_NODE_LOGIC_PLAN_JOIN:
×
8145
      return logicJoinNodeToJson(pObj, pJson);
×
8146
    case QUERY_NODE_LOGIC_PLAN_AGG:
×
8147
      return logicAggNodeToJson(pObj, pJson);
×
8148
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
×
8149
      return logicProjectNodeToJson(pObj, pJson);
×
8150
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
×
8151
      return logicVnodeModifyNodeToJson(pObj, pJson);
×
8152
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
×
8153
      return logicExchangeNodeToJson(pObj, pJson);
×
8154
    case QUERY_NODE_LOGIC_PLAN_MERGE:
×
8155
      return logicMergeNodeToJson(pObj, pJson);
×
8156
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
×
8157
      return logicWindowNodeToJson(pObj, pJson);
×
8158
    case QUERY_NODE_LOGIC_PLAN_FILL:
×
8159
      return logicFillNodeToJson(pObj, pJson);
×
8160
    case QUERY_NODE_LOGIC_PLAN_SORT:
×
8161
      return logicSortNodeToJson(pObj, pJson);
×
8162
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
×
8163
      return logicPartitionNodeToJson(pObj, pJson);
×
8164
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
×
8165
      return logicIndefRowsFuncNodeToJson(pObj, pJson);
×
8166
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
×
8167
      return logicInterpFuncNodeToJson(pObj, pJson);
×
8168
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
8169
      return logicForecastFuncNodeToJson(pObj, pJson);
×
8170
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
8171
      return logicGroupCacheNodeToJson(pObj, pJson);
×
8172
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
8173
      return logicDynQueryCtrlNodeToJson(pObj, pJson);
×
8174
    case QUERY_NODE_LOGIC_SUBPLAN:
×
8175
      return logicSubplanToJson(pObj, pJson);
×
8176
    case QUERY_NODE_LOGIC_PLAN:
×
8177
      return logicPlanToJson(pObj, pJson);
×
8178
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
3✔
8179
      return physiTagScanNodeToJson(pObj, pJson);
3✔
8180
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
×
8181
      return physiScanNodeToJson(pObj, pJson);
×
8182
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
×
8183
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
8184
      return physiLastRowScanNodeToJson(pObj, pJson);
×
8185
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
11,726✔
8186
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
8187
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
8188
      return physiTableScanNodeToJson(pObj, pJson);
11,726✔
8189
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
×
8190
      return physiSysTableScanNodeToJson(pObj, pJson);
×
8191
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
7,269✔
8192
      return physiProjectNodeToJson(pObj, pJson);
7,269✔
8193
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
×
8194
      return physiMergeJoinNodeToJson(pObj, pJson);
×
8195
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
8196
      return physiHashJoinNodeToJson(pObj, pJson);
×
8197
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
48✔
8198
      return physiAggNodeToJson(pObj, pJson);
48✔
8199
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
×
8200
      return physiExchangeNodeToJson(pObj, pJson);
×
8201
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
×
8202
      return physiMergeNodeToJson(pObj, pJson);
×
8203
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
×
8204
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
8205
      return physiSortNodeToJson(pObj, pJson);
×
8206
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
4,941✔
8207
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
8208
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
8209
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
8210
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
8211
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
8212
      return physiIntervalNodeToJson(pObj, pJson);
4,941✔
8213
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
647✔
8214
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
8215
      return physiFillNodeToJson(pObj, pJson);
647✔
8216
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
966✔
8217
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
8218
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
8219
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
8220
      return physiSessionWindowNodeToJson(pObj, pJson);
966✔
8221
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
427✔
8222
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
8223
      return physiStateWindowNodeToJson(pObj, pJson);
427✔
8224
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
261✔
8225
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
8226
      return physiEventWindowNodeToJson(pObj, pJson);
261✔
8227
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
366✔
8228
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
8229
      return physiCountWindowNodeToJson(pObj, pJson);
366✔
8230
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
8231
      return physiAnomalyWindowNodeToJson(pObj, pJson);
×
8232
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
×
8233
      return physiPartitionNodeToJson(pObj, pJson);
×
8234
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
1,435✔
8235
      return physiStreamPartitionNodeToJson(pObj, pJson);
1,435✔
8236
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
×
8237
      return physiIndefRowsFuncNodeToJson(pObj, pJson);
×
8238
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
40✔
8239
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
8240
      return physiInterpFuncNodeToJson(pObj, pJson);
40✔
8241
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
8242
      return physiForecastFuncNodeToJson(pObj, pJson);
×
8243
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
×
8244
      return physiDispatchNodeToJson(pObj, pJson);
×
8245
    case QUERY_NODE_PHYSICAL_PLAN_INSERT:
×
8246
      break;
×
8247
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
×
8248
      return physiQueryInsertNodeToJson(pObj, pJson);
×
8249
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
×
8250
      return physiDeleteNodeToJson(pObj, pJson);
×
8251
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
8252
      return physiGroupCacheNodeToJson(pObj, pJson);
×
8253
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
8254
      return physiDynQueryCtrlNodeToJson(pObj, pJson);
×
8255
    case QUERY_NODE_PHYSICAL_SUBPLAN:
11,729✔
8256
      return subplanToJson(pObj, pJson);
11,729✔
8257
    case QUERY_NODE_PHYSICAL_PLAN:
1,994✔
8258
      return planToJson(pObj, pJson);
1,994✔
8259
    default:
×
8260
      break;
×
8261
  }
8262
  nodesWarn("specificNodeToJson unknown node = %s", nodesNodeName(nodeType(pObj)));
×
8263
  return TSDB_CODE_SUCCESS;
×
8264
}
8265

8266
static int32_t jsonToSpecificNode(const SJson* pJson, void* pObj) {
3,531,256✔
8267
  switch (nodeType(pObj)) {
3,531,256!
8268
    case QUERY_NODE_COLUMN:
1,234,606✔
8269
      return jsonToColumnNode(pJson, pObj);
1,234,606✔
8270
    case QUERY_NODE_VALUE:
92,250✔
8271
      return jsonToValueNode(pJson, pObj);
92,250✔
8272
    case QUERY_NODE_OPERATOR:
16,451✔
8273
      return jsonToOperatorNode(pJson, pObj);
16,451✔
8274
    case QUERY_NODE_LOGIC_CONDITION:
6,414✔
8275
      return jsonToLogicConditionNode(pJson, pObj);
6,414✔
8276
    case QUERY_NODE_FUNCTION:
836,362✔
8277
      return jsonToFunctionNode(pJson, pObj);
836,362✔
8278
    case QUERY_NODE_REAL_TABLE:
10,959✔
8279
      return jsonToRealTableNode(pJson, pObj);
10,959✔
8280
    case QUERY_NODE_TEMP_TABLE:
×
8281
      return jsonToTempTableNode(pJson, pObj);
×
8282
    case QUERY_NODE_JOIN_TABLE:
×
8283
      return jsonToJoinTableNode(pJson, pObj);
×
8284
    case QUERY_NODE_GROUPING_SET:
×
8285
      return jsonToGroupingSetNode(pJson, pObj);
×
8286
    case QUERY_NODE_ORDER_BY_EXPR:
×
8287
      return jsonToOrderByExprNode(pJson, pObj);
×
8288
    case QUERY_NODE_LIMIT:
×
8289
      return jsonToLimitNode(pJson, pObj);
×
8290
    case QUERY_NODE_STATE_WINDOW:
2,046✔
8291
      return jsonToStateWindowNode(pJson, pObj);
2,046✔
8292
    case QUERY_NODE_SESSION_WINDOW:
198✔
8293
      return jsonToSessionWindowNode(pJson, pObj);
198✔
8294
    case QUERY_NODE_INTERVAL_WINDOW:
6,815✔
8295
      return jsonToIntervalWindowNode(pJson, pObj);
6,815✔
8296
    case QUERY_NODE_NODE_LIST:
3,046✔
8297
      return jsonToNodeListNode(pJson, pObj);
3,046✔
8298
    case QUERY_NODE_FILL:
219✔
8299
      return jsonToFillNode(pJson, pObj);
219✔
8300
    case QUERY_NODE_TARGET:
621,975✔
8301
      return jsonToTargetNode(pJson, pObj);
621,975✔
8302
    case QUERY_NODE_DATABLOCK_DESC:
28,021✔
8303
      return jsonToDataBlockDescNode(pJson, pObj);
28,021✔
8304
    case QUERY_NODE_SLOT_DESC:
621,226✔
8305
      return jsonToSlotDescNode(pJson, pObj);
621,226✔
8306
    case QUERY_NODE_COLUMN_DEF:
×
8307
      return jsonToColumnDefNode(pJson, pObj);
×
8308
    case QUERY_NODE_DOWNSTREAM_SOURCE:
×
8309
      return jsonToDownstreamSourceNode(pJson, pObj);
×
8310
    case QUERY_NODE_DATABASE_OPTIONS:
×
8311
      return jsonToDatabaseOptions(pJson, pObj);
×
8312
    case QUERY_NODE_TABLE_OPTIONS:
×
8313
      return jsonToTableOptions(pJson, pObj);
×
8314
    case QUERY_NODE_COLUMN_OPTIONS:
×
8315
      return jsonToColumnOptions(pJson, pObj);
×
8316
    case QUERY_NODE_INDEX_OPTIONS:
×
8317
      return jsonToIndexOptions(pJson, pObj);
×
8318
    case QUERY_NODE_EXPLAIN_OPTIONS:
×
8319
      return jsonToExplainOptions(pJson, pObj);
×
8320
    case QUERY_NODE_STREAM_OPTIONS:
×
8321
      return jsonToStreamOptions(pJson, pObj);
×
8322
    case QUERY_NODE_LEFT_VALUE:
×
8323
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to deserialize.
×
8324
    case QUERY_NODE_WHEN_THEN:
95✔
8325
      return jsonToWhenThenNode(pJson, pObj);
95✔
8326
    case QUERY_NODE_CASE_WHEN:
95✔
8327
      return jsonToCaseWhenNode(pJson, pObj);
95✔
8328
    case QUERY_NODE_EVENT_WINDOW:
50✔
8329
      return jsonToEventWindowNode(pJson, pObj);
50✔
8330
    case QUERY_NODE_WINDOW_OFFSET:
×
8331
      return jsonToWindowOffsetNode(pJson, pObj);
×
8332
    case QUERY_NODE_COUNT_WINDOW:
76✔
8333
      return jsonToCountWindowNode(pJson, pObj);
76✔
8334
    case QUERY_NODE_ANOMALY_WINDOW:
×
8335
      return jsonToAnomalyWindowNode(pJson, pObj);
×
8336
    case QUERY_NODE_SET_OPERATOR:
×
8337
      return jsonToSetOperator(pJson, pObj);
×
8338
    case QUERY_NODE_SELECT_STMT:
10,959✔
8339
      return jsonToSelectStmt(pJson, pObj);
10,959✔
8340
    case QUERY_NODE_VNODE_MODIFY_STMT:
×
8341
      return jsonToVnodeModifyStmt(pJson, pObj);
×
8342
    case QUERY_NODE_CREATE_DATABASE_STMT:
×
8343
      return jsonToCreateDatabaseStmt(pJson, pObj);
×
8344
    case QUERY_NODE_ALTER_DATABASE_STMT:
×
8345
      return jsonToAlterDatabaseStmt(pJson, pObj);
×
8346
    case QUERY_NODE_TRIM_DATABASE_STMT:
×
8347
      return jsonToTrimDatabaseStmt(pJson, pObj);
×
8348
    case QUERY_NODE_S3MIGRATE_DATABASE_STMT:
×
8349
      return jsonToS3MigrateDatabaseStmt(pJson, pObj);
×
8350
    case QUERY_NODE_CREATE_TABLE_STMT:
×
8351
      return jsonToCreateTableStmt(pJson, pObj);
×
8352
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
×
8353
      return jsonToCreateSubTableClause(pJson, pObj);
×
8354
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
×
8355
      return jsonToCreateMultiTablesStmt(pJson, pObj);
×
8356
    case QUERY_NODE_DROP_TABLE_CLAUSE:
×
8357
      return jsonToDropTableClause(pJson, pObj);
×
8358
    case QUERY_NODE_DROP_TABLE_STMT:
×
8359
      return jsonToDropTableStmt(pJson, pObj);
×
8360
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
×
8361
      return jsonToDropStableStmt(pJson, pObj);
×
8362
    case QUERY_NODE_ALTER_TABLE_STMT:
×
8363
      return jsonToAlterTableStmt(pJson, pObj);
×
8364
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
×
8365
      return jsonToAlterStableStmt(pJson, pObj);
×
8366
    case QUERY_NODE_CREATE_USER_STMT:
×
8367
      return jsonToCreateUserStmt(pJson, pObj);
×
8368
    case QUERY_NODE_ALTER_USER_STMT:
×
8369
      return jsonToAlterUserStmt(pJson, pObj);
×
8370
    case QUERY_NODE_DROP_USER_STMT:
×
8371
      return jsonToDropUserStmt(pJson, pObj);
×
8372
    case QUERY_NODE_USE_DATABASE_STMT:
×
8373
      return jsonToUseDatabaseStmt(pJson, pObj);
×
8374
    case QUERY_NODE_CREATE_DNODE_STMT:
×
8375
      return jsonToCreateDnodeStmt(pJson, pObj);
×
8376
    case QUERY_NODE_DROP_DNODE_STMT:
×
8377
      return jsonToDropDnodeStmt(pJson, pObj);
×
8378
    case QUERY_NODE_ALTER_DNODE_STMT:
×
8379
      return jsonToAlterDnodeStmt(pJson, pObj);
×
8380
    case QUERY_NODE_CREATE_INDEX_STMT:
×
8381
      return jsonToCreateIndexStmt(pJson, pObj);
×
8382
    case QUERY_NODE_DROP_INDEX_STMT:
×
8383
      return jsonToDropIndexStmt(pJson, pObj);
×
8384
    case QUERY_NODE_CREATE_QNODE_STMT:
×
8385
      return jsonToCreateQnodeStmt(pJson, pObj);
×
8386
    case QUERY_NODE_DROP_QNODE_STMT:
×
8387
      return jsonToDropQnodeStmt(pJson, pObj);
×
8388
    case QUERY_NODE_CREATE_SNODE_STMT:
×
8389
      return jsonToCreateSnodeStmt(pJson, pObj);
×
8390
    case QUERY_NODE_DROP_SNODE_STMT:
×
8391
      return jsonToDropSnodeStmt(pJson, pObj);
×
8392
    case QUERY_NODE_CREATE_MNODE_STMT:
×
8393
      return jsonToCreateMnodeStmt(pJson, pObj);
×
8394
    case QUERY_NODE_DROP_MNODE_STMT:
×
8395
      return jsonToDropMnodeStmt(pJson, pObj);
×
8396
    case QUERY_NODE_CREATE_TOPIC_STMT:
×
8397
      return jsonToCreateTopicStmt(pJson, pObj);
×
8398
    case QUERY_NODE_DROP_TOPIC_STMT:
×
8399
      return jsonToDropTopicStmt(pJson, pObj);
×
8400
    case QUERY_NODE_DROP_CGROUP_STMT:
×
8401
      return jsonToDropConsumerGroupStmt(pJson, pObj);
×
8402
    case QUERY_NODE_ALTER_LOCAL_STMT:
×
8403
      return jsonToAlterLocalStmt(pJson, pObj);
×
8404
    case QUERY_NODE_EXPLAIN_STMT:
×
8405
      return jsonToExplainStmt(pJson, pObj);
×
8406
    case QUERY_NODE_DESCRIBE_STMT:
×
8407
      return jsonToDescribeStmt(pJson, pObj);
×
8408
    case QUERY_NODE_COMPACT_DATABASE_STMT:
×
8409
      return jsonToCompactDatabaseStmt(pJson, pObj);
×
8410
    case QUERY_NODE_CREATE_STREAM_STMT:
×
8411
      return jsonToCreateStreamStmt(pJson, pObj);
×
8412
    case QUERY_NODE_DROP_STREAM_STMT:
×
8413
      return jsonToDropStreamStmt(pJson, pObj);
×
8414
    case QUERY_NODE_BALANCE_VGROUP_STMT:
×
8415
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to deserialize.
×
8416
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
×
8417
      return TSDB_CODE_SUCCESS;
×
8418
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
8419
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to deserialize.
×
8420
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
8421
      return jsonToMergeVgroupStmt(pJson, pObj);
×
8422
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
×
8423
      return jsonToRedistributeVgroupStmt(pJson, pObj);
×
8424
    case QUERY_NODE_SPLIT_VGROUP_STMT:
×
8425
      return jsonToSplitVgroupStmt(pJson, pObj);
×
8426
    case QUERY_NODE_GRANT_STMT:
×
8427
      return jsonToGrantStmt(pJson, pObj);
×
8428
    case QUERY_NODE_REVOKE_STMT:
×
8429
      return jsonToRevokeStmt(pJson, pObj);
×
8430
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
8431
      return jsonToAlterClusterStmt(pJson, pObj);
×
8432
    case QUERY_NODE_SHOW_DNODES_STMT:
×
8433
      return jsonToShowDnodesStmt(pJson, pObj);
×
8434
    case QUERY_NODE_SHOW_MNODES_STMT:
×
8435
      return jsonToShowMnodesStmt(pJson, pObj);
×
8436
    case QUERY_NODE_SHOW_QNODES_STMT:
×
8437
      return jsonToShowQnodesStmt(pJson, pObj);
×
8438
    case QUERY_NODE_SHOW_ANODES_STMT:
×
8439
      return jsonToShowAnodesStmt(pJson, pObj);
×
8440
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
8441
      return jsonToShowAnodesFullStmt(pJson, pObj);
×
8442
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
8443
      return jsonToShowArbGroupsStmt(pJson, pObj);
×
8444
    case QUERY_NODE_SHOW_CLUSTER_STMT:
×
8445
      return jsonToShowClusterStmt(pJson, pObj);
×
8446
    case QUERY_NODE_SHOW_DATABASES_STMT:
×
8447
      return jsonToShowDatabasesStmt(pJson, pObj);
×
8448
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
×
8449
      return jsonToShowFunctionsStmt(pJson, pObj);
×
8450
    case QUERY_NODE_SHOW_INDEXES_STMT:
×
8451
      return jsonToShowIndexesStmt(pJson, pObj);
×
8452
    case QUERY_NODE_SHOW_STABLES_STMT:
×
8453
      return jsonToShowStablesStmt(pJson, pObj);
×
8454
    case QUERY_NODE_SHOW_STREAMS_STMT:
×
8455
      return jsonToShowStreamsStmt(pJson, pObj);
×
8456
    case QUERY_NODE_SHOW_TABLES_STMT:
×
8457
      return jsonToShowTablesStmt(pJson, pObj);
×
8458
    case QUERY_NODE_SHOW_TAGS_STMT:
×
8459
      return jsonToShowTagsStmt(pJson, pObj);
×
8460
    case QUERY_NODE_SHOW_USERS_STMT:
×
8461
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
8462
      return jsonToShowUsersStmt(pJson, pObj);
×
8463
    case QUERY_NODE_SHOW_VGROUPS_STMT:
×
8464
      return jsonToShowVgroupsStmt(pJson, pObj);
×
8465
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
×
8466
      return jsonToShowConsumersStmt(pJson, pObj);
×
8467
    case QUERY_NODE_SHOW_VARIABLES_STMT:
×
8468
      return jsonToShowVariablesStmt(pJson, pObj);
×
8469
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
8470
      return jsonToShowGrantsFullStmt(pJson, pObj);
×
8471
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
8472
      return jsonToShowGrantsLogsStmt(pJson, pObj);
×
8473
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
8474
      return jsonToShowClusterMachinesStmt(pJson, pObj);
×
8475
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
8476
      return jsonToShowEncryptionsStmt(pJson, pObj);
×
8477
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
×
8478
      return jsonToShowDnodeVariablesStmt(pJson, pObj);
×
8479
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
×
8480
      return jsonToShowTransactionsStmt(pJson, pObj);
×
8481
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
×
8482
      return jsonToShowSubscriptionsStmt(pJson, pObj);
×
8483
    case QUERY_NODE_SHOW_VNODES_STMT:
×
8484
      return jsonToShowVnodesStmt(pJson, pObj);
×
8485
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
×
8486
      return jsonToShowUserPrivilegesStmt(pJson, pObj);
×
8487
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
×
8488
      return jsonToShowCreateDatabaseStmt(pJson, pObj);
×
8489
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
×
8490
      return jsonToShowCreateTableStmt(pJson, pObj);
×
8491
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
×
8492
      return jsonToShowCreateStableStmt(pJson, pObj);
×
8493
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
8494
      return jsonToShowCreateViewStmt(pJson, pObj);
×
8495
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
×
8496
      return jsonToShowTableDistributedStmt(pJson, pObj);
×
8497
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
×
8498
      return jsonToShowLocalVariablesStmt(pJson, pObj);
×
8499
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
×
8500
      return jsonToShowTableTagsStmt(pJson, pObj);
×
8501
    case QUERY_NODE_SHOW_USAGE_STMT:
×
8502
      return jsonToShowUsageStmt(pJson, pObj);
×
8503
    case QUERY_NODE_DELETE_STMT:
×
8504
      return jsonToDeleteStmt(pJson, pObj);
×
8505
    case QUERY_NODE_INSERT_STMT:
×
8506
      return jsonToInsertStmt(pJson, pObj);
×
8507
    case QUERY_NODE_RESTORE_DNODE_STMT:
×
8508
      return jsonToRestoreDnodeStmt(pJson, pObj);
×
8509
    case QUERY_NODE_RESTORE_QNODE_STMT:
×
8510
      return jsonToRestoreQnodeStmt(pJson, pObj);
×
8511
    case QUERY_NODE_RESTORE_MNODE_STMT:
×
8512
      return jsonToRestoreMnodeStmt(pJson, pObj);
×
8513
    case QUERY_NODE_RESTORE_VNODE_STMT:
×
8514
      return jsonToRestoreVnodeStmt(pJson, pObj);
×
8515
    case QUERY_NODE_LOGIC_PLAN_SCAN:
×
8516
      return jsonToLogicScanNode(pJson, pObj);
×
8517
    case QUERY_NODE_LOGIC_PLAN_JOIN:
×
8518
      return jsonToLogicJoinNode(pJson, pObj);
×
8519
    case QUERY_NODE_LOGIC_PLAN_AGG:
×
8520
      return jsonToLogicAggNode(pJson, pObj);
×
8521
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
×
8522
      return jsonToLogicProjectNode(pJson, pObj);
×
8523
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
×
8524
      return jsonToLogicVnodeModifyNode(pJson, pObj);
×
8525
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
×
8526
      return jsonToLogicExchangeNode(pJson, pObj);
×
8527
    case QUERY_NODE_LOGIC_PLAN_MERGE:
×
8528
      return jsonToLogicMergeNode(pJson, pObj);
×
8529
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
×
8530
      return jsonToLogicWindowNode(pJson, pObj);
×
8531
    case QUERY_NODE_LOGIC_PLAN_FILL:
×
8532
      return jsonToLogicFillNode(pJson, pObj);
×
8533
    case QUERY_NODE_LOGIC_PLAN_SORT:
×
8534
      return jsonToLogicSortNode(pJson, pObj);
×
8535
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
×
8536
      return jsonToLogicPartitionNode(pJson, pObj);
×
8537
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
×
8538
      return jsonToLogicIndefRowsFuncNode(pJson, pObj);
×
8539
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
×
8540
      return jsonToLogicInterpFuncNode(pJson, pObj);
×
8541
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
8542
      return jsonToLogicForecastFuncNode(pJson, pObj);
×
8543
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
8544
      return jsonToLogicGroupCacheNode(pJson, pObj);
×
8545
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
8546
      return jsonToLogicDynQueryCtrlNode(pJson, pObj);
×
8547
    case QUERY_NODE_LOGIC_SUBPLAN:
×
8548
      return jsonToLogicSubplan(pJson, pObj);
×
8549
    case QUERY_NODE_LOGIC_PLAN:
×
8550
      return jsonToLogicPlan(pJson, pObj);
×
8551
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
3✔
8552
      return jsonToPhysiTagScanNode(pJson, pObj);
3✔
8553
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
×
8554
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
8555
      return jsonToPhysiScanNode(pJson, pObj);
×
8556
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
×
8557
      return jsonToPhysiLastRowScanNode(pJson, pObj);
×
8558
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
11,631✔
8559
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
8560
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
8561
      return jsonToPhysiTableScanNode(pJson, pObj);
11,631✔
8562
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
×
8563
      return jsonToPhysiSysTableScanNode(pJson, pObj);
×
8564
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
7,098✔
8565
      return jsonToPhysiProjectNode(pJson, pObj);
7,098✔
8566
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
×
8567
      return jsonToPhysiMergeJoinNode(pJson, pObj);
×
8568
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
8569
      return jsonToPhysiHashJoinNode(pJson, pObj);
×
8570
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
33✔
8571
      return jsonToPhysiAggNode(pJson, pObj);
33✔
8572
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
×
8573
      return jsonToPhysiExchangeNode(pJson, pObj);
×
8574
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
×
8575
      return jsonToPhysiMergeNode(pJson, pObj);
×
8576
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
×
8577
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
8578
      return jsonToPhysiSortNode(pJson, pObj);
×
8579
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
5,099✔
8580
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
8581
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
8582
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
8583
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
8584
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
8585
      return jsonToPhysiIntervalNode(pJson, pObj);
5,099✔
8586
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
647✔
8587
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
8588
      return jsonToPhysiFillNode(pJson, pObj);
647✔
8589
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
966✔
8590
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
8591
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
8592
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
8593
      return jsonToPhysiSessionWindowNode(pJson, pObj);
966✔
8594
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
427✔
8595
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
8596
      return jsonToPhysiStateWindowNode(pJson, pObj);
427✔
8597
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
261✔
8598
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
8599
      return jsonToPhysiEventWindowNode(pJson, pObj);
261✔
8600
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
384✔
8601
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
8602
      return jsonToPhysiCountWindowNode(pJson, pObj);
384✔
8603
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
8604
      return jsonToPhysiAnomalyWindowNode(pJson, pObj);
×
8605
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
×
8606
      return jsonToPhysiPartitionNode(pJson, pObj);
×
8607
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
1,432✔
8608
      return jsonToPhysiStreamPartitionNode(pJson, pObj);
1,432✔
8609
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
×
8610
      return jsonToPhysiIndefRowsFuncNode(pJson, pObj);
×
8611
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
40✔
8612
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
8613
      return jsonToPhysiInterpFuncNode(pJson, pObj);
40✔
8614
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
8615
      return jsonToPhysiForecastFuncNode(pJson, pObj);
×
8616
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
×
8617
      return jsonToPhysiDispatchNode(pJson, pObj);
×
8618
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
×
8619
      return jsonToPhysiQueryInsertNode(pJson, pObj);
×
8620
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
×
8621
      return jsonToPhysiDeleteNode(pJson, pObj);
×
8622
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
8623
      return jsonToPhysiGroupCacheNode(pJson, pObj);
×
8624
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
8625
      return jsonToPhysiDynQueryCtrlNode(pJson, pObj);
×
8626
    case QUERY_NODE_PHYSICAL_SUBPLAN:
11,634✔
8627
      return jsonToSubplan(pJson, pObj);
11,634✔
8628
    case QUERY_NODE_PHYSICAL_PLAN:
1,997✔
8629
      return jsonToPlan(pJson, pObj);
1,997✔
8630
    default:
×
8631
      break;
×
8632
  }
8633
  nodesWarn("jsonToSpecificNode unknown node = %s", nodesNodeName(nodeType(pObj)));
×
8634
  return TSDB_CODE_SUCCESS;
×
8635
}
8636

8637
static const char* jkNodeType = "NodeType";
8638
static const char* jkNodeName = "Name";
8639

8640
static int32_t nodeToJson(const void* pObj, SJson* pJson) {
2,470,639✔
8641
  const SNode* pNode = (const SNode*)pObj;
2,470,639✔
8642

8643
  int32_t code = tjsonAddIntegerToObject(pJson, jkNodeType, pNode->type);
2,470,639✔
8644
  if (TSDB_CODE_SUCCESS == code) {
2,470,639!
8645
    code = tjsonAddStringToObject(pJson, jkNodeName, nodesNodeName(pNode->type));
2,470,639✔
8646
  }
8647
  if (TSDB_CODE_SUCCESS == code) {
2,470,639!
8648
    code = tjsonAddObject(pJson, nodesNodeName(pNode->type), specificNodeToJson, pNode);
2,470,639✔
8649
    if (TSDB_CODE_SUCCESS != code) {
2,470,639!
8650
      nodesError("%s ToJson error", nodesNodeName(pNode->type));
×
8651
    }
8652
  }
8653

8654
  return code;
2,470,639✔
8655
}
8656

8657
static int32_t jsonToNode(const SJson* pJson, void* pObj) {
3,531,162✔
8658
  SNode* pNode = (SNode*)pObj;
3,531,162✔
8659

8660
  int32_t code;
8661
  tjsonGetNumberValue(pJson, jkNodeType, pNode->type, code);
3,531,162✔
8662
  if (TSDB_CODE_SUCCESS == code) {
3,530,245!
8663
    code = tjsonToObject(pJson, nodesNodeName(pNode->type), jsonToSpecificNode, pNode);
3,530,255✔
8664
    if (TSDB_CODE_SUCCESS != code) {
3,530,057!
8665
      nodesError("%s toNode error", nodesNodeName(pNode->type));
×
8666
    }
8667
  }
8668

8669
  return code;
3,530,053✔
8670
}
8671

8672
static int32_t makeNodeByJson(const SJson* pJson, SNode** pNode) {
3,529,118✔
8673
  int32_t val = 0;
3,529,118✔
8674
  int32_t code = tjsonGetIntValue(pJson, jkNodeType, &val);
3,529,118✔
8675
  if (TSDB_CODE_SUCCESS == code) {
3,530,485!
8676
    code = nodesMakeNode(val, pNode);
3,530,492✔
8677
    if (NULL == *pNode) {
3,531,283!
8678
      return code;
×
8679
    }
8680
    code = jsonToNode(pJson, *pNode);
3,531,283✔
8681
  }
8682

8683
  return code;
3,530,066✔
8684
}
8685

8686
static int32_t jsonToNodeObject(const SJson* pJson, const char* pName, SNode** pNode) {
980,886✔
8687
  SJson* pJsonNode = tjsonGetObjectItem(pJson, pName);
980,886✔
8688
  if (NULL == pJsonNode) {
980,374✔
8689
    return TSDB_CODE_SUCCESS;
221,328✔
8690
  }
8691
  return makeNodeByJson(pJsonNode, pNode);
759,046✔
8692
}
8693

8694
int32_t nodesNodeToString(const SNode* pNode, bool format, char** pStr, int32_t* pLen) {
12,838✔
8695
  if (NULL == pNode || NULL == pStr) {
12,838!
8696
    terrno = TSDB_CODE_FAILED;
×
8697
    return TSDB_CODE_FAILED;
×
8698
  }
8699

8700
  SJson* pJson = tjsonCreateObject();
12,838✔
8701
  if (NULL == pJson) {
12,838!
8702
    return terrno;
×
8703
  }
8704

8705
  int32_t code = nodeToJson(pNode, pJson);
12,838✔
8706
  if (TSDB_CODE_SUCCESS != code) {
12,838!
8707
    terrno = code;
×
8708
    return code;
×
8709
  }
8710

8711
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
12,838!
8712
  tjsonDelete(pJson);
12,838✔
8713

8714
  if (NULL != pLen) {
12,838✔
8715
    *pLen = strlen(*pStr) + 1;
9,666✔
8716
  }
8717

8718
  return TSDB_CODE_SUCCESS;
12,838✔
8719
}
8720

8721
int32_t nodesStringToNode(const char* pStr, SNode** pNode) {
22,248✔
8722
  if (NULL == pStr || NULL == pNode) {
22,248!
8723
    return TSDB_CODE_SUCCESS;
×
8724
  }
8725
  SJson* pJson = tjsonParse(pStr);
22,248✔
8726
  if (NULL == pJson) {
22,248!
8727
    return TSDB_CODE_FAILED;
×
8728
  }
8729
  int32_t code = makeNodeByJson(pJson, pNode);
22,248✔
8730
  tjsonDelete(pJson);
22,248✔
8731
  if (TSDB_CODE_SUCCESS != code) {
22,245!
8732
    nodesDestroyNode(*pNode);
×
8733
    *pNode = NULL;
×
8734
    terrno = code;
×
8735
    return code;
×
8736
  }
8737
  return TSDB_CODE_SUCCESS;
22,245✔
8738
}
8739

8740
int32_t nodesListToString(const SNodeList* pList, bool format, char** pStr, int32_t* pLen) {
272✔
8741
  if (NULL == pList || NULL == pStr || NULL == pLen) {
272!
8742
    terrno = TSDB_CODE_FAILED;
×
8743
    return TSDB_CODE_FAILED;
×
8744
  }
8745

8746
  if (0 == LIST_LENGTH(pList)) {
272!
8747
    return TSDB_CODE_SUCCESS;
×
8748
  }
8749

8750
  SJson* pJson = tjsonCreateArray();
272✔
8751
  if (NULL == pJson) {
272!
8752
    return terrno;
×
8753
  }
8754

8755
  SNode* pNode;
8756
  FOREACH(pNode, pList) {
34,654!
8757
    int32_t code = tjsonAddItem(pJson, nodeToJson, pNode);
34,382✔
8758
    if (TSDB_CODE_SUCCESS != code) {
34,382!
8759
      terrno = code;
×
8760
      return code;
×
8761
    }
8762
  }
8763

8764
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
272!
8765
  tjsonDelete(pJson);
272✔
8766

8767
  *pLen = strlen(*pStr) + 1;
272✔
8768
  return TSDB_CODE_SUCCESS;
272✔
8769
}
8770

8771
int32_t nodesStringToList(const char* pStr, SNodeList** pList) {
228✔
8772
  if (NULL == pStr || NULL == pList) {
228!
8773
    return TSDB_CODE_SUCCESS;
×
8774
  }
8775
  SJson* pJson = tjsonParse(pStr);
228✔
8776
  if (NULL == pJson) {
228!
8777
    return TSDB_CODE_FAILED;
×
8778
  }
8779
  int32_t code = jsonToNodeListImpl(pJson, pList);
228✔
8780
  tjsonDelete(pJson);
228✔
8781
  if (TSDB_CODE_SUCCESS != code) {
228!
8782
    nodesDestroyList(*pList);
×
8783
    *pList = NULL;
×
8784
    terrno = code;
×
8785
    return code;
×
8786
  }
8787
  return TSDB_CODE_SUCCESS;
228✔
8788
}
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