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

taosdata / TDengine / #3546

03 Dec 2024 10:02AM UTC coverage: 60.691% (-0.1%) from 60.839%
#3546

push

travis-ci

web-flow
Merge pull request #29015 from taosdata/fix/TS-5668

[TS-5668] fix(keeper): fix endpoint value too long for column/tag and eliminate warnings

120577 of 253823 branches covered (47.5%)

Branch coverage included in aggregate %.

201666 of 277134 relevant lines covered (72.77%)

18719900.08 hits per line

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

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

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

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

30
const char* nodesNodeName(ENodeType type) {
9,246,130✔
31
  switch (type) {
9,246,130!
32
    case QUERY_NODE_COLUMN:
2,884,591✔
33
      return "Column";
2,884,591✔
34
    case QUERY_NODE_VALUE:
214,609✔
35
      return "Value";
214,609✔
36
    case QUERY_NODE_OPERATOR:
29,531✔
37
      return "Operator";
29,531✔
38
    case QUERY_NODE_LOGIC_CONDITION:
10,346✔
39
      return "LogicCondition";
10,346✔
40
    case QUERY_NODE_FUNCTION:
1,609,001✔
41
      return "Function";
1,609,001✔
42
    case QUERY_NODE_REAL_TABLE:
14,069✔
43
      return "RealTable";
14,069✔
44
    case QUERY_NODE_TEMP_TABLE:
3✔
45
      return "TempTable";
3✔
46
    case QUERY_NODE_JOIN_TABLE:
×
47
      return "JoinTable";
×
48
    case QUERY_NODE_GROUPING_SET:
×
49
      return "GroupingSet";
×
50
    case QUERY_NODE_ORDER_BY_EXPR:
×
51
      return "OrderByExpr";
×
52
    case QUERY_NODE_LIMIT:
×
53
      return "Limit";
×
54
    case QUERY_NODE_STATE_WINDOW:
2,132✔
55
      return "StateWindow";
2,132✔
56
    case QUERY_NODE_SESSION_WINDOW:
382✔
57
      return "SessionWinow";
382✔
58
    case QUERY_NODE_INTERVAL_WINDOW:
8,398✔
59
      return "IntervalWindow";
8,398✔
60
    case QUERY_NODE_NODE_LIST:
9,352✔
61
      return "NodeList";
9,352✔
62
    case QUERY_NODE_FILL:
531✔
63
      return "Fill";
531✔
64
    case QUERY_NODE_RAW_EXPR:
×
65
      return "RawExpr";
×
66
    case QUERY_NODE_TARGET:
2,117,736✔
67
      return "Target";
2,117,736✔
68
    case QUERY_NODE_DATABLOCK_DESC:
87,764✔
69
      return "DataBlockDesc";
87,764✔
70
    case QUERY_NODE_SLOT_DESC:
2,115,508✔
71
      return "SlotDesc";
2,115,508✔
72
    case QUERY_NODE_COLUMN_DEF:
×
73
      return "ColumnDef";
×
74
    case QUERY_NODE_DOWNSTREAM_SOURCE:
×
75
      return "DownstreamSource";
×
76
    case QUERY_NODE_DATABASE_OPTIONS:
×
77
      return "DatabaseOptions";
×
78
    case QUERY_NODE_TABLE_OPTIONS:
×
79
      return "TableOptions";
×
80
    case QUERY_NODE_COLUMN_OPTIONS:
×
81
      return "ColumnOptions";
×
82
    case QUERY_NODE_INDEX_OPTIONS:
×
83
      return "IndexOptions";
×
84
    case QUERY_NODE_EXPLAIN_OPTIONS:
×
85
      return "ExplainOptions";
×
86
    case QUERY_NODE_STREAM_OPTIONS:
×
87
      return "StreamOptions";
×
88
    case QUERY_NODE_LEFT_VALUE:
×
89
      return "LeftValue";
×
90
    case QUERY_NODE_WHEN_THEN:
265✔
91
      return "WhenThen";
265✔
92
    case QUERY_NODE_CASE_WHEN:
265✔
93
      return "CaseWhen";
265✔
94
    case QUERY_NODE_EVENT_WINDOW:
68✔
95
      return "EventWindow";
68✔
96
    case QUERY_NODE_WINDOW_OFFSET:
×
97
      return "WindowOffset";
×
98
    case QUERY_NODE_COUNT_WINDOW:
102✔
99
      return "CountWindow";
102✔
100
    case QUERY_NODE_ANOMALY_WINDOW:
×
101
      return "AnomalyWindow";
×
102
    case QUERY_NODE_SET_OPERATOR:
×
103
      return "SetOperator";
×
104
    case QUERY_NODE_SELECT_STMT:
14,072✔
105
      return "SelectStmt";
14,072✔
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:
36,831✔
364
      return "PhysiSreamScan";
36,831✔
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:
22,521✔
386
      return "PhysiProject";
22,521✔
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:
11,243✔
406
      return "PhysiStreamInterval";
11,243✔
407
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
1,299✔
408
      return "PhysiStreamFinalInterval";
1,299✔
409
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
2,690✔
410
      return "PhysiStreamSemiInterval";
2,690✔
411
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
605✔
412
      return "PhysiStreamMidInterval";
605✔
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,294✔
419
      return "PhysiStreamSessionWindow";
2,294✔
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,301✔
431
      return "PhysiStreamPartition";
4,301✔
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:
36,842✔
453
      return "PhysiSubplan";
36,842✔
454
    case QUERY_NODE_PHYSICAL_PLAN:
6,141✔
455
      return "PhysiPlan";
6,141✔
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) {
572,587✔
464
  if (LIST_LENGTH(pList) > 0) {
572,587!
465
    SJson* jList = tjsonAddArrayToObject(pJson, pName);
480,163✔
466
    if (NULL == jList) {
480,163!
467
      return terrno;
×
468
    }
469
    SNode* pNode;
470
    FOREACH(pNode, pList) {
2,439,714!
471
      int32_t code = tjsonAddItem(jList, nodeToJson, pNode);
1,959,551✔
472
      if (TSDB_CODE_SUCCESS != code) {
1,959,551!
473
        return code;
×
474
      }
475
    }
476
  }
477
  return TSDB_CODE_SUCCESS;
572,587✔
478
}
479

480
static int32_t jsonToNodeListImpl(const SJson* pJsonArray, SNodeList** pList) {
1,010,215✔
481
  int32_t size = (NULL == pJsonArray ? 0 : tjsonGetArraySize(pJsonArray));
1,010,215✔
482
  if (size > 0) {
1,010,142✔
483
    int32_t code = nodesMakeList(pList);
861,881✔
484
    if (NULL == *pList) {
861,994!
485
      return code;
×
486
    }
487
  }
488

489
  int32_t code = TSDB_CODE_SUCCESS;
1,010,255✔
490
  for (int32_t i = 0; i < size; ++i) {
3,812,904✔
491
    SJson* pJsonItem = tjsonGetArrayItem(pJsonArray, i);
2,802,317✔
492
    SNode* pNode = NULL;
2,800,543✔
493
    code = makeNodeByJson(pJsonItem, &pNode);
2,800,543✔
494
    if (TSDB_CODE_SUCCESS == code) {
2,798,370!
495
      code = nodesListAppend(*pList, pNode);
2,798,385✔
496
    }
497
    if (TSDB_CODE_SUCCESS != code) {
2,802,649!
498
      break;
×
499
    }
500
  }
501
  return code;
1,010,587✔
502
}
503

504
static int32_t jsonToNodeList(const SJson* pJson, const char* pName, SNodeList** pList) {
1,009,664✔
505
  return jsonToNodeListImpl(tjsonGetObjectItem(pJson, pName), pList);
1,009,664✔
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,483✔
514
  const STableComInfo* pNode = (const STableComInfo*)pObj;
1,483✔
515

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

527
  return code;
1,483✔
528
}
529

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

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

545
  return code;
11,103✔
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) {
50,262✔
555
  const SSchema* pNode = (const SSchema*)pObj;
50,262✔
556

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

571
  return code;
50,262✔
572
}
573

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

577
  int32_t code;
578
  tjsonGetNumberValue(pJson, jkSchemaType, pNode->type, code);
448,209✔
579
  if (TSDB_CODE_SUCCESS == code) {
448,199!
580
    tjsonGetNumberValue(pJson, jkSchemaColId, pNode->colId, code);
448,199✔
581
  }
582
  if (TSDB_CODE_SUCCESS == code) {
448,194!
583
    tjsonGetNumberValue(pJson, jkSchemaBytes, pNode->bytes, code);
448,194✔
584
  }
585
  if (TSDB_CODE_SUCCESS == code) {
448,199!
586
    code = tjsonGetStringValue(pJson, jkSchemaName, pNode->name);
448,199✔
587
  }
588
  if (TSDB_CODE_SUCCESS == code) {
448,205!
589
    tjsonGetNumberValue(pJson, jkSchemaFlags, pNode->flags, code);
448,205✔
590
  }
591

592
  return code;
448,201✔
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,483✔
605
  const STableMeta* pNode = (const STableMeta*)pObj;
1,483✔
606

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

631
  return code;
1,483✔
632
}
633

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

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

661
  return code;
11,103✔
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* jkWindowLogicPlanSessionGap = "SessionGap";
1018
static const char* jkWindowLogicPlanTspk = "Tspk";
1019
static const char* jkWindowLogicPlanStateExpr = "StateExpr";
1020
static const char* jkWindowLogicPlanTriggerType = "TriggerType";
1021
static const char* jkWindowLogicPlanWatermark = "Watermark";
1022
static const char* jkWindowLogicPlanDeleteMark = "DeleteMark";
1023

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

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

1068
  return code;
×
1069
}
1070

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

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

1115
  return code;
×
1116
}
1117

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

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

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

1144
  return code;
×
1145
}
1146

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

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

1167
  return code;
×
1168
}
1169

1170
static const char* jkSortLogicPlanSortKeys = "SortKeys";
1171

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

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

1180
  return code;
×
1181
}
1182

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

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

1191
  return code;
×
1192
}
1193

1194
static const char* jkPartitionLogicPlanPartitionKeys = "PartitionKeys";
1195

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

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

1204
  return code;
×
1205
}
1206

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

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

1215
  return code;
×
1216
}
1217

1218
static const char* jkIndefRowsFuncLogicPlanFuncs = "Funcs";
1219

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

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

1228
  return code;
×
1229
}
1230

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

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

1239
  return code;
×
1240
}
1241

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

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

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

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

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

1293
static const char* jkInterpFuncLogicPlanFuncs = "Funcs";
1294
static const char* jkInterpFuncLogicPlanStartTime = "StartTime";
1295
static const char* jkInterpFuncLogicPlanEndTime = "EndTime";
1296
static const char* jkInterpFuncLogicPlanInterval = "Interval";
1297
static const char* jkInterpFuncLogicPlanIntervalUnit = "IntervalUnit";
1298
static const char* jkInterpFuncLogicPlanPrecision = "Precision";
1299
static const char* jkInterpFuncLogicPlanFillMode = "fillMode";
1300
static const char* jkInterpFuncLogicPlanFillValues = "FillValues";
1301
static const char* jkInterpFuncLogicPlanTimeSeries = "TimeSeries";
1302
static const char* jkInterpFuncLogicPlanStreamNodeOption = "StreamNodeOption";
1303
static const char* jkInterpFuncLogicPlanRangeInterval = "RangeInterval";
1304
static const char* jkInterpFuncLogicPlanRangeIntervalUnit = "RangeIntervalUnit";
1305

1306
static int32_t logicInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1307
  const SInterpFuncLogicNode* pNode = (const SInterpFuncLogicNode*)pObj;
×
1308

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

1347
  return code;
×
1348
}
1349

1350
static int32_t jsonToLogicInterpFuncNode(const SJson* pJson, void* pObj) {
×
1351
  SInterpFuncLogicNode* pNode = (SInterpFuncLogicNode*)pObj;
×
1352

1353
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1354
  if (TSDB_CODE_SUCCESS == code) {
×
1355
    code = jsonToNodeList(pJson, jkInterpFuncLogicPlanFuncs, &pNode->pFuncs);
×
1356
  }
1357
  if (TSDB_CODE_SUCCESS == code) {
×
1358
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanStartTime, &pNode->timeRange.skey);
×
1359
  }
1360
  if (TSDB_CODE_SUCCESS == code) {
×
1361
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanEndTime, &pNode->timeRange.ekey);
×
1362
  }
1363
  if (TSDB_CODE_SUCCESS == code) {
×
1364
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanInterval, &pNode->interval);
×
1365
  }
1366
  if (TSDB_CODE_SUCCESS == code) {
×
1367
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanIntervalUnit, &pNode->intervalUnit);
×
1368
  }
1369
  if (TSDB_CODE_SUCCESS == code) {
×
1370
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanPrecision, &pNode->precision);
×
1371
  }
1372
  if (TSDB_CODE_SUCCESS == code) {
×
1373
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanFillMode, (int8_t*)&pNode->fillMode);
×
1374
  }
1375
  if (TSDB_CODE_SUCCESS == code) {
×
1376
    code = tjsonToObject(pJson, jkInterpFuncLogicPlanFillValues, jsonToNode, pNode->pFillValues);
×
1377
  }
1378
  if (TSDB_CODE_SUCCESS == code) {
×
1379
    code = jsonToNodeObject(pJson, jkInterpFuncLogicPlanTimeSeries, &pNode->pTimeSeries);
×
1380
  }
1381
  if (TSDB_CODE_SUCCESS == code) {
×
1382
    code = tjsonToObject(pJson, jkInterpFuncLogicPlanStreamNodeOption, jsonToStreamNodeOption, &pNode->streamNodeOption);
×
1383
  }
1384
  if (TSDB_CODE_SUCCESS == code) {
×
1385
    code = tjsonGetBigIntValue(pJson, jkInterpFuncLogicPlanRangeInterval, &pNode->rangeInterval);
×
1386
  }
1387
  if (TSDB_CODE_SUCCESS == code) {
×
1388
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncLogicPlanRangeIntervalUnit, &pNode->rangeIntervalUnit);
×
1389
  }
1390

1391
  return code;
×
1392
}
1393

1394
static const char* jkForecastFuncLogicPlanFuncs = "Funcs";
1395

1396
static int32_t logicForecastFuncNodeToJson(const void* pObj, SJson* pJson) {
×
1397
  const SForecastFuncLogicNode* pNode = (const SForecastFuncLogicNode*)pObj;
×
1398

1399
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1400
  if (TSDB_CODE_SUCCESS == code) {
×
1401
    code = nodeListToJson(pJson, jkForecastFuncLogicPlanFuncs, pNode->pFuncs);
×
1402
  }
1403

1404
  return code;
×
1405
}
1406

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

1410
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1411
  if (TSDB_CODE_SUCCESS == code) {
×
1412
    code = jsonToNodeList(pJson, jkForecastFuncLogicPlanFuncs, &pNode->pFuncs);
×
1413
  }
1414

1415
  return code;
×
1416
}
1417

1418
static const char* jkGroupCacheLogicPlanGrpColsMayBeNull = "GroupColsMayBeNull";
1419
static const char* jkGroupCacheLogicPlanGroupByUid = "GroupByUid";
1420
static const char* jkGroupCacheLogicPlanGlobalGroup = "GlobalGroup";
1421
static const char* jkGroupCacheLogicPlanGroupCols = "GroupCols";
1422

1423
static int32_t logicGroupCacheNodeToJson(const void* pObj, SJson* pJson) {
×
1424
  const SGroupCacheLogicNode* pNode = (const SGroupCacheLogicNode*)pObj;
×
1425

1426
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1427
  if (TSDB_CODE_SUCCESS == code) {
×
1428
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGrpColsMayBeNull, pNode->grpColsMayBeNull);
×
1429
  }
1430
  if (TSDB_CODE_SUCCESS == code) {
×
1431
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGroupByUid, pNode->grpByUid);
×
1432
  }
1433
  if (TSDB_CODE_SUCCESS == code) {
×
1434
    code = tjsonAddBoolToObject(pJson, jkGroupCacheLogicPlanGlobalGroup, pNode->globalGrp);
×
1435
  }
1436
  if (TSDB_CODE_SUCCESS == code) {
×
1437
    code = nodeListToJson(pJson, jkGroupCacheLogicPlanGroupCols, pNode->pGroupCols);
×
1438
  }
1439

1440
  return code;
×
1441
}
1442

1443
static int32_t jsonToLogicGroupCacheNode(const SJson* pJson, void* pObj) {
×
1444
  SGroupCacheLogicNode* pNode = (SGroupCacheLogicNode*)pObj;
×
1445

1446
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1447
  if (TSDB_CODE_SUCCESS == code) {
×
1448
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGrpColsMayBeNull, &pNode->grpColsMayBeNull);
×
1449
  }
1450
  if (TSDB_CODE_SUCCESS == code) {
×
1451
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGroupByUid, &pNode->grpByUid);
×
1452
  }
1453
  if (TSDB_CODE_SUCCESS == code) {
×
1454
    code = tjsonGetBoolValue(pJson, jkGroupCacheLogicPlanGlobalGroup, &pNode->globalGrp);
×
1455
  }
1456
  if (TSDB_CODE_SUCCESS == code) {
×
1457
    code = jsonToNodeList(pJson, jkGroupCacheLogicPlanGroupCols, &pNode->pGroupCols);
×
1458
  }
1459

1460
  return code;
×
1461
}
1462

1463
static const char* jkDynQueryCtrlLogicPlanQueryType = "QueryType";
1464
static const char* jkDynQueryCtrlLogicPlanStbJoinBatchFetch = "BatchFetch";
1465
static const char* jkDynQueryCtrlLogicPlanStbJoinVgList = "VgroupList";
1466
static const char* jkDynQueryCtrlLogicPlanStbJoinUidList = "UidList";
1467

1468
static int32_t logicDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
×
1469
  const SDynQueryCtrlLogicNode* pNode = (const SDynQueryCtrlLogicNode*)pObj;
×
1470

1471
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1472
  if (TSDB_CODE_SUCCESS == code) {
×
1473
    code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlLogicPlanQueryType, pNode->qType);
×
1474
  }
1475
  if (TSDB_CODE_SUCCESS == code) {
×
1476
    code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlLogicPlanStbJoinBatchFetch, pNode->stbJoin.batchFetch);
×
1477
  }
1478
  if (TSDB_CODE_SUCCESS == code) {
×
1479
    code = nodeListToJson(pJson, jkDynQueryCtrlLogicPlanStbJoinVgList, pNode->stbJoin.pVgList);
×
1480
  }
1481
  if (TSDB_CODE_SUCCESS == code) {
×
1482
    code = nodeListToJson(pJson, jkDynQueryCtrlLogicPlanStbJoinUidList, pNode->stbJoin.pUidList);
×
1483
  }
1484

1485
  return code;
×
1486
}
1487

1488
static int32_t jsonToLogicDynQueryCtrlNode(const SJson* pJson, void* pObj) {
×
1489
  SDynQueryCtrlLogicNode* pNode = (SDynQueryCtrlLogicNode*)pObj;
×
1490

1491
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1492
  if (TSDB_CODE_SUCCESS == code) {
×
1493
    tjsonGetNumberValue(pJson, jkDynQueryCtrlLogicPlanQueryType, pNode->qType, code);
×
1494
  }
1495
  if (TSDB_CODE_SUCCESS == code) {
×
1496
    code = tjsonGetBoolValue(pJson, jkDynQueryCtrlLogicPlanStbJoinBatchFetch, &pNode->stbJoin.batchFetch);
×
1497
  }
1498
  if (TSDB_CODE_SUCCESS == code) {
×
1499
    code = jsonToNodeList(pJson, jkDynQueryCtrlLogicPlanStbJoinVgList, &pNode->stbJoin.pVgList);
×
1500
  }
1501
  if (TSDB_CODE_SUCCESS == code) {
×
1502
    code = jsonToNodeList(pJson, jkDynQueryCtrlLogicPlanStbJoinUidList, &pNode->stbJoin.pUidList);
×
1503
  }
1504

1505
  return code;
×
1506
}
1507

1508
static const char* jkSubplanIdQueryId = "QueryId";
1509
static const char* jkSubplanIdGroupId = "GroupId";
1510
static const char* jkSubplanIdSubplanId = "SubplanId";
1511

1512
static int32_t subplanIdToJson(const void* pObj, SJson* pJson) {
12,448✔
1513
  const SSubplanId* pNode = (const SSubplanId*)pObj;
12,448✔
1514

1515
  int32_t code = tjsonAddIntegerToObject(pJson, jkSubplanIdQueryId, pNode->queryId);
12,448✔
1516
  if (TSDB_CODE_SUCCESS == code) {
12,448!
1517
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdGroupId, pNode->groupId);
12,448✔
1518
  }
1519
  if (TSDB_CODE_SUCCESS == code) {
12,448!
1520
    code = tjsonAddIntegerToObject(pJson, jkSubplanIdSubplanId, pNode->subplanId);
12,448✔
1521
  }
1522

1523
  return code;
12,448✔
1524
}
1525

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

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

1537
  return code;
11,945✔
1538
}
1539

1540
static const char* jkEndPointFqdn = "Fqdn";
1541
static const char* jkEndPointPort = "Port";
1542

1543
static int32_t epToJson(const void* pObj, SJson* pJson) {
14,324✔
1544
  const SEp* pNode = (const SEp*)pObj;
14,324✔
1545

1546
  int32_t code = tjsonAddStringToObject(pJson, jkEndPointFqdn, pNode->fqdn);
14,324✔
1547
  if (TSDB_CODE_SUCCESS == code) {
14,324!
1548
    code = tjsonAddIntegerToObject(pJson, jkEndPointPort, pNode->port);
14,324✔
1549
  }
1550

1551
  return code;
14,324✔
1552
}
1553

1554
static int32_t jsonToEp(const SJson* pJson, void* pObj) {
31,645✔
1555
  SEp* pNode = (SEp*)pObj;
31,645✔
1556

1557
  int32_t code = tjsonGetStringValue(pJson, jkEndPointFqdn, pNode->fqdn);
31,645✔
1558
  if (TSDB_CODE_SUCCESS == code) {
31,646!
1559
    code = tjsonGetSmallIntValue(pJson, jkEndPointPort, &pNode->port);
31,646✔
1560
  }
1561

1562
  return code;
31,651✔
1563
}
1564

1565
static const char* jkEpSetInUse = "InUse";
1566
static const char* jkEpSetNumOfEps = "NumOfEps";
1567
static const char* jkEpSetEps = "Eps";
1568

1569
static int32_t epSetToJson(const void* pObj, SJson* pJson) {
2,219✔
1570
  const SEpSet* pNode = (const SEpSet*)pObj;
2,219✔
1571

1572
  int32_t code = tjsonAddIntegerToObject(pJson, jkEpSetInUse, pNode->inUse);
2,219✔
1573
  if (TSDB_CODE_SUCCESS == code) {
2,219!
1574
    code = tjsonAddIntegerToObject(pJson, jkEpSetNumOfEps, pNode->numOfEps);
2,219✔
1575
  }
1576
  if (TSDB_CODE_SUCCESS == code) {
2,219!
1577
    code = tjsonAddArray(pJson, jkEpSetEps, epToJson, pNode->eps, sizeof(SEp), pNode->numOfEps);
2,219✔
1578
  }
1579

1580
  return code;
2,219✔
1581
}
1582

1583
static int32_t jsonToEpSet(const SJson* pJson, void* pObj) {
21,089✔
1584
  SEpSet* pNode = (SEpSet*)pObj;
21,089✔
1585

1586
  int32_t code = tjsonGetTinyIntValue(pJson, jkEpSetInUse, &pNode->inUse);
21,089✔
1587
  if (TSDB_CODE_SUCCESS == code) {
21,089!
1588
    code = tjsonGetTinyIntValue(pJson, jkEpSetNumOfEps, &pNode->numOfEps);
21,089✔
1589
  }
1590
  if (TSDB_CODE_SUCCESS == code) {
21,089!
1591
    code = tjsonToArray(pJson, jkEpSetEps, jsonToEp, pNode->eps, sizeof(SEp));
21,089✔
1592
  }
1593

1594
  return code;
21,089✔
1595
}
1596

1597
static const char* jkVgroupInfoVgId = "VgId";
1598
static const char* jkVgroupInfoHashBegin = "HashBegin";
1599
static const char* jkVgroupInfoHashEnd = "HashEnd";
1600
static const char* jkVgroupInfoEpSet = "EpSet";
1601
static const char* jkVgroupInfoNumOfTable = "NumOfTable";
1602

1603
static int32_t vgroupInfoToJson(const void* pObj, SJson* pJson) {
2,219✔
1604
  const SVgroupInfo* pNode = (const SVgroupInfo*)pObj;
2,219✔
1605

1606
  int32_t code = tjsonAddIntegerToObject(pJson, jkVgroupInfoVgId, pNode->vgId);
2,219✔
1607
  if (TSDB_CODE_SUCCESS == code) {
2,219!
1608
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoHashBegin, pNode->hashBegin);
2,219✔
1609
  }
1610
  if (TSDB_CODE_SUCCESS == code) {
2,219!
1611
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoHashEnd, pNode->hashEnd);
2,219✔
1612
  }
1613
  if (TSDB_CODE_SUCCESS == code) {
2,219!
1614
    code = tjsonAddObject(pJson, jkVgroupInfoEpSet, epSetToJson, &pNode->epSet);
2,219✔
1615
  }
1616
  if (TSDB_CODE_SUCCESS == code) {
2,219!
1617
    code = tjsonAddIntegerToObject(pJson, jkVgroupInfoNumOfTable, pNode->numOfTable);
2,219✔
1618
  }
1619

1620
  return code;
2,219✔
1621
}
1622

1623
static int32_t jsonToVgroupInfo(const SJson* pJson, void* pObj) {
21,089✔
1624
  SVgroupInfo* pNode = (SVgroupInfo*)pObj;
21,089✔
1625

1626
  int32_t code = tjsonGetIntValue(pJson, jkVgroupInfoVgId, &pNode->vgId);
21,089✔
1627
  if (TSDB_CODE_SUCCESS == code) {
21,089!
1628
    code = tjsonGetUIntValue(pJson, jkVgroupInfoHashBegin, &pNode->hashBegin);
21,089✔
1629
  }
1630
  if (TSDB_CODE_SUCCESS == code) {
21,089!
1631
    code = tjsonGetUIntValue(pJson, jkVgroupInfoHashEnd, &pNode->hashEnd);
21,089✔
1632
  }
1633
  if (TSDB_CODE_SUCCESS == code) {
21,089!
1634
    code = tjsonToObject(pJson, jkVgroupInfoEpSet, jsonToEpSet, &pNode->epSet);
21,089✔
1635
  }
1636
  if (TSDB_CODE_SUCCESS == code) {
21,089!
1637
    code = tjsonGetIntValue(pJson, jkVgroupInfoNumOfTable, &pNode->numOfTable);
21,089✔
1638
  }
1639

1640
  return code;
21,089✔
1641
}
1642

1643
static const char* jkVgroupsInfoNum = "Num";
1644
static const char* jkVgroupsInfoVgroups = "Vgroups";
1645

1646
static int32_t vgroupsInfoToJson(const void* pObj, SJson* pJson) {
1,058✔
1647
  const SVgroupsInfo* pNode = (const SVgroupsInfo*)pObj;
1,058✔
1648

1649
  int32_t code = tjsonAddIntegerToObject(pJson, jkVgroupsInfoNum, pNode->numOfVgroups);
1,058✔
1650
  if (TSDB_CODE_SUCCESS == code) {
1,058!
1651
    code = tjsonAddArray(pJson, jkVgroupsInfoVgroups, vgroupInfoToJson, pNode->vgroups, sizeof(SVgroupInfo),
1,058✔
1652
                         pNode->numOfVgroups);
1,058✔
1653
  }
1654

1655
  return code;
1,058✔
1656
}
1657

1658
static int32_t jsonToVgroupsInfo(const SJson* pJson, void* pObj) {
9,647✔
1659
  SVgroupsInfo* pNode = (SVgroupsInfo*)pObj;
9,647✔
1660

1661
  int32_t code = tjsonGetIntValue(pJson, jkVgroupsInfoNum, &pNode->numOfVgroups);
9,647✔
1662
  if (TSDB_CODE_SUCCESS == code) {
9,647!
1663
    code = tjsonToArray(pJson, jkVgroupsInfoVgroups, jsonToVgroupInfo, pNode->vgroups, sizeof(SVgroupInfo));
9,647✔
1664
  }
1665

1666
  return code;
9,647✔
1667
}
1668

1669
static const char* jkLogicSubplanId = "Id";
1670
static const char* jkLogicSubplanChildren = "Children";
1671
static const char* jkLogicSubplanRootNode = "RootNode";
1672
static const char* jkLogicSubplanType = "SubplanType";
1673
static const char* jkLogicSubplanVgroupsSize = "VgroupsSize";
1674
static const char* jkLogicSubplanVgroups = "Vgroups";
1675
static const char* jkLogicSubplanLevel = "Level";
1676
static const char* jkLogicSubplanSplitFlag = "SplitFlag";
1677
static const char* jkLogicSubplanNumOfComputeNodes = "NumOfComputeNodes";
1678

1679
static int32_t logicSubplanToJson(const void* pObj, SJson* pJson) {
×
1680
  const SLogicSubplan* pNode = (const SLogicSubplan*)pObj;
×
1681

1682
  int32_t code = tjsonAddObject(pJson, jkLogicSubplanId, subplanIdToJson, &pNode->id);
×
1683
  if (TSDB_CODE_SUCCESS == code) {
×
1684
    code = nodeListToJson(pJson, jkLogicSubplanChildren, pNode->pChildren);
×
1685
  }
1686
  if (TSDB_CODE_SUCCESS == code) {
×
1687
    code = tjsonAddObject(pJson, jkLogicSubplanRootNode, nodeToJson, pNode->pNode);
×
1688
  }
1689
  if (TSDB_CODE_SUCCESS == code) {
×
1690
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanType, pNode->subplanType);
×
1691
  }
1692
  if (TSDB_CODE_SUCCESS == code) {
×
1693
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanVgroupsSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
×
1694
  }
1695
  if (TSDB_CODE_SUCCESS == code) {
×
1696
    code = tjsonAddObject(pJson, jkLogicSubplanVgroups, vgroupsInfoToJson, pNode->pVgroupList);
×
1697
  }
1698
  if (TSDB_CODE_SUCCESS == code) {
×
1699
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanLevel, pNode->level);
×
1700
  }
1701
  if (TSDB_CODE_SUCCESS == code) {
×
1702
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanSplitFlag, pNode->splitFlag);
×
1703
  }
1704
  if (TSDB_CODE_SUCCESS == code) {
×
1705
    code = tjsonAddIntegerToObject(pJson, jkLogicSubplanNumOfComputeNodes, pNode->numOfComputeNodes);
×
1706
  }
1707

1708
  return code;
×
1709
}
1710

1711
static int32_t jsonToLogicSubplan(const SJson* pJson, void* pObj) {
×
1712
  SLogicSubplan* pNode = (SLogicSubplan*)pObj;
×
1713

1714
  int32_t code = tjsonToObject(pJson, jkLogicSubplanId, jsonToSubplanId, &pNode->id);
×
1715
  if (TSDB_CODE_SUCCESS == code) {
×
1716
    code = jsonToNodeList(pJson, jkLogicSubplanChildren, &pNode->pChildren);
×
1717
  }
1718
  if (TSDB_CODE_SUCCESS == code) {
×
1719
    code = jsonToNodeObject(pJson, jkLogicSubplanRootNode, (SNode**)&pNode->pNode);
×
1720
  }
1721
  if (TSDB_CODE_SUCCESS == code) {
×
1722
    tjsonGetNumberValue(pJson, jkLogicSubplanType, pNode->subplanType, code);
×
1723
  }
1724
  int32_t objSize = 0;
×
1725
  if (TSDB_CODE_SUCCESS == code) {
×
1726
    code = tjsonGetIntValue(pJson, jkLogicSubplanVgroupsSize, &objSize);
×
1727
  }
1728
  if (TSDB_CODE_SUCCESS == code) {
×
1729
    code = tjsonMakeObject(pJson, jkLogicSubplanVgroups, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
×
1730
  }
1731
  if (TSDB_CODE_SUCCESS == code) {
×
1732
    code = tjsonGetIntValue(pJson, jkLogicSubplanLevel, &pNode->level);
×
1733
  }
1734
  if (TSDB_CODE_SUCCESS == code) {
×
1735
    code = tjsonGetIntValue(pJson, jkLogicSubplanSplitFlag, &pNode->splitFlag);
×
1736
  }
1737
  if (TSDB_CODE_SUCCESS == code) {
×
1738
    code = tjsonGetIntValue(pJson, jkLogicSubplanNumOfComputeNodes, &pNode->numOfComputeNodes);
×
1739
  }
1740

1741
  return code;
×
1742
}
1743

1744
static const char* jkLogicPlanSubplans = "Subplans";
1745

1746
static int32_t logicPlanToJson(const void* pObj, SJson* pJson) {
×
1747
  const SQueryLogicPlan* pNode = (const SQueryLogicPlan*)pObj;
×
1748
  return tjsonAddObject(pJson, jkLogicPlanSubplans, nodeToJson, nodesListGetNode(pNode->pTopSubplans, 0));
×
1749
}
1750

1751
static int32_t jsonToLogicPlan(const SJson* pJson, void* pObj) {
×
1752
  SQueryLogicPlan* pNode = (SQueryLogicPlan*)pObj;
×
1753
  SNode*           pChild = NULL;
×
1754
  int32_t          code = jsonToNodeObject(pJson, jkLogicPlanSubplans, &pChild);
×
1755
  if (TSDB_CODE_SUCCESS == code) {
×
1756
    code = nodesListMakeStrictAppend(&pNode->pTopSubplans, pChild);
×
1757
  }
1758
  return code;
×
1759
}
1760

1761
static const char* jkJoinLogicPlanJoinType = "JoinType";
1762
static const char* jkJoinLogicPlanJoinAlgo = "JoinAlgo";
1763
static const char* jkJoinLogicPlanOnConditions = "OtherOnCond";
1764
static const char* jkJoinLogicPlanPrimKeyEqCondition = "PrimKeyEqCond";
1765
static const char* jkJoinLogicPlanColEqCondition = "ColumnEqCond";
1766
static const char* jkJoinLogicPlanTagEqCondition = "TagEqCond";
1767

1768
static int32_t logicJoinNodeToJson(const void* pObj, SJson* pJson) {
×
1769
  const SJoinLogicNode* pNode = (const SJoinLogicNode*)pObj;
×
1770

1771
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
1772
  if (TSDB_CODE_SUCCESS == code) {
×
1773
    code = tjsonAddIntegerToObject(pJson, jkJoinLogicPlanJoinType, pNode->joinType);
×
1774
  }
1775
  if (TSDB_CODE_SUCCESS == code) {
×
1776
    code = tjsonAddIntegerToObject(pJson, jkJoinLogicPlanJoinAlgo, pNode->joinAlgo);
×
1777
  }
1778
  if (TSDB_CODE_SUCCESS == code) {
×
1779
    code = tjsonAddObject(pJson, jkJoinLogicPlanPrimKeyEqCondition, nodeToJson, pNode->pPrimKeyEqCond);
×
1780
  }
1781
  if (TSDB_CODE_SUCCESS == code) {
×
1782
    code = tjsonAddObject(pJson, jkJoinLogicPlanColEqCondition, nodeToJson, pNode->pColEqCond);
×
1783
  }
1784
  if (TSDB_CODE_SUCCESS == code) {
×
1785
    code = tjsonAddObject(pJson, jkJoinLogicPlanTagEqCondition, nodeToJson, pNode->pTagEqCond);
×
1786
  }
1787
  if (TSDB_CODE_SUCCESS == code) {
×
1788
    code = tjsonAddObject(pJson, jkJoinLogicPlanOnConditions, nodeToJson, pNode->pFullOnCond);
×
1789
  }
1790
  return code;
×
1791
}
1792

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

1796
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
1797
  if (TSDB_CODE_SUCCESS == code) {
×
1798
    tjsonGetNumberValue(pJson, jkJoinLogicPlanJoinType, pNode->joinType, code);
×
1799
  }
1800
  if (TSDB_CODE_SUCCESS == code) {
×
1801
    tjsonGetNumberValue(pJson, jkJoinLogicPlanJoinAlgo, pNode->joinAlgo, code);
×
1802
  }
1803
  if (TSDB_CODE_SUCCESS == code) {
×
1804
    code = jsonToNodeObject(pJson, jkJoinLogicPlanPrimKeyEqCondition, &pNode->pPrimKeyEqCond);
×
1805
  }
1806
  if (TSDB_CODE_SUCCESS == code) {
×
1807
    code = jsonToNodeObject(pJson, jkJoinLogicPlanColEqCondition, &pNode->pColEqCond);
×
1808
  }
1809
  if (TSDB_CODE_SUCCESS == code) {
×
1810
    code = jsonToNodeObject(pJson, jkJoinLogicPlanTagEqCondition, &pNode->pTagEqCond);
×
1811
  }
1812
  if (TSDB_CODE_SUCCESS == code) {
×
1813
    code = jsonToNodeObject(pJson, jkJoinLogicPlanOnConditions, &pNode->pFullOnCond);
×
1814
  }
1815

1816
  return code;
×
1817
}
1818

1819
static const char* jkPhysiPlanOutputDataBlockDesc = "OutputDataBlockDesc";
1820
static const char* jkPhysiPlanConditions = "Conditions";
1821
static const char* jkPhysiPlanChildren = "Children";
1822
static const char* jkPhysiPlanLimit = "Limit";
1823
static const char* jkPhysiPlanSlimit = "SLimit";
1824

1825
static int32_t physicPlanNodeToJson(const void* pObj, SJson* pJson) {
29,562✔
1826
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
29,562✔
1827

1828
  int32_t code = tjsonAddObject(pJson, jkPhysiPlanOutputDataBlockDesc, nodeToJson, pNode->pOutputDataBlockDesc);
29,562✔
1829
  if (TSDB_CODE_SUCCESS == code) {
29,562!
1830
    code = tjsonAddObject(pJson, jkPhysiPlanConditions, nodeToJson, pNode->pConditions);
29,562✔
1831
  }
1832
  if (TSDB_CODE_SUCCESS == code) {
29,562!
1833
    code = nodeListToJson(pJson, jkPhysiPlanChildren, pNode->pChildren);
29,562✔
1834
  }
1835
  if (TSDB_CODE_SUCCESS == code) {
29,562!
1836
    code = tjsonAddObject(pJson, jkPhysiPlanLimit, nodeToJson, pNode->pLimit);
29,562✔
1837
  }
1838
  if (TSDB_CODE_SUCCESS == code) {
29,562!
1839
    code = tjsonAddObject(pJson, jkPhysiPlanSlimit, nodeToJson, pNode->pSlimit);
29,562✔
1840
  }
1841

1842
  return code;
29,562✔
1843
}
1844

1845
static int32_t jsonToPhysicPlanNode(const SJson* pJson, void* pObj) {
28,639✔
1846
  SPhysiNode* pNode = (SPhysiNode*)pObj;
28,639✔
1847

1848
  int32_t code = jsonToNodeObject(pJson, jkPhysiPlanOutputDataBlockDesc, (SNode**)&pNode->pOutputDataBlockDesc);
28,639✔
1849
  if (TSDB_CODE_SUCCESS == code) {
28,636!
1850
    code = jsonToNodeObject(pJson, jkPhysiPlanConditions, &pNode->pConditions);
28,636✔
1851
  }
1852
  if (TSDB_CODE_SUCCESS == code) {
28,627!
1853
    code = jsonToNodeList(pJson, jkPhysiPlanChildren, &pNode->pChildren);
28,627✔
1854
  }
1855
  if (TSDB_CODE_SUCCESS == code) {
28,639!
1856
    code = jsonToNodeObject(pJson, jkPhysiPlanLimit, &pNode->pLimit);
28,639✔
1857
  }
1858
  if (TSDB_CODE_SUCCESS == code) {
28,641!
1859
    code = jsonToNodeObject(pJson, jkPhysiPlanSlimit, &pNode->pSlimit);
28,641✔
1860
  }
1861

1862
  return code;
28,637✔
1863
}
1864

1865
static const char* jkNameType = "NameType";
1866
static const char* jkNameAcctId = "AcctId";
1867
static const char* jkNameDbName = "DbName";
1868
static const char* jkNameTableName = "TableName";
1869

1870
static int32_t nameToJson(const void* pObj, SJson* pJson) {
12,448✔
1871
  const SName* pNode = (const SName*)pObj;
12,448✔
1872

1873
  int32_t code = tjsonAddIntegerToObject(pJson, jkNameType, pNode->type);
12,448✔
1874
  if (TSDB_CODE_SUCCESS == code) {
12,448!
1875
    code = tjsonAddIntegerToObject(pJson, jkNameAcctId, pNode->acctId);
12,448✔
1876
  }
1877
  if (TSDB_CODE_SUCCESS == code) {
12,448!
1878
    code = tjsonAddStringToObject(pJson, jkNameDbName, pNode->dbname);
12,448✔
1879
  }
1880
  if (TSDB_CODE_SUCCESS == code) {
12,448!
1881
    code = tjsonAddStringToObject(pJson, jkNameTableName, pNode->tname);
12,448✔
1882
  }
1883

1884
  return code;
12,448✔
1885
}
1886

1887
static int32_t jsonToName(const SJson* pJson, void* pObj) {
11,946✔
1888
  SName* pNode = (SName*)pObj;
11,946✔
1889

1890
  int32_t code = tjsonGetUTinyIntValue(pJson, jkNameType, &pNode->type);
11,946✔
1891
  if (TSDB_CODE_SUCCESS == code) {
11,946!
1892
    code = tjsonGetIntValue(pJson, jkNameAcctId, &pNode->acctId);
11,946✔
1893
  }
1894
  if (TSDB_CODE_SUCCESS == code) {
11,945!
1895
    code = tjsonGetStringValue(pJson, jkNameDbName, pNode->dbname);
11,945✔
1896
  }
1897
  if (TSDB_CODE_SUCCESS == code) {
11,945!
1898
    code = tjsonGetStringValue(pJson, jkNameTableName, pNode->tname);
11,945✔
1899
  }
1900

1901
  return code;
11,945✔
1902
}
1903

1904
static const char* jkScanPhysiPlanScanCols = "ScanCols";
1905
static const char* jkScanPhysiPlanScanPseudoCols = "ScanPseudoCols";
1906
static const char* jkScanPhysiPlanTableId = "TableId";
1907
static const char* jkScanPhysiPlanSTableId = "STableId";
1908
static const char* jkScanPhysiPlanTableType = "TableType";
1909
static const char* jkScanPhysiPlanTableName = "TableName";
1910
static const char* jkScanPhysiPlanGroupOrderScan = "GroupOrderScan";
1911

1912
static int32_t physiScanNodeToJson(const void* pObj, SJson* pJson) {
12,448✔
1913
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
12,448✔
1914

1915
  int32_t code = physicPlanNodeToJson(pObj, pJson);
12,448✔
1916
  if (TSDB_CODE_SUCCESS == code) {
12,448!
1917
    code = nodeListToJson(pJson, jkScanPhysiPlanScanCols, pNode->pScanCols);
12,448✔
1918
  }
1919
  if (TSDB_CODE_SUCCESS == code) {
12,448!
1920
    code = nodeListToJson(pJson, jkScanPhysiPlanScanPseudoCols, pNode->pScanPseudoCols);
12,448✔
1921
  }
1922
  if (TSDB_CODE_SUCCESS == code) {
12,448!
1923
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableId, pNode->uid);
12,448✔
1924
  }
1925
  if (TSDB_CODE_SUCCESS == code) {
12,448!
1926
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanSTableId, pNode->suid);
12,448✔
1927
  }
1928
  if (TSDB_CODE_SUCCESS == code) {
12,448!
1929
    code = tjsonAddIntegerToObject(pJson, jkScanPhysiPlanTableType, pNode->tableType);
12,448✔
1930
  }
1931
  if (TSDB_CODE_SUCCESS == code) {
12,448!
1932
    code = tjsonAddObject(pJson, jkScanPhysiPlanTableName, nameToJson, &pNode->tableName);
12,448✔
1933
  }
1934
  if (TSDB_CODE_SUCCESS == code) {
12,448!
1935
    code = tjsonAddBoolToObject(pJson, jkScanPhysiPlanGroupOrderScan, pNode->groupOrderScan);
12,448✔
1936
  }
1937

1938
  return code;
12,448✔
1939
}
1940

1941
static int32_t jsonToPhysiScanNode(const SJson* pJson, void* pObj) {
11,942✔
1942
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
11,942✔
1943

1944
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
11,942✔
1945
  if (TSDB_CODE_SUCCESS == code) {
11,941!
1946
    code = jsonToNodeList(pJson, jkScanPhysiPlanScanCols, &pNode->pScanCols);
11,942✔
1947
  }
1948
  if (TSDB_CODE_SUCCESS == code) {
11,945!
1949
    code = jsonToNodeList(pJson, jkScanPhysiPlanScanPseudoCols, &pNode->pScanPseudoCols);
11,946✔
1950
  }
1951
  if (TSDB_CODE_SUCCESS == code) {
11,945!
1952
    code = tjsonGetUBigIntValue(pJson, jkScanPhysiPlanTableId, &pNode->uid);
11,946✔
1953
  }
1954
  if (TSDB_CODE_SUCCESS == code) {
11,943!
1955
    code = tjsonGetUBigIntValue(pJson, jkScanPhysiPlanSTableId, &pNode->suid);
11,944✔
1956
  }
1957
  if (TSDB_CODE_SUCCESS == code) {
11,945!
1958
    code = tjsonGetTinyIntValue(pJson, jkScanPhysiPlanTableType, &pNode->tableType);
11,946✔
1959
  }
1960
  if (TSDB_CODE_SUCCESS == code) {
11,943!
1961
    code = tjsonToObject(pJson, jkScanPhysiPlanTableName, jsonToName, &pNode->tableName);
11,944✔
1962
  }
1963
  if (TSDB_CODE_SUCCESS == code) {
11,944!
1964
    code = tjsonGetBoolValue(pJson, jkScanPhysiPlanGroupOrderScan, &pNode->groupOrderScan);
11,945✔
1965
  }
1966

1967
  return code;
11,945✔
1968
}
1969

1970
static const char* jkTagScanPhysiOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
1971

1972
static int32_t physiTagScanNodeToJson(const void* pObj, SJson* pJson) {
3✔
1973
  const STagScanPhysiNode* pNode = (const STagScanPhysiNode*)pObj;
3✔
1974

1975
  int32_t code = physiScanNodeToJson(pObj, pJson);
3✔
1976

1977
  if (TSDB_CODE_SUCCESS == code) {
3!
1978
    code = tjsonAddBoolToObject(pJson, jkTagScanPhysiOnlyMetaCtbIdx, pNode->onlyMetaCtbIdx);
3✔
1979
  }
1980
  return code;
3✔
1981
}
1982

1983
static int32_t jsonToPhysiTagScanNode(const SJson* pJson, void* pObj) {
3✔
1984
  STagScanPhysiNode* pNode = (STagScanPhysiNode*)pObj;
3✔
1985

1986
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
3✔
1987

1988
  if (TSDB_CODE_SUCCESS == code) {
3!
1989
    code = tjsonGetBoolValue(pJson, jkTagScanPhysiOnlyMetaCtbIdx, &pNode->onlyMetaCtbIdx);
3✔
1990
  }
1991
  return code;
3✔
1992
}
1993

1994
static const char* jkLastRowScanPhysiPlanGroupTags = "GroupTags";
1995
static const char* jkLastRowScanPhysiPlanGroupSort = "GroupSort";
1996
static const char* jkLastRowScanPhysiPlanTargets = "Targets";
1997
static const char* jkLastRowScanPhysiPlanFuncType = "FuncType";
1998
static const char* jkLastRowScanPhysiPlanFuncTypes = "FuncTypes";
1999

2000
static int32_t funcTypeToJson(const void* pObj, SJson* pJson) {
×
2001
  const int32_t* pNode = (const int32_t*)pObj;
×
2002

2003
  int32_t code = tjsonAddIntegerToObject(pJson, jkLastRowScanPhysiPlanFuncType, *pNode);
×
2004
  return code;
×
2005
}
2006

2007
static int32_t jsonToFuncType(const SJson* pJson, void* pObj) {
×
2008
  int32_t* pNode = (int32_t*)pObj;
×
2009

2010
  int32_t code = tjsonGetIntValue(pJson, jkLastRowScanPhysiPlanFuncType, pNode);
×
2011
  return code;
×
2012
}
2013

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

2017
  int32_t code = physiScanNodeToJson(pObj, pJson);
×
2018
  if (TSDB_CODE_SUCCESS == code) {
×
2019
    code = nodeListToJson(pJson, jkLastRowScanPhysiPlanGroupTags, pNode->pGroupTags);
×
2020
  }
2021
  if (TSDB_CODE_SUCCESS == code) {
×
2022
    code = tjsonAddBoolToObject(pJson, jkLastRowScanPhysiPlanGroupSort, pNode->groupSort);
×
2023
  }
2024
  if (TSDB_CODE_SUCCESS == code) {
×
2025
    code = nodeListToJson(pJson, jkLastRowScanPhysiPlanTargets, pNode->pTargets);
×
2026
  }
2027
  if (TSDB_CODE_SUCCESS == code) {
×
2028
    code = tjsonAddTArray(pJson, jkLastRowScanPhysiPlanFuncTypes, funcTypeToJson, pNode->pFuncTypes);
×
2029
  }
2030

2031
  return code;
×
2032
}
2033

2034
static int32_t jsonToPhysiLastRowScanNode(const SJson* pJson, void* pObj) {
×
2035
  SLastRowScanPhysiNode* pNode = (SLastRowScanPhysiNode*)pObj;
×
2036

2037
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
×
2038
  if (TSDB_CODE_SUCCESS == code) {
×
2039
    code = jsonToNodeList(pJson, jkLastRowScanPhysiPlanGroupTags, &pNode->pGroupTags);
×
2040
  }
2041
  if (TSDB_CODE_SUCCESS == code) {
×
2042
    code = tjsonGetBoolValue(pJson, jkLastRowScanPhysiPlanGroupSort, &pNode->groupSort);
×
2043
  }
2044
  if (TSDB_CODE_SUCCESS == code) {
×
2045
    code = jsonToNodeList(pJson, jkLastRowScanPhysiPlanTargets, &pNode->pTargets);
×
2046
  }
2047
  if (TSDB_CODE_SUCCESS == code) {
×
2048
    code = tjsonToTArray(pJson, jkLastRowScanPhysiPlanFuncTypes, jsonToFuncType, &pNode->pFuncTypes, sizeof(int32_t));
×
2049
  }
2050

2051
  return code;
×
2052
}
2053

2054
static const char* jkTableScanPhysiPlanScanCount = "ScanCount";
2055
static const char* jkTableScanPhysiPlanReverseScanCount = "ReverseScanCount";
2056
static const char* jkTableScanPhysiPlanStartKey = "StartKey";
2057
static const char* jkTableScanPhysiPlanEndKey = "EndKey";
2058
static const char* jkTableScanPhysiPlanRatio = "Ratio";
2059
static const char* jkTableScanPhysiPlanDataRequired = "DataRequired";
2060
static const char* jkTableScanPhysiPlanDynamicScanFuncs = "DynamicScanFuncs";
2061
static const char* jkTableScanPhysiPlanInterval = "Interval";
2062
static const char* jkTableScanPhysiPlanOffset = "Offset";
2063
static const char* jkTableScanPhysiPlanSliding = "Sliding";
2064
static const char* jkTableScanPhysiPlanIntervalUnit = "IntervalUnit";
2065
static const char* jkTableScanPhysiPlanSlidingUnit = "SlidingUnit";
2066
static const char* jkTableScanPhysiPlanTriggerType = "TriggerType";
2067
static const char* jkTableScanPhysiPlanWatermark = "Watermark";
2068
static const char* jkTableScanPhysiPlanIgnoreExpired = "IgnoreExpired";
2069
static const char* jkTableScanPhysiPlanGroupTags = "GroupTags";
2070
static const char* jkTableScanPhysiPlanGroupSort = "GroupSort";
2071
static const char* jkTableScanPhysiPlanTags = "Tags";
2072
static const char* jkTableScanPhysiPlanSubtable = "Subtable";
2073
static const char* jkTableScanPhysiPlanAssignBlockUid = "AssignBlockUid";
2074
static const char* jkTableScanPhysiPlanIgnoreUpdate = "IgnoreUpdate";
2075
static const char* jkTableScanPhysiPlanFilesetDelimited = "FilesetDelimited";
2076
static const char* jkTableScanPhysiPlanNeedCountEmptyTable = "NeedCountEmptyTable";
2077
static const char* jkTableScanPhysiPlanParaTablesSort = "ParaTablesSort";
2078
static const char* jkTableScanPhysiPlanSmallDataTsSort = "SmallDataTsSort";
2079

2080
static int32_t physiTableScanNodeToJson(const void* pObj, SJson* pJson) {
12,445✔
2081
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
12,445✔
2082

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

2162
static int32_t jsonToPhysiTableScanNode(const SJson* pJson, void* pObj) {
11,939✔
2163
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
11,939✔
2164

2165
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
11,939✔
2166
  if (TSDB_CODE_SUCCESS == code) {
11,942!
2167
    code = tjsonGetUTinyIntValue(pJson, jkTableScanPhysiPlanScanCount, &pNode->scanSeq[0]);
11,942✔
2168
  }
2169
  if (TSDB_CODE_SUCCESS == code) {
11,943!
2170
    code = tjsonGetUTinyIntValue(pJson, jkTableScanPhysiPlanReverseScanCount, &pNode->scanSeq[1]);
11,943✔
2171
  }
2172
  if (TSDB_CODE_SUCCESS == code) {
11,943!
2173
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanStartKey, &pNode->scanRange.skey);
11,943✔
2174
  }
2175
  if (TSDB_CODE_SUCCESS == code) {
11,942!
2176
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanEndKey, &pNode->scanRange.ekey);
11,942✔
2177
  }
2178
  if (TSDB_CODE_SUCCESS == code) {
11,942!
2179
    code = tjsonGetDoubleValue(pJson, jkTableScanPhysiPlanRatio, &pNode->ratio);
11,942✔
2180
  }
2181
  if (TSDB_CODE_SUCCESS == code) {
11,941!
2182
    code = tjsonGetIntValue(pJson, jkTableScanPhysiPlanDataRequired, &pNode->dataRequired);
11,941✔
2183
  }
2184
  if (TSDB_CODE_SUCCESS == code) {
11,942!
2185
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanDynamicScanFuncs, &pNode->pDynamicScanFuncs);
11,942✔
2186
  }
2187
  if (TSDB_CODE_SUCCESS == code) {
11,941!
2188
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanInterval, &pNode->interval);
11,941✔
2189
  }
2190
  if (TSDB_CODE_SUCCESS == code) {
11,942!
2191
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanOffset, &pNode->offset);
11,942✔
2192
  }
2193
  if (TSDB_CODE_SUCCESS == code) {
11,943!
2194
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanSliding, &pNode->sliding);
11,943✔
2195
  }
2196
  if (TSDB_CODE_SUCCESS == code) {
11,942!
2197
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIntervalUnit, &pNode->intervalUnit);
11,942✔
2198
  }
2199
  if (TSDB_CODE_SUCCESS == code) {
11,941!
2200
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanSlidingUnit, &pNode->slidingUnit);
11,941✔
2201
  }
2202
  if (TSDB_CODE_SUCCESS == code) {
11,943!
2203
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanTriggerType, &pNode->triggerType);
11,943✔
2204
  }
2205
  if (TSDB_CODE_SUCCESS == code) {
11,943!
2206
    code = tjsonGetBigIntValue(pJson, jkTableScanPhysiPlanWatermark, &pNode->watermark);
11,943✔
2207
  }
2208
  if (TSDB_CODE_SUCCESS == code) {
11,942!
2209
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIgnoreExpired, &pNode->igExpired);
11,942✔
2210
  }
2211
  if (TSDB_CODE_SUCCESS == code) {
11,943!
2212
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanGroupTags, &pNode->pGroupTags);
11,943✔
2213
  }
2214
  if (TSDB_CODE_SUCCESS == code) {
11,941!
2215
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanGroupSort, &pNode->groupSort);
11,941✔
2216
  }
2217
  if (TSDB_CODE_SUCCESS == code) {
11,943!
2218
    code = jsonToNodeList(pJson, jkTableScanPhysiPlanTags, &pNode->pTags);
11,943✔
2219
  }
2220
  if (TSDB_CODE_SUCCESS == code) {
11,942!
2221
    code = jsonToNodeObject(pJson, jkTableScanPhysiPlanSubtable, &pNode->pSubtable);
11,942✔
2222
  }
2223
  if (TSDB_CODE_SUCCESS == code) {
11,941!
2224
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanAssignBlockUid, &pNode->assignBlockUid);
11,941✔
2225
  }
2226
  if (TSDB_CODE_SUCCESS == code) {
11,941!
2227
    code = tjsonGetTinyIntValue(pJson, jkTableScanPhysiPlanIgnoreUpdate, &pNode->igCheckUpdate);
11,941✔
2228
  }
2229
  if (TSDB_CODE_SUCCESS == code) {
11,942!
2230
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanFilesetDelimited, &pNode->filesetDelimited);
11,942✔
2231
  }
2232
  if (TSDB_CODE_SUCCESS == code) {
11,943!
2233
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanNeedCountEmptyTable, &pNode->needCountEmptyTable);
11,943✔
2234
  }
2235
  if (TSDB_CODE_SUCCESS == code) {
11,939!
2236
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanParaTablesSort, &pNode->paraTablesSort);
11,939✔
2237
  }
2238
  if (TSDB_CODE_SUCCESS == code) {
11,940!
2239
    code = tjsonGetBoolValue(pJson, jkTableScanPhysiPlanSmallDataTsSort, &pNode->smallDataTsSort);
11,940✔
2240
  }
2241
  return code;
11,942✔
2242
}
2243

2244
static const char* jkSysTableScanPhysiPlanMnodeEpSet = "MnodeEpSet";
2245
static const char* jkSysTableScanPhysiPlanShowRewrite = "ShowRewrite";
2246
static const char* jkSysTableScanPhysiPlanAccountId = "AccountId";
2247
static const char* jkSysTableScanPhysiPlanSysInfo = "SysInfo";
2248

2249
static int32_t physiSysTableScanNodeToJson(const void* pObj, SJson* pJson) {
×
2250
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
×
2251

2252
  int32_t code = physiScanNodeToJson(pObj, pJson);
×
2253
  if (TSDB_CODE_SUCCESS == code) {
×
2254
    code = tjsonAddObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, epSetToJson, &pNode->mgmtEpSet);
×
2255
  }
2256
  if (TSDB_CODE_SUCCESS == code) {
×
2257
    code = tjsonAddBoolToObject(pJson, jkSysTableScanPhysiPlanShowRewrite, pNode->showRewrite);
×
2258
  }
2259
  if (TSDB_CODE_SUCCESS == code) {
×
2260
    code = tjsonAddIntegerToObject(pJson, jkSysTableScanPhysiPlanAccountId, pNode->accountId);
×
2261
  }
2262
  if (TSDB_CODE_SUCCESS == code) {
×
2263
    code = tjsonAddBoolToObject(pJson, jkSysTableScanPhysiPlanSysInfo, pNode->sysInfo);
×
2264
  }
2265

2266
  return code;
×
2267
}
2268

2269
static int32_t jsonToPhysiSysTableScanNode(const SJson* pJson, void* pObj) {
×
2270
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
×
2271

2272
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
×
2273
  if (TSDB_CODE_SUCCESS == code) {
×
2274
    code = tjsonToObject(pJson, jkSysTableScanPhysiPlanMnodeEpSet, jsonToEpSet, &pNode->mgmtEpSet);
×
2275
  }
2276
  if (TSDB_CODE_SUCCESS == code) {
×
2277
    code = tjsonGetBoolValue(pJson, jkSysTableScanPhysiPlanShowRewrite, &pNode->showRewrite);
×
2278
  }
2279
  if (TSDB_CODE_SUCCESS == code) {
×
2280
    tjsonGetNumberValue(pJson, jkSysTableScanPhysiPlanAccountId, pNode->accountId, code);
×
2281
  }
2282
  if (TSDB_CODE_SUCCESS == code) {
×
2283
    code = tjsonGetBoolValue(pJson, jkSysTableScanPhysiPlanSysInfo, &pNode->sysInfo);
×
2284
  }
2285

2286
  return code;
×
2287
}
2288

2289
static const char* jkProjectPhysiPlanProjections = "Projections";
2290
static const char* jkProjectPhysiPlanMergeDataBlock = "MergeDataBlock";
2291
static const char* jkProjectPhysiPlanIgnoreGroupId = "IgnoreGroupId";
2292
static const char* jkProjectPhysiPlanInputIgnoreGroup = "InputIgnoreGroup";
2293

2294
static int32_t physiProjectNodeToJson(const void* pObj, SJson* pJson) {
7,666✔
2295
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
7,666✔
2296

2297
  int32_t code = physicPlanNodeToJson(pObj, pJson);
7,666✔
2298
  if (TSDB_CODE_SUCCESS == code) {
7,666!
2299
    code = nodeListToJson(pJson, jkProjectPhysiPlanProjections, pNode->pProjections);
7,666✔
2300
  }
2301
  if (TSDB_CODE_SUCCESS == code) {
7,666!
2302
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
7,666✔
2303
  }
2304
  if (TSDB_CODE_SUCCESS == code) {
7,666!
2305
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanIgnoreGroupId, pNode->ignoreGroupId);
7,666✔
2306
  }
2307
  if (TSDB_CODE_SUCCESS == code) {
7,666!
2308
    code = tjsonAddBoolToObject(pJson, jkProjectPhysiPlanInputIgnoreGroup, pNode->inputIgnoreGroup);
7,666✔
2309
  }
2310
  return code;
7,666✔
2311
}
2312

2313
static int32_t jsonToPhysiProjectNode(const SJson* pJson, void* pObj) {
7,186✔
2314
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
7,186✔
2315

2316
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
7,186✔
2317
  if (TSDB_CODE_SUCCESS == code) {
7,187!
2318
    code = jsonToNodeList(pJson, jkProjectPhysiPlanProjections, &pNode->pProjections);
7,187✔
2319
  }
2320
  if (TSDB_CODE_SUCCESS == code) {
7,189!
2321
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
7,189✔
2322
  }
2323
  if (TSDB_CODE_SUCCESS == code) {
7,189!
2324
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanIgnoreGroupId, &pNode->ignoreGroupId);
7,189✔
2325
  }
2326
  if (TSDB_CODE_SUCCESS == code) {
7,189✔
2327
    code = tjsonGetBoolValue(pJson, jkProjectPhysiPlanInputIgnoreGroup, &pNode->inputIgnoreGroup);
7,188✔
2328
  }
2329
  return code;
7,187✔
2330
}
2331

2332
static const char* jkJoinPhysiPlanJoinType = "JoinType";
2333
static const char* jkJoinPhysiPlanSubType = "SubType";
2334
static const char* jkJoinPhysiPlanWinOffset = "WindowOffset";
2335
static const char* jkJoinPhysiPlanJoinLimit = "JoinLimit";
2336
static const char* jkJoinPhysiPlanAsofOp = "AsofOp";
2337
static const char* jkJoinPhysiPlanLeftPrimExpr = "LeftPrimExpr";
2338
static const char* jkJoinPhysiPlanRightPrimExpr = "RightPrimExpr";
2339
static const char* jkJoinPhysiPlanLeftPrimSlotId = "LeftPrimSlotId";
2340
static const char* jkJoinPhysiPlanRightPrimSlotId = "RightPrimSlotId";
2341
static const char* jkJoinPhysiPlanLeftEqCols = "LeftEqCols";
2342
static const char* jkJoinPhysiPlanRightEqCols = "RightEqCols";
2343
static const char* jkJoinPhysiPlanInputTsOrder = "InputTsOrder";
2344
static const char* jkJoinPhysiPlanOnLeftCols = "OnLeftColumns";
2345
static const char* jkJoinPhysiPlanOnRightCols = "OnRightColumns";
2346
static const char* jkJoinPhysiPlanPrimKeyCondition = "PrimKeyCondition";
2347
static const char* jkJoinPhysiPlanOnConditions = "OnConditions";
2348
static const char* jkJoinPhysiPlanTargets = "Targets";
2349
static const char* jkJoinPhysiPlanColOnConditions = "ColumnOnConditions";
2350
static const char* jkJoinPhysiPlanLeftInputRowNum = "LeftInputRowNum";
2351
static const char* jkJoinPhysiPlanRightInputRowNum = "RightInputRowNum";
2352
static const char* jkJoinPhysiPlanLeftInputRowSize = "LeftInputRowSize";
2353
static const char* jkJoinPhysiPlanRightInputRowSize = "RightInputRowSize";
2354
static const char* jkJoinPhysiPlanSeqWinGroup = "SeqWinGroup";
2355
static const char* jkJoinPhysiPlanGroupJoin = "GroupJoin";
2356
static const char* jkJoinPhysiPlanLeftOnCond = "LeftOnCond";
2357
static const char* jkJoinPhysiPlanRightOnCond = "RightOnCond";
2358
static const char* jkJoinPhysiPlanTimeRangeSKey = "TimeRangeSKey";
2359
static const char* jkJoinPhysiPlanTimeRangeEKey = "TimeRangeEKey";
2360
static const char* jkJoinPhysiPlanTimeRangeTarget = "TimeRangeTarget";
2361

2362
static int32_t physiMergeJoinNodeToJson(const void* pObj, SJson* pJson) {
×
2363
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
×
2364

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

2427
  return code;
×
2428
}
2429

2430
static int32_t jsonToPhysiMergeJoinNode(const SJson* pJson, void* pObj) {
×
2431
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
×
2432

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

2495
  return code;
×
2496
}
2497

2498
static int32_t physiHashJoinNodeToJson(const void* pObj, SJson* pJson) {
×
2499
  const SHashJoinPhysiNode* pNode = (const SHashJoinPhysiNode*)pObj;
×
2500

2501
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
2502
  if (TSDB_CODE_SUCCESS == code) {
×
2503
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanJoinType, pNode->joinType);
×
2504
  }
2505
  if (TSDB_CODE_SUCCESS == code) {
×
2506
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanSubType, pNode->subType);
×
2507
  }
2508
  if (TSDB_CODE_SUCCESS == code) {
×
2509
    code = nodeListToJson(pJson, jkJoinPhysiPlanOnLeftCols, pNode->pOnLeft);
×
2510
  }
2511
  if (TSDB_CODE_SUCCESS == code) {
×
2512
    code = nodeListToJson(pJson, jkJoinPhysiPlanOnRightCols, pNode->pOnRight);
×
2513
  }
2514
  if (TSDB_CODE_SUCCESS == code) {
×
2515
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftPrimExpr, nodeToJson, pNode->leftPrimExpr);
×
2516
  }
2517
  if (TSDB_CODE_SUCCESS == code) {
×
2518
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightPrimExpr, nodeToJson, pNode->rightPrimExpr);
×
2519
  }
2520
  if (TSDB_CODE_SUCCESS == code) {
×
2521
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId);
×
2522
  }
2523
  if (TSDB_CODE_SUCCESS == code) {
×
2524
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId);
×
2525
  }
2526
  if (TSDB_CODE_SUCCESS == code) {
×
2527
    code = tjsonAddObject(pJson, jkJoinPhysiPlanOnConditions, nodeToJson, pNode->pFullOnCond);
×
2528
  }
2529
  if (TSDB_CODE_SUCCESS == code) {
×
2530
    code = nodeListToJson(pJson, jkJoinPhysiPlanTargets, pNode->pTargets);
×
2531
  }
2532
  if (TSDB_CODE_SUCCESS == code) {
×
2533
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum);
×
2534
  }
2535
  if (TSDB_CODE_SUCCESS == code) {
×
2536
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize);
×
2537
  }
2538
  if (TSDB_CODE_SUCCESS == code) {
×
2539
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum);
×
2540
  }
2541
  if (TSDB_CODE_SUCCESS == code) {
×
2542
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize);
×
2543
  }
2544
  if (TSDB_CODE_SUCCESS == code) {
×
2545
    code = tjsonAddObject(pJson, jkJoinPhysiPlanLeftOnCond, nodeToJson, pNode->pLeftOnCond);
×
2546
  }
2547
  if (TSDB_CODE_SUCCESS == code) {
×
2548
    code = tjsonAddObject(pJson, jkJoinPhysiPlanRightOnCond, nodeToJson, pNode->pRightOnCond);
×
2549
  }
2550
  if (TSDB_CODE_SUCCESS == code) {
×
2551
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeTarget, pNode->timeRangeTarget);
×
2552
  }
2553
  if (TSDB_CODE_SUCCESS == code) {
×
2554
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeSKey, pNode->timeRange.skey);
×
2555
  }
2556
  if (TSDB_CODE_SUCCESS == code) {
×
2557
    code = tjsonAddIntegerToObject(pJson, jkJoinPhysiPlanTimeRangeEKey, pNode->timeRange.ekey);
×
2558
  }
2559

2560
  return code;
×
2561
}
2562

2563
static int32_t jsonToPhysiHashJoinNode(const SJson* pJson, void* pObj) {
×
2564
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
×
2565

2566
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
2567
  if (TSDB_CODE_SUCCESS == code) {
×
2568
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanJoinType, pNode->joinType, code);
×
2569
  }
2570
  if (TSDB_CODE_SUCCESS == code) {
×
2571
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanSubType, pNode->subType, code);
×
2572
  }
2573
  if (TSDB_CODE_SUCCESS == code) {
×
2574
    code = jsonToNodeList(pJson, jkJoinPhysiPlanOnLeftCols, &pNode->pOnLeft);
×
2575
  }
2576
  if (TSDB_CODE_SUCCESS == code) {
×
2577
    code = jsonToNodeList(pJson, jkJoinPhysiPlanOnRightCols, &pNode->pOnRight);
×
2578
  }
2579
  if (TSDB_CODE_SUCCESS == code) {
×
2580
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftPrimExpr, &pNode->leftPrimExpr);
×
2581
  }
2582
  if (TSDB_CODE_SUCCESS == code) {
×
2583
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightPrimExpr, &pNode->rightPrimExpr);
×
2584
  }
2585
  if (TSDB_CODE_SUCCESS == code) {
×
2586
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftPrimSlotId, pNode->leftPrimSlotId, code);
×
2587
  }
2588
  if (TSDB_CODE_SUCCESS == code) {
×
2589
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightPrimSlotId, pNode->rightPrimSlotId, code);
×
2590
  }
2591
  if (TSDB_CODE_SUCCESS == code) {
×
2592
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanOnConditions, &pNode->pFullOnCond);
×
2593
  }
2594
  if (TSDB_CODE_SUCCESS == code) {
×
2595
    code = jsonToNodeList(pJson, jkJoinPhysiPlanTargets, &pNode->pTargets);
×
2596
  }
2597
  if (TSDB_CODE_SUCCESS == code) {
×
2598
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowNum, pNode->inputStat[0].inputRowNum, code);
×
2599
  }
2600
  if (TSDB_CODE_SUCCESS == code) {
×
2601
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanLeftInputRowSize, pNode->inputStat[0].inputRowSize, code);
×
2602
  }
2603
  if (TSDB_CODE_SUCCESS == code) {
×
2604
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowNum, pNode->inputStat[1].inputRowNum, code);
×
2605
  }
2606
  if (TSDB_CODE_SUCCESS == code) {
×
2607
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanRightInputRowSize, pNode->inputStat[1].inputRowSize, code);
×
2608
  }
2609
  if (TSDB_CODE_SUCCESS == code) {
×
2610
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanLeftOnCond, &pNode->pLeftOnCond);
×
2611
  }
2612
  if (TSDB_CODE_SUCCESS == code) {
×
2613
    code = jsonToNodeObject(pJson, jkJoinPhysiPlanRightOnCond, &pNode->pRightOnCond);
×
2614
  }
2615
  if (TSDB_CODE_SUCCESS == code) {
×
2616
    tjsonGetNumberValue(pJson, jkJoinPhysiPlanTimeRangeTarget, pNode->timeRangeTarget, code);
×
2617
  }
2618
  if (TSDB_CODE_SUCCESS == code) {
×
2619
    code = tjsonGetBigIntValue(pJson, jkJoinPhysiPlanTimeRangeSKey, &pNode->timeRange.skey);
×
2620
  }
2621
  if (TSDB_CODE_SUCCESS == code) {
×
2622
    code = tjsonGetBigIntValue(pJson, jkJoinPhysiPlanTimeRangeEKey, &pNode->timeRange.ekey);
×
2623
  }
2624

2625
  return code;
×
2626
}
2627

2628
static const char* jkAggPhysiPlanExprs = "Exprs";
2629
static const char* jkAggPhysiPlanGroupKeys = "GroupKeys";
2630
static const char* jkAggPhysiPlanAggFuncs = "AggFuncs";
2631
static const char* jkAggPhysiPlanMergeDataBlock = "MergeDataBlock";
2632
static const char* jkAggPhysiPlanGroupKeyOptimized = "GroupKeyOptimized";
2633
static const char* jkAggPhysiPlanHasCountLikeFunc = "HasCountFunc";
2634

2635
static int32_t physiAggNodeToJson(const void* pObj, SJson* pJson) {
48✔
2636
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
48✔
2637

2638
  int32_t code = physicPlanNodeToJson(pObj, pJson);
48✔
2639
  if (TSDB_CODE_SUCCESS == code) {
48!
2640
    code = nodeListToJson(pJson, jkAggPhysiPlanExprs, pNode->pExprs);
48✔
2641
  }
2642
  if (TSDB_CODE_SUCCESS == code) {
48!
2643
    code = nodeListToJson(pJson, jkAggPhysiPlanGroupKeys, pNode->pGroupKeys);
48✔
2644
  }
2645
  if (TSDB_CODE_SUCCESS == code) {
48!
2646
    code = nodeListToJson(pJson, jkAggPhysiPlanAggFuncs, pNode->pAggFuncs);
48✔
2647
  }
2648
  if (TSDB_CODE_SUCCESS == code) {
48!
2649
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
48✔
2650
  }
2651
  if (TSDB_CODE_SUCCESS == code) {
48!
2652
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanGroupKeyOptimized, pNode->groupKeyOptimized);
48✔
2653
  }
2654
  if (TSDB_CODE_SUCCESS == code) {
48!
2655
    code = tjsonAddBoolToObject(pJson, jkAggPhysiPlanHasCountLikeFunc, pNode->hasCountLikeFunc);
48✔
2656
  }
2657

2658
  return code;
48✔
2659
}
2660

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

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

2684
  return code;
33✔
2685
}
2686

2687
static const char* jkExchangePhysiPlanSrcStartGroupId = "SrcStartGroupId";
2688
static const char* jkExchangePhysiPlanSrcEndGroupId = "SrcEndGroupId";
2689
static const char* jkExchangePhysiPlanSrcEndPoints = "SrcEndPoints";
2690
static const char* jkExchangePhysiPlanSeqRecvData = "SeqRecvData";
2691

2692
static int32_t physiExchangeNodeToJson(const void* pObj, SJson* pJson) {
×
2693
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
×
2694

2695
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
2696
  if (TSDB_CODE_SUCCESS == code) {
×
2697
    code = tjsonAddIntegerToObject(pJson, jkExchangePhysiPlanSrcStartGroupId, pNode->srcStartGroupId);
×
2698
  }
2699
  if (TSDB_CODE_SUCCESS == code) {
×
2700
    code = tjsonAddIntegerToObject(pJson, jkExchangePhysiPlanSrcEndGroupId, pNode->srcEndGroupId);
×
2701
  }
2702
  if (TSDB_CODE_SUCCESS == code) {
×
2703
    code = nodeListToJson(pJson, jkExchangePhysiPlanSrcEndPoints, pNode->pSrcEndPoints);
×
2704
  }
2705
  if (TSDB_CODE_SUCCESS == code) {
×
2706
    code = tjsonAddBoolToObject(pJson, jkExchangePhysiPlanSeqRecvData, pNode->seqRecvData);
×
2707
  }
2708

2709
  return code;
×
2710
}
2711

2712
static int32_t jsonToPhysiExchangeNode(const SJson* pJson, void* pObj) {
×
2713
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
×
2714

2715
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
2716
  if (TSDB_CODE_SUCCESS == code) {
×
2717
    code = tjsonGetIntValue(pJson, jkExchangePhysiPlanSrcStartGroupId, &pNode->srcStartGroupId);
×
2718
  }
2719
  if (TSDB_CODE_SUCCESS == code) {
×
2720
    code = tjsonGetIntValue(pJson, jkExchangePhysiPlanSrcEndGroupId, &pNode->srcEndGroupId);
×
2721
  }
2722
  if (TSDB_CODE_SUCCESS == code) {
×
2723
    code = jsonToNodeList(pJson, jkExchangePhysiPlanSrcEndPoints, &pNode->pSrcEndPoints);
×
2724
  }
2725
  if (TSDB_CODE_SUCCESS == code) {
×
2726
    code = tjsonGetBoolValue(pJson, jkExchangePhysiPlanSeqRecvData, &pNode->seqRecvData);
×
2727
  }
2728

2729
  return code;
×
2730
}
2731

2732
static const char* jkMergePhysiPlanMergeKeys = "MergeKeys";
2733
static const char* jkMergePhysiPlanTargets = "Targets";
2734
static const char* jkMergePhysiPlanNumOfChannels = "NumOfChannels";
2735
static const char* jkMergePhysiPlanSrcGroupId = "SrcGroupId";
2736
static const char* jkMergePhysiPlanGroupSort = "GroupSort";
2737
static const char* jkMergePhysiPlanIgnoreGroupID = "IgnoreGroupID";
2738
static const char* jkMergePhysiPlanInputWithGroupId = "InputWithGroupId";
2739
static const char* jkMergePhysiPlanType = "Type";
2740

2741
static int32_t physiMergeNodeToJson(const void* pObj, SJson* pJson) {
×
2742
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
×
2743

2744
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
2745
  if (TSDB_CODE_SUCCESS == code) {
×
2746
    code = nodeListToJson(pJson, jkMergePhysiPlanMergeKeys, pNode->pMergeKeys);
×
2747
  }
2748
  if (TSDB_CODE_SUCCESS == code) {
×
2749
    code = nodeListToJson(pJson, jkMergePhysiPlanTargets, pNode->pTargets);
×
2750
  }
2751
  if (TSDB_CODE_SUCCESS == code) {
×
2752
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanNumOfChannels, pNode->numOfChannels);
×
2753
  }
2754
  if (TSDB_CODE_SUCCESS == code) {
×
2755
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanSrcGroupId, pNode->srcGroupId);
×
2756
  }
2757
  if (TSDB_CODE_SUCCESS == code) {
×
2758
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanGroupSort, pNode->groupSort);
×
2759
  }
2760
  if (TSDB_CODE_SUCCESS == code) {
×
2761
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanIgnoreGroupID, pNode->ignoreGroupId);
×
2762
  }
2763
  if (TSDB_CODE_SUCCESS == code) {
×
2764
    code = tjsonAddBoolToObject(pJson, jkMergePhysiPlanInputWithGroupId, pNode->inputWithGroupId);
×
2765
  }
2766
  if (TSDB_CODE_SUCCESS == code) {
×
2767
    code = tjsonAddIntegerToObject(pJson, jkMergePhysiPlanType, pNode->type);
×
2768
  }
2769

2770
  return code;
×
2771
}
2772

2773
static int32_t jsonToPhysiMergeNode(const SJson* pJson, void* pObj) {
×
2774
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
×
2775

2776
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
2777
  if (TSDB_CODE_SUCCESS == code) {
×
2778
    code = jsonToNodeList(pJson, jkMergePhysiPlanMergeKeys, &pNode->pMergeKeys);
×
2779
  }
2780
  if (TSDB_CODE_SUCCESS == code) {
×
2781
    code = jsonToNodeList(pJson, jkMergePhysiPlanTargets, &pNode->pTargets);
×
2782
  }
2783
  if (TSDB_CODE_SUCCESS == code) {
×
2784
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanNumOfChannels, &pNode->numOfChannels);
×
2785
  }
2786
  if (TSDB_CODE_SUCCESS == code) {
×
2787
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanSrcGroupId, &pNode->srcGroupId);
×
2788
  }
2789
  if (TSDB_CODE_SUCCESS == code) {
×
2790
    code = tjsonGetBoolValue(pJson, jkMergePhysiPlanGroupSort, &pNode->groupSort);
×
2791
  }
2792
  if (TSDB_CODE_SUCCESS == code) {
×
2793
    code = tjsonGetBoolValue(pJson, jkMergePhysiPlanIgnoreGroupID, &pNode->ignoreGroupId);
×
2794
  }
2795
  if (TSDB_CODE_SUCCESS == code) {
×
2796
    code = tjsonGetIntValue(pJson, jkMergePhysiPlanType, (int32_t*)&pNode->type);
×
2797
  }
2798

2799
  return code;
×
2800
}
2801

2802
static const char* jkSortPhysiPlanExprs = "Exprs";
2803
static const char* jkSortPhysiPlanSortKeys = "SortKeys";
2804
static const char* jkSortPhysiPlanTargets = "Targets";
2805
static const char* jkSortPhysiPlanCalcGroupIds = "CalcGroupIds";
2806
static const char* jkSortPhysiPlanExcludePKCol = "ExcludePKCol";
2807

2808
static int32_t physiSortNodeToJson(const void* pObj, SJson* pJson) {
×
2809
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
×
2810

2811
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
2812
  if (TSDB_CODE_SUCCESS == code) {
×
2813
    code = nodeListToJson(pJson, jkSortPhysiPlanExprs, pNode->pExprs);
×
2814
  }
2815
  if (TSDB_CODE_SUCCESS == code) {
×
2816
    code = nodeListToJson(pJson, jkSortPhysiPlanSortKeys, pNode->pSortKeys);
×
2817
  }
2818
  if (TSDB_CODE_SUCCESS == code) {
×
2819
    code = nodeListToJson(pJson, jkSortPhysiPlanTargets, pNode->pTargets);
×
2820
  }
2821
  if (TSDB_CODE_SUCCESS == code) {
×
2822
    code = tjsonAddBoolToObject(pJson, jkSortPhysiPlanCalcGroupIds, pNode->calcGroupId);
×
2823
  }
2824
  if (TSDB_CODE_SUCCESS == code) {
×
2825
    code = tjsonAddBoolToObject(pJson, jkSortPhysiPlanExcludePKCol, pNode->excludePkCol);
×
2826
  }
2827

2828
  return code;
×
2829
}
2830

2831
static int32_t jsonToPhysiSortNode(const SJson* pJson, void* pObj) {
×
2832
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
×
2833

2834
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
2835
  if (TSDB_CODE_SUCCESS == code) {
×
2836
    code = jsonToNodeList(pJson, jkSortPhysiPlanExprs, &pNode->pExprs);
×
2837
  }
2838
  if (TSDB_CODE_SUCCESS == code) {
×
2839
    code = jsonToNodeList(pJson, jkSortPhysiPlanSortKeys, &pNode->pSortKeys);
×
2840
  }
2841
  if (TSDB_CODE_SUCCESS == code) {
×
2842
    code = jsonToNodeList(pJson, jkSortPhysiPlanTargets, &pNode->pTargets);
×
2843
  }
2844
  if (TSDB_CODE_SUCCESS == code) {
×
2845
    code = tjsonGetBoolValue(pJson, jkSortPhysiPlanCalcGroupIds, &pNode->calcGroupId);
×
2846
  }
2847
  if (TSDB_CODE_SUCCESS == code) {
×
2848
    code = tjsonGetBoolValue(pJson, jkSortPhysiPlanExcludePKCol, &pNode->excludePkCol);
×
2849
  }
2850

2851
  return code;
×
2852
}
2853

2854
static const char* jkWindowPhysiPlanExprs = "Exprs";
2855
static const char* jkWindowPhysiPlanFuncs = "Funcs";
2856
static const char* jkWindowPhysiPlanTsPk = "TsPk";
2857
static const char* jkWindowPhysiPlanTsEnd = "TsEnd";
2858
static const char* jkWindowPhysiPlanTriggerType = "TriggerType";
2859
static const char* jkWindowPhysiPlanWatermark = "Watermark";
2860
static const char* jkWindowPhysiPlanDeleteMark = "DeleteMark";
2861
static const char* jkWindowPhysiPlanIgnoreExpired = "IgnoreExpired";
2862
static const char* jkWindowPhysiPlanInputTsOrder = "InputTsOrder";
2863
static const char* jkWindowPhysiPlanMergeDataBlock = "MergeDataBlock";
2864
static const char* jkWindowPhysiPlanDestHasPrimaryKey = "DestHasPrimaryKey";
2865

2866
static int32_t physiWindowNodeToJson(const void* pObj, SJson* pJson) {
7,278✔
2867
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
7,278✔
2868

2869
  int32_t code = physicPlanNodeToJson(pObj, pJson);
7,278✔
2870
  if (TSDB_CODE_SUCCESS == code) {
7,278!
2871
    code = nodeListToJson(pJson, jkWindowPhysiPlanExprs, pNode->pExprs);
7,278✔
2872
  }
2873
  if (TSDB_CODE_SUCCESS == code) {
7,278!
2874
    code = nodeListToJson(pJson, jkWindowPhysiPlanFuncs, pNode->pFuncs);
7,278✔
2875
  }
2876
  if (TSDB_CODE_SUCCESS == code) {
7,278!
2877
    code = tjsonAddObject(pJson, jkWindowPhysiPlanTsPk, nodeToJson, pNode->pTspk);
7,278✔
2878
  }
2879
  if (TSDB_CODE_SUCCESS == code) {
7,278!
2880
    code = tjsonAddObject(pJson, jkWindowPhysiPlanTsEnd, nodeToJson, pNode->pTsEnd);
7,278✔
2881
  }
2882
  if (TSDB_CODE_SUCCESS == code) {
7,278!
2883
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanTriggerType, pNode->triggerType);
7,278✔
2884
  }
2885
  if (TSDB_CODE_SUCCESS == code) {
7,278!
2886
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanWatermark, pNode->watermark);
7,278✔
2887
  }
2888
  if (TSDB_CODE_SUCCESS == code) {
7,278!
2889
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanDeleteMark, pNode->deleteMark);
7,278✔
2890
  }
2891
  if (TSDB_CODE_SUCCESS == code) {
7,278!
2892
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanIgnoreExpired, pNode->igExpired);
7,278✔
2893
  }
2894
  if (TSDB_CODE_SUCCESS == code) {
7,278!
2895
    code = tjsonAddBoolToObject(pJson, jkWindowPhysiPlanMergeDataBlock, pNode->mergeDataBlock);
7,278✔
2896
  }
2897
  if (TSDB_CODE_SUCCESS == code) {
7,278!
2898
    code = tjsonAddIntegerToObject(pJson, jkWindowPhysiPlanDestHasPrimaryKey, pNode->destHasPrimaryKey);
7,278✔
2899
  }
2900

2901
  return code;
7,278✔
2902
}
2903

2904
static int32_t jsonToPhysiWindowNode(const SJson* pJson, void* pObj) {
7,359✔
2905
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
7,359✔
2906

2907
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
7,359✔
2908
  if (TSDB_CODE_SUCCESS == code) {
7,359!
2909
    code = jsonToNodeList(pJson, jkWindowPhysiPlanExprs, &pNode->pExprs);
7,359✔
2910
  }
2911
  if (TSDB_CODE_SUCCESS == code) {
7,359!
2912
    code = jsonToNodeList(pJson, jkWindowPhysiPlanFuncs, &pNode->pFuncs);
7,359✔
2913
  }
2914
  if (TSDB_CODE_SUCCESS == code) {
7,358!
2915
    code = jsonToNodeObject(pJson, jkWindowPhysiPlanTsPk, (SNode**)&pNode->pTspk);
7,358✔
2916
  }
2917
  if (TSDB_CODE_SUCCESS == code) {
7,359!
2918
    code = jsonToNodeObject(pJson, jkWindowPhysiPlanTsEnd, (SNode**)&pNode->pTsEnd);
7,359✔
2919
  }
2920
  if (TSDB_CODE_SUCCESS == code) {
7,359!
2921
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanTriggerType, &pNode->triggerType);
7,359✔
2922
  }
2923
  if (TSDB_CODE_SUCCESS == code) {
7,359!
2924
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanWatermark, &pNode->watermark);
7,359✔
2925
  }
2926
  if (TSDB_CODE_SUCCESS == code) {
7,359!
2927
    code = tjsonGetBigIntValue(pJson, jkWindowPhysiPlanDeleteMark, &pNode->deleteMark);
7,359✔
2928
  }
2929
  if (TSDB_CODE_SUCCESS == code) {
7,359!
2930
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanIgnoreExpired, &pNode->igExpired);
7,359✔
2931
  }
2932
  if (TSDB_CODE_SUCCESS == code) {
7,359!
2933
    code = tjsonGetBoolValue(pJson, jkWindowPhysiPlanMergeDataBlock, &pNode->mergeDataBlock);
7,359✔
2934
  }
2935
  if (TSDB_CODE_SUCCESS == code) {
7,358!
2936
    code = tjsonGetTinyIntValue(pJson, jkWindowPhysiPlanDestHasPrimaryKey, &pNode->destHasPrimaryKey);
7,358✔
2937
  }
2938

2939
  return code;
7,359✔
2940
}
2941

2942
static const char* jkIntervalPhysiPlanInterval = "Interval";
2943
static const char* jkIntervalPhysiPlanOffset = "Offset";
2944
static const char* jkIntervalPhysiPlanSliding = "Sliding";
2945
static const char* jkIntervalPhysiPlanIntervalUnit = "intervalUnit";
2946
static const char* jkIntervalPhysiPlanSlidingUnit = "slidingUnit";
2947

2948
static int32_t physiIntervalNodeToJson(const void* pObj, SJson* pJson) {
5,258✔
2949
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
5,258✔
2950

2951
  int32_t code = physiWindowNodeToJson(pObj, pJson);
5,258✔
2952
  if (TSDB_CODE_SUCCESS == code) {
5,258!
2953
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanInterval, pNode->interval);
5,258✔
2954
  }
2955
  if (TSDB_CODE_SUCCESS == code) {
5,258!
2956
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanOffset, pNode->offset);
5,258✔
2957
  }
2958
  if (TSDB_CODE_SUCCESS == code) {
5,258!
2959
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanSliding, pNode->sliding);
5,258✔
2960
  }
2961
  if (TSDB_CODE_SUCCESS == code) {
5,258!
2962
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanIntervalUnit, pNode->intervalUnit);
5,258✔
2963
  }
2964
  if (TSDB_CODE_SUCCESS == code) {
5,258!
2965
    code = tjsonAddIntegerToObject(pJson, jkIntervalPhysiPlanSlidingUnit, pNode->slidingUnit);
5,258✔
2966
  }
2967

2968
  return code;
5,258✔
2969
}
2970

2971
static int32_t jsonToPhysiIntervalNode(const SJson* pJson, void* pObj) {
5,320✔
2972
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
5,320✔
2973

2974
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
5,320✔
2975
  if (TSDB_CODE_SUCCESS == code) {
5,321!
2976
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanInterval, &pNode->interval);
5,321✔
2977
  }
2978
  if (TSDB_CODE_SUCCESS == code) {
5,321!
2979
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanOffset, &pNode->offset);
5,321✔
2980
  }
2981
  if (TSDB_CODE_SUCCESS == code) {
5,321!
2982
    code = tjsonGetBigIntValue(pJson, jkIntervalPhysiPlanSliding, &pNode->sliding);
5,321✔
2983
  }
2984
  if (TSDB_CODE_SUCCESS == code) {
5,321!
2985
    code = tjsonGetTinyIntValue(pJson, jkIntervalPhysiPlanIntervalUnit, &pNode->intervalUnit);
5,321✔
2986
  }
2987
  if (TSDB_CODE_SUCCESS == code) {
5,321!
2988
    code = tjsonGetTinyIntValue(pJson, jkIntervalPhysiPlanSlidingUnit, &pNode->slidingUnit);
5,321✔
2989
  }
2990

2991
  return code;
5,321✔
2992
}
2993

2994
static const char* jkFillPhysiPlanMode = "Mode";
2995
static const char* jkFillPhysiPlanFillExprs = "FillExprs";
2996
static const char* jkFillPhysiPlanNotFillExprs = "NotFillExprs";
2997
static const char* jkFillPhysiPlanWStartTs = "WStartTs";
2998
static const char* jkFillPhysiPlanValues = "Values";
2999
static const char* jkFillPhysiPlanStartTime = "StartTime";
3000
static const char* jkFillPhysiPlanEndTime = "EndTime";
3001
static const char* jkFillPhysiPlanFillNullExprs = "FillNullExprs";
3002

3003
static int32_t physiFillNodeToJson(const void* pObj, SJson* pJson) {
647✔
3004
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
647✔
3005

3006
  int32_t code = physicPlanNodeToJson(pObj, pJson);
647✔
3007
  if (TSDB_CODE_SUCCESS == code) {
647!
3008
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanMode, pNode->mode);
647✔
3009
  }
3010
  if (TSDB_CODE_SUCCESS == code) {
647!
3011
    code = nodeListToJson(pJson, jkFillPhysiPlanFillExprs, pNode->pFillExprs);
647✔
3012
  }
3013
  if (TSDB_CODE_SUCCESS == code) {
647!
3014
    code = nodeListToJson(pJson, jkFillPhysiPlanNotFillExprs, pNode->pNotFillExprs);
647✔
3015
  }
3016
  if (TSDB_CODE_SUCCESS == code) {
647!
3017
    code = tjsonAddObject(pJson, jkFillPhysiPlanWStartTs, nodeToJson, pNode->pWStartTs);
647✔
3018
  }
3019
  if (TSDB_CODE_SUCCESS == code) {
647!
3020
    code = tjsonAddObject(pJson, jkFillPhysiPlanValues, nodeToJson, pNode->pValues);
647✔
3021
  }
3022
  if (TSDB_CODE_SUCCESS == code) {
647!
3023
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanStartTime, pNode->timeRange.skey);
647✔
3024
  }
3025
  if (TSDB_CODE_SUCCESS == code) {
647!
3026
    code = tjsonAddIntegerToObject(pJson, jkFillPhysiPlanEndTime, pNode->timeRange.ekey);
647✔
3027
  }
3028
  if (TSDB_CODE_SUCCESS == code) {
647!
3029
    code = nodeListToJson(pJson, jkFillPhysiPlanFillNullExprs, pNode->pFillNullExprs);
647✔
3030
  }
3031

3032
  return code;
647✔
3033
}
3034

3035
static int32_t jsonToPhysiFillNode(const SJson* pJson, void* pObj) {
647✔
3036
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
647✔
3037

3038
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
647✔
3039
  if (TSDB_CODE_SUCCESS == code) {
647!
3040
    tjsonGetNumberValue(pJson, jkFillPhysiPlanMode, pNode->mode, code);
647✔
3041
  }
3042
  if (TSDB_CODE_SUCCESS == code) {
647!
3043
    code = jsonToNodeList(pJson, jkFillPhysiPlanFillExprs, &pNode->pFillExprs);
647✔
3044
  }
3045
  if (TSDB_CODE_SUCCESS == code) {
647!
3046
    code = jsonToNodeList(pJson, jkFillPhysiPlanNotFillExprs, &pNode->pNotFillExprs);
647✔
3047
  }
3048
  if (TSDB_CODE_SUCCESS == code) {
647!
3049
    code = jsonToNodeObject(pJson, jkFillPhysiPlanWStartTs, &pNode->pWStartTs);
647✔
3050
  }
3051
  if (TSDB_CODE_SUCCESS == code) {
647!
3052
    code = jsonToNodeObject(pJson, jkFillPhysiPlanValues, &pNode->pValues);
647✔
3053
  }
3054
  if (TSDB_CODE_SUCCESS == code) {
647!
3055
    code = tjsonGetBigIntValue(pJson, jkFillPhysiPlanStartTime, &pNode->timeRange.skey);
647✔
3056
  }
3057
  if (TSDB_CODE_SUCCESS == code) {
647!
3058
    code = tjsonGetBigIntValue(pJson, jkFillPhysiPlanEndTime, &pNode->timeRange.ekey);
647✔
3059
  }
3060
  if (TSDB_CODE_SUCCESS == code) {
647!
3061
    code = jsonToNodeList(pJson, jkFillPhysiPlanFillNullExprs, &pNode->pFillNullExprs);
647✔
3062
  }
3063

3064
  return code;
647✔
3065
}
3066

3067
static const char* jkSessionWindowPhysiPlanGap = "Gap";
3068

3069
static int32_t physiSessionWindowNodeToJson(const void* pObj, SJson* pJson) {
966✔
3070
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
966✔
3071

3072
  int32_t code = physiWindowNodeToJson(pObj, pJson);
966✔
3073
  if (TSDB_CODE_SUCCESS == code) {
966!
3074
    code = tjsonAddIntegerToObject(pJson, jkSessionWindowPhysiPlanGap, pNode->gap);
966✔
3075
  }
3076

3077
  return code;
966✔
3078
}
3079

3080
static int32_t jsonToPhysiSessionWindowNode(const SJson* pJson, void* pObj) {
966✔
3081
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
966✔
3082

3083
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
966✔
3084
  if (TSDB_CODE_SUCCESS == code) {
966!
3085
    tjsonGetNumberValue(pJson, jkSessionWindowPhysiPlanGap, pNode->gap, code);
966✔
3086
  }
3087

3088
  return code;
966✔
3089
}
3090

3091
static const char* jkStateWindowPhysiPlanStateKey = "StateKey";
3092

3093
static int32_t physiStateWindowNodeToJson(const void* pObj, SJson* pJson) {
427✔
3094
  const SStateWinodwPhysiNode* pNode = (const SStateWinodwPhysiNode*)pObj;
427✔
3095

3096
  int32_t code = physiWindowNodeToJson(pObj, pJson);
427✔
3097
  if (TSDB_CODE_SUCCESS == code) {
427!
3098
    code = tjsonAddObject(pJson, jkStateWindowPhysiPlanStateKey, nodeToJson, pNode->pStateKey);
427✔
3099
  }
3100

3101
  return code;
427✔
3102
}
3103

3104
static int32_t jsonToPhysiStateWindowNode(const SJson* pJson, void* pObj) {
427✔
3105
  SStateWinodwPhysiNode* pNode = (SStateWinodwPhysiNode*)pObj;
427✔
3106

3107
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
427✔
3108
  if (TSDB_CODE_SUCCESS == code) {
427!
3109
    code = jsonToNodeObject(pJson, jkStateWindowPhysiPlanStateKey, &pNode->pStateKey);
427✔
3110
  }
3111

3112
  return code;
427✔
3113
}
3114

3115
static const char* jkEventWindowPhysiPlanStartCond = "StartCond";
3116
static const char* jkEventWindowPhysiPlanEndCond = "EndCond";
3117

3118
static int32_t physiEventWindowNodeToJson(const void* pObj, SJson* pJson) {
261✔
3119
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
261✔
3120

3121
  int32_t code = physiWindowNodeToJson(pObj, pJson);
261✔
3122
  if (TSDB_CODE_SUCCESS == code) {
261!
3123
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanStartCond, nodeToJson, pNode->pStartCond);
261✔
3124
  }
3125
  if (TSDB_CODE_SUCCESS == code) {
261!
3126
    code = tjsonAddObject(pJson, jkEventWindowPhysiPlanEndCond, nodeToJson, pNode->pEndCond);
261✔
3127
  }
3128

3129
  return code;
261✔
3130
}
3131

3132
static int32_t jsonToPhysiEventWindowNode(const SJson* pJson, void* pObj) {
261✔
3133
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
261✔
3134

3135
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
261✔
3136
  if (TSDB_CODE_SUCCESS == code) {
261!
3137
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanStartCond, &pNode->pStartCond);
261✔
3138
  }
3139
  if (TSDB_CODE_SUCCESS == code) {
261!
3140
    code = jsonToNodeObject(pJson, jkEventWindowPhysiPlanEndCond, &pNode->pEndCond);
261✔
3141
  }
3142

3143
  return code;
261✔
3144
}
3145

3146
static const char* jkCountWindowPhysiPlanWindowCount = "WindowCount";
3147
static const char* jkCountWindowPhysiPlanWindowSliding = "WindowSliding";
3148

3149
static int32_t physiCountWindowNodeToJson(const void* pObj, SJson* pJson) {
366✔
3150
  const SCountWinodwPhysiNode* pNode = (const SCountWinodwPhysiNode*)pObj;
366✔
3151

3152
  int32_t code = physiWindowNodeToJson(pObj, pJson);
366✔
3153
  if (TSDB_CODE_SUCCESS == code) {
366!
3154
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowCount, pNode->windowCount);
366✔
3155
  }
3156
  if (TSDB_CODE_SUCCESS == code) {
366!
3157
    code = tjsonAddIntegerToObject(pJson, jkCountWindowPhysiPlanWindowSliding, pNode->windowSliding);
366✔
3158
  }
3159
  return code;
366✔
3160
}
3161

3162
static int32_t jsonToPhysiCountWindowNode(const SJson* pJson, void* pObj) {
384✔
3163
  SCountWinodwPhysiNode* pNode = (SCountWinodwPhysiNode*)pObj;
384✔
3164

3165
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
384✔
3166
  if (TSDB_CODE_SUCCESS == code) {
384!
3167
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowCount, &pNode->windowCount);
384✔
3168
  }
3169
  if (TSDB_CODE_SUCCESS == code) {
384!
3170
    code = tjsonGetBigIntValue(pJson, jkCountWindowPhysiPlanWindowSliding, &pNode->windowSliding);
384✔
3171
  }
3172

3173
  return code;
384✔
3174
}
3175

3176
static const char* jkAnomalyWindowPhysiPlanAnomalyKey = "AnomalyKey";
3177
static const char* jkAnomalyWindowPhysiPlanAnomalyOption = "AnomalyOpt";
3178

3179
static int32_t physiAnomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
3180
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3181

3182
  int32_t code = physiWindowNodeToJson(pObj, pJson);
×
3183
  if (TSDB_CODE_SUCCESS == code) {
×
3184
    code = tjsonAddObject(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, nodeToJson, pNode->pAnomalyKey);
×
3185
  }
3186
  if (TSDB_CODE_SUCCESS == code) {
×
3187
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt);
×
3188
  }
3189
  return code;
×
3190
}
3191

3192
static int32_t jsonToPhysiAnomalyWindowNode(const SJson* pJson, void* pObj) {
×
3193
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3194

3195
  int32_t code = jsonToPhysiWindowNode(pJson, pObj);
×
3196
  if (TSDB_CODE_SUCCESS == code) {
×
3197
    code = jsonToNodeObject(pJson, jkAnomalyWindowPhysiPlanAnomalyKey, &pNode->pAnomalyKey);
×
3198
  }
3199
  if (TSDB_CODE_SUCCESS == code) {
×
3200
    code = tjsonGetStringValue(pJson, jkAnomalyWindowPhysiPlanAnomalyOption, pNode->anomalyOpt);
×
3201
  }
3202

3203
  return code;
×
3204
}
3205

3206
static const char* jkPartitionPhysiPlanExprs = "Exprs";
3207
static const char* jkPartitionPhysiPlanPartitionKeys = "PartitionKeys";
3208
static const char* jkPartitionPhysiPlanTargets = "Targets";
3209
static const char* jkPartitionPhysiPlanNeedBlockOutputTsOrder = "NeedBlockOutputTsOrder";
3210
static const char* jkPartitionPhysiPlanTsSlotId = "tsSlotId";
3211

3212
static int32_t physiPartitionNodeToJson(const void* pObj, SJson* pJson) {
1,435✔
3213
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
1,435✔
3214

3215
  int32_t code = physicPlanNodeToJson(pObj, pJson);
1,435✔
3216
  if (TSDB_CODE_SUCCESS == code) {
1,435!
3217
    code = nodeListToJson(pJson, jkPartitionPhysiPlanExprs, pNode->pExprs);
1,435✔
3218
  }
3219
  if (TSDB_CODE_SUCCESS == code) {
1,435!
3220
    code = nodeListToJson(pJson, jkPartitionPhysiPlanPartitionKeys, pNode->pPartitionKeys);
1,435✔
3221
  }
3222
  if (TSDB_CODE_SUCCESS == code) {
1,435!
3223
    code = nodeListToJson(pJson, jkPartitionPhysiPlanTargets, pNode->pTargets);
1,435✔
3224
  }
3225
  if (TSDB_CODE_SUCCESS == code) {
1,435!
3226
    code = tjsonAddBoolToObject(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, pNode->needBlockOutputTsOrder);
1,435✔
3227
  }
3228
  if (TSDB_CODE_SUCCESS == code) {
1,435!
3229
    code = tjsonAddIntegerToObject(pJson, jkPartitionPhysiPlanTsSlotId, pNode->tsSlotId);
1,435✔
3230
  }
3231

3232
  return code;
1,435✔
3233
}
3234

3235
static int32_t jsonToPhysiPartitionNode(const SJson* pJson, void* pObj) {
1,431✔
3236
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
1,431✔
3237

3238
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
1,431✔
3239
  if (TSDB_CODE_SUCCESS == code) {
1,431!
3240
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanExprs, &pNode->pExprs);
1,431✔
3241
  }
3242
  if (TSDB_CODE_SUCCESS == code) {
1,431!
3243
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanPartitionKeys, &pNode->pPartitionKeys);
1,431✔
3244
  }
3245
  if (TSDB_CODE_SUCCESS == code) {
1,431!
3246
    code = jsonToNodeList(pJson, jkPartitionPhysiPlanTargets, &pNode->pTargets);
1,431✔
3247
  }
3248
  if (TSDB_CODE_SUCCESS == code) {
1,431!
3249
    code = tjsonGetBoolValue(pJson, jkPartitionPhysiPlanNeedBlockOutputTsOrder, &pNode->needBlockOutputTsOrder);
1,431✔
3250
  }
3251
  if (TSDB_CODE_SUCCESS == code) {
1,431!
3252
    code = tjsonGetIntValue(pJson, jkPartitionPhysiPlanTsSlotId, &pNode->tsSlotId);
1,431✔
3253
  }
3254

3255
  return code;
1,431✔
3256
}
3257

3258
static const char* jkStreamPartitionPhysiPlanTags = "Tags";
3259
static const char* jkStreamPartitionPhysiPlanSubtable = "Subtable";
3260

3261
static int32_t physiStreamPartitionNodeToJson(const void* pObj, SJson* pJson) {
1,435✔
3262
  const SStreamPartitionPhysiNode* pNode = (const SStreamPartitionPhysiNode*)pObj;
1,435✔
3263

3264
  int32_t code = physiPartitionNodeToJson(pObj, pJson);
1,435✔
3265
  if (TSDB_CODE_SUCCESS == code) {
1,435!
3266
    code = nodeListToJson(pJson, jkStreamPartitionPhysiPlanTags, pNode->pTags);
1,435✔
3267
  }
3268
  if (TSDB_CODE_SUCCESS == code) {
1,435!
3269
    code = tjsonAddObject(pJson, jkStreamPartitionPhysiPlanSubtable, nodeToJson, pNode->pSubtable);
1,435✔
3270
  }
3271

3272
  return code;
1,435✔
3273
}
3274

3275
static int32_t jsonToPhysiStreamPartitionNode(const SJson* pJson, void* pObj) {
1,431✔
3276
  SStreamPartitionPhysiNode* pNode = (SStreamPartitionPhysiNode*)pObj;
1,431✔
3277

3278
  int32_t code = jsonToPhysiPartitionNode(pJson, pObj);
1,431✔
3279
  if (TSDB_CODE_SUCCESS == code) {
1,431!
3280
    code = jsonToNodeList(pJson, jkStreamPartitionPhysiPlanTags, &pNode->pTags);
1,431✔
3281
  }
3282
  if (TSDB_CODE_SUCCESS == code) {
1,431!
3283
    code = jsonToNodeObject(pJson, jkStreamPartitionPhysiPlanSubtable, &pNode->pSubtable);
1,431✔
3284
  }
3285

3286
  return code;
1,431✔
3287
}
3288

3289
static const char* jkIndefRowsFuncPhysiPlanExprs = "Exprs";
3290
static const char* jkIndefRowsFuncPhysiPlanFuncs = "Funcs";
3291

3292
static int32_t physiIndefRowsFuncNodeToJson(const void* pObj, SJson* pJson) {
×
3293
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
×
3294

3295
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3296
  if (TSDB_CODE_SUCCESS == code) {
×
3297
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanExprs, pNode->pExprs);
×
3298
  }
3299
  if (TSDB_CODE_SUCCESS == code) {
×
3300
    code = nodeListToJson(pJson, jkIndefRowsFuncPhysiPlanFuncs, pNode->pFuncs);
×
3301
  }
3302

3303
  return code;
×
3304
}
3305

3306
static int32_t jsonToPhysiIndefRowsFuncNode(const SJson* pJson, void* pObj) {
×
3307
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
×
3308

3309
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3310
  if (TSDB_CODE_SUCCESS == code) {
×
3311
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanExprs, &pNode->pExprs);
×
3312
  }
3313
  if (TSDB_CODE_SUCCESS == code) {
×
3314
    code = jsonToNodeList(pJson, jkIndefRowsFuncPhysiPlanFuncs, &pNode->pFuncs);
×
3315
  }
3316

3317
  return code;
×
3318
}
3319

3320
static const char* jkInterpFuncPhysiPlanExprs = "Exprs";
3321
static const char* jkInterpFuncPhysiPlanFuncs = "Funcs";
3322
static const char* jkInterpFuncPhysiPlanStartTime = "StartTime";
3323
static const char* jkInterpFuncPhysiPlanEndTime = "EndTime";
3324
static const char* jkInterpFuncPhysiPlanInterval = "Interval";
3325
static const char* jkInterpFuncPhysiPlanIntervalUnit = "intervalUnit";
3326
static const char* jkInterpFuncPhysiPlanPrecision = "precision";
3327
static const char* jkInterpFuncPhysiPlanFillMode = "FillMode";
3328
static const char* jkInterpFuncPhysiPlanFillValues = "FillValues";
3329
static const char* jkInterpFuncPhysiPlanTimeSeries = "TimeSeries";
3330
static const char* jkInterpFuncPhysiPlanStreamNodeOption = "StreamNodeOption";
3331
static const char* jkInterpFuncPhysiPlanRangeInterval = "RangeInterval";
3332
static const char* jkInterpFuncPhysiPlanRangeIntervalUnit = "RangeIntervalUnit";
3333

3334
static int32_t physiInterpFuncNodeToJson(const void* pObj, SJson* pJson) {
40✔
3335
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
40✔
3336

3337
  int32_t code = physicPlanNodeToJson(pObj, pJson);
40✔
3338
  if (TSDB_CODE_SUCCESS == code) {
40!
3339
    code = nodeListToJson(pJson, jkInterpFuncPhysiPlanExprs, pNode->pExprs);
40✔
3340
  }
3341
  if (TSDB_CODE_SUCCESS == code) {
40!
3342
    code = nodeListToJson(pJson, jkInterpFuncPhysiPlanFuncs, pNode->pFuncs);
40✔
3343
  }
3344
  if (TSDB_CODE_SUCCESS == code) {
40!
3345
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanStartTime, pNode->timeRange.skey);
40✔
3346
  }
3347
  if (TSDB_CODE_SUCCESS == code) {
40!
3348
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanEndTime, pNode->timeRange.ekey);
40✔
3349
  }
3350
  if (TSDB_CODE_SUCCESS == code) {
40!
3351
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanInterval, pNode->interval);
40✔
3352
  }
3353
  if (TSDB_CODE_SUCCESS == code) {
40!
3354
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanIntervalUnit, pNode->intervalUnit);
40✔
3355
  }
3356
  if (TSDB_CODE_SUCCESS == code) {
40!
3357
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanPrecision, pNode->precision);
40✔
3358
  }
3359
  if (TSDB_CODE_SUCCESS == code) {
40!
3360
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanFillMode, pNode->fillMode);
40✔
3361
  }
3362
  if (TSDB_CODE_SUCCESS == code) {
40!
3363
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanFillValues, nodeToJson, pNode->pFillValues);
40✔
3364
  }
3365
  if (TSDB_CODE_SUCCESS == code) {
40!
3366
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanTimeSeries, nodeToJson, pNode->pTimeSeries);
40✔
3367
  }
3368
  if (TSDB_CODE_SUCCESS == code) {
40!
3369
    code = tjsonAddObject(pJson, jkInterpFuncPhysiPlanStreamNodeOption, streamNodeOptionToJson, &pNode->streamNodeOption);
40✔
3370
  }
3371
  if (TSDB_CODE_SUCCESS == code) {
40!
3372
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanRangeInterval, pNode->rangeInterval);
40✔
3373
  }
3374
  if (TSDB_CODE_SUCCESS == code) {
40!
3375
    code = tjsonAddIntegerToObject(pJson, jkInterpFuncPhysiPlanRangeIntervalUnit, pNode->rangeIntervalUnit);
40✔
3376
  }
3377

3378
  return code;
40✔
3379
}
3380

3381
static int32_t jsonToPhysiInterpFuncNode(const SJson* pJson, void* pObj) {
40✔
3382
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
40✔
3383

3384
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
40✔
3385
  if (TSDB_CODE_SUCCESS == code) {
40!
3386
    code = jsonToNodeList(pJson, jkInterpFuncPhysiPlanExprs, &pNode->pExprs);
40✔
3387
  }
3388
  if (TSDB_CODE_SUCCESS == code) {
40!
3389
    code = jsonToNodeList(pJson, jkInterpFuncPhysiPlanFuncs, &pNode->pFuncs);
40✔
3390
  }
3391
  if (TSDB_CODE_SUCCESS == code) {
40!
3392
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanStartTime, &pNode->timeRange.skey);
40✔
3393
  }
3394
  if (TSDB_CODE_SUCCESS == code) {
40!
3395
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanEndTime, &pNode->timeRange.ekey);
40✔
3396
  }
3397
  if (TSDB_CODE_SUCCESS == code) {
40!
3398
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanInterval, &pNode->interval);
40✔
3399
  }
3400
  if (TSDB_CODE_SUCCESS == code) {
40!
3401
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanIntervalUnit, &pNode->intervalUnit);
40✔
3402
  }
3403
  if (TSDB_CODE_SUCCESS == code) {
40!
3404
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanPrecision, &pNode->precision);
40✔
3405
  }
3406
  if (TSDB_CODE_SUCCESS == code) {
40!
3407
    tjsonGetNumberValue(pJson, jkInterpFuncPhysiPlanFillMode, pNode->fillMode, code);
40✔
3408
  }
3409
  if (TSDB_CODE_SUCCESS == code) {
40!
3410
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanFillValues, &pNode->pFillValues);
40✔
3411
  }
3412
  if (TSDB_CODE_SUCCESS == code) {
40!
3413
    code = jsonToNodeObject(pJson, jkInterpFuncPhysiPlanTimeSeries, &pNode->pTimeSeries);
40✔
3414
  }
3415
  if (TSDB_CODE_SUCCESS == code) {
40!
3416
    code = tjsonToObject(pJson, jkInterpFuncPhysiPlanStreamNodeOption, jsonToStreamNodeOption, &pNode->streamNodeOption);
40✔
3417
  }
3418
  if (TSDB_CODE_SUCCESS == code) {
40!
3419
    code = tjsonGetBigIntValue(pJson, jkInterpFuncPhysiPlanRangeInterval, &pNode->rangeInterval);
40✔
3420
  }
3421
  if (TSDB_CODE_SUCCESS == code) {
40!
3422
    code = tjsonGetTinyIntValue(pJson, jkInterpFuncPhysiPlanRangeIntervalUnit, &pNode->rangeIntervalUnit);
40✔
3423
  }
3424

3425
  return code;
40✔
3426
}
3427

3428
static const char* jkForecastFuncPhysiPlanExprs = "Exprs";
3429
static const char* jkForecastFuncPhysiPlanFuncs = "Funcs";
3430

3431
static int32_t physiForecastFuncNodeToJson(const void* pObj, SJson* pJson) {
×
3432
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
3433

3434
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3435
  if (TSDB_CODE_SUCCESS == code) {
×
3436
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanExprs, pNode->pExprs);
×
3437
  }
3438
  if (TSDB_CODE_SUCCESS == code) {
×
3439
    code = nodeListToJson(pJson, jkForecastFuncPhysiPlanFuncs, pNode->pFuncs);
×
3440
  }
3441

3442
  return code;
×
3443
}
3444

3445
static int32_t jsonToPhysiForecastFuncNode(const SJson* pJson, void* pObj) {
×
3446
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
3447

3448
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3449
  if (TSDB_CODE_SUCCESS == code) {
×
3450
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanExprs, &pNode->pExprs);
×
3451
  }
3452
  if (TSDB_CODE_SUCCESS == code) {
×
3453
    code = jsonToNodeList(pJson, jkForecastFuncPhysiPlanFuncs, &pNode->pFuncs);
×
3454
  }
3455

3456
  return code;
×
3457
}
3458

3459
static const char* jkDataSinkInputDataBlockDesc = "InputDataBlockDesc";
3460

3461
static int32_t physicDataSinkNodeToJson(const void* pObj, SJson* pJson) {
×
3462
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
×
3463
  return tjsonAddObject(pJson, jkDataSinkInputDataBlockDesc, nodeToJson, pNode->pInputDataBlockDesc);
×
3464
}
3465

3466
static int32_t jsonToPhysicDataSinkNode(const SJson* pJson, void* pObj) {
×
3467
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
×
3468
  return jsonToNodeObject(pJson, jkDataSinkInputDataBlockDesc, (SNode**)&pNode->pInputDataBlockDesc);
×
3469
}
3470

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

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

3475
static const char* jkQueryInsertPhysiPlanInsertCols = "InsertCols";
3476
static const char* jkQueryInsertPhysiPlanStableId = "StableId";
3477
static const char* jkQueryInsertPhysiPlanTableId = "TableId";
3478
static const char* jkQueryInsertPhysiPlanTableType = "TableType";
3479
static const char* jkQueryInsertPhysiPlanTableFName = "TableFName";
3480
static const char* jkQueryInsertPhysiPlanVgId = "VgId";
3481
static const char* jkQueryInsertPhysiPlanEpSet = "EpSet";
3482
static const char* jkQueryInsertPhysiPlanExplain = "Explain";
3483

3484
static int32_t physiQueryInsertNodeToJson(const void* pObj, SJson* pJson) {
×
3485
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
×
3486

3487
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
×
3488
  if (TSDB_CODE_SUCCESS == code) {
×
3489
    code = nodeListToJson(pJson, jkQueryInsertPhysiPlanInsertCols, pNode->pCols);
×
3490
  }
3491
  if (TSDB_CODE_SUCCESS == code) {
×
3492
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanStableId, pNode->stableId);
×
3493
  }
3494
  if (TSDB_CODE_SUCCESS == code) {
×
3495
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableId, pNode->tableId);
×
3496
  }
3497
  if (TSDB_CODE_SUCCESS == code) {
×
3498
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanTableType, pNode->tableType);
×
3499
  }
3500
  if (TSDB_CODE_SUCCESS == code) {
×
3501
    code = tjsonAddStringToObject(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName);
×
3502
  }
3503
  if (TSDB_CODE_SUCCESS == code) {
×
3504
    code = tjsonAddIntegerToObject(pJson, jkQueryInsertPhysiPlanVgId, pNode->vgId);
×
3505
  }
3506
  if (TSDB_CODE_SUCCESS == code) {
×
3507
    code = tjsonAddObject(pJson, jkQueryInsertPhysiPlanEpSet, epSetToJson, &pNode->epSet);
×
3508
  }
3509
  if (TSDB_CODE_SUCCESS == code) {
×
3510
    code = tjsonAddBoolToObject(pJson, jkQueryInsertPhysiPlanExplain, pNode->explain);
×
3511
  }
3512

3513
  return code;
×
3514
}
3515

3516
static int32_t jsonToPhysiQueryInsertNode(const SJson* pJson, void* pObj) {
×
3517
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
×
3518

3519
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
×
3520
  if (TSDB_CODE_SUCCESS == code) {
×
3521
    code = jsonToNodeList(pJson, jkQueryInsertPhysiPlanInsertCols, &pNode->pCols);
×
3522
  }
3523
  if (TSDB_CODE_SUCCESS == code) {
×
3524
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanStableId, &pNode->stableId);
×
3525
  }
3526
  if (TSDB_CODE_SUCCESS == code) {
×
3527
    code = tjsonGetUBigIntValue(pJson, jkQueryInsertPhysiPlanTableId, &pNode->tableId);
×
3528
  }
3529
  if (TSDB_CODE_SUCCESS == code) {
×
3530
    code = tjsonGetTinyIntValue(pJson, jkQueryInsertPhysiPlanTableType, &pNode->tableType);
×
3531
  }
3532
  if (TSDB_CODE_SUCCESS == code) {
×
3533
    code = tjsonGetStringValue(pJson, jkQueryInsertPhysiPlanTableFName, pNode->tableName);
×
3534
  }
3535
  if (TSDB_CODE_SUCCESS == code) {
×
3536
    code = tjsonGetIntValue(pJson, jkQueryInsertPhysiPlanVgId, &pNode->vgId);
×
3537
  }
3538
  if (TSDB_CODE_SUCCESS == code) {
×
3539
    code = tjsonToObject(pJson, jkQueryInsertPhysiPlanEpSet, jsonToEpSet, &pNode->epSet);
×
3540
  }
3541
  if (TSDB_CODE_SUCCESS == code) {
×
3542
    code = tjsonGetBoolValue(pJson, jkQueryInsertPhysiPlanExplain, &pNode->explain);
×
3543
  }
3544

3545
  return code;
×
3546
}
3547

3548
static const char* jkDeletePhysiPlanTableId = "TableId";
3549
static const char* jkDeletePhysiPlanTableType = "TableType";
3550
static const char* jkDeletePhysiPlanTableFName = "TableFName";
3551
static const char* jkDeletePhysiPlanTsColName = "TsColName";
3552
static const char* jkDeletePhysiPlanDeleteTimeRangeStartKey = "DeleteTimeRangeStartKey";
3553
static const char* jkDeletePhysiPlanDeleteTimeRangeEndKey = "DeleteTimeRangeEndKey";
3554
static const char* jkDeletePhysiPlanAffectedRows = "AffectedRows";
3555
static const char* jkDeletePhysiPlanStartTs = "StartTs";
3556
static const char* jkDeletePhysiPlanEndTs = "EndTs";
3557

3558
static int32_t physiDeleteNodeToJson(const void* pObj, SJson* pJson) {
×
3559
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
×
3560

3561
  int32_t code = physicDataSinkNodeToJson(pObj, pJson);
×
3562
  if (TSDB_CODE_SUCCESS == code) {
×
3563
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableId, pNode->tableId);
×
3564
  }
3565
  if (TSDB_CODE_SUCCESS == code) {
×
3566
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanTableType, pNode->tableType);
×
3567
  }
3568
  if (TSDB_CODE_SUCCESS == code) {
×
3569
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName);
×
3570
  }
3571
  if (TSDB_CODE_SUCCESS == code) {
×
3572
    code = tjsonAddStringToObject(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName);
×
3573
  }
3574
  if (TSDB_CODE_SUCCESS == code) {
×
3575
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, pNode->deleteTimeRange.skey);
×
3576
  }
3577
  if (TSDB_CODE_SUCCESS == code) {
×
3578
    code = tjsonAddIntegerToObject(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, pNode->deleteTimeRange.ekey);
×
3579
  }
3580
  if (TSDB_CODE_SUCCESS == code) {
×
3581
    code = tjsonAddObject(pJson, jkDeletePhysiPlanAffectedRows, nodeToJson, pNode->pAffectedRows);
×
3582
  }
3583
  if (TSDB_CODE_SUCCESS == code) {
×
3584
    code = tjsonAddObject(pJson, jkDeletePhysiPlanStartTs, nodeToJson, pNode->pStartTs);
×
3585
  }
3586
  if (TSDB_CODE_SUCCESS == code) {
×
3587
    code = tjsonAddObject(pJson, jkDeletePhysiPlanEndTs, nodeToJson, pNode->pEndTs);
×
3588
  }
3589

3590
  return code;
×
3591
}
3592

3593
static int32_t jsonToPhysiDeleteNode(const SJson* pJson, void* pObj) {
×
3594
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
×
3595

3596
  int32_t code = jsonToPhysicDataSinkNode(pJson, pObj);
×
3597
  if (TSDB_CODE_SUCCESS == code) {
×
3598
    code = tjsonGetUBigIntValue(pJson, jkDeletePhysiPlanTableId, &pNode->tableId);
×
3599
  }
3600
  if (TSDB_CODE_SUCCESS == code) {
×
3601
    code = tjsonGetTinyIntValue(pJson, jkDeletePhysiPlanTableType, &pNode->tableType);
×
3602
  }
3603
  if (TSDB_CODE_SUCCESS == code) {
×
3604
    code = tjsonGetStringValue(pJson, jkDeletePhysiPlanTableFName, pNode->tableFName);
×
3605
  }
3606
  if (TSDB_CODE_SUCCESS == code) {
×
3607
    code = tjsonGetStringValue(pJson, jkDeletePhysiPlanTsColName, pNode->tsColName);
×
3608
  }
3609
  if (TSDB_CODE_SUCCESS == code) {
×
3610
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeStartKey, &pNode->deleteTimeRange.skey);
×
3611
  }
3612
  if (TSDB_CODE_SUCCESS == code) {
×
3613
    code = tjsonGetBigIntValue(pJson, jkDeletePhysiPlanDeleteTimeRangeEndKey, &pNode->deleteTimeRange.ekey);
×
3614
  }
3615
  if (TSDB_CODE_SUCCESS == code) {
×
3616
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanAffectedRows, &pNode->pAffectedRows);
×
3617
  }
3618
  if (TSDB_CODE_SUCCESS == code) {
×
3619
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanStartTs, &pNode->pStartTs);
×
3620
  }
3621
  if (TSDB_CODE_SUCCESS == code) {
×
3622
    code = jsonToNodeObject(pJson, jkDeletePhysiPlanEndTs, &pNode->pEndTs);
×
3623
  }
3624

3625
  return code;
×
3626
}
3627

3628
static const char* jkGroupCachePhysiPlanGroupCols = "GroupColumns";
3629
static const char* jkGroupCachePhysiPlanGrpColsMayBeNull = "GroupColumnsMayBeNull";
3630
static const char* jkGroupCachePhysiPlanGroupByUid = "GroupByUid";
3631
static const char* jkGroupCachePhysiPlanGlobalGroup = "GlobalGroup";
3632
static const char* jkGroupCachePhysiPlanBatchFetch = "BatchFetch";
3633

3634
static int32_t physiGroupCacheNodeToJson(const void* pObj, SJson* pJson) {
×
3635
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
×
3636

3637
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3638
  if (TSDB_CODE_SUCCESS == code) {
×
3639
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, pNode->grpColsMayBeNull);
×
3640
  }
3641
  if (TSDB_CODE_SUCCESS == code) {
×
3642
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGroupByUid, pNode->grpByUid);
×
3643
  }
3644
  if (TSDB_CODE_SUCCESS == code) {
×
3645
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanGlobalGroup, pNode->globalGrp);
×
3646
  }
3647
  if (TSDB_CODE_SUCCESS == code) {
×
3648
    code = tjsonAddBoolToObject(pJson, jkGroupCachePhysiPlanBatchFetch, pNode->batchFetch);
×
3649
  }
3650
  if (TSDB_CODE_SUCCESS == code) {
×
3651
    code = nodeListToJson(pJson, jkGroupCachePhysiPlanGroupCols, pNode->pGroupCols);
×
3652
  }
3653
  return code;
×
3654
}
3655

3656
static int32_t jsonToPhysiGroupCacheNode(const SJson* pJson, void* pObj) {
×
3657
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
×
3658

3659
  int32_t code = jsonToPhysicPlanNode(pJson, pObj);
×
3660
  if (TSDB_CODE_SUCCESS == code) {
×
3661
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGrpColsMayBeNull, &pNode->grpColsMayBeNull);
×
3662
  }
3663
  if (TSDB_CODE_SUCCESS == code) {
×
3664
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGroupByUid, &pNode->grpByUid);
×
3665
  }
3666
  if (TSDB_CODE_SUCCESS == code) {
×
3667
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanGlobalGroup, &pNode->globalGrp);
×
3668
  }
3669
  if (TSDB_CODE_SUCCESS == code) {
×
3670
    code = tjsonGetBoolValue(pJson, jkGroupCachePhysiPlanBatchFetch, &pNode->batchFetch);
×
3671
  }
3672
  if (TSDB_CODE_SUCCESS == code) {
×
3673
    code = jsonToNodeList(pJson, jkGroupCachePhysiPlanGroupCols, &pNode->pGroupCols);
×
3674
  }
3675
  return code;
×
3676
}
3677

3678
static const char* jkDynQueryCtrlPhysiPlanQueryType = "QueryType";
3679
static const char* jkDynQueryCtrlPhysiPlanBatchFetch = "BatchFetch";
3680
static const char* jkDynQueryCtrlPhysiPlanVgSlot0 = "VgSlot[0]";
3681
static const char* jkDynQueryCtrlPhysiPlanVgSlot1 = "VgSlot[1]";
3682
static const char* jkDynQueryCtrlPhysiPlanUidSlot0 = "UidSlot[0]";
3683
static const char* jkDynQueryCtrlPhysiPlanUidSlot1 = "UidSlot[1]";
3684
static const char* jkDynQueryCtrlPhysiPlanSrcScan0 = "SrcScan[0]";
3685
static const char* jkDynQueryCtrlPhysiPlanSrcScan1 = "SrcScan[1]";
3686

3687
static int32_t physiDynQueryCtrlNodeToJson(const void* pObj, SJson* pJson) {
×
3688
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
×
3689

3690
  int32_t code = physicPlanNodeToJson(pObj, pJson);
×
3691
  if (TSDB_CODE_SUCCESS == code) {
×
3692
    code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanQueryType, pNode->qType);
×
3693
  }
3694
  if (TSDB_CODE_SUCCESS == code) {
×
3695
    switch (pNode->qType) {
×
3696
      case DYN_QTYPE_STB_HASH: {
×
3697
        code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanBatchFetch, pNode->stbJoin.batchFetch);
×
3698
        if (TSDB_CODE_SUCCESS == code) {
×
3699
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot0, pNode->stbJoin.vgSlot[0]);
×
3700
        }
3701
        if (TSDB_CODE_SUCCESS == code) {
×
3702
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanVgSlot1, pNode->stbJoin.vgSlot[1]);
×
3703
        }
3704
        if (TSDB_CODE_SUCCESS == code) {
×
3705
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot0, pNode->stbJoin.uidSlot[0]);
×
3706
        }
3707
        if (TSDB_CODE_SUCCESS == code) {
×
3708
          code = tjsonAddIntegerToObject(pJson, jkDynQueryCtrlPhysiPlanUidSlot1, pNode->stbJoin.uidSlot[1]);
×
3709
        }
3710
        if (TSDB_CODE_SUCCESS == code) {
×
3711
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan0, pNode->stbJoin.srcScan[0]);
×
3712
        }
3713
        if (TSDB_CODE_SUCCESS == code) {
×
3714
          code = tjsonAddBoolToObject(pJson, jkDynQueryCtrlPhysiPlanSrcScan1, pNode->stbJoin.srcScan[1]);
×
3715
        }
3716
        break;
×
3717
      }
3718
      default:
×
3719
        return TSDB_CODE_INVALID_PARA;
×
3720
    }
3721
  }
3722
  return code;
×
3723
}
3724

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

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

3764
  return code;
×
3765
}
3766

3767
static const char* jkQueryNodeAddrId = "Id";
3768
static const char* jkQueryNodeAddrInUse = "InUse";
3769
static const char* jkQueryNodeAddrNumOfEps = "NumOfEps";
3770
static const char* jkQueryNodeAddrEps = "Eps";
3771

3772
static int32_t queryNodeAddrToJson(const void* pObj, SJson* pJson) {
12,448✔
3773
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
12,448✔
3774

3775
  int32_t code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrId, pNode->nodeId);
12,448✔
3776
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3777
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrInUse, pNode->epSet.inUse);
12,448✔
3778
  }
3779
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3780
    code = tjsonAddIntegerToObject(pJson, jkQueryNodeAddrNumOfEps, pNode->epSet.numOfEps);
12,448✔
3781
  }
3782
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3783
    code = tjsonAddArray(pJson, jkQueryNodeAddrEps, epToJson, pNode->epSet.eps, sizeof(SEp), pNode->epSet.numOfEps);
12,448✔
3784
  }
3785

3786
  return code;
12,448✔
3787
}
3788

3789
static int32_t jsonToQueryNodeAddr(const SJson* pJson, void* pObj) {
11,946✔
3790
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
11,946✔
3791

3792
  int32_t code = tjsonGetIntValue(pJson, jkQueryNodeAddrId, &pNode->nodeId);
11,946✔
3793
  if (TSDB_CODE_SUCCESS == code) {
11,944!
3794
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrInUse, &pNode->epSet.inUse);
11,944✔
3795
  }
3796
  if (TSDB_CODE_SUCCESS == code) {
11,946!
3797
    code = tjsonGetTinyIntValue(pJson, jkQueryNodeAddrNumOfEps, &pNode->epSet.numOfEps);
11,946✔
3798
  }
3799
  if (TSDB_CODE_SUCCESS == code) {
11,944!
3800
    code = tjsonToArray(pJson, jkQueryNodeAddrEps, jsonToEp, pNode->epSet.eps, sizeof(SEp));
11,944✔
3801
  }
3802

3803
  return code;
11,946✔
3804
}
3805

3806
static const char* jkSubplanId = "Id";
3807
static const char* jkSubplanType = "SubplanType";
3808
static const char* jkSubplanMsgType = "MsgType";
3809
static const char* jkSubplanLevel = "Level";
3810
static const char* jkSubplanDbFName = "DbFName";
3811
static const char* jkSubplanUser = "User";
3812
static const char* jkSubplanNodeAddr = "NodeAddr";
3813
static const char* jkSubplanRootNode = "RootNode";
3814
static const char* jkSubplanDataSink = "DataSink";
3815
static const char* jkSubplanTagCond = "TagCond";
3816
static const char* jkSubplanTagIndexCond = "TagIndexCond";
3817
static const char* jkSubplanShowRewrite = "ShowRewrite";
3818
static const char* jkSubplanRowsThreshold = "RowThreshold";
3819
static const char* jkSubplanDynamicRowsThreshold = "DyRowThreshold";
3820
static const char* jkSubplanIsView = "IsView";
3821
static const char* jkSubplanIsAudit = "IsAudit";
3822

3823
static int32_t subplanToJson(const void* pObj, SJson* pJson) {
12,448✔
3824
  const SSubplan* pNode = (const SSubplan*)pObj;
12,448✔
3825

3826
  int32_t code = tjsonAddObject(pJson, jkSubplanId, subplanIdToJson, &pNode->id);
12,448✔
3827
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3828
    code = tjsonAddIntegerToObject(pJson, jkSubplanType, pNode->subplanType);
12,448✔
3829
  }
3830
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3831
    code = tjsonAddIntegerToObject(pJson, jkSubplanMsgType, pNode->msgType);
12,448✔
3832
  }
3833
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3834
    code = tjsonAddIntegerToObject(pJson, jkSubplanLevel, pNode->level);
12,448✔
3835
  }
3836
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3837
    code = tjsonAddStringToObject(pJson, jkSubplanDbFName, pNode->dbFName);
12,448✔
3838
  }
3839
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3840
    code = tjsonAddStringToObject(pJson, jkSubplanUser, pNode->user);
12,448✔
3841
  }
3842
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3843
    code = tjsonAddObject(pJson, jkSubplanNodeAddr, queryNodeAddrToJson, &pNode->execNode);
12,448✔
3844
  }
3845
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3846
    code = tjsonAddObject(pJson, jkSubplanRootNode, nodeToJson, pNode->pNode);
12,448✔
3847
  }
3848
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3849
    code = tjsonAddObject(pJson, jkSubplanDataSink, nodeToJson, pNode->pDataSink);
12,448✔
3850
  }
3851
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3852
    code = tjsonAddObject(pJson, jkSubplanTagCond, nodeToJson, pNode->pTagCond);
12,448✔
3853
  }
3854
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3855
    code = tjsonAddObject(pJson, jkSubplanTagIndexCond, nodeToJson, pNode->pTagIndexCond);
12,448✔
3856
  }
3857
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3858
    code = tjsonAddBoolToObject(pJson, jkSubplanShowRewrite, pNode->showRewrite);
12,448✔
3859
  }
3860
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3861
    code = tjsonAddBoolToObject(pJson, jkSubplanIsView, pNode->isView);
12,448✔
3862
  }
3863
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3864
    code = tjsonAddBoolToObject(pJson, jkSubplanIsAudit, pNode->isAudit);
12,448✔
3865
  }
3866
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3867
    code = tjsonAddIntegerToObject(pJson, jkSubplanRowsThreshold, pNode->rowsThreshold);
12,448✔
3868
  }
3869
  if (TSDB_CODE_SUCCESS == code) {
12,448!
3870
    code = tjsonAddBoolToObject(pJson, jkSubplanDynamicRowsThreshold, pNode->dynamicRowThreshold);
12,448✔
3871
  }
3872

3873
  return code;
12,448✔
3874
}
3875

3876
static int32_t jsonToSubplan(const SJson* pJson, void* pObj) {
11,943✔
3877
  SSubplan* pNode = (SSubplan*)pObj;
11,943✔
3878

3879
  int32_t code = tjsonToObject(pJson, jkSubplanId, jsonToSubplanId, &pNode->id);
11,943✔
3880
  if (TSDB_CODE_SUCCESS == code) {
11,945!
3881
    tjsonGetNumberValue(pJson, jkSubplanType, pNode->subplanType, code);
11,945✔
3882
  }
3883
  if (TSDB_CODE_SUCCESS == code) {
11,946!
3884
    code = tjsonGetIntValue(pJson, jkSubplanMsgType, &pNode->msgType);
11,946✔
3885
  }
3886
  if (TSDB_CODE_SUCCESS == code) {
11,945!
3887
    code = tjsonGetIntValue(pJson, jkSubplanLevel, &pNode->level);
11,945✔
3888
  }
3889
  if (TSDB_CODE_SUCCESS == code) {
11,944!
3890
    code = tjsonGetStringValue(pJson, jkSubplanDbFName, pNode->dbFName);
11,944✔
3891
  }
3892
  if (TSDB_CODE_SUCCESS == code) {
11,946!
3893
    code = tjsonGetStringValue(pJson, jkSubplanUser, pNode->user);
11,946✔
3894
  }
3895
  if (TSDB_CODE_SUCCESS == code) {
11,945!
3896
    code = tjsonToObject(pJson, jkSubplanNodeAddr, jsonToQueryNodeAddr, &pNode->execNode);
11,945✔
3897
  }
3898
  if (TSDB_CODE_SUCCESS == code) {
11,946!
3899
    code = jsonToNodeObject(pJson, jkSubplanRootNode, (SNode**)&pNode->pNode);
11,946✔
3900
  }
3901
  if (TSDB_CODE_SUCCESS == code) {
11,943!
3902
    code = jsonToNodeObject(pJson, jkSubplanDataSink, (SNode**)&pNode->pDataSink);
11,943✔
3903
  }
3904
  if (TSDB_CODE_SUCCESS == code) {
11,945!
3905
    code = jsonToNodeObject(pJson, jkSubplanTagCond, (SNode**)&pNode->pTagCond);
11,945✔
3906
  }
3907
  if (TSDB_CODE_SUCCESS == code) {
11,945!
3908
    code = jsonToNodeObject(pJson, jkSubplanTagIndexCond, (SNode**)&pNode->pTagIndexCond);
11,945✔
3909
  }
3910
  if (TSDB_CODE_SUCCESS == code) {
11,942!
3911
    code = tjsonGetBoolValue(pJson, jkSubplanShowRewrite, &pNode->showRewrite);
11,942✔
3912
  }
3913
  if (TSDB_CODE_SUCCESS == code) {
11,945!
3914
    code = tjsonGetBoolValue(pJson, jkSubplanIsView, &pNode->isView);
11,945✔
3915
  }
3916
  if (TSDB_CODE_SUCCESS == code) {
11,944!
3917
    code = tjsonGetBoolValue(pJson, jkSubplanIsAudit, &pNode->isAudit);
11,944✔
3918
  }
3919
  if (TSDB_CODE_SUCCESS == code) {
11,946!
3920
    code = tjsonGetIntValue(pJson, jkSubplanRowsThreshold, &pNode->rowsThreshold);
11,946✔
3921
  }
3922
  if (TSDB_CODE_SUCCESS == code) {
11,946!
3923
    code = tjsonGetBoolValue(pJson, jkSubplanDynamicRowsThreshold, &pNode->dynamicRowThreshold);
11,946✔
3924
  }
3925

3926
  return code;
11,945✔
3927
}
3928

3929
static const char* jkPlanQueryId = "QueryId";
3930
static const char* jkPlanNumOfSubplans = "NumOfSubplans";
3931
static const char* jkPlanSubplans = "Subplans";
3932

3933
static int32_t planToJson(const void* pObj, SJson* pJson) {
2,050✔
3934
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
2,050✔
3935

3936
  int32_t code = tjsonAddIntegerToObject(pJson, jkPlanQueryId, pNode->queryId);
2,050✔
3937
  if (TSDB_CODE_SUCCESS == code) {
2,050!
3938
    code = tjsonAddIntegerToObject(pJson, jkPlanNumOfSubplans, pNode->numOfSubplans);
2,050✔
3939
  }
3940
  if (TSDB_CODE_SUCCESS == code) {
2,050!
3941
    code = nodeListToJson(pJson, jkPlanSubplans, pNode->pSubplans);
2,050✔
3942
  }
3943

3944
  return code;
2,050✔
3945
}
3946

3947
static int32_t jsonToPlan(const SJson* pJson, void* pObj) {
2,041✔
3948
  SQueryPlan* pNode = (SQueryPlan*)pObj;
2,041✔
3949

3950
  int32_t code = tjsonGetUBigIntValue(pJson, jkPlanQueryId, &pNode->queryId);
2,041✔
3951
  if (TSDB_CODE_SUCCESS == code) {
2,041!
3952
    code = tjsonGetIntValue(pJson, jkPlanNumOfSubplans, &pNode->numOfSubplans);
2,041✔
3953
  }
3954
  if (TSDB_CODE_SUCCESS == code) {
2,041!
3955
    code = jsonToNodeList(pJson, jkPlanSubplans, &pNode->pSubplans);
2,041✔
3956
  }
3957

3958
  return code;
2,041✔
3959
}
3960

3961
static const char* jkAggLogicPlanGroupKeys = "GroupKeys";
3962
static const char* jkAggLogicPlanAggFuncs = "AggFuncs";
3963

3964
static int32_t logicAggNodeToJson(const void* pObj, SJson* pJson) {
×
3965
  const SAggLogicNode* pNode = (const SAggLogicNode*)pObj;
×
3966

3967
  int32_t code = logicPlanNodeToJson(pObj, pJson);
×
3968
  if (TSDB_CODE_SUCCESS == code) {
×
3969
    code = nodeListToJson(pJson, jkAggLogicPlanGroupKeys, pNode->pGroupKeys);
×
3970
  }
3971
  if (TSDB_CODE_SUCCESS == code) {
×
3972
    code = nodeListToJson(pJson, jkAggLogicPlanAggFuncs, pNode->pAggFuncs);
×
3973
  }
3974

3975
  return code;
×
3976
}
3977

3978
static int32_t jsonToLogicAggNode(const SJson* pJson, void* pObj) {
×
3979
  SAggLogicNode* pNode = (SAggLogicNode*)pObj;
×
3980

3981
  int32_t code = jsonToLogicPlanNode(pJson, pObj);
×
3982
  if (TSDB_CODE_SUCCESS == code) {
×
3983
    code = jsonToNodeList(pJson, jkAggLogicPlanGroupKeys, &pNode->pGroupKeys);
×
3984
  }
3985
  if (TSDB_CODE_SUCCESS == code) {
×
3986
    code = jsonToNodeList(pJson, jkAggLogicPlanAggFuncs, &pNode->pAggFuncs);
×
3987
  }
3988

3989
  return code;
×
3990
}
3991

3992
static const char* jkDataTypeType = "Type";
3993
static const char* jkDataTypePrecision = "Precision";
3994
static const char* jkDataTypeScale = "Scale";
3995
static const char* jkDataTypeDataBytes = "Bytes";
3996

3997
static int32_t dataTypeToJson(const void* pObj, SJson* pJson) {
2,007,418✔
3998
  const SDataType* pNode = (const SDataType*)pObj;
2,007,418✔
3999

4000
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataTypeType, pNode->type);
2,007,418✔
4001
  if (TSDB_CODE_SUCCESS == code) {
2,007,418!
4002
    code = tjsonAddIntegerToObject(pJson, jkDataTypePrecision, pNode->precision);
2,007,418✔
4003
  }
4004
  if (TSDB_CODE_SUCCESS == code) {
2,007,418!
4005
    code = tjsonAddIntegerToObject(pJson, jkDataTypeScale, pNode->scale);
2,007,418✔
4006
  }
4007
  if (TSDB_CODE_SUCCESS == code) {
2,007,418!
4008
    code = tjsonAddIntegerToObject(pJson, jkDataTypeDataBytes, pNode->bytes);
2,007,418✔
4009
  }
4010

4011
  return code;
2,007,418✔
4012
}
4013

4014
static int32_t jsonToDataType(const SJson* pJson, void* pObj) {
2,872,337✔
4015
  SDataType* pNode = (SDataType*)pObj;
2,872,337✔
4016

4017
  int32_t code = tjsonGetUTinyIntValue(pJson, jkDataTypeType, &pNode->type);
2,872,337✔
4018
  if (TSDB_CODE_SUCCESS == code) {
2,869,310!
4019
    code = tjsonGetUTinyIntValue(pJson, jkDataTypePrecision, &pNode->precision);
2,869,322✔
4020
  }
4021
  if (TSDB_CODE_SUCCESS == code) {
2,869,839!
4022
    code = tjsonGetUTinyIntValue(pJson, jkDataTypeScale, &pNode->scale);
2,869,860✔
4023
  }
4024
  if (TSDB_CODE_SUCCESS == code) {
2,868,143!
4025
    code = tjsonGetIntValue(pJson, jkDataTypeDataBytes, &pNode->bytes);
2,868,178✔
4026
  }
4027

4028
  return TSDB_CODE_SUCCESS;
2,868,508✔
4029
}
4030

4031
static const char* jkExprDataType = "DataType";
4032
static const char* jkExprAliasName = "AliasName";
4033
static const char* jkExprUserAlias = "UserAlias";
4034

4035
static int32_t exprNodeToJson(const void* pObj, SJson* pJson) {
1,299,913✔
4036
  const SExprNode* pNode = (const SExprNode*)pObj;
1,299,913✔
4037

4038
  int32_t code = tjsonAddObject(pJson, jkExprDataType, dataTypeToJson, &pNode->resType);
1,299,913✔
4039
  if (TSDB_CODE_SUCCESS == code) {
1,299,913!
4040
    code = tjsonAddStringToObject(pJson, jkExprAliasName, pNode->aliasName);
1,299,913✔
4041
  }
4042
  if (TSDB_CODE_SUCCESS == code) {
1,299,913!
4043
    code = tjsonAddStringToObject(pJson, jkExprUserAlias, pNode->userAlias);
1,299,913✔
4044
  }
4045

4046
  return code;
1,299,913✔
4047
}
4048

4049
static int32_t jsonToExprNode(const SJson* pJson, void* pObj) {
2,161,970✔
4050
  SExprNode* pNode = (SExprNode*)pObj;
2,161,970✔
4051

4052
  int32_t code = tjsonToObject(pJson, jkExprDataType, jsonToDataType, &pNode->resType);
2,161,970✔
4053
  if (TSDB_CODE_SUCCESS == code) {
2,160,408!
4054
    code = tjsonGetStringValue(pJson, jkExprAliasName, pNode->aliasName);
2,160,408✔
4055
  }
4056
  if (TSDB_CODE_SUCCESS == code) {
2,161,969!
4057
    code = tjsonGetStringValue(pJson, jkExprUserAlias, pNode->userAlias);
2,161,971✔
4058
  }
4059

4060
  return code;
2,162,044✔
4061
}
4062

4063
static const char* jkColumnTableId = "TableId";
4064
static const char* jkColumnTableType = "TableType";
4065
static const char* jkColumnColId = "ColId";
4066
static const char* jkColumnColType = "ColType";
4067
static const char* jkColumnProjId = "ProjId";
4068
static const char* jkColumnDbName = "DbName";
4069
static const char* jkColumnTableName = "TableName";
4070
static const char* jkColumnTableAlias = "TableAlias";
4071
static const char* jkColumnColName = "ColName";
4072
static const char* jkColumnDataBlockId = "DataBlockId";
4073
static const char* jkColumnSlotId = "SlotId";
4074
static const char* jkColumnTableHasPk = "TableHasPk";
4075
static const char* jkColumnIsPk = "IsPk";
4076
static const char* jkColumnNumOfPKs = "NumOfPKs";
4077

4078
static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
822,314✔
4079
  const SColumnNode* pNode = (const SColumnNode*)pObj;
822,314✔
4080

4081
  int32_t code = exprNodeToJson(pObj, pJson);
822,314✔
4082
  if (TSDB_CODE_SUCCESS == code) {
822,314!
4083
    code = tjsonAddIntegerToObject(pJson, jkColumnTableId, pNode->tableId);
822,314✔
4084
  }
4085
  if (TSDB_CODE_SUCCESS == code) {
822,314!
4086
    code = tjsonAddIntegerToObject(pJson, jkColumnTableType, pNode->tableType);
822,314✔
4087
  }
4088
  if (TSDB_CODE_SUCCESS == code) {
822,314!
4089
    code = tjsonAddIntegerToObject(pJson, jkColumnColId, pNode->colId);
822,314✔
4090
  }
4091
  if (TSDB_CODE_SUCCESS == code) {
822,314!
4092
    code = tjsonAddIntegerToObject(pJson, jkColumnProjId, pNode->projIdx);
822,314✔
4093
  }
4094
  if (TSDB_CODE_SUCCESS == code) {
822,314!
4095
    code = tjsonAddIntegerToObject(pJson, jkColumnColType, pNode->colType);
822,314✔
4096
  }
4097
  if (TSDB_CODE_SUCCESS == code) {
822,314!
4098
    code = tjsonAddStringToObject(pJson, jkColumnDbName, pNode->dbName);
822,314✔
4099
  }
4100
  if (TSDB_CODE_SUCCESS == code) {
822,314!
4101
    code = tjsonAddStringToObject(pJson, jkColumnTableName, pNode->tableName);
822,314✔
4102
  }
4103
  if (TSDB_CODE_SUCCESS == code) {
822,314!
4104
    code = tjsonAddStringToObject(pJson, jkColumnTableAlias, pNode->tableAlias);
822,314✔
4105
  }
4106
  if (TSDB_CODE_SUCCESS == code) {
822,314!
4107
    code = tjsonAddStringToObject(pJson, jkColumnColName, pNode->colName);
822,314✔
4108
  }
4109
  if (TSDB_CODE_SUCCESS == code) {
822,314!
4110
    code = tjsonAddIntegerToObject(pJson, jkColumnDataBlockId, pNode->dataBlockId);
822,314✔
4111
  }
4112
  if (TSDB_CODE_SUCCESS == code) {
822,314!
4113
    code = tjsonAddIntegerToObject(pJson, jkColumnSlotId, pNode->slotId);
822,314✔
4114
  }
4115
  if (TSDB_CODE_SUCCESS == code) {
822,314!
4116
    code = tjsonAddBoolToObject(pJson, jkColumnTableHasPk, pNode->tableHasPk);
822,314✔
4117
  }
4118
  if (TSDB_CODE_SUCCESS == code) {
822,314!
4119
    code = tjsonAddBoolToObject(pJson, jkColumnIsPk, pNode->isPk);
822,314✔
4120
  }
4121
  if (TSDB_CODE_SUCCESS == code) {
822,314!
4122
    code = tjsonAddIntegerToObject(pJson, jkColumnNumOfPKs, pNode->numOfPKs);
822,314✔
4123
  }
4124
  return code;
822,314✔
4125
}
4126

4127
static int32_t jsonToColumnNode(const SJson* pJson, void* pObj) {
1,239,963✔
4128
  SColumnNode* pNode = (SColumnNode*)pObj;
1,239,963✔
4129

4130
  int32_t code = jsonToExprNode(pJson, pObj);
1,239,963✔
4131
  if (TSDB_CODE_SUCCESS == code) {
1,239,936!
4132
    code = tjsonGetUBigIntValue(pJson, jkColumnTableId, &pNode->tableId);
1,239,938✔
4133
  }
4134
  if (TSDB_CODE_SUCCESS == code) {
1,239,616!
4135
    code = tjsonGetTinyIntValue(pJson, jkColumnTableType, &pNode->tableType);
1,239,620✔
4136
  }
4137
  if (TSDB_CODE_SUCCESS == code) {
1,239,960!
4138
    code = tjsonGetSmallIntValue(pJson, jkColumnColId, &pNode->colId);
1,239,964✔
4139
  }
4140
  if (TSDB_CODE_SUCCESS == code) {
1,239,449✔
4141
    code = tjsonGetSmallIntValue(pJson, jkColumnProjId, &pNode->projIdx);
1,239,437✔
4142
  }
4143
  if (TSDB_CODE_SUCCESS == code) {
1,239,732✔
4144
    tjsonGetNumberValue(pJson, jkColumnColType, pNode->colType, code);
1,239,720✔
4145
  }
4146
  if (TSDB_CODE_SUCCESS == code) {
1,239,871✔
4147
    code = tjsonGetStringValue(pJson, jkColumnDbName, pNode->dbName);
1,239,860✔
4148
  }
4149
  if (TSDB_CODE_SUCCESS == code) {
1,239,915✔
4150
    code = tjsonGetStringValue(pJson, jkColumnTableName, pNode->tableName);
1,239,904✔
4151
  }
4152
  if (TSDB_CODE_SUCCESS == code) {
1,240,139✔
4153
    code = tjsonGetStringValue(pJson, jkColumnTableAlias, pNode->tableAlias);
1,240,117✔
4154
  }
4155
  if (TSDB_CODE_SUCCESS == code) {
1,240,175✔
4156
    code = tjsonGetStringValue(pJson, jkColumnColName, pNode->colName);
1,240,155✔
4157
  }
4158
  if (TSDB_CODE_SUCCESS == code) {
1,240,022✔
4159
    code = tjsonGetSmallIntValue(pJson, jkColumnDataBlockId, &pNode->dataBlockId);
1,240,002✔
4160
  }
4161
  if (TSDB_CODE_SUCCESS == code) {
1,240,019✔
4162
    code = tjsonGetSmallIntValue(pJson, jkColumnSlotId, &pNode->slotId);
1,240,001✔
4163
  }
4164
  if (TSDB_CODE_SUCCESS == code) {
1,240,014✔
4165
    code = tjsonGetBoolValue(pJson, jkColumnTableHasPk, &pNode->tableHasPk);
1,239,988✔
4166
  }
4167
  if (TSDB_CODE_SUCCESS == code) {
1,240,162✔
4168
    code = tjsonGetBoolValue(pJson, jkColumnIsPk, &pNode->isPk);
1,240,137✔
4169
  }
4170
  if (TSDB_CODE_SUCCESS == code) {
1,239,845✔
4171
    code = tjsonGetSmallIntValue(pJson, jkColumnNumOfPKs, &pNode->numOfPKs);
1,239,822✔
4172
  }
4173
  return code;
1,240,096✔
4174
}
4175

4176
static const char* jkValueLiteralSize = "LiteralSize";
4177
static const char* jkValueLiteral = "Literal";
4178
static const char* jkValueFlag = "Flag";
4179
static const char* jkValueTranslate = "Translate";
4180
static const char* jkValueNotReserved = "NotReserved";
4181
static const char* jkValueIsNull = "IsNull";
4182
static const char* jkValueUnit = "Unit";
4183
static const char* jkValueDatum = "Datum";
4184

4185
static int32_t datumToJson(const void* pObj, SJson* pJson) {
54,504✔
4186
  const SValueNode* pNode = (const SValueNode*)pObj;
54,504✔
4187

4188
  int32_t code = TSDB_CODE_SUCCESS;
54,504✔
4189
  switch (pNode->node.resType.type) {
54,504!
4190
    case TSDB_DATA_TYPE_NULL:
×
4191
      break;
×
4192
    case TSDB_DATA_TYPE_BOOL:
130✔
4193
      code = tjsonAddBoolToObject(pJson, jkValueDatum, pNode->datum.b);
130✔
4194
      break;
130✔
4195
    case TSDB_DATA_TYPE_TINYINT:
38,061✔
4196
    case TSDB_DATA_TYPE_SMALLINT:
4197
    case TSDB_DATA_TYPE_INT:
4198
    case TSDB_DATA_TYPE_BIGINT:
4199
    case TSDB_DATA_TYPE_TIMESTAMP:
4200
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.i);
38,061✔
4201
      break;
38,061✔
4202
    case TSDB_DATA_TYPE_UTINYINT:
178✔
4203
    case TSDB_DATA_TYPE_USMALLINT:
4204
    case TSDB_DATA_TYPE_UINT:
4205
    case TSDB_DATA_TYPE_UBIGINT:
4206
      code = tjsonAddIntegerToObject(pJson, jkValueDatum, pNode->datum.u);
178✔
4207
      break;
178✔
4208
    case TSDB_DATA_TYPE_FLOAT:
750✔
4209
    case TSDB_DATA_TYPE_DOUBLE:
4210
      code = tjsonAddDoubleToObject(pJson, jkValueDatum, pNode->datum.d);
750✔
4211
      break;
750✔
4212
    case TSDB_DATA_TYPE_NCHAR: {
×
4213
      // cJSON only support utf-8 encoding. Convert memory content to hex string.
4214
      int32_t bufSize = varDataLen(pNode->datum.p) * 2 + 1;
×
4215
      char* buf = taosMemoryCalloc(bufSize, sizeof(char));
×
4216
      if (!buf) return terrno;
×
4217
      code = taosHexEncode(varDataVal(pNode->datum.p), buf, varDataLen(pNode->datum.p), bufSize);
×
4218
      if (code != TSDB_CODE_SUCCESS) {
×
4219
        taosMemoryFree(buf);
×
4220
        return TSDB_CODE_TSC_INVALID_VALUE;
×
4221
      }
4222
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
×
4223
      taosMemoryFree(buf);
×
4224
      break;
×
4225
    }
4226
    case TSDB_DATA_TYPE_VARCHAR:
15,385✔
4227
    case TSDB_DATA_TYPE_VARBINARY:
4228
    case TSDB_DATA_TYPE_GEOMETRY:
4229
      code = tjsonAddStringToObject(pJson, jkValueDatum, varDataVal(pNode->datum.p));
15,385✔
4230
      break;
15,385✔
4231
    case TSDB_DATA_TYPE_JSON: {
×
4232
      int32_t len = getJsonValueLen(pNode->datum.p);
×
4233
      int32_t bufSize = len * 2 + 1;
×
4234
      char*   buf = taosMemoryCalloc(bufSize, sizeof(char));
×
4235
      if (!buf) return terrno;
×
4236
      code = taosHexEncode(pNode->datum.p, buf, len, bufSize);
×
4237
      if (code != TSDB_CODE_SUCCESS) {
×
4238
        taosMemoryFree(buf);
×
4239
        return TSDB_CODE_TSC_INVALID_VALUE;
×
4240
      }
4241
      code = tjsonAddStringToObject(pJson, jkValueDatum, buf);
×
4242
      taosMemoryFree(buf);
×
4243
      break;
×
4244
    }
4245
    case TSDB_DATA_TYPE_DECIMAL:
×
4246
    case TSDB_DATA_TYPE_BLOB:
4247
      // todo
4248
    default:
4249
      break;
×
4250
  }
4251

4252
  return code;
54,504✔
4253
}
4254

4255
static int32_t valueNodeToJson(const void* pObj, SJson* pJson) {
60,859✔
4256
  const SValueNode* pNode = (const SValueNode*)pObj;
60,859✔
4257

4258
  int32_t code = exprNodeToJson(pObj, pJson);
60,859✔
4259
  if (TSDB_CODE_SUCCESS == code) {
60,859!
4260
    code = tjsonAddIntegerToObject(pJson, jkValueLiteralSize, NULL != pNode->literal ? strlen(pNode->literal) : 0);
60,859✔
4261
  }
4262
  if (TSDB_CODE_SUCCESS == code && NULL != pNode->literal) {
60,859!
4263
    code = tjsonAddStringToObject(pJson, jkValueLiteral, pNode->literal);
40,456✔
4264
  }
4265
  if (TSDB_CODE_SUCCESS == code) {
60,859!
4266
    code = tjsonAddBoolToObject(pJson, jkValueFlag, pNode->flag);
60,859✔
4267
  }
4268
  if (TSDB_CODE_SUCCESS == code) {
60,859!
4269
    code = tjsonAddBoolToObject(pJson, jkValueTranslate, pNode->translate);
60,859✔
4270
  }
4271
  if (TSDB_CODE_SUCCESS == code) {
60,859!
4272
    code = tjsonAddBoolToObject(pJson, jkValueNotReserved, pNode->notReserved);
60,859✔
4273
  }
4274
  if (TSDB_CODE_SUCCESS == code) {
60,859!
4275
    code = tjsonAddBoolToObject(pJson, jkValueIsNull, pNode->isNull);
60,859✔
4276
  }
4277
  if (TSDB_CODE_SUCCESS == code) {
60,859!
4278
    code = tjsonAddIntegerToObject(pJson, jkValueUnit, pNode->unit);
60,859✔
4279
  }
4280
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
60,859!
4281
    code = datumToJson(pNode, pJson);
54,504✔
4282
  }
4283

4284
  return code;
60,859✔
4285
}
4286

4287
static int32_t jsonToDatum(const SJson* pJson, void* pObj) {
85,972✔
4288
  SValueNode* pNode = (SValueNode*)pObj;
85,972✔
4289

4290
  int32_t code = TSDB_CODE_SUCCESS;
85,972✔
4291
  switch (pNode->node.resType.type) {
85,972!
4292
    case TSDB_DATA_TYPE_NULL:
×
4293
      break;
×
4294
    case TSDB_DATA_TYPE_BOOL:
185✔
4295
      code = tjsonGetBoolValue(pJson, jkValueDatum, &pNode->datum.b);
185✔
4296
      *(bool*)&pNode->typeData = pNode->datum.b;
185✔
4297
      break;
185✔
4298
    case TSDB_DATA_TYPE_TINYINT:
16,338✔
4299
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
16,338✔
4300
      *(int8_t*)&pNode->typeData = pNode->datum.i;
16,338✔
4301
      break;
16,338✔
4302
    case TSDB_DATA_TYPE_SMALLINT:
208✔
4303
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
208✔
4304
      *(int16_t*)&pNode->typeData = pNode->datum.i;
210✔
4305
      break;
210✔
4306
    case TSDB_DATA_TYPE_INT:
57✔
4307
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
57✔
4308
      *(int32_t*)&pNode->typeData = pNode->datum.i;
57✔
4309
      break;
57✔
4310
    case TSDB_DATA_TYPE_BIGINT:
44,267✔
4311
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
44,267✔
4312
      *(int64_t*)&pNode->typeData = pNode->datum.i;
44,267✔
4313
      break;
44,267✔
4314
    case TSDB_DATA_TYPE_TIMESTAMP:
×
4315
      code = tjsonGetBigIntValue(pJson, jkValueDatum, &pNode->datum.i);
×
4316
      *(int64_t*)&pNode->typeData = pNode->datum.i;
×
4317
      break;
×
4318
    case TSDB_DATA_TYPE_UTINYINT:
198✔
4319
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
198✔
4320
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
198✔
4321
      break;
198✔
4322
    case TSDB_DATA_TYPE_USMALLINT:
×
4323
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
4324
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
×
4325
      break;
×
4326
    case TSDB_DATA_TYPE_UINT:
×
4327
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
4328
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
×
4329
      break;
×
4330
    case TSDB_DATA_TYPE_UBIGINT:
×
4331
      code = tjsonGetUBigIntValue(pJson, jkValueDatum, &pNode->datum.u);
×
4332
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
×
4333
      break;
×
4334
    case TSDB_DATA_TYPE_FLOAT:
×
4335
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
×
4336
      *(float*)&pNode->typeData = pNode->datum.d;
×
4337
      break;
×
4338
    case TSDB_DATA_TYPE_DOUBLE:
829✔
4339
      code = tjsonGetDoubleValue(pJson, jkValueDatum, &pNode->datum.d);
829✔
4340
      *(double*)&pNode->typeData = pNode->datum.d;
829✔
4341
      break;
829✔
4342
    case TSDB_DATA_TYPE_NCHAR:
23,900✔
4343
    case TSDB_DATA_TYPE_VARCHAR:
4344
    case TSDB_DATA_TYPE_VARBINARY:
4345
    case TSDB_DATA_TYPE_GEOMETRY: {
4346
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
23,900✔
4347
      if (NULL == pNode->datum.p) {
23,902✔
4348
        code = terrno;
1✔
4349
        break;
×
4350
      }
4351
      varDataSetLen(pNode->datum.p, pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
23,901✔
4352
      if (TSDB_DATA_TYPE_NCHAR == pNode->node.resType.type) {
23,901!
4353
        char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + VARSTR_HEADER_SIZE + 1);
×
4354
        if (NULL == buf) {
×
4355
          code = terrno;
×
4356
          break;
×
4357
        }
4358
        code = tjsonGetStringValue(pJson, jkValueDatum, buf);
×
4359
        if (code != TSDB_CODE_SUCCESS) {
×
4360
          taosMemoryFree(buf);
×
4361
          break;
×
4362
        }
4363
        code = taosHexDecode(buf, varDataVal(pNode->datum.p), pNode->node.resType.bytes - VARSTR_HEADER_SIZE);
×
4364
        if (code != TSDB_CODE_SUCCESS) {
×
4365
          taosMemoryFree(buf);
×
4366
          break;
×
4367
        }
4368
        taosMemoryFree(buf);
×
4369
      } else {
4370
        code = tjsonGetStringValue(pJson, jkValueDatum, varDataVal(pNode->datum.p));
23,901✔
4371
      }
4372
      break;
23,900✔
4373
    }
4374
    case TSDB_DATA_TYPE_JSON: {
×
4375
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes);
×
4376
      if (NULL == pNode->datum.p) {
×
4377
        code = terrno;
×
4378
        break;
×
4379
      }
4380
      char* buf = taosMemoryCalloc(1, pNode->node.resType.bytes * 2 + 1);
×
4381
      if (NULL == buf) {
×
4382
        code = terrno;
×
4383
        break;
×
4384
      }
4385
      code = tjsonGetStringValue(pJson, jkValueDatum, buf);
×
4386
      if (code != TSDB_CODE_SUCCESS) {
×
4387
        taosMemoryFree(buf);
×
4388
        break;
×
4389
      }
4390
      code = taosHexDecode(buf, pNode->datum.p, pNode->node.resType.bytes);
×
4391
      if (code != TSDB_CODE_SUCCESS) {
×
4392
        taosMemoryFree(buf);
×
4393
        break;
×
4394
      }
4395
      taosMemoryFree(buf);
×
4396
      break;
×
4397
    }
4398
    case TSDB_DATA_TYPE_DECIMAL:
×
4399
    case TSDB_DATA_TYPE_BLOB:
4400
      // todo
4401
    default:
4402
      break;
×
4403
  }
4404

4405
  return code;
85,974✔
4406
}
4407

4408
static int32_t jsonToValueNode(const SJson* pJson, void* pObj) {
92,883✔
4409
  SValueNode* pNode = (SValueNode*)pObj;
92,883✔
4410

4411
  int32_t code = jsonToExprNode(pJson, pObj);
92,883✔
4412
  int32_t literalSize = 0;
92,889✔
4413
  if (TSDB_CODE_SUCCESS == code) {
92,889!
4414
    code = tjsonGetIntValue(pJson, jkValueLiteralSize, &literalSize);
92,889✔
4415
  }
4416
  if (TSDB_CODE_SUCCESS == code && literalSize > 0) {
92,890!
4417
    code = tjsonDupStringValue(pJson, jkValueLiteral, &pNode->literal);
68,358✔
4418
  }
4419
  if (TSDB_CODE_SUCCESS == code) {
92,892✔
4420
    code = tjsonGetIntValue(pJson, jkValueFlag, &pNode->flag);
92,888✔
4421
  }
4422
  if (TSDB_CODE_SUCCESS == code) {
92,876✔
4423
    code = tjsonGetBoolValue(pJson, jkValueTranslate, &pNode->translate);
92,872✔
4424
  }
4425
  if (TSDB_CODE_SUCCESS == code) {
92,891✔
4426
    code = tjsonGetBoolValue(pJson, jkValueNotReserved, &pNode->notReserved);
92,887✔
4427
  }
4428
  if (TSDB_CODE_SUCCESS == code) {
92,898✔
4429
    code = tjsonGetBoolValue(pJson, jkValueIsNull, &pNode->isNull);
92,894✔
4430
  }
4431
  if (TSDB_CODE_SUCCESS == code) {
92,893✔
4432
    code = tjsonGetTinyIntValue(pJson, jkValueUnit, &pNode->unit);
92,889✔
4433
  }
4434
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
92,877!
4435
    code = jsonToDatum(pJson, pNode);
85,972✔
4436
  }
4437

4438
  return code;
92,868✔
4439
}
4440

4441
static const char* jkOperatorType = "OpType";
4442
static const char* jkOperatorLeft = "Left";
4443
static const char* jkOperatorRight = "Right";
4444

4445
static int32_t operatorNodeToJson(const void* pObj, SJson* pJson) {
6,595✔
4446
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
6,595✔
4447

4448
  int32_t code = exprNodeToJson(pObj, pJson);
6,595✔
4449
  if (TSDB_CODE_SUCCESS == code) {
6,595!
4450
    code = tjsonAddIntegerToObject(pJson, jkOperatorType, pNode->opType);
6,595✔
4451
  }
4452
  if (TSDB_CODE_SUCCESS == code) {
6,595!
4453
    code = tjsonAddObject(pJson, jkOperatorLeft, nodeToJson, pNode->pLeft);
6,595✔
4454
  }
4455
  if (TSDB_CODE_SUCCESS == code) {
6,595!
4456
    code = tjsonAddObject(pJson, jkOperatorRight, nodeToJson, pNode->pRight);
6,595✔
4457
  }
4458

4459
  return code;
6,595✔
4460
}
4461

4462
static int32_t jsonToOperatorNode(const SJson* pJson, void* pObj) {
16,339✔
4463
  SOperatorNode* pNode = (SOperatorNode*)pObj;
16,339✔
4464

4465
  int32_t code = jsonToExprNode(pJson, pObj);
16,339✔
4466
  if (TSDB_CODE_SUCCESS == code) {
16,340!
4467
    tjsonGetNumberValue(pJson, jkOperatorType, pNode->opType, code);
16,340✔
4468
  }
4469
  if (TSDB_CODE_SUCCESS == code) {
16,337!
4470
    code = jsonToNodeObject(pJson, jkOperatorLeft, &pNode->pLeft);
16,337✔
4471
  }
4472
  if (TSDB_CODE_SUCCESS == code) {
16,338!
4473
    code = jsonToNodeObject(pJson, jkOperatorRight, &pNode->pRight);
16,338✔
4474
  }
4475

4476
  return code;
16,337✔
4477
}
4478

4479
static const char* jkLogicCondType = "CondType";
4480
static const char* jkLogicCondParameters = "Parameters";
4481

4482
static int32_t logicConditionNodeToJson(const void* pObj, SJson* pJson) {
1,950✔
4483
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
1,950✔
4484

4485
  int32_t code = exprNodeToJson(pObj, pJson);
1,950✔
4486
  if (TSDB_CODE_SUCCESS == code) {
1,950!
4487
    code = tjsonAddIntegerToObject(pJson, jkLogicCondType, pNode->condType);
1,950✔
4488
  }
4489
  if (TSDB_CODE_SUCCESS == code) {
1,950!
4490
    code = nodeListToJson(pJson, jkLogicCondParameters, pNode->pParameterList);
1,950✔
4491
  }
4492

4493
  return code;
1,950✔
4494
}
4495

4496
static int32_t jsonToLogicConditionNode(const SJson* pJson, void* pObj) {
6,446✔
4497
  SLogicConditionNode* pNode = (SLogicConditionNode*)pObj;
6,446✔
4498

4499
  int32_t code = jsonToExprNode(pJson, pObj);
6,446✔
4500
  if (TSDB_CODE_SUCCESS == code) {
6,446!
4501
    tjsonGetNumberValue(pJson, jkLogicCondType, pNode->condType, code);
6,446✔
4502
  }
4503
  if (TSDB_CODE_SUCCESS == code) {
6,446!
4504
    code = jsonToNodeList(pJson, jkLogicCondParameters, &pNode->pParameterList);
6,446✔
4505
  }
4506

4507
  return code;
6,446✔
4508
}
4509

4510
static const char* jkFunctionName = "Name";
4511
static const char* jkFunctionId = "Id";
4512
static const char* jkFunctionType = "Type";
4513
static const char* jkFunctionParameter = "Parameters";
4514
static const char* jkFunctionUdfBufSize = "UdfBufSize";
4515
static const char* jkFunctionHasPk = "HasPk";
4516
static const char* jkFunctionPkBytes = "PkBytes";
4517
static const char* jkFunctionIsMergeFunc = "IsMergeFunc";
4518
static const char* jkFunctionMergeFuncOf = "MergeFuncOf";
4519
static const char* jkFunctionTrimType = "TrimType";
4520

4521
static int32_t functionNodeToJson(const void* pObj, SJson* pJson) {
406,541✔
4522
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
406,541✔
4523

4524
  int32_t code = exprNodeToJson(pObj, pJson);
406,541✔
4525
  if (TSDB_CODE_SUCCESS == code) {
406,541!
4526
    code = tjsonAddStringToObject(pJson, jkFunctionName, pNode->functionName);
406,541✔
4527
  }
4528
  if (TSDB_CODE_SUCCESS == code) {
406,541!
4529
    code = tjsonAddIntegerToObject(pJson, jkFunctionId, pNode->funcId);
406,541✔
4530
  }
4531
  if (TSDB_CODE_SUCCESS == code) {
406,541!
4532
    code = tjsonAddIntegerToObject(pJson, jkFunctionType, pNode->funcType);
406,541✔
4533
  }
4534
  if (TSDB_CODE_SUCCESS == code) {
406,541!
4535
    code = nodeListToJson(pJson, jkFunctionParameter, pNode->pParameterList);
406,541✔
4536
  }
4537
  if (TSDB_CODE_SUCCESS == code) {
406,541!
4538
    code = tjsonAddIntegerToObject(pJson, jkFunctionUdfBufSize, pNode->udfBufSize);
406,541✔
4539
  }
4540
  if (TSDB_CODE_SUCCESS == code) {
406,541!
4541
    code = tjsonAddBoolToObject(pJson, jkFunctionHasPk, pNode->hasPk);
406,541✔
4542
  }
4543
  if (TSDB_CODE_SUCCESS == code) {
406,541!
4544
    code = tjsonAddIntegerToObject(pJson, jkFunctionPkBytes, pNode->pkBytes);
406,541✔
4545
  }
4546
  if (TSDB_CODE_SUCCESS == code) {
406,541!
4547
    code = tjsonAddBoolToObject(pJson, jkFunctionIsMergeFunc, pNode->hasOriginalFunc);
406,541✔
4548
  }
4549
  if (TSDB_CODE_SUCCESS == code) {
406,541!
4550
    code = tjsonAddIntegerToObject(pJson, jkFunctionMergeFuncOf, pNode->originalFuncId);
406,541✔
4551
  }
4552
  if (TSDB_CODE_SUCCESS == code) {
406,541!
4553
    code = tjsonAddIntegerToObject(pJson, jkFunctionTrimType, pNode->trimType);
406,541✔
4554
  }
4555
  return code;
406,541✔
4556
}
4557

4558
static int32_t jsonToFunctionNode(const SJson* pJson, void* pObj) {
796,047✔
4559
  SFunctionNode* pNode = (SFunctionNode*)pObj;
796,047✔
4560

4561
  int32_t code = jsonToExprNode(pJson, pObj);
796,047✔
4562
  if (TSDB_CODE_SUCCESS == code) {
795,937!
4563
    code = tjsonGetStringValue(pJson, jkFunctionName, pNode->functionName);
795,939✔
4564
  }
4565
  if (TSDB_CODE_SUCCESS == code) {
795,678!
4566
    code = tjsonGetIntValue(pJson, jkFunctionId, &pNode->funcId);
795,682✔
4567
  }
4568
  if (TSDB_CODE_SUCCESS == code) {
795,523!
4569
    code = tjsonGetIntValue(pJson, jkFunctionType, &pNode->funcType);
795,528✔
4570
  }
4571
  if (TSDB_CODE_SUCCESS == code) {
795,716!
4572
    code = jsonToNodeList(pJson, jkFunctionParameter, &pNode->pParameterList);
795,722✔
4573
  }
4574
  if (TSDB_CODE_SUCCESS == code) {
796,069!
4575
    code = tjsonGetIntValue(pJson, jkFunctionUdfBufSize, &pNode->udfBufSize);
796,074✔
4576
  }
4577
  if (TSDB_CODE_SUCCESS == code) {
796,000!
4578
    code = tjsonGetBoolValue(pJson, jkFunctionHasPk, &pNode->hasPk);
796,005✔
4579
  }
4580
  if (TSDB_CODE_SUCCESS == code) {
795,956!
4581
    code = tjsonGetIntValue(pJson, jkFunctionPkBytes, &pNode->pkBytes);
795,961✔
4582
  }
4583
  if (TSDB_CODE_SUCCESS == code) {
795,967!
4584
    code = tjsonGetBoolValue(pJson, jkFunctionIsMergeFunc, &pNode->hasOriginalFunc);
795,971✔
4585
  }
4586
  if (TSDB_CODE_SUCCESS == code) {
796,026!
4587
    code = tjsonGetIntValue(pJson, jkFunctionMergeFuncOf, &pNode->originalFuncId);
796,030✔
4588
  }
4589
  if (TSDB_CODE_SUCCESS == code) {
795,961!
4590
    tjsonGetNumberValue(pJson, jkFunctionTrimType, pNode->trimType, code);
795,961✔
4591
  }
4592

4593
  return code;
796,039✔
4594
}
4595

4596
static const char* jkTableDbName = "DbName";
4597
static const char* jkTableTableName = "tableName";
4598
static const char* jkTableTableAlias = "tableAlias";
4599

4600
static int32_t tableNodeToJson(const void* pObj, SJson* pJson) {
1,484✔
4601
  const STableNode* pNode = (const STableNode*)pObj;
1,484✔
4602

4603
  int32_t code = exprNodeToJson(pObj, pJson);
1,484✔
4604
  if (TSDB_CODE_SUCCESS == code) {
1,484!
4605
    code = tjsonAddStringToObject(pJson, jkTableDbName, pNode->dbName);
1,484✔
4606
  }
4607
  if (TSDB_CODE_SUCCESS == code) {
1,484!
4608
    code = tjsonAddStringToObject(pJson, jkTableTableName, pNode->tableName);
1,484✔
4609
  }
4610
  if (TSDB_CODE_SUCCESS == code) {
1,484!
4611
    code = tjsonAddStringToObject(pJson, jkTableTableAlias, pNode->tableAlias);
1,484✔
4612
  }
4613

4614
  return code;
1,484✔
4615
}
4616

4617
static int32_t jsonToTableNode(const SJson* pJson, void* pObj) {
11,104✔
4618
  STableNode* pNode = (STableNode*)pObj;
11,104✔
4619

4620
  int32_t code = jsonToExprNode(pJson, pObj);
11,104✔
4621
  if (TSDB_CODE_SUCCESS == code) {
11,104!
4622
    code = tjsonGetStringValue(pJson, jkTableDbName, pNode->dbName);
11,104✔
4623
  }
4624
  if (TSDB_CODE_SUCCESS == code) {
11,104!
4625
    code = tjsonGetStringValue(pJson, jkTableTableName, pNode->tableName);
11,104✔
4626
  }
4627
  if (TSDB_CODE_SUCCESS == code) {
11,104!
4628
    code = tjsonGetStringValue(pJson, jkTableTableAlias, pNode->tableAlias);
11,104✔
4629
  }
4630

4631
  return code;
11,104✔
4632
}
4633

4634
static const char* jkTableIndexInfoIntervalUnit = "IntervalUnit";
4635
static const char* jkTableIndexInfoSlidingUnit = "SlidingUnit";
4636
static const char* jkTableIndexInfoInterval = "Interval";
4637
static const char* jkTableIndexInfoOffset = "Offset";
4638
static const char* jkTableIndexInfoSliding = "Sliding";
4639
static const char* jkTableIndexInfoDstTbUid = "DstTbUid";
4640
static const char* jkTableIndexInfoDstVgId = "DstVgId";
4641
static const char* jkTableIndexInfoEpSet = "EpSet";
4642
static const char* jkTableIndexInfoExpr = "Expr";
4643

4644
static int32_t tableIndexInfoToJson(const void* pObj, SJson* pJson) {
×
4645
  const STableIndexInfo* pNode = (const STableIndexInfo*)pObj;
×
4646

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

4673
  return code;
×
4674
}
4675

4676
static int32_t jsonToTableIndexInfo(const SJson* pJson, void* pObj) {
×
4677
  STableIndexInfo* pNode = (STableIndexInfo*)pObj;
×
4678

4679
  int32_t code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoIntervalUnit, &pNode->intervalUnit);
×
4680
  if (TSDB_CODE_SUCCESS == code) {
×
4681
    code = tjsonGetTinyIntValue(pJson, jkTableIndexInfoSlidingUnit, &pNode->slidingUnit);
×
4682
  }
4683
  if (TSDB_CODE_SUCCESS == code) {
×
4684
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoInterval, &pNode->interval);
×
4685
  }
4686
  if (TSDB_CODE_SUCCESS == code) {
×
4687
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoOffset, &pNode->offset);
×
4688
  }
4689
  if (TSDB_CODE_SUCCESS == code) {
×
4690
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoSliding, &pNode->sliding);
×
4691
  }
4692
  if (TSDB_CODE_SUCCESS == code) {
×
4693
    code = tjsonGetBigIntValue(pJson, jkTableIndexInfoDstTbUid, &pNode->dstTbUid);
×
4694
  }
4695
  if (TSDB_CODE_SUCCESS == code) {
×
4696
    code = tjsonGetIntValue(pJson, jkTableIndexInfoDstVgId, &pNode->dstVgId);
×
4697
  }
4698
  if (TSDB_CODE_SUCCESS == code) {
×
4699
    code = tjsonToObject(pJson, jkTableIndexInfoEpSet, jsonToEpSet, &pNode->epSet);
×
4700
  }
4701
  if (TSDB_CODE_SUCCESS == code) {
×
4702
    code = tjsonDupStringValue(pJson, jkTableIndexInfoExpr, &pNode->expr);
×
4703
  }
4704

4705
  return code;
×
4706
}
4707

4708
static const char* jkRealTableMetaSize = "MetaSize";
4709
static const char* jkRealTableMeta = "Meta";
4710
static const char* jkRealTableVgroupsInfoSize = "VgroupsInfoSize";
4711
static const char* jkRealTableVgroupsInfo = "VgroupsInfo";
4712
static const char* jkRealTableSmaIndexes = "SmaIndexes";
4713

4714
static int32_t realTableNodeToJson(const void* pObj, SJson* pJson) {
1,483✔
4715
  const SRealTableNode* pNode = (const SRealTableNode*)pObj;
1,483✔
4716

4717
  int32_t code = tableNodeToJson(pObj, pJson);
1,483✔
4718
  if (TSDB_CODE_SUCCESS == code) {
1,483!
4719
    code = tjsonAddIntegerToObject(pJson, jkRealTableMetaSize, TABLE_META_SIZE(pNode->pMeta));
1,483!
4720
  }
4721
  if (TSDB_CODE_SUCCESS == code) {
1,483!
4722
    code = tjsonAddObject(pJson, jkRealTableMeta, tableMetaToJson, pNode->pMeta);
1,483✔
4723
  }
4724
  if (TSDB_CODE_SUCCESS == code) {
1,483!
4725
    code = tjsonAddIntegerToObject(pJson, jkRealTableVgroupsInfoSize, VGROUPS_INFO_SIZE(pNode->pVgroupList));
1,483✔
4726
  }
4727
  if (TSDB_CODE_SUCCESS == code) {
1,483!
4728
    code = tjsonAddObject(pJson, jkRealTableVgroupsInfo, vgroupsInfoToJson, pNode->pVgroupList);
1,483✔
4729
  }
4730
  if (TSDB_CODE_SUCCESS == code) {
1,483!
4731
    code = tjsonAddTArray(pJson, jkRealTableSmaIndexes, tableIndexInfoToJson, pNode->pSmaIndexes);
1,483✔
4732
  }
4733

4734
  return code;
1,483✔
4735
}
4736

4737
static int32_t jsonToRealTableNode(const SJson* pJson, void* pObj) {
11,103✔
4738
  SRealTableNode* pNode = (SRealTableNode*)pObj;
11,103✔
4739

4740
  int32_t objSize = 0;
11,103✔
4741
  int32_t code = jsonToTableNode(pJson, pObj);
11,103✔
4742
  if (TSDB_CODE_SUCCESS == code) {
11,103!
4743
    code = tjsonGetIntValue(pJson, jkRealTableMetaSize, &objSize);
11,103✔
4744
  }
4745
  if (TSDB_CODE_SUCCESS == code) {
11,103!
4746
    code = tjsonMakeObject(pJson, jkRealTableMeta, jsonToTableMeta, (void**)&pNode->pMeta, objSize);
11,103✔
4747
  }
4748
  if (TSDB_CODE_SUCCESS == code) {
11,103!
4749
    code = tjsonGetIntValue(pJson, jkRealTableVgroupsInfoSize, &objSize);
11,103✔
4750
  }
4751
  if (TSDB_CODE_SUCCESS == code) {
11,103!
4752
    code = tjsonMakeObject(pJson, jkRealTableVgroupsInfo, jsonToVgroupsInfo, (void**)&pNode->pVgroupList, objSize);
11,103✔
4753
  }
4754
  if (TSDB_CODE_SUCCESS == code) {
11,103!
4755
    code =
4756
        tjsonToTArray(pJson, jkRealTableSmaIndexes, jsonToTableIndexInfo, &pNode->pSmaIndexes, sizeof(STableIndexInfo));
11,103✔
4757
  }
4758

4759
  return code;
11,103✔
4760
}
4761

4762
static const char* jkTempTableSubquery = "Subquery";
4763

4764
static int32_t tempTableNodeToJson(const void* pObj, SJson* pJson) {
1✔
4765
  const STempTableNode* pNode = (const STempTableNode*)pObj;
1✔
4766

4767
  int32_t code = tableNodeToJson(pObj, pJson);
1✔
4768
  if (TSDB_CODE_SUCCESS == code) {
1!
4769
    code = tjsonAddObject(pJson, jkTempTableSubquery, nodeToJson, pNode->pSubquery);
1✔
4770
  }
4771

4772
  return code;
1✔
4773
}
4774

4775
static int32_t jsonToTempTableNode(const SJson* pJson, void* pObj) {
1✔
4776
  STempTableNode* pNode = (STempTableNode*)pObj;
1✔
4777

4778
  int32_t code = jsonToTableNode(pJson, pObj);
1✔
4779
  if (TSDB_CODE_SUCCESS == code) {
1!
4780
    code = jsonToNodeObject(pJson, jkTempTableSubquery, &pNode->pSubquery);
1✔
4781
  }
4782

4783
  return code;
1✔
4784
}
4785

4786
static const char* jkJoinTableJoinType = "JoinType";
4787
static const char* jkJoinTableSubType = "SubType";
4788
static const char* jkJoinTableLeft = "Left";
4789
static const char* jkJoinTableRight = "Right";
4790
static const char* jkJoinTableOnCond = "OnCond";
4791

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

4795
  int32_t code = tableNodeToJson(pObj, pJson);
×
4796
  if (TSDB_CODE_SUCCESS == code) {
×
4797
    code = tjsonAddIntegerToObject(pJson, jkJoinTableJoinType, pNode->joinType);
×
4798
  }
4799
  if (TSDB_CODE_SUCCESS == code) {
×
4800
    code = tjsonAddIntegerToObject(pJson, jkJoinTableSubType, pNode->subType);
×
4801
  }
4802
  if (TSDB_CODE_SUCCESS == code) {
×
4803
    code = tjsonAddObject(pJson, jkJoinTableLeft, nodeToJson, pNode->pLeft);
×
4804
  }
4805
  if (TSDB_CODE_SUCCESS == code) {
×
4806
    code = tjsonAddObject(pJson, jkJoinTableRight, nodeToJson, pNode->pRight);
×
4807
  }
4808
  if (TSDB_CODE_SUCCESS == code) {
×
4809
    code = tjsonAddObject(pJson, jkJoinTableOnCond, nodeToJson, pNode->pOnCond);
×
4810
  }
4811

4812
  return code;
×
4813
}
4814

4815
static int32_t jsonToJoinTableNode(const SJson* pJson, void* pObj) {
×
4816
  SJoinTableNode* pNode = (SJoinTableNode*)pObj;
×
4817

4818
  int32_t code = jsonToTableNode(pJson, pObj);
×
4819
  if (TSDB_CODE_SUCCESS == code) {
×
4820
    tjsonGetNumberValue(pJson, jkJoinTableJoinType, pNode->joinType, code);
×
4821
  }
4822
  if (TSDB_CODE_SUCCESS == code) {
×
4823
    tjsonGetNumberValue(pJson, jkJoinTableSubType, pNode->subType, code);
×
4824
  }
4825
  if (TSDB_CODE_SUCCESS == code) {
×
4826
    code = jsonToNodeObject(pJson, jkJoinTableLeft, &pNode->pLeft);
×
4827
  }
4828
  if (TSDB_CODE_SUCCESS == code) {
×
4829
    code = jsonToNodeObject(pJson, jkJoinTableRight, &pNode->pRight);
×
4830
  }
4831
  if (TSDB_CODE_SUCCESS == code) {
×
4832
    code = jsonToNodeObject(pJson, jkJoinTableOnCond, &pNode->pOnCond);
×
4833
  }
4834

4835
  return code;
×
4836
}
4837

4838
static const char* jkGroupingSetType = "GroupingSetType";
4839
static const char* jkGroupingSetParameter = "Parameters";
4840

4841
static int32_t groupingSetNodeToJson(const void* pObj, SJson* pJson) {
×
4842
  const SGroupingSetNode* pNode = (const SGroupingSetNode*)pObj;
×
4843

4844
  int32_t code = tjsonAddIntegerToObject(pJson, jkGroupingSetType, pNode->groupingSetType);
×
4845
  if (TSDB_CODE_SUCCESS == code) {
×
4846
    code = nodeListToJson(pJson, jkGroupingSetParameter, pNode->pParameterList);
×
4847
  }
4848

4849
  return code;
×
4850
}
4851

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

4855
  int32_t code = TSDB_CODE_SUCCESS;
×
4856
  tjsonGetNumberValue(pJson, jkGroupingSetType, pNode->groupingSetType, code);
×
4857
  if (TSDB_CODE_SUCCESS == code) {
×
4858
    code = jsonToNodeList(pJson, jkGroupingSetParameter, &pNode->pParameterList);
×
4859
  }
4860

4861
  return code;
×
4862
}
4863

4864
static const char* jkOrderByExprExpr = "Expr";
4865
static const char* jkOrderByExprOrder = "Order";
4866
static const char* jkOrderByExprNullOrder = "NullOrder";
4867

4868
static int32_t orderByExprNodeToJson(const void* pObj, SJson* pJson) {
×
4869
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
×
4870

4871
  int32_t code = tjsonAddObject(pJson, jkOrderByExprExpr, nodeToJson, pNode->pExpr);
×
4872
  if (TSDB_CODE_SUCCESS == code) {
×
4873
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprOrder, pNode->order);
×
4874
  }
4875
  if (TSDB_CODE_SUCCESS == code) {
×
4876
    code = tjsonAddIntegerToObject(pJson, jkOrderByExprNullOrder, pNode->nullOrder);
×
4877
  }
4878

4879
  return code;
×
4880
}
4881

4882
static int32_t jsonToOrderByExprNode(const SJson* pJson, void* pObj) {
×
4883
  SOrderByExprNode* pNode = (SOrderByExprNode*)pObj;
×
4884

4885
  int32_t code = jsonToNodeObject(pJson, jkOrderByExprExpr, &pNode->pExpr);
×
4886
  if (TSDB_CODE_SUCCESS == code) {
×
4887
    tjsonGetNumberValue(pJson, jkOrderByExprOrder, pNode->order, code);
×
4888
  }
4889
  if (TSDB_CODE_SUCCESS == code) {
×
4890
    tjsonGetNumberValue(pJson, jkOrderByExprNullOrder, pNode->nullOrder, code);
×
4891
  }
4892

4893
  return code;
×
4894
}
4895

4896
static const char* jkLimitLimit = "Limit";
4897
static const char* jkLimitOffset = "Offset";
4898

4899
static int32_t limitNodeToJson(const void* pObj, SJson* pJson) {
×
4900
  const SLimitNode* pNode = (const SLimitNode*)pObj;
×
4901

4902
  int32_t code = tjsonAddIntegerToObject(pJson, jkLimitLimit, pNode->limit);
×
4903
  if (TSDB_CODE_SUCCESS == code) {
×
4904
    code = tjsonAddIntegerToObject(pJson, jkLimitOffset, pNode->offset);
×
4905
  }
4906

4907
  return code;
×
4908
}
4909

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

4913
  int32_t code = tjsonGetBigIntValue(pJson, jkLimitLimit, &pNode->limit);
×
4914
  if (TSDB_CODE_SUCCESS == code) {
×
4915
    code = tjsonGetBigIntValue(pJson, jkLimitOffset, &pNode->offset);
×
4916
  }
4917

4918
  return code;
×
4919
}
4920

4921
static const char* jkStateWindowCol = "StateWindowCol";
4922
static const char* jkStateWindowExpr = "StateWindowExpr";
4923

4924
static int32_t stateWindowNodeToJson(const void* pObj, SJson* pJson) {
60✔
4925
  const SStateWindowNode* pNode = (const SStateWindowNode*)pObj;
60✔
4926
  int32_t                 code = tjsonAddObject(pJson, jkStateWindowCol, nodeToJson, pNode->pCol);
60✔
4927
  if (TSDB_CODE_SUCCESS == code) {
60!
4928
    code = tjsonAddObject(pJson, jkStateWindowExpr, nodeToJson, pNode->pExpr);
60✔
4929
  }
4930
  return code;
60✔
4931
}
4932

4933
static int32_t jsonToStateWindowNode(const SJson* pJson, void* pObj) {
2,012✔
4934
  SStateWindowNode* pNode = (SStateWindowNode*)pObj;
2,012✔
4935

4936
  int32_t code = jsonToNodeObject(pJson, jkStateWindowCol, (SNode**)&pNode->pCol);
2,012✔
4937
  if (TSDB_CODE_SUCCESS == code) {
2,012!
4938
    code = jsonToNodeObject(pJson, jkStateWindowExpr, (SNode**)&pNode->pExpr);
2,012✔
4939
  }
4940
  return code;
2,012✔
4941
}
4942

4943
static const char* jkSessionWindowTsPrimaryKey = "TsPrimaryKey";
4944
static const char* jkSessionWindowGap = "Gap";
4945

4946
static int32_t sessionWindowNodeToJson(const void* pObj, SJson* pJson) {
92✔
4947
  const SSessionWindowNode* pNode = (const SSessionWindowNode*)pObj;
92✔
4948

4949
  int32_t code = tjsonAddObject(pJson, jkSessionWindowTsPrimaryKey, nodeToJson, pNode->pCol);
92✔
4950
  if (TSDB_CODE_SUCCESS == code) {
92!
4951
    code = tjsonAddObject(pJson, jkSessionWindowGap, nodeToJson, pNode->pGap);
92✔
4952
  }
4953
  return code;
92✔
4954
}
4955

4956
static int32_t jsonToSessionWindowNode(const SJson* pJson, void* pObj) {
198✔
4957
  SSessionWindowNode* pNode = (SSessionWindowNode*)pObj;
198✔
4958

4959
  int32_t code = jsonToNodeObject(pJson, jkSessionWindowTsPrimaryKey, (SNode**)&pNode->pCol);
198✔
4960
  if (TSDB_CODE_SUCCESS == code) {
198!
4961
    code = jsonToNodeObject(pJson, jkSessionWindowGap, (SNode**)&pNode->pGap);
198✔
4962
  }
4963
  return code;
198✔
4964
}
4965

4966
static const char* jkEventWindowTsPrimaryKey = "TsPrimaryKey";
4967
static const char* jkEventWindowStartCond = "StartCond";
4968
static const char* jkEventWindowEndCond = "EndCond";
4969

4970
static int32_t eventWindowNodeToJson(const void* pObj, SJson* pJson) {
9✔
4971
  const SEventWindowNode* pNode = (const SEventWindowNode*)pObj;
9✔
4972

4973
  int32_t code = tjsonAddObject(pJson, jkEventWindowTsPrimaryKey, nodeToJson, pNode->pCol);
9✔
4974
  if (TSDB_CODE_SUCCESS == code) {
9!
4975
    code = tjsonAddObject(pJson, jkEventWindowStartCond, nodeToJson, pNode->pStartCond);
9✔
4976
  }
4977
  if (TSDB_CODE_SUCCESS == code) {
9!
4978
    code = tjsonAddObject(pJson, jkEventWindowEndCond, nodeToJson, pNode->pEndCond);
9✔
4979
  }
4980
  return code;
9✔
4981
}
4982

4983
static int32_t jsonToEventWindowNode(const SJson* pJson, void* pObj) {
50✔
4984
  SEventWindowNode* pNode = (SEventWindowNode*)pObj;
50✔
4985

4986
  int32_t code = jsonToNodeObject(pJson, jkEventWindowTsPrimaryKey, &pNode->pCol);
50✔
4987
  if (TSDB_CODE_SUCCESS == code) {
50!
4988
    code = jsonToNodeObject(pJson, jkEventWindowStartCond, &pNode->pStartCond);
50✔
4989
  }
4990
  if (TSDB_CODE_SUCCESS == code) {
50!
4991
    code = jsonToNodeObject(pJson, jkEventWindowEndCond, &pNode->pEndCond);
50✔
4992
  }
4993
  return code;
50✔
4994
}
4995

4996
static const char* jkCountWindowTsPrimaryKey = "CountTsPrimaryKey";
4997
static const char* jkCountWindowCount = "CountWindowCount";
4998
static const char* jkCountWindowSliding = "CountWindowSliding";
4999

5000
static int32_t countWindowNodeToJson(const void* pObj, SJson* pJson) {
13✔
5001
  const SCountWindowNode* pNode = (const SCountWindowNode*)pObj;
13✔
5002

5003
  int32_t code = tjsonAddObject(pJson, jkCountWindowTsPrimaryKey, nodeToJson, pNode->pCol);
13✔
5004
  if (TSDB_CODE_SUCCESS == code) {
13!
5005
    code = tjsonAddIntegerToObject(pJson, jkCountWindowCount, pNode->windowCount);
13✔
5006
  }
5007
  if (TSDB_CODE_SUCCESS == code) {
13!
5008
    code = tjsonAddIntegerToObject(pJson, jkCountWindowSliding, pNode->windowSliding);
13✔
5009
  }
5010
  return code;
13✔
5011
}
5012

5013
static int32_t jsonToCountWindowNode(const SJson* pJson, void* pObj) {
76✔
5014
  SCountWindowNode* pNode = (SCountWindowNode*)pObj;
76✔
5015

5016
  int32_t code = jsonToNodeObject(pJson, jkCountWindowTsPrimaryKey, &pNode->pCol);
76✔
5017
  if (TSDB_CODE_SUCCESS == code) {
76!
5018
    code = tjsonGetBigIntValue(pJson, jkCountWindowCount, &pNode->windowCount);
76✔
5019
  }
5020
  if (TSDB_CODE_SUCCESS == code) {
76!
5021
    code = tjsonGetBigIntValue(pJson, jkCountWindowSliding, &pNode->windowSliding);
76✔
5022
  }
5023
  return code;
76✔
5024
}
5025

5026
static const char* jkAnomalyWindowTsPrimaryKey = "AnomalyTsPrimaryKey";
5027
static const char* jkAnomalyWindowExpr = "AnomalyWindowExpr";
5028
static const char* jkAnomalyWindowOption = "AnomalyWindowOpt";
5029

5030
static int32_t anomalyWindowNodeToJson(const void* pObj, SJson* pJson) {
×
5031
  const SAnomalyWindowNode* pNode = (const SAnomalyWindowNode*)pObj;
×
5032

5033
  int32_t code = tjsonAddObject(pJson, jkAnomalyWindowTsPrimaryKey, nodeToJson, pNode->pCol);
×
5034
  if (TSDB_CODE_SUCCESS == code) {
×
5035
    code = tjsonAddObject(pJson, jkAnomalyWindowExpr, nodeToJson, pNode->pExpr);
×
5036
  }
5037
  if (TSDB_CODE_SUCCESS == code) {
×
5038
    code = tjsonAddStringToObject(pJson, jkAnomalyWindowOption, pNode->anomalyOpt);
×
5039
  }
5040
  return code;
×
5041
}
5042

5043
static int32_t jsonToAnomalyWindowNode(const SJson* pJson, void* pObj) {
×
5044
  SAnomalyWindowNode* pNode = (SAnomalyWindowNode*)pObj;
×
5045

5046
  int32_t code = jsonToNodeObject(pJson, jkAnomalyWindowTsPrimaryKey, &pNode->pCol);
×
5047
  if (TSDB_CODE_SUCCESS == code) {
×
5048
    code = jsonToNodeObject(pJson, jkAnomalyWindowExpr, (SNode**)&pNode->pExpr);
×
5049
  }
5050
  if (TSDB_CODE_SUCCESS == code) {
×
5051
    code = tjsonGetStringValue(pJson, jkAnomalyWindowOption, pNode->anomalyOpt);
×
5052
  }
5053
  return code;
×
5054
}
5055

5056
static const char* jkIntervalWindowInterval = "Interval";
5057
static const char* jkIntervalWindowOffset = "Offset";
5058
static const char* jkIntervalWindowSliding = "Sliding";
5059
static const char* jkIntervalWindowFill = "Fill";
5060
static const char* jkIntervalWindowTsPk = "TsPk";
5061

5062
static int32_t intervalWindowNodeToJson(const void* pObj, SJson* pJson) {
710✔
5063
  const SIntervalWindowNode* pNode = (const SIntervalWindowNode*)pObj;
710✔
5064

5065
  int32_t code = tjsonAddObject(pJson, jkIntervalWindowInterval, nodeToJson, pNode->pInterval);
710✔
5066
  if (TSDB_CODE_SUCCESS == code) {
710!
5067
    code = tjsonAddObject(pJson, jkIntervalWindowOffset, nodeToJson, pNode->pOffset);
710✔
5068
  }
5069
  if (TSDB_CODE_SUCCESS == code) {
710!
5070
    code = tjsonAddObject(pJson, jkIntervalWindowSliding, nodeToJson, pNode->pSliding);
710✔
5071
  }
5072
  if (TSDB_CODE_SUCCESS == code) {
710!
5073
    code = tjsonAddObject(pJson, jkIntervalWindowFill, nodeToJson, pNode->pFill);
710✔
5074
  }
5075
  if (TSDB_CODE_SUCCESS == code) {
710!
5076
    code = tjsonAddObject(pJson, jkIntervalWindowTsPk, nodeToJson, pNode->pCol);
710✔
5077
  }
5078

5079
  return code;
710✔
5080
}
5081

5082
static int32_t jsonToIntervalWindowNode(const SJson* pJson, void* pObj) {
6,978✔
5083
  SIntervalWindowNode* pNode = (SIntervalWindowNode*)pObj;
6,978✔
5084

5085
  int32_t code = jsonToNodeObject(pJson, jkIntervalWindowInterval, &pNode->pInterval);
6,978✔
5086
  if (TSDB_CODE_SUCCESS == code) {
6,978!
5087
    code = jsonToNodeObject(pJson, jkIntervalWindowOffset, &pNode->pOffset);
6,978✔
5088
  }
5089
  if (TSDB_CODE_SUCCESS == code) {
6,978!
5090
    code = jsonToNodeObject(pJson, jkIntervalWindowSliding, &pNode->pSliding);
6,978✔
5091
  }
5092
  if (TSDB_CODE_SUCCESS == code) {
6,978!
5093
    code = jsonToNodeObject(pJson, jkIntervalWindowFill, &pNode->pFill);
6,978✔
5094
  }
5095
  if (TSDB_CODE_SUCCESS == code) {
6,978!
5096
    code = jsonToNodeObject(pJson, jkIntervalWindowTsPk, &pNode->pCol);
6,978✔
5097
  }
5098

5099
  return code;
6,978✔
5100
}
5101

5102
static const char* jkNodeListDataType = "DataType";
5103
static const char* jkNodeListNodeList = "NodeList";
5104

5105
static int32_t nodeListNodeToJson(const void* pObj, SJson* pJson) {
3,059✔
5106
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
3,059✔
5107

5108
  int32_t code = tjsonAddObject(pJson, jkNodeListDataType, dataTypeToJson, &pNode->node.resType);
3,059✔
5109
  if (TSDB_CODE_SUCCESS == code) {
3,059!
5110
    code = nodeListToJson(pJson, jkNodeListNodeList, pNode->pNodeList);
3,059✔
5111
  }
5112

5113
  return code;
3,059✔
5114
}
5115

5116
static int32_t jsonToNodeListNode(const SJson* pJson, void* pObj) {
3,234✔
5117
  SNodeListNode* pNode = (SNodeListNode*)pObj;
3,234✔
5118

5119
  int32_t code = tjsonToObject(pJson, jkNodeListDataType, jsonToDataType, &pNode->node.resType);
3,234✔
5120
  if (TSDB_CODE_SUCCESS == code) {
3,234!
5121
    code = jsonToNodeList(pJson, jkNodeListNodeList, &pNode->pNodeList);
3,234✔
5122
  }
5123

5124
  return code;
3,234✔
5125
}
5126

5127
static const char* jkFillMode = "Mode";
5128
static const char* jkFillValues = "Values";
5129
static const char* jkFillWStartTs = "WStartTs";
5130
static const char* jkFillStartTime = "StartTime";
5131
static const char* jkFillEndTime = "EndTime";
5132

5133
static int32_t fillNodeToJson(const void* pObj, SJson* pJson) {
156✔
5134
  const SFillNode* pNode = (const SFillNode*)pObj;
156✔
5135

5136
  int32_t code = tjsonAddIntegerToObject(pJson, jkFillMode, pNode->mode);
156✔
5137
  if (TSDB_CODE_SUCCESS == code) {
156!
5138
    code = tjsonAddObject(pJson, jkFillValues, nodeToJson, pNode->pValues);
156✔
5139
  }
5140
  if (TSDB_CODE_SUCCESS == code) {
156!
5141
    code = tjsonAddObject(pJson, jkFillWStartTs, nodeToJson, pNode->pWStartTs);
156✔
5142
  }
5143
  if (TSDB_CODE_SUCCESS == code) {
156!
5144
    code = tjsonAddIntegerToObject(pJson, jkFillStartTime, pNode->timeRange.skey);
156✔
5145
  }
5146
  if (TSDB_CODE_SUCCESS == code) {
156!
5147
    code = tjsonAddIntegerToObject(pJson, jkFillEndTime, pNode->timeRange.ekey);
156✔
5148
  }
5149

5150
  return code;
156✔
5151
}
5152

5153
static int32_t jsonToFillNode(const SJson* pJson, void* pObj) {
219✔
5154
  SFillNode* pNode = (SFillNode*)pObj;
219✔
5155

5156
  int32_t code;
5157
  tjsonGetNumberValue(pJson, jkFillMode, pNode->mode, code);
219✔
5158
  if (TSDB_CODE_SUCCESS == code) {
219!
5159
    code = jsonToNodeObject(pJson, jkFillValues, &pNode->pValues);
219✔
5160
  }
5161
  if (TSDB_CODE_SUCCESS == code) {
219!
5162
    code = jsonToNodeObject(pJson, jkFillWStartTs, &pNode->pWStartTs);
219✔
5163
  }
5164
  if (TSDB_CODE_SUCCESS == code) {
219!
5165
    code = tjsonGetBigIntValue(pJson, jkFillStartTime, &pNode->timeRange.skey);
219✔
5166
  }
5167
  if (TSDB_CODE_SUCCESS == code) {
219!
5168
    code = tjsonGetBigIntValue(pJson, jkFillEndTime, &pNode->timeRange.ekey);
219✔
5169
  }
5170

5171
  return code;
219✔
5172
}
5173

5174
static const char* jkTargetDataBlockId = "DataBlockId";
5175
static const char* jkTargetSlotId = "SlotId";
5176
static const char* jkTargetExpr = "Expr";
5177

5178
static int32_t targetNodeToJson(const void* pObj, SJson* pJson) {
705,093✔
5179
  const STargetNode* pNode = (const STargetNode*)pObj;
705,093✔
5180

5181
  int32_t code = tjsonAddIntegerToObject(pJson, jkTargetDataBlockId, pNode->dataBlockId);
705,093✔
5182
  if (TSDB_CODE_SUCCESS == code) {
705,093!
5183
    code = tjsonAddIntegerToObject(pJson, jkTargetSlotId, pNode->slotId);
705,093✔
5184
  }
5185
  if (TSDB_CODE_SUCCESS == code) {
705,093!
5186
    code = tjsonAddObject(pJson, jkTargetExpr, nodeToJson, pNode->pExpr);
705,093✔
5187
  }
5188

5189
  return code;
705,093✔
5190
}
5191

5192
static int32_t jsonToTargetNode(const SJson* pJson, void* pObj) {
707,652✔
5193
  STargetNode* pNode = (STargetNode*)pObj;
707,652✔
5194

5195
  int32_t code = tjsonGetSmallIntValue(pJson, jkTargetDataBlockId, &pNode->dataBlockId);
707,652✔
5196
  if (TSDB_CODE_SUCCESS == code) {
707,445!
5197
    code = tjsonGetSmallIntValue(pJson, jkTargetSlotId, &pNode->slotId);
707,447✔
5198
  }
5199
  if (TSDB_CODE_SUCCESS == code) {
707,412✔
5200
    code = jsonToNodeObject(pJson, jkTargetExpr, &pNode->pExpr);
707,409✔
5201
  }
5202

5203
  return code;
707,604✔
5204
}
5205

5206
static const char* jkSlotDescSlotId = "SlotId";
5207
static const char* jkSlotDescDataType = "DataType";
5208
static const char* jkSlotDescReserve = "Reserve";
5209
static const char* jkSlotDescOutput = "Output";
5210
static const char* jkSlotDescName = "Name";
5211

5212
static int32_t slotDescNodeToJson(const void* pObj, SJson* pJson) {
704,446✔
5213
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
704,446✔
5214

5215
  int32_t code = tjsonAddIntegerToObject(pJson, jkSlotDescSlotId, pNode->slotId);
704,446✔
5216
  if (TSDB_CODE_SUCCESS == code) {
704,446!
5217
    code = tjsonAddObject(pJson, jkSlotDescDataType, dataTypeToJson, &pNode->dataType);
704,446✔
5218
  }
5219
  if (TSDB_CODE_SUCCESS == code) {
704,446!
5220
    code = tjsonAddBoolToObject(pJson, jkSlotDescReserve, pNode->reserve);
704,446✔
5221
  }
5222
  if (TSDB_CODE_SUCCESS == code) {
704,446!
5223
    code = tjsonAddBoolToObject(pJson, jkSlotDescOutput, pNode->output);
704,446✔
5224
  }
5225
  if (TSDB_CODE_SUCCESS == code) {
704,446!
5226
    code = tjsonAddStringToObject(pJson, jkSlotDescName, pNode->name);
704,446✔
5227
  }
5228

5229
  return code;
704,446✔
5230
}
5231

5232
static int32_t jsonToSlotDescNode(const SJson* pJson, void* pObj) {
706,835✔
5233
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
706,835✔
5234

5235
  int32_t code = tjsonGetSmallIntValue(pJson, jkSlotDescSlotId, &pNode->slotId);
706,835✔
5236
  if (TSDB_CODE_SUCCESS == code) {
706,376✔
5237
    code = tjsonToObject(pJson, jkSlotDescDataType, jsonToDataType, &pNode->dataType);
706,374✔
5238
  }
5239
  if (TSDB_CODE_SUCCESS == code) {
705,945✔
5240
    code = tjsonGetBoolValue(pJson, jkSlotDescReserve, &pNode->reserve);
705,940✔
5241
  }
5242
  if (TSDB_CODE_SUCCESS == code) {
706,341✔
5243
    code = tjsonGetBoolValue(pJson, jkSlotDescOutput, &pNode->output);
706,338✔
5244
  }
5245
  if (TSDB_CODE_SUCCESS == code) {
706,304✔
5246
    code = tjsonGetStringValue(pJson, jkSlotDescName, pNode->name);
706,302✔
5247
  }
5248

5249
  return code;
705,744✔
5250
}
5251

5252
static const char* jkColumnDefColName = "ColName";
5253
static const char* jkColumnDefDataType = "DataType";
5254
static const char* jkColumnDefComments = "Comments";
5255
static const char* jkColumnDefSma = "Sma";
5256
static const char* jkColumnDefOptions = "ColumnOptions";
5257

5258
static int32_t columnDefNodeToJson(const void* pObj, SJson* pJson) {
×
5259
  const SColumnDefNode* pNode = (const SColumnDefNode*)pObj;
×
5260

5261
  int32_t code = tjsonAddStringToObject(pJson, jkColumnDefColName, pNode->colName);
×
5262
  if (TSDB_CODE_SUCCESS == code) {
×
5263
    code = tjsonAddObject(pJson, jkColumnDefDataType, dataTypeToJson, &pNode->dataType);
×
5264
  }
5265
  if (TSDB_CODE_SUCCESS == code) {
×
5266
    code = tjsonAddBoolToObject(pJson, jkColumnDefSma, pNode->sma);
×
5267
  }
5268
  if (TSDB_CODE_SUCCESS == code) {
×
5269
    code = tjsonAddObject(pJson, jkColumnDefOptions, nodeToJson, pNode->pOptions);
×
5270
  }
5271

5272
  return code;
×
5273
}
5274

5275
static int32_t jsonToColumnDefNode(const SJson* pJson, void* pObj) {
×
5276
  SColumnDefNode* pNode = (SColumnDefNode*)pObj;
×
5277

5278
  int32_t code = tjsonGetStringValue(pJson, jkColumnDefColName, pNode->colName);
×
5279
  if (TSDB_CODE_SUCCESS == code) {
×
5280
    code = tjsonToObject(pJson, jkColumnDefDataType, jsonToDataType, &pNode->dataType);
×
5281
  }
5282
  if (TSDB_CODE_SUCCESS == code) {
×
5283
    code = tjsonGetBoolValue(pJson, jkColumnDefSma, &pNode->sma);
×
5284
  }
5285
  if (TSDB_CODE_SUCCESS == code) {
×
5286
    code = jsonToNodeObject(pJson, jkColumnDefOptions, (SNode**)&pNode->pOptions);
×
5287
  }
5288
  return code;
×
5289
}
5290

5291
static const char* jkDownstreamSourceAddr = "Addr";
5292
static const char* jkDownstreamSourceClientId = "ClientId";
5293
static const char* jkDownstreamSourceTaskId = "TaskId";
5294
static const char* jkDownstreamSourceSchedId = "SchedId";
5295
static const char* jkDownstreamSourceExecId = "ExecId";
5296
static const char* jkDownstreamSourceFetchMsgType = "FetchMsgType";
5297

5298
static int32_t downstreamSourceNodeToJson(const void* pObj, SJson* pJson) {
×
5299
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
×
5300

5301
  int32_t code = tjsonAddObject(pJson, jkDownstreamSourceAddr, queryNodeAddrToJson, &pNode->addr);
×
5302
  if (TSDB_CODE_SUCCESS == code) {
×
5303
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceClientId, pNode->clientId);
×
5304
  }
5305
  if (TSDB_CODE_SUCCESS == code) {
×
5306
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceTaskId, pNode->taskId);
×
5307
  }
5308
  if (TSDB_CODE_SUCCESS == code) {
×
5309
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceSchedId, pNode->schedId);
×
5310
  }
5311
  if (TSDB_CODE_SUCCESS == code) {
×
5312
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceExecId, pNode->execId);
×
5313
  }
5314
  if (TSDB_CODE_SUCCESS == code) {
×
5315
    code = tjsonAddIntegerToObject(pJson, jkDownstreamSourceFetchMsgType, pNode->fetchMsgType);
×
5316
  }
5317

5318
  return code;
×
5319
}
5320

5321
static int32_t jsonToDownstreamSourceNode(const SJson* pJson, void* pObj) {
×
5322
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
×
5323

5324
  int32_t code = tjsonToObject(pJson, jkDownstreamSourceAddr, jsonToQueryNodeAddr, &pNode->addr);
×
5325
  if (TSDB_CODE_SUCCESS == code) {
×
5326
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceClientId, &pNode->clientId);
×
5327
  }
5328
  if (TSDB_CODE_SUCCESS == code) {
×
5329
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceTaskId, &pNode->taskId);
×
5330
  }
5331
  if (TSDB_CODE_SUCCESS == code) {
×
5332
    code = tjsonGetUBigIntValue(pJson, jkDownstreamSourceSchedId, &pNode->schedId);
×
5333
  }
5334
  if (TSDB_CODE_SUCCESS == code) {
×
5335
    code = tjsonGetIntValue(pJson, jkDownstreamSourceExecId, &pNode->execId);
×
5336
  }
5337
  if (TSDB_CODE_SUCCESS == code) {
×
5338
    code = tjsonGetIntValue(pJson, jkDownstreamSourceFetchMsgType, &pNode->fetchMsgType);
×
5339
  }
5340

5341
  return code;
×
5342
}
5343

5344
static const char* jkWindowOffsetStartOffset = "StartOffset";
5345
static const char* jkWindowOffsetEndOffset = "EndOffset";
5346
static int32_t     windowOffsetNodeToJson(const void* pObj, SJson* pJson) {
×
5347
      const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
×
5348

5349
      int32_t code = tjsonAddObject(pJson, jkWindowOffsetStartOffset, nodeToJson, pNode->pStartOffset);
×
5350
      if (TSDB_CODE_SUCCESS == code) {
×
5351
        code = tjsonAddObject(pJson, jkWindowOffsetEndOffset, nodeToJson, pNode->pEndOffset);
×
5352
  }
5353
      return code;
×
5354
}
5355

5356
static int32_t jsonToWindowOffsetNode(const SJson* pJson, void* pObj) {
×
5357
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
×
5358

5359
  int32_t code = jsonToNodeObject(pJson, jkWindowOffsetStartOffset, &pNode->pStartOffset);
×
5360
  if (TSDB_CODE_SUCCESS == code) {
×
5361
    code = jsonToNodeObject(pJson, jkWindowOffsetEndOffset, &pNode->pEndOffset);
×
5362
  }
5363
  return code;
×
5364
}
5365

5366
static const char* jkDatabaseOptionsBuffer = "Buffer";
5367
static const char* jkDatabaseOptionsCacheModel = "CacheModel";
5368
static const char* jkDatabaseOptionsCompressionLevel = "CompressionLevel";
5369
static const char* jkDatabaseOptionsDaysPerFileNode = "DaysPerFileNode";
5370
static const char* jkDatabaseOptionsDaysPerFile = "DaysPerFile";
5371
static const char* jkDatabaseOptionsFsyncPeriod = "FsyncPeriod";
5372
static const char* jkDatabaseOptionsMaxRowsPerBlock = "MaxRowsPerBlock";
5373
static const char* jkDatabaseOptionsMinRowsPerBlock = "MinRowsPerBlock";
5374
static const char* jkDatabaseOptionsKeep = "Keep";
5375
static const char* jkDatabaseOptionsPages = "Pages";
5376
static const char* jkDatabaseOptionsPagesize = "Pagesize";
5377
static const char* jkDatabaseOptionsPrecision = "Precision";
5378
static const char* jkDatabaseOptionsReplica = "Replica";
5379
static const char* jkDatabaseOptionsStrict = "Strict";
5380
static const char* jkDatabaseOptionsWalLevel = "WalLevel";
5381
static const char* jkDatabaseOptionsNumOfVgroups = "NumOfVgroups";
5382
static const char* jkDatabaseOptionsSingleStable = "SingleStable";
5383
static const char* jkDatabaseOptionsRetentions = "Retentions";
5384
static const char* jkDatabaseOptionsSchemaless = "Schemaless";
5385
static const char* jkDatabaseOptionsS3ChunkSize = "S3ChunkSize";
5386
static const char* jkDatabaseOptionsS3KeepLocalNode = "S3KeepLocalNode";
5387
static const char* jkDatabaseOptionsS3KeepLocal = "S3KeepLocal";
5388
static const char* jkDatabaseOptionsS3Compact = "S3Compact";
5389

5390
static int32_t databaseOptionsToJson(const void* pObj, SJson* pJson) {
×
5391
  const SDatabaseOptions* pNode = (const SDatabaseOptions*)pObj;
×
5392

5393
  int32_t code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsBuffer, pNode->buffer);
×
5394
  if (TSDB_CODE_SUCCESS == code) {
×
5395
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCacheModel, pNode->cacheModel);
×
5396
  }
5397
  if (TSDB_CODE_SUCCESS == code) {
×
5398
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsCompressionLevel, pNode->compressionLevel);
×
5399
  }
5400
  if (TSDB_CODE_SUCCESS == code) {
×
5401
    code = tjsonAddObject(pJson, jkDatabaseOptionsDaysPerFileNode, nodeToJson, pNode->pDaysPerFile);
×
5402
  }
5403
  if (TSDB_CODE_SUCCESS == code) {
×
5404
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsDaysPerFile, pNode->daysPerFile);
×
5405
  }
5406
  if (TSDB_CODE_SUCCESS == code) {
×
5407
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsFsyncPeriod, pNode->fsyncPeriod);
×
5408
  }
5409
  if (TSDB_CODE_SUCCESS == code) {
×
5410
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsMaxRowsPerBlock, pNode->maxRowsPerBlock);
×
5411
  }
5412
  if (TSDB_CODE_SUCCESS == code) {
×
5413
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsMinRowsPerBlock, pNode->minRowsPerBlock);
×
5414
  }
5415
  if (TSDB_CODE_SUCCESS == code) {
×
5416
    code = nodeListToJson(pJson, jkDatabaseOptionsKeep, pNode->pKeep);
×
5417
  }
5418
  if (TSDB_CODE_SUCCESS == code) {
×
5419
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsPages, pNode->pages);
×
5420
  }
5421
  if (TSDB_CODE_SUCCESS == code) {
×
5422
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsPagesize, pNode->pagesize);
×
5423
  }
5424
  if (TSDB_CODE_SUCCESS == code) {
×
5425
    code = tjsonAddStringToObject(pJson, jkDatabaseOptionsPrecision, pNode->precisionStr);
×
5426
  }
5427
  if (TSDB_CODE_SUCCESS == code) {
×
5428
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsReplica, pNode->replica);
×
5429
  }
5430
  if (TSDB_CODE_SUCCESS == code) {
×
5431
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsStrict, pNode->strict);
×
5432
  }
5433
  if (TSDB_CODE_SUCCESS == code) {
×
5434
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsWalLevel, pNode->walLevel);
×
5435
  }
5436
  if (TSDB_CODE_SUCCESS == code) {
×
5437
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsNumOfVgroups, pNode->numOfVgroups);
×
5438
  }
5439
  if (TSDB_CODE_SUCCESS == code) {
×
5440
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSingleStable, pNode->singleStable);
×
5441
  }
5442
  if (TSDB_CODE_SUCCESS == code) {
×
5443
    code = nodeListToJson(pJson, jkDatabaseOptionsRetentions, pNode->pRetentions);
×
5444
  }
5445
  if (TSDB_CODE_SUCCESS == code) {
×
5446
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsSchemaless, pNode->schemaless);
×
5447
  }
5448
  if (TSDB_CODE_SUCCESS == code) {
×
5449
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsS3ChunkSize, pNode->s3ChunkSize);
×
5450
  }
5451
  if (TSDB_CODE_SUCCESS == code) {
×
5452
    code = tjsonAddObject(pJson, jkDatabaseOptionsS3KeepLocalNode, nodeToJson, pNode->s3KeepLocalStr);
×
5453
  }
5454
  if (TSDB_CODE_SUCCESS == code) {
×
5455
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsS3KeepLocal, pNode->s3KeepLocal);
×
5456
  }
5457
  if (TSDB_CODE_SUCCESS == code) {
×
5458
    code = tjsonAddIntegerToObject(pJson, jkDatabaseOptionsS3Compact, pNode->s3Compact);
×
5459
  }
5460

5461
  return code;
×
5462
}
5463

5464
static int32_t jsonToDatabaseOptions(const SJson* pJson, void* pObj) {
×
5465
  SDatabaseOptions* pNode = (SDatabaseOptions*)pObj;
×
5466

5467
  int32_t code = tjsonGetIntValue(pJson, jkDatabaseOptionsBuffer, &pNode->buffer);
×
5468
  if (TSDB_CODE_SUCCESS == code) {
×
5469
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCacheModel, &pNode->cacheModel);
×
5470
  }
5471
  if (TSDB_CODE_SUCCESS == code) {
×
5472
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsCompressionLevel, &pNode->compressionLevel);
×
5473
  }
5474
  if (TSDB_CODE_SUCCESS == code) {
×
5475
    code = jsonToNodeObject(pJson, jkDatabaseOptionsDaysPerFileNode, (SNode**)&pNode->pDaysPerFile);
×
5476
  }
5477
  if (TSDB_CODE_SUCCESS == code) {
×
5478
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsDaysPerFile, &pNode->daysPerFile);
×
5479
  }
5480
  if (TSDB_CODE_SUCCESS == code) {
×
5481
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsFsyncPeriod, &pNode->fsyncPeriod);
×
5482
  }
5483
  if (TSDB_CODE_SUCCESS == code) {
×
5484
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMaxRowsPerBlock, &pNode->maxRowsPerBlock);
×
5485
  }
5486
  if (TSDB_CODE_SUCCESS == code) {
×
5487
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsMinRowsPerBlock, &pNode->minRowsPerBlock);
×
5488
  }
5489
  if (TSDB_CODE_SUCCESS == code) {
×
5490
    code = jsonToNodeList(pJson, jkDatabaseOptionsKeep, &pNode->pKeep);
×
5491
  }
5492
  if (TSDB_CODE_SUCCESS == code) {
×
5493
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPages, &pNode->pages);
×
5494
  }
5495
  if (TSDB_CODE_SUCCESS == code) {
×
5496
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsPagesize, &pNode->pagesize);
×
5497
  }
5498
  if (TSDB_CODE_SUCCESS == code) {
×
5499
    code = tjsonGetStringValue(pJson, jkDatabaseOptionsPrecision, pNode->precisionStr);
×
5500
  }
5501
  if (TSDB_CODE_SUCCESS == code) {
×
5502
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsReplica, &pNode->replica);
×
5503
  }
5504
  if (TSDB_CODE_SUCCESS == code) {
×
5505
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsStrict, &pNode->strict);
×
5506
  }
5507
  if (TSDB_CODE_SUCCESS == code) {
×
5508
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsWalLevel, &pNode->walLevel);
×
5509
  }
5510
  if (TSDB_CODE_SUCCESS == code) {
×
5511
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsNumOfVgroups, &pNode->numOfVgroups);
×
5512
  }
5513
  if (TSDB_CODE_SUCCESS == code) {
×
5514
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSingleStable, &pNode->singleStable);
×
5515
  }
5516
  if (TSDB_CODE_SUCCESS == code) {
×
5517
    code = jsonToNodeList(pJson, jkDatabaseOptionsRetentions, &pNode->pRetentions);
×
5518
  }
5519
  if (TSDB_CODE_SUCCESS == code) {
×
5520
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsSchemaless, &pNode->schemaless);
×
5521
  }
5522
  if (TSDB_CODE_SUCCESS == code) {
×
5523
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3ChunkSize, &pNode->s3ChunkSize);
×
5524
  }
5525
  if (TSDB_CODE_SUCCESS == code) {
×
5526
    code = jsonToNodeObject(pJson, jkDatabaseOptionsS3KeepLocalNode, (SNode**)&pNode->s3KeepLocalStr);
×
5527
  }
5528
  if (TSDB_CODE_SUCCESS == code) {
×
5529
    code = tjsonGetIntValue(pJson, jkDatabaseOptionsS3KeepLocal, &pNode->s3KeepLocal);
×
5530
  }
5531
  if (TSDB_CODE_SUCCESS == code) {
×
5532
    code = tjsonGetTinyIntValue(pJson, jkDatabaseOptionsS3Compact, &pNode->s3Compact);
×
5533
  }
5534

5535
  return code;
×
5536
}
5537

5538
static const char* jkTableOptionsComment = "Comment";
5539
static const char* jkTableOptionsMaxDelay = "MaxDelay";
5540
static const char* jkTableOptionsWatermark = "Watermark";
5541
static const char* jkTableOptionsDeleteMark = "DeleteMark";
5542
static const char* jkTableOptionsRollupFuncs = "RollupFuncs";
5543
static const char* jkTableOptionsTtl = "Ttl";
5544
static const char* jkTableOptionsSma = "Sma";
5545

5546
static int32_t tableOptionsToJson(const void* pObj, SJson* pJson) {
×
5547
  const STableOptions* pNode = (const STableOptions*)pObj;
×
5548

5549
  int32_t code = tjsonAddStringToObject(pJson, jkTableOptionsComment, pNode->comment);
×
5550
  if (TSDB_CODE_SUCCESS == code) {
×
5551
    code = nodeListToJson(pJson, jkTableOptionsMaxDelay, pNode->pMaxDelay);
×
5552
  }
5553
  if (TSDB_CODE_SUCCESS == code) {
×
5554
    code = nodeListToJson(pJson, jkTableOptionsWatermark, pNode->pWatermark);
×
5555
  }
5556
  if (TSDB_CODE_SUCCESS == code) {
×
5557
    code = nodeListToJson(pJson, jkTableOptionsDeleteMark, pNode->pDeleteMark);
×
5558
  }
5559
  if (TSDB_CODE_SUCCESS == code) {
×
5560
    code = nodeListToJson(pJson, jkTableOptionsRollupFuncs, pNode->pRollupFuncs);
×
5561
  }
5562
  if (TSDB_CODE_SUCCESS == code) {
×
5563
    code = tjsonAddIntegerToObject(pJson, jkTableOptionsTtl, pNode->ttl);
×
5564
  }
5565
  if (TSDB_CODE_SUCCESS == code) {
×
5566
    code = nodeListToJson(pJson, jkTableOptionsSma, pNode->pSma);
×
5567
  }
5568

5569
  return code;
×
5570
}
5571

5572
static int32_t jsonToTableOptions(const SJson* pJson, void* pObj) {
×
5573
  STableOptions* pNode = (STableOptions*)pObj;
×
5574

5575
  int32_t code = tjsonGetStringValue(pJson, jkTableOptionsComment, pNode->comment);
×
5576
  if (TSDB_CODE_SUCCESS == code) {
×
5577
    code = jsonToNodeList(pJson, jkTableOptionsMaxDelay, &pNode->pMaxDelay);
×
5578
  }
5579
  if (TSDB_CODE_SUCCESS == code) {
×
5580
    code = jsonToNodeList(pJson, jkTableOptionsWatermark, &pNode->pWatermark);
×
5581
  }
5582
  if (TSDB_CODE_SUCCESS == code) {
×
5583
    code = jsonToNodeList(pJson, jkTableOptionsDeleteMark, &pNode->pDeleteMark);
×
5584
  }
5585
  if (TSDB_CODE_SUCCESS == code) {
×
5586
    code = jsonToNodeList(pJson, jkTableOptionsRollupFuncs, &pNode->pRollupFuncs);
×
5587
  }
5588
  if (TSDB_CODE_SUCCESS == code) {
×
5589
    code = tjsonGetIntValue(pJson, jkTableOptionsTtl, &pNode->ttl);
×
5590
  }
5591
  if (TSDB_CODE_SUCCESS == code) {
×
5592
    code = jsonToNodeList(pJson, jkTableOptionsSma, &pNode->pSma);
×
5593
  }
5594

5595
  return code;
×
5596
}
5597

5598
static const char* jkColumnOptionsEncode = "encode";
5599
static const char* jkColumnOptionsCompress = "compress";
5600
static const char* jkColumnOptionsLevel = "level";
5601
static int32_t     columnOptionsToJson(const void* pObj, SJson* pJson) {
×
5602
      const SColumnOptions* pNode = (const SColumnOptions*)pObj;
×
5603
      int32_t               code = tjsonAddStringToObject(pJson, jkColumnOptionsEncode, pNode->encode);
×
5604
      code = tjsonAddStringToObject(pJson, jkColumnOptionsCompress, pNode->compress);
×
5605
      code = tjsonAddStringToObject(pJson, jkColumnOptionsLevel, pNode->compressLevel);
×
5606
      return code;
×
5607
}
5608

5609
static int32_t jsonToColumnOptions(const SJson* pJson, void* pObj) {
×
5610
  SColumnOptions* pNode = (SColumnOptions*)pObj;
×
5611

5612
  int32_t code = tjsonGetStringValue(pJson, jkColumnOptionsEncode, pNode->encode);
×
5613
  code = tjsonGetStringValue(pJson, jkColumnOptionsCompress, pNode->compress);
×
5614
  code = tjsonGetStringValue(pJson, jkColumnOptionsLevel, pNode->compressLevel);
×
5615
  return code;
×
5616
}
5617

5618
static const char* jkIndexOptionsFuncs = "Funcs";
5619
static const char* jkIndexOptionsInterval = "Interval";
5620
static const char* jkIndexOptionsOffset = "Offset";
5621
static const char* jkIndexOptionsSliding = "Sliding";
5622
static const char* jkIndexOptionsStreamOptions = "StreamOptions";
5623

5624
static int32_t indexOptionsToJson(const void* pObj, SJson* pJson) {
×
5625
  const SIndexOptions* pNode = (const SIndexOptions*)pObj;
×
5626

5627
  int32_t code = nodeListToJson(pJson, jkIndexOptionsFuncs, pNode->pFuncs);
×
5628
  if (TSDB_CODE_SUCCESS == code) {
×
5629
    code = tjsonAddObject(pJson, jkIndexOptionsInterval, nodeToJson, pNode->pInterval);
×
5630
  }
5631
  if (TSDB_CODE_SUCCESS == code) {
×
5632
    code = tjsonAddObject(pJson, jkIndexOptionsOffset, nodeToJson, pNode->pOffset);
×
5633
  }
5634
  if (TSDB_CODE_SUCCESS == code) {
×
5635
    code = tjsonAddObject(pJson, jkIndexOptionsSliding, nodeToJson, pNode->pSliding);
×
5636
  }
5637
  if (TSDB_CODE_SUCCESS == code) {
×
5638
    code = tjsonAddObject(pJson, jkIndexOptionsStreamOptions, nodeToJson, pNode->pStreamOptions);
×
5639
  }
5640

5641
  return code;
×
5642
}
5643

5644
static int32_t jsonToIndexOptions(const SJson* pJson, void* pObj) {
×
5645
  SIndexOptions* pNode = (SIndexOptions*)pObj;
×
5646

5647
  int32_t code = jsonToNodeList(pJson, jkIndexOptionsFuncs, &pNode->pFuncs);
×
5648
  if (TSDB_CODE_SUCCESS == code) {
×
5649
    code = jsonToNodeObject(pJson, jkIndexOptionsInterval, &pNode->pInterval);
×
5650
  }
5651
  if (TSDB_CODE_SUCCESS == code) {
×
5652
    code = jsonToNodeObject(pJson, jkIndexOptionsOffset, &pNode->pOffset);
×
5653
  }
5654
  if (TSDB_CODE_SUCCESS == code) {
×
5655
    code = jsonToNodeObject(pJson, jkIndexOptionsSliding, &pNode->pSliding);
×
5656
  }
5657
  if (TSDB_CODE_SUCCESS == code) {
×
5658
    code = jsonToNodeObject(pJson, jkIndexOptionsStreamOptions, &pNode->pStreamOptions);
×
5659
  }
5660

5661
  return code;
×
5662
}
5663

5664
static const char* jkExplainOptionsVerbose = "Verbose";
5665
static const char* jkExplainOptionsRatio = "Ratio";
5666

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

5670
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainOptionsVerbose, pNode->verbose);
×
5671
  if (TSDB_CODE_SUCCESS == code) {
×
5672
    code = tjsonAddDoubleToObject(pJson, jkExplainOptionsRatio, pNode->ratio);
×
5673
  }
5674

5675
  return code;
×
5676
}
5677

5678
static int32_t jsonToExplainOptions(const SJson* pJson, void* pObj) {
×
5679
  SExplainOptions* pNode = (SExplainOptions*)pObj;
×
5680

5681
  int32_t code = tjsonGetBoolValue(pJson, jkExplainOptionsVerbose, &pNode->verbose);
×
5682
  if (TSDB_CODE_SUCCESS == code) {
×
5683
    code = tjsonGetDoubleValue(pJson, jkExplainOptionsRatio, &pNode->ratio);
×
5684
  }
5685

5686
  return code;
×
5687
}
5688

5689
static const char* jkStreamOptionsTriggerType = "TriggerType";
5690
static const char* jkStreamOptionsDelay = "Delay";
5691
static const char* jkStreamOptionsWatermark = "Watermark";
5692
static const char* jkStreamOptionsDeleteMark = "DeleteMark";
5693
static const char* jkStreamOptionsFillHistory = "FillHistory";
5694
static const char* jkStreamOptionsIgnoreExpired = "IgnoreExpired";
5695

5696
static int32_t streamOptionsToJson(const void* pObj, SJson* pJson) {
×
5697
  const SStreamOptions* pNode = (const SStreamOptions*)pObj;
×
5698

5699
  int32_t code = tjsonAddIntegerToObject(pJson, jkStreamOptionsTriggerType, pNode->triggerType);
×
5700
  if (TSDB_CODE_SUCCESS == code) {
×
5701
    code = tjsonAddObject(pJson, jkStreamOptionsDelay, nodeToJson, pNode->pDelay);
×
5702
  }
5703
  if (TSDB_CODE_SUCCESS == code) {
×
5704
    code = tjsonAddObject(pJson, jkStreamOptionsWatermark, nodeToJson, pNode->pWatermark);
×
5705
  }
5706
  if (TSDB_CODE_SUCCESS == code) {
×
5707
    code = tjsonAddObject(pJson, jkStreamOptionsDeleteMark, nodeToJson, pNode->pDeleteMark);
×
5708
  }
5709
  if (TSDB_CODE_SUCCESS == code) {
×
5710
    code = tjsonAddIntegerToObject(pJson, jkStreamOptionsFillHistory, pNode->fillHistory);
×
5711
  }
5712
  if (TSDB_CODE_SUCCESS == code) {
×
5713
    code = tjsonAddIntegerToObject(pJson, jkStreamOptionsIgnoreExpired, pNode->ignoreExpired);
×
5714
  }
5715

5716
  return code;
×
5717
}
5718

5719
static int32_t jsonToStreamOptions(const SJson* pJson, void* pObj) {
×
5720
  SStreamOptions* pNode = (SStreamOptions*)pObj;
×
5721

5722
  int32_t code = tjsonGetTinyIntValue(pJson, jkStreamOptionsTriggerType, &pNode->triggerType);
×
5723
  if (TSDB_CODE_SUCCESS == code) {
×
5724
    code = jsonToNodeObject(pJson, jkStreamOptionsDelay, &pNode->pDelay);
×
5725
  }
5726
  if (TSDB_CODE_SUCCESS == code) {
×
5727
    code = jsonToNodeObject(pJson, jkStreamOptionsWatermark, &pNode->pWatermark);
×
5728
  }
5729
  if (TSDB_CODE_SUCCESS == code) {
×
5730
    code = jsonToNodeObject(pJson, jkStreamOptionsDeleteMark, &pNode->pDeleteMark);
×
5731
  }
5732
  if (TSDB_CODE_SUCCESS == code) {
×
5733
    code = tjsonGetTinyIntValue(pJson, jkStreamOptionsFillHistory, &pNode->fillHistory);
×
5734
  }
5735
  if (TSDB_CODE_SUCCESS == code) {
×
5736
    code = tjsonGetTinyIntValue(pJson, jkStreamOptionsIgnoreExpired, &pNode->ignoreExpired);
×
5737
  }
5738

5739
  return code;
×
5740
}
5741

5742
static const char* jkWhenThenWhen = "When";
5743
static const char* jkWhenThenThen = "Then";
5744

5745
static int32_t whenThenNodeToJson(const void* pObj, SJson* pJson) {
85✔
5746
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
85✔
5747

5748
  int32_t code = exprNodeToJson(pObj, pJson);
85✔
5749
  if (TSDB_CODE_SUCCESS == code) {
85!
5750
    code = tjsonAddObject(pJson, jkWhenThenWhen, nodeToJson, pNode->pWhen);
85✔
5751
  }
5752
  if (TSDB_CODE_SUCCESS == code) {
85!
5753
    code = tjsonAddObject(pJson, jkWhenThenThen, nodeToJson, pNode->pThen);
85✔
5754
  }
5755

5756
  return code;
85✔
5757
}
5758

5759
static int32_t jsonToWhenThenNode(const SJson* pJson, void* pObj) {
95✔
5760
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
95✔
5761

5762
  int32_t code = jsonToExprNode(pJson, pObj);
95✔
5763
  if (TSDB_CODE_SUCCESS == code) {
95!
5764
    code = jsonToNodeObject(pJson, jkWhenThenWhen, &pNode->pWhen);
95✔
5765
  }
5766
  if (TSDB_CODE_SUCCESS == code) {
95!
5767
    code = jsonToNodeObject(pJson, jkWhenThenThen, &pNode->pThen);
95✔
5768
  }
5769

5770
  return code;
95✔
5771
}
5772

5773
static const char* jkCaseWhenCase = "Case";
5774
static const char* jkCaseWhenWhenThenList = "WhenThenList";
5775
static const char* jkCaseWhenElse = "Else";
5776

5777
static int32_t caseWhenNodeToJson(const void* pObj, SJson* pJson) {
85✔
5778
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
85✔
5779

5780
  int32_t code = exprNodeToJson(pObj, pJson);
85✔
5781
  if (TSDB_CODE_SUCCESS == code) {
85!
5782
    code = tjsonAddObject(pJson, jkCaseWhenCase, nodeToJson, pNode->pCase);
85✔
5783
  }
5784
  if (TSDB_CODE_SUCCESS == code) {
85!
5785
    code = nodeListToJson(pJson, jkCaseWhenWhenThenList, pNode->pWhenThenList);
85✔
5786
  }
5787
  if (TSDB_CODE_SUCCESS == code) {
85!
5788
    code = tjsonAddObject(pJson, jkCaseWhenElse, nodeToJson, pNode->pElse);
85✔
5789
  }
5790

5791
  return code;
85✔
5792
}
5793

5794
static int32_t jsonToCaseWhenNode(const SJson* pJson, void* pObj) {
95✔
5795
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
95✔
5796

5797
  int32_t code = jsonToExprNode(pJson, pObj);
95✔
5798
  if (TSDB_CODE_SUCCESS == code) {
95!
5799
    code = jsonToNodeObject(pJson, jkCaseWhenCase, &pNode->pCase);
95✔
5800
  }
5801
  if (TSDB_CODE_SUCCESS == code) {
95!
5802
    code = jsonToNodeList(pJson, jkCaseWhenWhenThenList, &pNode->pWhenThenList);
95✔
5803
  }
5804
  if (TSDB_CODE_SUCCESS == code) {
95!
5805
    code = jsonToNodeObject(pJson, jkCaseWhenElse, &pNode->pElse);
95✔
5806
  }
5807

5808
  return code;
95✔
5809
}
5810

5811
static const char* jkDataBlockDescDataBlockId = "DataBlockId";
5812
static const char* jkDataBlockDescSlots = "Slots";
5813
static const char* jkDataBlockTotalRowSize = "TotalRowSize";
5814
static const char* jkDataBlockOutputRowSize = "OutputRowSize";
5815
static const char* jkDataBlockPrecision = "Precision";
5816

5817
static int32_t dataBlockDescNodeToJson(const void* pObj, SJson* pJson) {
29,562✔
5818
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
29,562✔
5819

5820
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataBlockDescDataBlockId, pNode->dataBlockId);
29,562✔
5821
  if (TSDB_CODE_SUCCESS == code) {
29,562!
5822
    code = tjsonAddIntegerToObject(pJson, jkDataBlockTotalRowSize, pNode->totalRowSize);
29,562✔
5823
  }
5824
  if (TSDB_CODE_SUCCESS == code) {
29,562!
5825
    code = tjsonAddIntegerToObject(pJson, jkDataBlockOutputRowSize, pNode->outputRowSize);
29,562✔
5826
  }
5827
  if (TSDB_CODE_SUCCESS == code) {
29,562!
5828
    code = nodeListToJson(pJson, jkDataBlockDescSlots, pNode->pSlots);
29,562✔
5829
  }
5830
  if (TSDB_CODE_SUCCESS == code) {
29,562!
5831
    code = tjsonAddIntegerToObject(pJson, jkDataBlockPrecision, pNode->precision);
29,562✔
5832
  }
5833

5834
  return code;
29,562✔
5835
}
5836

5837
static int32_t jsonToDataBlockDescNode(const SJson* pJson, void* pObj) {
28,640✔
5838
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
28,640✔
5839

5840
  int32_t code = tjsonGetSmallIntValue(pJson, jkDataBlockDescDataBlockId, &pNode->dataBlockId);
28,640✔
5841
  if (TSDB_CODE_SUCCESS == code) {
28,643!
5842
    code = tjsonGetIntValue(pJson, jkDataBlockTotalRowSize, &pNode->totalRowSize);
28,643✔
5843
  }
5844
  if (TSDB_CODE_SUCCESS == code) {
28,641!
5845
    code = tjsonGetIntValue(pJson, jkDataBlockOutputRowSize, &pNode->outputRowSize);
28,641✔
5846
  }
5847
  if (TSDB_CODE_SUCCESS == code) {
28,643!
5848
    code = jsonToNodeList(pJson, jkDataBlockDescSlots, &pNode->pSlots);
28,643✔
5849
  }
5850
  if (TSDB_CODE_SUCCESS == code) {
28,644!
5851
    code = tjsonGetUTinyIntValue(pJson, jkDataBlockPrecision, &pNode->precision);
28,644✔
5852
  }
5853

5854
  return code;
28,636✔
5855
}
5856

5857
static const char* jkSetOperatorOpType = "OpType";
5858
static const char* jkSetOperatorProjections = "Projections";
5859
static const char* jkSetOperatorLeft = "Left";
5860
static const char* jkSetOperatorRight = "Right";
5861
static const char* jkSetOperatorOrderByList = "OrderByList";
5862
static const char* jkSetOperatorLimit = "Limit";
5863

5864
static int32_t setOperatorToJson(const void* pObj, SJson* pJson) {
×
5865
  const SSetOperator* pNode = (const SSetOperator*)pObj;
×
5866

5867
  int32_t code = tjsonAddIntegerToObject(pJson, jkSetOperatorOpType, pNode->opType);
×
5868
  if (TSDB_CODE_SUCCESS == code) {
×
5869
    code = nodeListToJson(pJson, jkSetOperatorProjections, pNode->pProjectionList);
×
5870
  }
5871
  if (TSDB_CODE_SUCCESS == code) {
×
5872
    code = tjsonAddObject(pJson, jkSetOperatorLeft, nodeToJson, pNode->pLeft);
×
5873
  }
5874
  if (TSDB_CODE_SUCCESS == code) {
×
5875
    code = tjsonAddObject(pJson, jkSetOperatorRight, nodeToJson, pNode->pRight);
×
5876
  }
5877
  if (TSDB_CODE_SUCCESS == code) {
×
5878
    code = nodeListToJson(pJson, jkSetOperatorOrderByList, pNode->pOrderByList);
×
5879
  }
5880
  if (TSDB_CODE_SUCCESS == code) {
×
5881
    code = tjsonAddObject(pJson, jkSetOperatorLimit, nodeToJson, pNode->pLimit);
×
5882
  }
5883

5884
  return code;
×
5885
}
5886

5887
static int32_t jsonToSetOperator(const SJson* pJson, void* pObj) {
×
5888
  SSetOperator* pNode = (SSetOperator*)pObj;
×
5889

5890
  int32_t code = TSDB_CODE_SUCCESS;
×
5891
  tjsonGetNumberValue(pJson, jkSetOperatorOpType, pNode->opType, code);
×
5892
  if (TSDB_CODE_SUCCESS == code) {
×
5893
    code = jsonToNodeList(pJson, jkSetOperatorProjections, &pNode->pProjectionList);
×
5894
  }
5895
  if (TSDB_CODE_SUCCESS == code) {
×
5896
    code = jsonToNodeObject(pJson, jkSetOperatorLeft, &pNode->pLeft);
×
5897
  }
5898
  if (TSDB_CODE_SUCCESS == code) {
×
5899
    code = jsonToNodeObject(pJson, jkSetOperatorRight, &pNode->pRight);
×
5900
  }
5901
  if (TSDB_CODE_SUCCESS == code) {
×
5902
    code = jsonToNodeList(pJson, jkSetOperatorOrderByList, &pNode->pOrderByList);
×
5903
  }
5904
  if (TSDB_CODE_SUCCESS == code) {
×
5905
    code = jsonToNodeObject(pJson, jkSetOperatorLimit, &pNode->pLimit);
×
5906
  }
5907

5908
  return code;
×
5909
}
5910

5911
static const char* jkSelectStmtDistinct = "Distinct";
5912
static const char* jkSelectStmtProjections = "Projections";
5913
static const char* jkSelectStmtFrom = "From";
5914
static const char* jkSelectStmtWhere = "Where";
5915
static const char* jkSelectStmtPartitionBy = "PartitionBy";
5916
static const char* jkSelectStmtTags = "Tags";
5917
static const char* jkSelectStmtSubtable = "Subtable";
5918
static const char* jkSelectStmtWindow = "Window";
5919
static const char* jkSelectStmtGroupBy = "GroupBy";
5920
static const char* jkSelectStmtHaving = "Having";
5921
static const char* jkSelectStmtOrderBy = "OrderBy";
5922
static const char* jkSelectStmtLimit = "Limit";
5923
static const char* jkSelectStmtSlimit = "Slimit";
5924
static const char* jkSelectStmtStmtName = "StmtName";
5925
static const char* jkSelectStmtHasAggFuncs = "HasAggFuncs";
5926
static const char* jkSelectStmtInterpFuncs = "HasInterpFuncs";
5927
static const char* jkSelectStmtInterpFill = "InterpFill";
5928
static const char* jkSelectStmtInterpEvery = "InterpEvery";
5929
static const char* jkSelectStmtTwaOrElapsedFuncs = "HasTwaOrElapsedFuncs";
5930

5931
static int32_t selectStmtToJson(const void* pObj, SJson* pJson) {
1,484✔
5932
  const SSelectStmt* pNode = (const SSelectStmt*)pObj;
1,484✔
5933

5934
  int32_t code = tjsonAddBoolToObject(pJson, jkSelectStmtDistinct, pNode->isDistinct);
1,484✔
5935
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5936
    code = nodeListToJson(pJson, jkSelectStmtProjections, pNode->pProjectionList);
1,484✔
5937
  }
5938
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5939
    code = tjsonAddObject(pJson, jkSelectStmtFrom, nodeToJson, pNode->pFromTable);
1,484✔
5940
  }
5941
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5942
    code = tjsonAddObject(pJson, jkSelectStmtWhere, nodeToJson, pNode->pWhere);
1,484✔
5943
  }
5944
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5945
    code = nodeListToJson(pJson, jkSelectStmtPartitionBy, pNode->pPartitionByList);
1,484✔
5946
  }
5947
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5948
    code = nodeListToJson(pJson, jkSelectStmtTags, pNode->pTags);
1,484✔
5949
  }
5950
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5951
    code = tjsonAddObject(pJson, jkSelectStmtSubtable, nodeToJson, pNode->pSubtable);
1,484✔
5952
  }
5953
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5954
    code = tjsonAddObject(pJson, jkSelectStmtWindow, nodeToJson, pNode->pWindow);
1,484✔
5955
  }
5956
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5957
    code = nodeListToJson(pJson, jkSelectStmtGroupBy, pNode->pGroupByList);
1,484✔
5958
  }
5959
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5960
    code = tjsonAddObject(pJson, jkSelectStmtHaving, nodeToJson, pNode->pHaving);
1,484✔
5961
  }
5962
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5963
    code = nodeListToJson(pJson, jkSelectStmtOrderBy, pNode->pOrderByList);
1,484✔
5964
  }
5965
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5966
    code = tjsonAddObject(pJson, jkSelectStmtLimit, nodeToJson, pNode->pLimit);
1,484✔
5967
  }
5968
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5969
    code = tjsonAddObject(pJson, jkSelectStmtSlimit, nodeToJson, pNode->pSlimit);
1,484✔
5970
  }
5971
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5972
    code = tjsonAddStringToObject(pJson, jkSelectStmtStmtName, pNode->stmtName);
1,484✔
5973
  }
5974
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5975
    code = tjsonAddBoolToObject(pJson, jkSelectStmtHasAggFuncs, pNode->hasAggFuncs);
1,484✔
5976
  }
5977
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5978
    code = tjsonAddBoolToObject(pJson, jkSelectStmtInterpFuncs, pNode->hasInterpFunc);
1,484✔
5979
  }
5980
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5981
    code = tjsonAddBoolToObject(pJson, jkSelectStmtTwaOrElapsedFuncs, pNode->hasTwaOrElapsedFunc);
1,484✔
5982
  }
5983
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5984
    code = tjsonAddObject(pJson, jkSelectStmtInterpFill, nodeToJson, pNode->pFill);
1,484✔
5985
  }
5986
  if (TSDB_CODE_SUCCESS == code) {
1,484!
5987
    code = tjsonAddObject(pJson, jkSelectStmtInterpEvery, nodeToJson, pNode->pEvery);
1,484✔
5988
  }
5989

5990
  return code;
1,484✔
5991
}
5992

5993
static int32_t jsonToSelectStmt(const SJson* pJson, void* pObj) {
11,104✔
5994
  SSelectStmt* pNode = (SSelectStmt*)pObj;
11,104✔
5995

5996
  int32_t code = tjsonGetBoolValue(pJson, jkSelectStmtDistinct, &pNode->isDistinct);
11,104✔
5997
  if (TSDB_CODE_SUCCESS == code) {
11,104!
5998
    code = jsonToNodeList(pJson, jkSelectStmtProjections, &pNode->pProjectionList);
11,104✔
5999
  }
6000
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6001
    code = jsonToNodeObject(pJson, jkSelectStmtFrom, &pNode->pFromTable);
11,104✔
6002
  }
6003
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6004
    code = jsonToNodeObject(pJson, jkSelectStmtWhere, &pNode->pWhere);
11,104✔
6005
  }
6006
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6007
    code = jsonToNodeList(pJson, jkSelectStmtPartitionBy, &pNode->pPartitionByList);
11,104✔
6008
  }
6009
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6010
    code = jsonToNodeList(pJson, jkSelectStmtTags, &pNode->pTags);
11,104✔
6011
  }
6012
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6013
    code = jsonToNodeObject(pJson, jkSelectStmtSubtable, &pNode->pSubtable);
11,104✔
6014
  }
6015
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6016
    code = jsonToNodeObject(pJson, jkSelectStmtWindow, &pNode->pWindow);
11,104✔
6017
  }
6018
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6019
    code = jsonToNodeList(pJson, jkSelectStmtGroupBy, &pNode->pGroupByList);
11,104✔
6020
  }
6021
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6022
    code = jsonToNodeObject(pJson, jkSelectStmtHaving, &pNode->pHaving);
11,104✔
6023
  }
6024
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6025
    code = jsonToNodeList(pJson, jkSelectStmtOrderBy, &pNode->pOrderByList);
11,104✔
6026
  }
6027
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6028
    code = jsonToNodeObject(pJson, jkSelectStmtLimit, (SNode**)&pNode->pLimit);
11,104✔
6029
  }
6030
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6031
    code = jsonToNodeObject(pJson, jkSelectStmtSlimit, (SNode**)&pNode->pSlimit);
11,104✔
6032
  }
6033
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6034
    code = tjsonGetStringValue(pJson, jkSelectStmtStmtName, pNode->stmtName);
11,104✔
6035
  }
6036
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6037
    code = tjsonGetBoolValue(pJson, jkSelectStmtHasAggFuncs, &pNode->hasAggFuncs);
11,104✔
6038
  }
6039
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6040
    code = tjsonGetBoolValue(pJson, jkSelectStmtInterpFuncs, &pNode->hasInterpFunc);
11,104✔
6041
  }
6042
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6043
    code = tjsonGetBoolValue(pJson, jkSelectStmtTwaOrElapsedFuncs, &pNode->hasTwaOrElapsedFunc);
11,104✔
6044
  }
6045
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6046
    code = jsonToNodeObject(pJson, jkSelectStmtInterpFill, &pNode->pFill);
11,104✔
6047
  }
6048
  if (TSDB_CODE_SUCCESS == code) {
11,104!
6049
    code = jsonToNodeObject(pJson, jkSelectStmtInterpEvery, &pNode->pEvery);
11,104✔
6050
  }
6051

6052
  return code;
11,104✔
6053
}
6054

6055
static const char* jkVnodeModifyOpStmtSqlNodeType = "SqlNodeType";
6056
static const char* jkVnodeModifyOpStmtTotalRowsNum = "TotalRowsNum";
6057
static const char* jkVnodeModifyOpStmtTotalTbNum = "TotalTbNum";
6058

6059
static int32_t vnodeModifyStmtToJson(const void* pObj, SJson* pJson) {
×
6060
  const SVnodeModifyOpStmt* pNode = (const SVnodeModifyOpStmt*)pObj;
×
6061

6062
  int32_t code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType);
×
6063
  if (TSDB_CODE_SUCCESS == code) {
×
6064
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalRowsNum, pNode->totalRowsNum);
×
6065
  }
6066
  if (TSDB_CODE_SUCCESS == code) {
×
6067
    code = tjsonAddIntegerToObject(pJson, jkVnodeModifyOpStmtTotalTbNum, pNode->totalTbNum);
×
6068
  }
6069

6070
  return code;
×
6071
}
6072

6073
static int32_t jsonToVnodeModifyStmt(const SJson* pJson, void* pObj) {
×
6074
  SVnodeModifyOpStmt* pNode = (SVnodeModifyOpStmt*)pObj;
×
6075

6076
  int32_t code = TSDB_CODE_SUCCESS;
×
6077
  tjsonGetNumberValue(pJson, jkVnodeModifyOpStmtSqlNodeType, pNode->sqlNodeType, code);
×
6078
  if (TSDB_CODE_SUCCESS == code) {
×
6079
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalRowsNum, &pNode->totalRowsNum);
×
6080
  }
6081
  if (TSDB_CODE_SUCCESS == code) {
×
6082
    code = tjsonGetIntValue(pJson, jkVnodeModifyOpStmtTotalTbNum, &pNode->totalTbNum);
×
6083
  }
6084

6085
  return code;
×
6086
}
6087

6088
static const char* jkCreateDatabaseStmtDbName = "DbName";
6089
static const char* jkCreateDatabaseStmtIgnoreExists = "IgnoreExists";
6090
static const char* jkCreateDatabaseStmtOptions = "Options";
6091

6092
static int32_t createDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6093
  const SCreateDatabaseStmt* pNode = (const SCreateDatabaseStmt*)pObj;
×
6094

6095
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
×
6096
  if (TSDB_CODE_SUCCESS == code) {
×
6097
    code = tjsonAddBoolToObject(pJson, jkCreateDatabaseStmtIgnoreExists, pNode->ignoreExists);
×
6098
  }
6099
  if (TSDB_CODE_SUCCESS == code) {
×
6100
    code = tjsonAddObject(pJson, jkCreateDatabaseStmtOptions, nodeToJson, pNode->pOptions);
×
6101
  }
6102

6103
  return code;
×
6104
}
6105

6106
static int32_t jsonToCreateDatabaseStmt(const SJson* pJson, void* pObj) {
×
6107
  SCreateDatabaseStmt* pNode = (SCreateDatabaseStmt*)pObj;
×
6108

6109
  int32_t code = tjsonGetStringValue(pJson, jkCreateDatabaseStmtDbName, pNode->dbName);
×
6110
  if (TSDB_CODE_SUCCESS == code) {
×
6111
    code = tjsonGetBoolValue(pJson, jkCreateDatabaseStmtIgnoreExists, &pNode->ignoreExists);
×
6112
  }
6113
  if (TSDB_CODE_SUCCESS == code) {
×
6114
    code = jsonToNodeObject(pJson, jkCreateDatabaseStmtOptions, (SNode**)&pNode->pOptions);
×
6115
  }
6116

6117
  return code;
×
6118
}
6119

6120
static const char* jkAlterDatabaseStmtDbName = "DbName";
6121
static const char* jkAlterDatabaseStmtOptions = "Options";
6122

6123
static int32_t alterDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6124
  const SAlterDatabaseStmt* pNode = (const SAlterDatabaseStmt*)pObj;
×
6125

6126
  int32_t code = tjsonAddStringToObject(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
×
6127
  if (TSDB_CODE_SUCCESS == code) {
×
6128
    code = tjsonAddObject(pJson, jkAlterDatabaseStmtOptions, nodeToJson, pNode->pOptions);
×
6129
  }
6130

6131
  return code;
×
6132
}
6133

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

6137
  int32_t code = tjsonGetStringValue(pJson, jkAlterDatabaseStmtDbName, pNode->dbName);
×
6138
  if (TSDB_CODE_SUCCESS == code) {
×
6139
    code = jsonToNodeObject(pJson, jkAlterDatabaseStmtOptions, (SNode**)&pNode->pOptions);
×
6140
  }
6141

6142
  return code;
×
6143
}
6144

6145
static const char* jkTrimDatabaseStmtDbName = "DbName";
6146
static const char* jkTrimDatabaseStmtMaxSpeed = "MaxSpeed";
6147

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

6151
  int32_t code = tjsonAddStringToObject(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
×
6152
  if (TSDB_CODE_SUCCESS == code) {
×
6153
    code = tjsonAddIntegerToObject(pJson, jkTrimDatabaseStmtMaxSpeed, pNode->maxSpeed);
×
6154
  }
6155

6156
  return code;
×
6157
}
6158

6159
static int32_t jsonToTrimDatabaseStmt(const SJson* pJson, void* pObj) {
×
6160
  STrimDatabaseStmt* pNode = (STrimDatabaseStmt*)pObj;
×
6161

6162
  int32_t code = tjsonGetStringValue(pJson, jkTrimDatabaseStmtDbName, pNode->dbName);
×
6163
  if (TSDB_CODE_SUCCESS == code) {
×
6164
    code = tjsonGetIntValue(pJson, jkTrimDatabaseStmtMaxSpeed, &pNode->maxSpeed);
×
6165
  }
6166

6167
  return code;
×
6168
}
6169

6170
static const char* jkS3MigrateDatabaseStmtDbName = "DbName";
6171

6172
static int32_t s3migrateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6173
  const SS3MigrateDatabaseStmt* pNode = (const SS3MigrateDatabaseStmt*)pObj;
×
6174

6175
  int32_t code = tjsonAddStringToObject(pJson, jkS3MigrateDatabaseStmtDbName, pNode->dbName);
×
6176

6177
  return code;
×
6178
}
6179

6180
static int32_t jsonToS3MigrateDatabaseStmt(const SJson* pJson, void* pObj) {
×
6181
  SS3MigrateDatabaseStmt* pNode = (SS3MigrateDatabaseStmt*)pObj;
×
6182

6183
  int32_t code = tjsonGetStringValue(pJson, jkS3MigrateDatabaseStmtDbName, pNode->dbName);
×
6184

6185
  return code;
×
6186
}
6187

6188
static const char* jkCreateTableStmtDbName = "DbName";
6189
static const char* jkCreateTableStmtTableName = "TableName";
6190
static const char* jkCreateTableStmtIgnoreExists = "IgnoreExists";
6191
static const char* jkCreateTableStmtCols = "Cols";
6192
static const char* jkCreateTableStmtTags = "Tags";
6193
static const char* jkCreateTableStmtOptions = "Options";
6194

6195
static int32_t createTableStmtToJson(const void* pObj, SJson* pJson) {
×
6196
  const SCreateTableStmt* pNode = (const SCreateTableStmt*)pObj;
×
6197

6198
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTableStmtDbName, pNode->dbName);
×
6199
  if (TSDB_CODE_SUCCESS == code) {
×
6200
    code = tjsonAddStringToObject(pJson, jkCreateTableStmtTableName, pNode->tableName);
×
6201
  }
6202
  if (TSDB_CODE_SUCCESS == code) {
×
6203
    code = tjsonAddBoolToObject(pJson, jkCreateTableStmtIgnoreExists, pNode->ignoreExists);
×
6204
  }
6205
  if (TSDB_CODE_SUCCESS == code) {
×
6206
    code = nodeListToJson(pJson, jkCreateTableStmtCols, pNode->pCols);
×
6207
  }
6208
  if (TSDB_CODE_SUCCESS == code) {
×
6209
    code = nodeListToJson(pJson, jkCreateTableStmtTags, pNode->pTags);
×
6210
  }
6211
  if (TSDB_CODE_SUCCESS == code) {
×
6212
    code = tjsonAddObject(pJson, jkCreateTableStmtOptions, nodeToJson, pNode->pOptions);
×
6213
  }
6214

6215
  return code;
×
6216
}
6217

6218
static int32_t jsonToCreateTableStmt(const SJson* pJson, void* pObj) {
×
6219
  SCreateTableStmt* pNode = (SCreateTableStmt*)pObj;
×
6220

6221
  int32_t code = tjsonGetStringValue(pJson, jkCreateTableStmtDbName, pNode->dbName);
×
6222
  if (TSDB_CODE_SUCCESS == code) {
×
6223
    code = tjsonGetStringValue(pJson, jkCreateTableStmtTableName, pNode->tableName);
×
6224
  }
6225
  if (TSDB_CODE_SUCCESS == code) {
×
6226
    code = tjsonGetBoolValue(pJson, jkCreateTableStmtIgnoreExists, &pNode->ignoreExists);
×
6227
  }
6228
  if (TSDB_CODE_SUCCESS == code) {
×
6229
    code = jsonToNodeList(pJson, jkCreateTableStmtCols, &pNode->pCols);
×
6230
  }
6231
  if (TSDB_CODE_SUCCESS == code) {
×
6232
    code = jsonToNodeList(pJson, jkCreateTableStmtTags, &pNode->pTags);
×
6233
  }
6234
  if (TSDB_CODE_SUCCESS == code) {
×
6235
    code = jsonToNodeObject(pJson, jkCreateTableStmtOptions, (SNode**)&pNode->pOptions);
×
6236
  }
6237

6238
  return code;
×
6239
}
6240

6241
static const char* jkCreateSubTableClauseDbName = "DbName";
6242
static const char* jkCreateSubTableClauseTableName = "TableName";
6243
static const char* jkCreateSubTableClauseUseDbName = "UseDbName";
6244
static const char* jkCreateSubTableClauseUseTableName = "UseTableName";
6245
static const char* jkCreateSubTableClauseIgnoreExists = "IgnoreExists";
6246
static const char* jkCreateSubTableClauseSpecificTags = "SpecificTags";
6247
static const char* jkCreateSubTableClauseValsOfTags = "ValsOfTags";
6248
static const char* jkCreateSubTableClauseOptions = "Options";
6249

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

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

6276
  return code;
×
6277
}
6278

6279
static int32_t jsonToCreateSubTableClause(const SJson* pJson, void* pObj) {
×
6280
  SCreateSubTableClause* pNode = (SCreateSubTableClause*)pObj;
×
6281

6282
  int32_t code = tjsonGetStringValue(pJson, jkCreateSubTableClauseDbName, pNode->dbName);
×
6283
  if (TSDB_CODE_SUCCESS == code) {
×
6284
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseTableName, pNode->tableName);
×
6285
  }
6286
  if (TSDB_CODE_SUCCESS == code) {
×
6287
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseDbName, pNode->useDbName);
×
6288
  }
6289
  if (TSDB_CODE_SUCCESS == code) {
×
6290
    code = tjsonGetStringValue(pJson, jkCreateSubTableClauseUseTableName, pNode->useTableName);
×
6291
  }
6292
  if (TSDB_CODE_SUCCESS == code) {
×
6293
    code = tjsonGetBoolValue(pJson, jkCreateSubTableClauseIgnoreExists, &pNode->ignoreExists);
×
6294
  }
6295
  if (TSDB_CODE_SUCCESS == code) {
×
6296
    code = jsonToNodeList(pJson, jkCreateSubTableClauseSpecificTags, &pNode->pSpecificTags);
×
6297
  }
6298
  if (TSDB_CODE_SUCCESS == code) {
×
6299
    code = jsonToNodeList(pJson, jkCreateSubTableClauseValsOfTags, &pNode->pValsOfTags);
×
6300
  }
6301
  if (TSDB_CODE_SUCCESS == code) {
×
6302
    code = jsonToNodeObject(pJson, jkCreateSubTableClauseOptions, (SNode**)&pNode->pOptions);
×
6303
  }
6304

6305
  return code;
×
6306
}
6307

6308
static const char* jkCreateMultiTablesStmtSubTables = "SubTables";
6309

6310
static int32_t createMultiTablesStmtToJson(const void* pObj, SJson* pJson) {
×
6311
  const SCreateMultiTablesStmt* pNode = (const SCreateMultiTablesStmt*)pObj;
×
6312
  return nodeListToJson(pJson, jkCreateMultiTablesStmtSubTables, pNode->pSubTables);
×
6313
}
6314

6315
static int32_t jsonToCreateMultiTablesStmt(const SJson* pJson, void* pObj) {
×
6316
  SCreateMultiTablesStmt* pNode = (SCreateMultiTablesStmt*)pObj;
×
6317
  return jsonToNodeList(pJson, jkCreateMultiTablesStmtSubTables, &pNode->pSubTables);
×
6318
}
6319

6320
static const char* jkDropTableClauseDbName = "DbName";
6321
static const char* jkDropTableClauseTableName = "TableName";
6322
static const char* jkDropTableClauseIgnoreNotExists = "IgnoreNotExists";
6323

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

6327
  int32_t code = tjsonAddStringToObject(pJson, jkDropTableClauseDbName, pNode->dbName);
×
6328
  if (TSDB_CODE_SUCCESS == code) {
×
6329
    code = tjsonAddStringToObject(pJson, jkDropTableClauseTableName, pNode->tableName);
×
6330
  }
6331
  if (TSDB_CODE_SUCCESS == code) {
×
6332
    code = tjsonAddBoolToObject(pJson, jkDropTableClauseIgnoreNotExists, pNode->ignoreNotExists);
×
6333
  }
6334

6335
  return code;
×
6336
}
6337

6338
static int32_t jsonToDropTableClause(const SJson* pJson, void* pObj) {
×
6339
  SDropTableClause* pNode = (SDropTableClause*)pObj;
×
6340

6341
  int32_t code = tjsonGetStringValue(pJson, jkDropTableClauseDbName, pNode->dbName);
×
6342
  if (TSDB_CODE_SUCCESS == code) {
×
6343
    code = tjsonGetStringValue(pJson, jkDropTableClauseTableName, pNode->tableName);
×
6344
  }
6345
  if (TSDB_CODE_SUCCESS == code) {
×
6346
    code = tjsonGetBoolValue(pJson, jkDropTableClauseIgnoreNotExists, &pNode->ignoreNotExists);
×
6347
  }
6348

6349
  return code;
×
6350
}
6351

6352
static const char* jkDropTableStmtTables = "Tables";
6353

6354
static int32_t dropTableStmtToJson(const void* pObj, SJson* pJson) {
×
6355
  const SDropTableStmt* pNode = (const SDropTableStmt*)pObj;
×
6356
  return nodeListToJson(pJson, jkDropTableStmtTables, pNode->pTables);
×
6357
}
6358

6359
static int32_t jsonToDropTableStmt(const SJson* pJson, void* pObj) {
×
6360
  SDropTableStmt* pNode = (SDropTableStmt*)pObj;
×
6361
  return jsonToNodeList(pJson, jkDropTableStmtTables, &pNode->pTables);
×
6362
}
6363

6364
static const char* jkDropSuperTableStmtDbName = "DbName";
6365
static const char* jkDropSuperTableStmtTableName = "TableName";
6366
static const char* jkDropSuperTableStmtIgnoreNotExists = "IgnoreNotExists";
6367
static const char* jkDropSuperTableStmtwithOpt = "withOpt";
6368

6369
static int32_t dropStableStmtToJson(const void* pObj, SJson* pJson) {
×
6370
  const SDropSuperTableStmt* pNode = (const SDropSuperTableStmt*)pObj;
×
6371

6372
  int32_t code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
×
6373
  if (TSDB_CODE_SUCCESS == code) {
×
6374
    code = tjsonAddStringToObject(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
×
6375
  }
6376
  if (TSDB_CODE_SUCCESS == code) {
×
6377
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtIgnoreNotExists, pNode->ignoreNotExists);
×
6378
  }
6379
  if (TSDB_CODE_SUCCESS == code) {
×
6380
    code = tjsonAddBoolToObject(pJson, jkDropSuperTableStmtwithOpt, pNode->withOpt);
×
6381
  }
6382

6383
  return code;
×
6384
}
6385

6386
static int32_t jsonToDropStableStmt(const SJson* pJson, void* pObj) {
×
6387
  SDropSuperTableStmt* pNode = (SDropSuperTableStmt*)pObj;
×
6388

6389
  int32_t code = tjsonGetStringValue(pJson, jkDropSuperTableStmtDbName, pNode->dbName);
×
6390
  if (TSDB_CODE_SUCCESS == code) {
×
6391
    code = tjsonGetStringValue(pJson, jkDropSuperTableStmtTableName, pNode->tableName);
×
6392
  }
6393
  if (TSDB_CODE_SUCCESS == code) {
×
6394
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
6395
  }
6396
  if (TSDB_CODE_SUCCESS == code) {
×
6397
    code = tjsonGetBoolValue(pJson, jkDropSuperTableStmtwithOpt, &pNode->withOpt);
×
6398
  }
6399

6400
  return code;
×
6401
}
6402

6403
static const char* jkAlterTableStmtDbName = "DbName";
6404
static const char* jkAlterTableStmtTableName = "TableName";
6405
static const char* jkAlterTableStmtAlterType = "AlterType";
6406
static const char* jkAlterTableStmtColName = "ColName";
6407
static const char* jkAlterTableStmtNewColName = "NewColName";
6408
static const char* jkAlterTableStmtOptions = "Options";
6409
static const char* jkAlterTableStmtNewDataType = "NewDataType";
6410
static const char* jkAlterTableStmtNewTagVal = "NewTagVal";
6411

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

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

6438
  return code;
×
6439
}
6440

6441
static int32_t jsonToAlterTableStmt(const SJson* pJson, void* pObj) {
×
6442
  SAlterTableStmt* pNode = (SAlterTableStmt*)pObj;
×
6443

6444
  int32_t code = tjsonGetStringValue(pJson, jkAlterTableStmtDbName, pNode->dbName);
×
6445
  if (TSDB_CODE_SUCCESS == code) {
×
6446
    code = tjsonGetStringValue(pJson, jkAlterTableStmtTableName, pNode->tableName);
×
6447
  }
6448
  if (TSDB_CODE_SUCCESS == code) {
×
6449
    code = tjsonGetTinyIntValue(pJson, jkAlterTableStmtAlterType, &pNode->alterType);
×
6450
  }
6451
  if (TSDB_CODE_SUCCESS == code) {
×
6452
    code = tjsonGetStringValue(pJson, jkAlterTableStmtColName, pNode->colName);
×
6453
  }
6454
  if (TSDB_CODE_SUCCESS == code) {
×
6455
    code = tjsonGetStringValue(pJson, jkAlterTableStmtNewColName, pNode->newColName);
×
6456
  }
6457
  if (TSDB_CODE_SUCCESS == code) {
×
6458
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pOptions);
×
6459
  }
6460
  if (TSDB_CODE_SUCCESS == code) {
×
6461
    code = tjsonToObject(pJson, jkAlterTableStmtNewDataType, jsonToDataType, &pNode->dataType);
×
6462
  }
6463
  if (TSDB_CODE_SUCCESS == code) {
×
6464
    code = jsonToNodeObject(pJson, jkAlterTableStmtOptions, (SNode**)&pNode->pVal);
×
6465
  }
6466

6467
  return code;
×
6468
}
6469

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

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

6474
static const char* jkCreateUserStmtUserName = "UserName";
6475
static const char* jkCreateUserStmtPassword = "Password";
6476
static const char* jkCreateUserStmtSysinfo = "Sysinfo";
6477

6478
static int32_t createUserStmtToJson(const void* pObj, SJson* pJson) {
×
6479
  const SCreateUserStmt* pNode = (const SCreateUserStmt*)pObj;
×
6480

6481
  int32_t code = tjsonAddStringToObject(pJson, jkCreateUserStmtUserName, pNode->userName);
×
6482
  if (TSDB_CODE_SUCCESS == code) {
×
6483
    code = tjsonAddStringToObject(pJson, jkCreateUserStmtPassword, pNode->password);
×
6484
  }
6485
  if (TSDB_CODE_SUCCESS == code) {
×
6486
    code = tjsonAddIntegerToObject(pJson, jkCreateUserStmtSysinfo, pNode->sysinfo);
×
6487
  }
6488

6489
  return code;
×
6490
}
6491

6492
static int32_t jsonToCreateUserStmt(const SJson* pJson, void* pObj) {
×
6493
  SCreateUserStmt* pNode = (SCreateUserStmt*)pObj;
×
6494

6495
  int32_t code = tjsonGetStringValue(pJson, jkCreateUserStmtUserName, pNode->userName);
×
6496
  if (TSDB_CODE_SUCCESS == code) {
×
6497
    code = tjsonGetStringValue(pJson, jkCreateUserStmtPassword, pNode->password);
×
6498
  }
6499
  if (TSDB_CODE_SUCCESS == code) {
×
6500
    code = tjsonGetTinyIntValue(pJson, jkCreateUserStmtSysinfo, &pNode->sysinfo);
×
6501
  }
6502

6503
  return code;
×
6504
}
6505

6506
static const char* jkAlterUserStmtUserName = "UserName";
6507
static const char* jkAlterUserStmtAlterType = "AlterType";
6508
static const char* jkAlterUserStmtPassword = "Password";
6509
static const char* jkAlterUserStmtEnable = "Enable";
6510
static const char* jkAlterUserStmtSysinfo = "Sysinfo";
6511
static const char* jkAlterUserStmtCreatedb = "Createdb";
6512

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

6516
  int32_t code = tjsonAddStringToObject(pJson, jkAlterUserStmtUserName, pNode->userName);
×
6517
  if (TSDB_CODE_SUCCESS == code) {
×
6518
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtAlterType, pNode->alterType);
×
6519
  }
6520
  if (TSDB_CODE_SUCCESS == code) {
×
6521
    code = tjsonAddStringToObject(pJson, jkAlterUserStmtPassword, pNode->password);
×
6522
  }
6523
  if (TSDB_CODE_SUCCESS == code) {
×
6524
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtEnable, pNode->enable);
×
6525
  }
6526
  if (TSDB_CODE_SUCCESS == code) {
×
6527
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtSysinfo, pNode->sysinfo);
×
6528
  }
6529
  if (TSDB_CODE_SUCCESS == code) {
×
6530
    code = tjsonAddIntegerToObject(pJson, jkAlterUserStmtCreatedb, pNode->createdb);
×
6531
  }
6532

6533
  return code;
×
6534
}
6535

6536
static int32_t jsonToAlterUserStmt(const SJson* pJson, void* pObj) {
×
6537
  SAlterUserStmt* pNode = (SAlterUserStmt*)pObj;
×
6538

6539
  int32_t code = tjsonGetStringValue(pJson, jkAlterUserStmtUserName, pNode->userName);
×
6540
  if (TSDB_CODE_SUCCESS == code) {
×
6541
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtAlterType, &pNode->alterType);
×
6542
  }
6543
  if (TSDB_CODE_SUCCESS == code) {
×
6544
    code = tjsonGetStringValue(pJson, jkAlterUserStmtPassword, pNode->password);
×
6545
  }
6546
  if (TSDB_CODE_SUCCESS == code) {
×
6547
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtEnable, &pNode->enable);
×
6548
  }
6549
  if (TSDB_CODE_SUCCESS == code) {
×
6550
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtSysinfo, &pNode->sysinfo);
×
6551
  }
6552
  if (TSDB_CODE_SUCCESS == code) {
×
6553
    code = tjsonGetTinyIntValue(pJson, jkAlterUserStmtCreatedb, &pNode->createdb);
×
6554
  }
6555

6556
  return code;
×
6557
}
6558

6559
static const char* jkDropUserStmtUserName = "UserName";
6560

6561
static int32_t dropUserStmtToJson(const void* pObj, SJson* pJson) {
×
6562
  const SDropUserStmt* pNode = (const SDropUserStmt*)pObj;
×
6563
  return tjsonAddStringToObject(pJson, jkDropUserStmtUserName, pNode->userName);
×
6564
}
6565

6566
static int32_t jsonToDropUserStmt(const SJson* pJson, void* pObj) {
×
6567
  SDropUserStmt* pNode = (SDropUserStmt*)pObj;
×
6568
  return tjsonGetStringValue(pJson, jkDropUserStmtUserName, pNode->userName);
×
6569
}
6570

6571
static const char* jkUseDatabaseStmtDbName = "DbName";
6572

6573
static int32_t useDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
6574
  const SUseDatabaseStmt* pNode = (const SUseDatabaseStmt*)pObj;
×
6575
  return tjsonAddStringToObject(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
×
6576
}
6577

6578
static int32_t jsonToUseDatabaseStmt(const SJson* pJson, void* pObj) {
×
6579
  SUseDatabaseStmt* pNode = (SUseDatabaseStmt*)pObj;
×
6580
  return tjsonGetStringValue(pJson, jkUseDatabaseStmtDbName, pNode->dbName);
×
6581
}
6582

6583
static const char* jkCreateDnodeStmtFqdn = "Fqdn";
6584
static const char* jkCreateDnodeStmtPort = "Port";
6585

6586
static int32_t createDnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6587
  const SCreateDnodeStmt* pNode = (const SCreateDnodeStmt*)pObj;
×
6588

6589
  int32_t code = tjsonAddStringToObject(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
×
6590
  if (TSDB_CODE_SUCCESS == code) {
×
6591
    code = tjsonAddIntegerToObject(pJson, jkCreateDnodeStmtPort, pNode->port);
×
6592
  }
6593

6594
  return code;
×
6595
}
6596

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

6600
  int32_t code = tjsonGetStringValue(pJson, jkCreateDnodeStmtFqdn, pNode->fqdn);
×
6601
  if (TSDB_CODE_SUCCESS == code) {
×
6602
    code = tjsonGetIntValue(pJson, jkCreateDnodeStmtPort, &pNode->port);
×
6603
  }
6604

6605
  return code;
×
6606
}
6607

6608
static const char* jkAlterDnodeStmtDnodeId = "DnodeId";
6609
static const char* jkAlterDnodeStmtConfig = "Config";
6610
static const char* jkAlterDnodeStmtValue = "Value";
6611

6612
static int32_t alterDnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6613
  const SAlterDnodeStmt* pNode = (const SAlterDnodeStmt*)pObj;
×
6614

6615
  int32_t code = tjsonAddIntegerToObject(pJson, jkAlterDnodeStmtDnodeId, pNode->dnodeId);
×
6616
  if (TSDB_CODE_SUCCESS == code) {
×
6617
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtConfig, pNode->config);
×
6618
  }
6619
  if (TSDB_CODE_SUCCESS == code) {
×
6620
    code = tjsonAddStringToObject(pJson, jkAlterDnodeStmtValue, pNode->value);
×
6621
  }
6622

6623
  return code;
×
6624
}
6625

6626
static int32_t jsonToAlterDnodeStmt(const SJson* pJson, void* pObj) {
×
6627
  SAlterDnodeStmt* pNode = (SAlterDnodeStmt*)pObj;
×
6628

6629
  int32_t code = tjsonGetIntValue(pJson, jkAlterDnodeStmtDnodeId, &pNode->dnodeId);
×
6630
  if (TSDB_CODE_SUCCESS == code) {
×
6631
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtConfig, pNode->config);
×
6632
  }
6633
  if (TSDB_CODE_SUCCESS == code) {
×
6634
    code = tjsonGetStringValue(pJson, jkAlterDnodeStmtValue, pNode->value);
×
6635
  }
6636

6637
  return code;
×
6638
}
6639

6640
static const char* jkCreateIndexStmtIndexType = "IndexType";
6641
static const char* jkCreateIndexStmtIgnoreExists = "IgnoreExists";
6642
static const char* jkCreateIndexStmtIndexDbName = "IndexDbName";
6643
static const char* jkCreateIndexStmtIndexName = "indexName";
6644
static const char* jkCreateIndexStmtDbName = "DbName";
6645
static const char* jkCreateIndexStmtTableName = "TableName";
6646
static const char* jkCreateIndexStmtCols = "Cols";
6647
static const char* jkCreateIndexStmtOptions = "Options";
6648

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

6652
  int32_t code = tjsonAddIntegerToObject(pJson, jkCreateIndexStmtIndexType, pNode->indexType);
×
6653
  if (TSDB_CODE_SUCCESS == code) {
×
6654
    code = tjsonAddBoolToObject(pJson, jkCreateIndexStmtIgnoreExists, pNode->ignoreExists);
×
6655
  }
6656
  if (TSDB_CODE_SUCCESS == code) {
×
6657
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
×
6658
  }
6659
  if (TSDB_CODE_SUCCESS == code) {
×
6660
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
×
6661
  }
6662
  if (TSDB_CODE_SUCCESS == code) {
×
6663
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtDbName, pNode->dbName);
×
6664
  }
6665
  if (TSDB_CODE_SUCCESS == code) {
×
6666
    code = tjsonAddStringToObject(pJson, jkCreateIndexStmtTableName, pNode->tableName);
×
6667
  }
6668
  if (TSDB_CODE_SUCCESS == code) {
×
6669
    code = nodeListToJson(pJson, jkCreateIndexStmtCols, pNode->pCols);
×
6670
  }
6671
  if (TSDB_CODE_SUCCESS == code) {
×
6672
    code = tjsonAddObject(pJson, jkCreateIndexStmtOptions, nodeToJson, pNode->pOptions);
×
6673
  }
6674

6675
  return code;
×
6676
}
6677

6678
static int32_t jsonToCreateIndexStmt(const SJson* pJson, void* pObj) {
×
6679
  SCreateIndexStmt* pNode = (SCreateIndexStmt*)pObj;
×
6680

6681
  int32_t code = TSDB_CODE_SUCCESS;
×
6682
  tjsonGetNumberValue(pJson, jkCreateIndexStmtIndexType, pNode->indexType, code);
×
6683
  if (TSDB_CODE_SUCCESS == code) {
×
6684
    code = tjsonGetBoolValue(pJson, jkCreateIndexStmtIgnoreExists, &pNode->ignoreExists);
×
6685
  }
6686
  if (TSDB_CODE_SUCCESS == code) {
×
6687
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexDbName, pNode->indexDbName);
×
6688
  }
6689
  if (TSDB_CODE_SUCCESS == code) {
×
6690
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtIndexName, pNode->indexName);
×
6691
  }
6692
  if (TSDB_CODE_SUCCESS == code) {
×
6693
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtDbName, pNode->dbName);
×
6694
  }
6695
  if (TSDB_CODE_SUCCESS == code) {
×
6696
    code = tjsonGetStringValue(pJson, jkCreateIndexStmtTableName, pNode->tableName);
×
6697
  }
6698
  if (TSDB_CODE_SUCCESS == code) {
×
6699
    code = jsonToNodeList(pJson, jkCreateIndexStmtCols, &pNode->pCols);
×
6700
  }
6701
  if (TSDB_CODE_SUCCESS == code) {
×
6702
    code = jsonToNodeObject(pJson, jkCreateIndexStmtOptions, (SNode**)&pNode->pOptions);
×
6703
  }
6704

6705
  return code;
×
6706
}
6707

6708
static const char* jkDropIndexStmtIgnoreNotExists = "IgnoreNotExists";
6709
static const char* jkDropIndexStmtIndexDbName = "IndexDbName";
6710
static const char* jkDropIndexStmtIndexName = "IndexName";
6711

6712
static int32_t dropIndexStmtToJson(const void* pObj, SJson* pJson) {
×
6713
  const SDropIndexStmt* pNode = (const SDropIndexStmt*)pObj;
×
6714

6715
  int32_t code = tjsonAddBoolToObject(pJson, jkDropIndexStmtIgnoreNotExists, pNode->ignoreNotExists);
×
6716
  if (TSDB_CODE_SUCCESS == code) {
×
6717
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
×
6718
  }
6719
  if (TSDB_CODE_SUCCESS == code) {
×
6720
    code = tjsonAddStringToObject(pJson, jkDropIndexStmtIndexName, pNode->indexName);
×
6721
  }
6722

6723
  return code;
×
6724
}
6725

6726
static int32_t jsonToDropIndexStmt(const SJson* pJson, void* pObj) {
×
6727
  SDropIndexStmt* pNode = (SDropIndexStmt*)pObj;
×
6728

6729
  int32_t code = tjsonGetBoolValue(pJson, jkDropIndexStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
6730
  if (TSDB_CODE_SUCCESS == code) {
×
6731
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexDbName, pNode->indexDbName);
×
6732
  }
6733
  if (TSDB_CODE_SUCCESS == code) {
×
6734
    code = tjsonGetStringValue(pJson, jkDropIndexStmtIndexName, pNode->indexName);
×
6735
  }
6736

6737
  return code;
×
6738
}
6739

6740
static const char* jkCreateComponentNodeStmtDnodeId = "DnodeId";
6741

6742
static int32_t createComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
6743
  const SCreateComponentNodeStmt* pNode = (const SCreateComponentNodeStmt*)pObj;
×
6744
  return tjsonAddIntegerToObject(pJson, jkCreateComponentNodeStmtDnodeId, pNode->dnodeId);
×
6745
}
6746

6747
static int32_t jsonToCreateComponentNodeStmt(const SJson* pJson, void* pObj) {
×
6748
  SCreateComponentNodeStmt* pNode = (SCreateComponentNodeStmt*)pObj;
×
6749
  return tjsonGetIntValue(pJson, jkCreateComponentNodeStmtDnodeId, &pNode->dnodeId);
×
6750
}
6751

6752
static const char* jkDropComponentNodeStmtDnodeId = "DnodeId";
6753

6754
static int32_t dropComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
6755
  const SDropComponentNodeStmt* pNode = (const SDropComponentNodeStmt*)pObj;
×
6756
  return tjsonAddIntegerToObject(pJson, jkDropComponentNodeStmtDnodeId, pNode->dnodeId);
×
6757
}
6758

6759
static int32_t jsonToDropComponentNodeStmt(const SJson* pJson, void* pObj) {
×
6760
  SDropComponentNodeStmt* pNode = (SDropComponentNodeStmt*)pObj;
×
6761
  return tjsonGetIntValue(pJson, jkDropComponentNodeStmtDnodeId, &pNode->dnodeId);
×
6762
}
6763

6764
static int32_t createQnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6765
  return createComponentNodeStmtToJson(pObj, pJson);
×
6766
}
6767

6768
static int32_t jsonToCreateQnodeStmt(const SJson* pJson, void* pObj) {
×
6769
  return jsonToCreateComponentNodeStmt(pJson, pObj);
×
6770
}
6771

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

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

6776
static const char* jkCreateAnodeStmtUrl = "Url";
6777
static const char*  jkUpdateDropANodeStmtId = "AnodeId";
6778

6779
static int32_t createAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6780
  const SCreateAnodeStmt* pNode = (const SCreateAnodeStmt*)pObj;
×
6781
  return tjsonAddStringToObject(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
6782
}
6783

6784
static int32_t jsonToCreateAnodeStmt(const SJson* pJson, void* pObj) {
×
6785
  SCreateAnodeStmt* pNode = (SCreateAnodeStmt*)pObj;
×
6786
  return tjsonGetStringValue(pJson, jkCreateAnodeStmtUrl, pNode->url);
×
6787
}
6788

6789
static int32_t updateAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6790
  const SUpdateAnodeStmt* pNode = (const SUpdateAnodeStmt*)pObj;
×
6791
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
6792
}
6793

6794
static int32_t jsonToUpdateAnodeStmt(const SJson* pJson, void* pObj) {
×
6795
  SUpdateAnodeStmt* pNode = (SUpdateAnodeStmt*)pObj;
×
6796
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
6797
}
6798

6799
static int32_t dropAnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6800
  const SDropAnodeStmt* pNode = (const SDropAnodeStmt*)pObj;
×
6801
  return tjsonAddIntegerToObject(pJson, jkUpdateDropANodeStmtId, pNode->anodeId);
×
6802
}
6803

6804
static int32_t jsonToDropAnodeStmt(const SJson* pJson, void* pObj) {
×
6805
  SDropAnodeStmt* pNode = (SDropAnodeStmt*)pObj;
×
6806
  return tjsonGetIntValue(pJson, jkUpdateDropANodeStmtId, &pNode->anodeId);
×
6807
}
6808

6809
static int32_t createSnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6810
  return createComponentNodeStmtToJson(pObj, pJson);
×
6811
}
6812

6813
static int32_t jsonToCreateSnodeStmt(const SJson* pJson, void* pObj) {
×
6814
  return jsonToCreateComponentNodeStmt(pJson, pObj);
×
6815
}
6816

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

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

6821
static int32_t createMnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6822
  return createComponentNodeStmtToJson(pObj, pJson);
×
6823
}
6824

6825
static int32_t jsonToCreateMnodeStmt(const SJson* pJson, void* pObj) {
×
6826
  return jsonToCreateComponentNodeStmt(pJson, pObj);
×
6827
}
6828

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

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

6833
static const char* jkDropDnodeStmtDnodeId = "DnodeId";
6834
static const char* jkDropDnodeStmtFqdn = "Fqdn";
6835
static const char* jkDropDnodeStmtPort = "Port";
6836
static const char* jkDropDnodeStmtForce = "Force";
6837
static const char* jkDropDnodeStmtUnsafe = "Unsafe";
6838

6839
static int32_t dropDnodeStmtToJson(const void* pObj, SJson* pJson) {
×
6840
  const SDropDnodeStmt* pNode = (const SDropDnodeStmt*)pObj;
×
6841

6842
  int32_t code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtDnodeId, pNode->dnodeId);
×
6843
  if (TSDB_CODE_SUCCESS == code) {
×
6844
    code = tjsonAddStringToObject(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
×
6845
  }
6846
  if (TSDB_CODE_SUCCESS == code) {
×
6847
    code = tjsonAddIntegerToObject(pJson, jkDropDnodeStmtPort, pNode->port);
×
6848
  }
6849
  if (TSDB_CODE_SUCCESS == code) {
×
6850
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtForce, pNode->force);
×
6851
  }
6852
  if (TSDB_CODE_SUCCESS == code) {
×
6853
    code = tjsonAddBoolToObject(pJson, jkDropDnodeStmtUnsafe, pNode->unsafe);
×
6854
  }
6855

6856
  return code;
×
6857
}
6858

6859
static int32_t jsonToDropDnodeStmt(const SJson* pJson, void* pObj) {
×
6860
  SDropDnodeStmt* pNode = (SDropDnodeStmt*)pObj;
×
6861

6862
  int32_t code = tjsonGetIntValue(pJson, jkDropDnodeStmtDnodeId, &pNode->dnodeId);
×
6863
  if (TSDB_CODE_SUCCESS == code) {
×
6864
    code = tjsonGetStringValue(pJson, jkDropDnodeStmtFqdn, pNode->fqdn);
×
6865
  }
6866
  if (TSDB_CODE_SUCCESS == code) {
×
6867
    code = tjsonGetIntValue(pJson, jkDropDnodeStmtPort, &pNode->port);
×
6868
  }
6869
  if (TSDB_CODE_SUCCESS == code) {
×
6870
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtForce, &pNode->force);
×
6871
  }
6872
  if (TSDB_CODE_SUCCESS == code) {
×
6873
    code = tjsonGetBoolValue(pJson, jkDropDnodeStmtUnsafe, &pNode->unsafe);
×
6874
  }
6875

6876
  return code;
×
6877
}
6878

6879
static const char* jkRestoreComponentNodeStmtDnodeId = "DnodeId";
6880

6881
static int32_t restoreComponentNodeStmtToJson(const void* pObj, SJson* pJson) {
×
6882
  const SRestoreComponentNodeStmt* pNode = (const SRestoreComponentNodeStmt*)pObj;
×
6883
  return tjsonAddIntegerToObject(pJson, jkRestoreComponentNodeStmtDnodeId, pNode->dnodeId);
×
6884
}
6885

6886
static int32_t jsonToRestoreComponentNodeStmt(const SJson* pJson, void* pObj) {
×
6887
  SRestoreComponentNodeStmt* pNode = (SRestoreComponentNodeStmt*)pObj;
×
6888
  return tjsonGetIntValue(pJson, jkRestoreComponentNodeStmtDnodeId, &pNode->dnodeId);
×
6889
}
6890

6891
static int32_t jsonToRestoreDnodeStmt(const SJson* pJson, void* pObj) {
×
6892
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
6893
}
6894
static int32_t jsonToRestoreQnodeStmt(const SJson* pJson, void* pObj) {
×
6895
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
6896
}
6897
static int32_t jsonToRestoreMnodeStmt(const SJson* pJson, void* pObj) {
×
6898
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
6899
}
6900
static int32_t jsonToRestoreVnodeStmt(const SJson* pJson, void* pObj) {
×
6901
  return jsonToRestoreComponentNodeStmt(pJson, pObj);
×
6902
}
6903

6904
static const char* jkCreateTopicStmtTopicName = "TopicName";
6905
static const char* jkCreateTopicStmtSubscribeDbName = "SubscribeDbName";
6906
static const char* jkCreateTopicStmtIgnoreExists = "IgnoreExists";
6907
static const char* jkCreateTopicStmtQuery = "Query";
6908

6909
static int32_t createTopicStmtToJson(const void* pObj, SJson* pJson) {
×
6910
  const SCreateTopicStmt* pNode = (const SCreateTopicStmt*)pObj;
×
6911

6912
  int32_t code = tjsonAddStringToObject(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
×
6913
  if (TSDB_CODE_SUCCESS == code) {
×
6914
    code = tjsonAddStringToObject(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
×
6915
  }
6916
  if (TSDB_CODE_SUCCESS == code) {
×
6917
    code = tjsonAddBoolToObject(pJson, jkCreateTopicStmtIgnoreExists, pNode->ignoreExists);
×
6918
  }
6919
  if (TSDB_CODE_SUCCESS == code) {
×
6920
    code = tjsonAddObject(pJson, jkCreateTopicStmtQuery, nodeToJson, pNode->pQuery);
×
6921
  }
6922

6923
  return code;
×
6924
}
6925

6926
static int32_t jsonToCreateTopicStmt(const SJson* pJson, void* pObj) {
×
6927
  SCreateTopicStmt* pNode = (SCreateTopicStmt*)pObj;
×
6928

6929
  int32_t code = tjsonGetStringValue(pJson, jkCreateTopicStmtTopicName, pNode->topicName);
×
6930
  if (TSDB_CODE_SUCCESS == code) {
×
6931
    code = tjsonGetStringValue(pJson, jkCreateTopicStmtSubscribeDbName, pNode->subDbName);
×
6932
  }
6933
  if (TSDB_CODE_SUCCESS == code) {
×
6934
    code = tjsonGetBoolValue(pJson, jkCreateTopicStmtIgnoreExists, &pNode->ignoreExists);
×
6935
  }
6936
  if (TSDB_CODE_SUCCESS == code) {
×
6937
    code = jsonToNodeObject(pJson, jkCreateTopicStmtQuery, &pNode->pQuery);
×
6938
  }
6939

6940
  return code;
×
6941
}
6942

6943
static const char* jkDropTopicStmtTopicName = "TopicName";
6944
static const char* jkDropTopicStmtIgnoreNotExists = "IgnoreNotExists";
6945

6946
static int32_t dropTopicStmtToJson(const void* pObj, SJson* pJson) {
×
6947
  const SDropTopicStmt* pNode = (const SDropTopicStmt*)pObj;
×
6948

6949
  int32_t code = tjsonAddStringToObject(pJson, jkDropTopicStmtTopicName, pNode->topicName);
×
6950
  if (TSDB_CODE_SUCCESS == code) {
×
6951
    code = tjsonAddBoolToObject(pJson, jkDropTopicStmtIgnoreNotExists, pNode->ignoreNotExists);
×
6952
  }
6953

6954
  return code;
×
6955
}
6956

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

6960
  int32_t code = tjsonGetStringValue(pJson, jkDropTopicStmtTopicName, pNode->topicName);
×
6961
  if (TSDB_CODE_SUCCESS == code) {
×
6962
    code = tjsonGetBoolValue(pJson, jkDropTopicStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
6963
  }
6964

6965
  return code;
×
6966
}
6967

6968
static const char* jkDropCGroupStmtTopicName = "TopicName";
6969
static const char* jkDropCGroupStmtConsumerGroup = "ConsumerGroup";
6970
static const char* jkDropCGroupStmtIgnoreNotExists = "IgnoreNotExists";
6971

6972
static int32_t dropConsumerGroupStmtToJson(const void* pObj, SJson* pJson) {
×
6973
  const SDropCGroupStmt* pNode = (const SDropCGroupStmt*)pObj;
×
6974

6975
  int32_t code = tjsonAddStringToObject(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
×
6976
  if (TSDB_CODE_SUCCESS == code) {
×
6977
    code = tjsonAddStringToObject(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
×
6978
  }
6979
  if (TSDB_CODE_SUCCESS == code) {
×
6980
    code = tjsonAddBoolToObject(pJson, jkDropCGroupStmtIgnoreNotExists, pNode->ignoreNotExists);
×
6981
  }
6982

6983
  return code;
×
6984
}
6985

6986
static int32_t jsonToDropConsumerGroupStmt(const SJson* pJson, void* pObj) {
×
6987
  SDropCGroupStmt* pNode = (SDropCGroupStmt*)pObj;
×
6988

6989
  int32_t code = tjsonGetStringValue(pJson, jkDropCGroupStmtTopicName, pNode->topicName);
×
6990
  if (TSDB_CODE_SUCCESS == code) {
×
6991
    code = tjsonGetStringValue(pJson, jkDropCGroupStmtConsumerGroup, pNode->cgroup);
×
6992
  }
6993
  if (TSDB_CODE_SUCCESS == code) {
×
6994
    code = tjsonGetBoolValue(pJson, jkDropCGroupStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
6995
  }
6996

6997
  return code;
×
6998
}
6999

7000
static const char* jkAlterClusterStmtConfig = "Config";
7001
static const char* jkAlterClusterStmtValue = "Value";
7002

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

7006
  int32_t code = tjsonAddStringToObject(pJson, jkAlterClusterStmtConfig, pNode->config);
×
7007
  if (TSDB_CODE_SUCCESS == code) {
×
7008
    code = tjsonAddStringToObject(pJson, jkAlterClusterStmtValue, pNode->value);
×
7009
  }
7010

7011
  return code;
×
7012
}
7013

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

7017
  int32_t code = tjsonGetStringValue(pJson, jkAlterClusterStmtConfig, pNode->config);
×
7018
  if (TSDB_CODE_SUCCESS == code) {
×
7019
    code = tjsonGetStringValue(pJson, jkAlterClusterStmtValue, pNode->value);
×
7020
  }
7021

7022
  return code;
×
7023
}
7024

7025
static const char* jkAlterLocalStmtConfig = "Config";
7026
static const char* jkAlterLocalStmtValue = "Value";
7027

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

7031
  int32_t code = tjsonAddStringToObject(pJson, jkAlterLocalStmtConfig, pNode->config);
×
7032
  if (TSDB_CODE_SUCCESS == code) {
×
7033
    code = tjsonAddStringToObject(pJson, jkAlterLocalStmtValue, pNode->value);
×
7034
  }
7035

7036
  return code;
×
7037
}
7038

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

7042
  int32_t code = tjsonGetStringValue(pJson, jkAlterLocalStmtConfig, pNode->config);
×
7043
  if (TSDB_CODE_SUCCESS == code) {
×
7044
    code = tjsonGetStringValue(pJson, jkAlterLocalStmtValue, pNode->value);
×
7045
  }
7046

7047
  return code;
×
7048
}
7049

7050
static const char* jkExplainStmtAnalyze = "Analyze";
7051
static const char* jkExplainStmtOptions = "Options";
7052
static const char* jkExplainStmtQuery = "Query";
7053

7054
static int32_t explainStmtToJson(const void* pObj, SJson* pJson) {
×
7055
  const SExplainStmt* pNode = (const SExplainStmt*)pObj;
×
7056

7057
  int32_t code = tjsonAddBoolToObject(pJson, jkExplainStmtAnalyze, pNode->analyze);
×
7058
  if (TSDB_CODE_SUCCESS == code) {
×
7059
    code = tjsonAddObject(pJson, jkExplainStmtOptions, nodeToJson, pNode->pOptions);
×
7060
  }
7061
  if (TSDB_CODE_SUCCESS == code) {
×
7062
    code = tjsonAddObject(pJson, jkExplainStmtQuery, nodeToJson, pNode->pQuery);
×
7063
  }
7064

7065
  return code;
×
7066
}
7067

7068
static int32_t jsonToExplainStmt(const SJson* pJson, void* pObj) {
×
7069
  SExplainStmt* pNode = (SExplainStmt*)pObj;
×
7070

7071
  int32_t code = tjsonGetBoolValue(pJson, jkExplainStmtAnalyze, &pNode->analyze);
×
7072
  if (TSDB_CODE_SUCCESS == code) {
×
7073
    code = jsonToNodeObject(pJson, jkExplainStmtOptions, (SNode**)&pNode->pOptions);
×
7074
  }
7075
  if (TSDB_CODE_SUCCESS == code) {
×
7076
    code = jsonToNodeObject(pJson, jkExplainStmtQuery, &pNode->pQuery);
×
7077
  }
7078

7079
  return code;
×
7080
}
7081

7082
static const char* jkDescribeStmtDbName = "DbName";
7083
static const char* jkDescribeStmtTableName = "TableName";
7084

7085
static int32_t describeStmtToJson(const void* pObj, SJson* pJson) {
×
7086
  const SDescribeStmt* pNode = (const SDescribeStmt*)pObj;
×
7087

7088
  int32_t code = tjsonAddStringToObject(pJson, jkDescribeStmtDbName, pNode->dbName);
×
7089
  if (TSDB_CODE_SUCCESS == code) {
×
7090
    code = tjsonAddStringToObject(pJson, jkDescribeStmtTableName, pNode->tableName);
×
7091
  }
7092

7093
  return code;
×
7094
}
7095

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

7099
  int32_t code = tjsonGetStringValue(pJson, jkDescribeStmtDbName, pNode->dbName);
×
7100
  if (TSDB_CODE_SUCCESS == code) {
×
7101
    code = tjsonGetStringValue(pJson, jkDescribeStmtTableName, pNode->tableName);
×
7102
  }
7103

7104
  return code;
×
7105
}
7106

7107
static const char* jkCompactDatabaseStmtDbName = "DbName";
7108

7109
static int32_t compactDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
7110
  const SCompactDatabaseStmt* pNode = (const SCompactDatabaseStmt*)pObj;
×
7111
  return tjsonAddStringToObject(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
×
7112
}
7113

7114
static int32_t jsonToCompactDatabaseStmt(const SJson* pJson, void* pObj) {
×
7115
  SCompactDatabaseStmt* pNode = (SCompactDatabaseStmt*)pObj;
×
7116
  return tjsonGetStringValue(pJson, jkCompactDatabaseStmtDbName, pNode->dbName);
×
7117
}
7118

7119
static const char* jkCreateStreamStmtStreamName = "StreamName";
7120
static const char* jkCreateStreamStmtTargetDbName = "TargetDbName";
7121
static const char* jkCreateStreamStmtTargetTabName = "TargetTabName";
7122
static const char* jkCreateStreamStmtIgnoreExists = "IgnoreExists";
7123
static const char* jkCreateStreamStmtOptions = "Options";
7124
static const char* jkCreateStreamStmtQuery = "Query";
7125
static const char* jkCreateStreamStmtTags = "Tags";
7126
static const char* jkCreateStreamStmtSubtable = "Subtable";
7127

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

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

7154
  return code;
×
7155
}
7156

7157
static int32_t jsonToCreateStreamStmt(const SJson* pJson, void* pObj) {
×
7158
  SCreateStreamStmt* pNode = (SCreateStreamStmt*)pObj;
×
7159

7160
  int32_t code = tjsonGetStringValue(pJson, jkCreateStreamStmtStreamName, pNode->streamName);
×
7161
  if (TSDB_CODE_SUCCESS == code) {
×
7162
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetDbName, pNode->targetDbName);
×
7163
  }
7164
  if (TSDB_CODE_SUCCESS == code) {
×
7165
    code = tjsonGetStringValue(pJson, jkCreateStreamStmtTargetTabName, pNode->targetTabName);
×
7166
  }
7167
  if (TSDB_CODE_SUCCESS == code) {
×
7168
    code = tjsonGetBoolValue(pJson, jkCreateStreamStmtIgnoreExists, &pNode->ignoreExists);
×
7169
  }
7170
  if (TSDB_CODE_SUCCESS == code) {
×
7171
    code = jsonToNodeObject(pJson, jkCreateStreamStmtOptions, (SNode**)&pNode->pOptions);
×
7172
  }
7173
  if (TSDB_CODE_SUCCESS == code) {
×
7174
    code = jsonToNodeObject(pJson, jkCreateStreamStmtQuery, &pNode->pQuery);
×
7175
  }
7176
  if (TSDB_CODE_SUCCESS == code) {
×
7177
    code = jsonToNodeList(pJson, jkCreateStreamStmtTags, &pNode->pTags);
×
7178
  }
7179
  if (TSDB_CODE_SUCCESS == code) {
×
7180
    code = jsonToNodeObject(pJson, jkCreateStreamStmtSubtable, &pNode->pSubtable);
×
7181
  }
7182

7183
  return code;
×
7184
}
7185

7186
static const char* jkDropStreamStmtStreamName = "StreamName";
7187
static const char* jkDropStreamStmtIgnoreNotExists = "IgnoreNotExists";
7188

7189
static int32_t dropStreamStmtToJson(const void* pObj, SJson* pJson) {
×
7190
  const SDropStreamStmt* pNode = (const SDropStreamStmt*)pObj;
×
7191

7192
  int32_t code = tjsonAddStringToObject(pJson, jkDropStreamStmtStreamName, pNode->streamName);
×
7193
  if (TSDB_CODE_SUCCESS == code) {
×
7194
    code = tjsonAddBoolToObject(pJson, jkDropStreamStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7195
  }
7196

7197
  return code;
×
7198
}
7199

7200
static int32_t jsonToDropStreamStmt(const SJson* pJson, void* pObj) {
×
7201
  SDropStreamStmt* pNode = (SDropStreamStmt*)pObj;
×
7202

7203
  int32_t code = tjsonGetStringValue(pJson, jkDropStreamStmtStreamName, pNode->streamName);
×
7204
  if (TSDB_CODE_SUCCESS == code) {
×
7205
    code = tjsonGetBoolValue(pJson, jkDropStreamStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7206
  }
7207

7208
  return code;
×
7209
}
7210

7211
static const char* jkMergeVgroupStmtVgroupId1 = "VgroupId1";
7212
static const char* jkMergeVgroupStmtVgroupId2 = "VgroupId2";
7213

7214
static int32_t mergeVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
7215
  const SMergeVgroupStmt* pNode = (const SMergeVgroupStmt*)pObj;
×
7216

7217
  int32_t code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId1, pNode->vgId1);
×
7218
  if (TSDB_CODE_SUCCESS == code) {
×
7219
    code = tjsonAddIntegerToObject(pJson, jkMergeVgroupStmtVgroupId2, pNode->vgId2);
×
7220
  }
7221

7222
  return code;
×
7223
}
7224

7225
static int32_t jsonToMergeVgroupStmt(const SJson* pJson, void* pObj) {
×
7226
  SMergeVgroupStmt* pNode = (SMergeVgroupStmt*)pObj;
×
7227

7228
  int32_t code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId1, &pNode->vgId1);
×
7229
  if (TSDB_CODE_SUCCESS == code) {
×
7230
    code = tjsonGetIntValue(pJson, jkMergeVgroupStmtVgroupId2, &pNode->vgId2);
×
7231
  }
7232

7233
  return code;
×
7234
}
7235

7236
static const char* jkRedistributeVgroupStmtVgroupId = "VgroupId";
7237
static const char* jkRedistributeVgroupStmtDnodeId1 = "DnodeId1";
7238
static const char* jkRedistributeVgroupStmtDnodeId2 = "DnodeId2";
7239
static const char* jkRedistributeVgroupStmtDnodeId3 = "DnodeId3";
7240
static const char* jkRedistributeVgroupStmtDnodes = "Dnodes";
7241

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

7245
  int32_t code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtVgroupId, pNode->vgId);
×
7246
  if (TSDB_CODE_SUCCESS == code) {
×
7247
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId1, pNode->dnodeId1);
×
7248
  }
7249
  if (TSDB_CODE_SUCCESS == code) {
×
7250
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId2, pNode->dnodeId2);
×
7251
  }
7252
  if (TSDB_CODE_SUCCESS == code) {
×
7253
    code = tjsonAddIntegerToObject(pJson, jkRedistributeVgroupStmtDnodeId3, pNode->dnodeId3);
×
7254
  }
7255
  if (TSDB_CODE_SUCCESS == code) {
×
7256
    code = nodeListToJson(pJson, jkRedistributeVgroupStmtDnodes, pNode->pDnodes);
×
7257
  }
7258

7259
  return code;
×
7260
}
7261

7262
static int32_t jsonToRedistributeVgroupStmt(const SJson* pJson, void* pObj) {
×
7263
  SRedistributeVgroupStmt* pNode = (SRedistributeVgroupStmt*)pObj;
×
7264

7265
  int32_t code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtVgroupId, &pNode->vgId);
×
7266
  if (TSDB_CODE_SUCCESS == code) {
×
7267
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId1, &pNode->dnodeId1);
×
7268
  }
7269
  if (TSDB_CODE_SUCCESS == code) {
×
7270
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId2, &pNode->dnodeId2);
×
7271
  }
7272
  if (TSDB_CODE_SUCCESS == code) {
×
7273
    code = tjsonGetIntValue(pJson, jkRedistributeVgroupStmtDnodeId3, &pNode->dnodeId3);
×
7274
  }
7275
  if (TSDB_CODE_SUCCESS == code) {
×
7276
    code = jsonToNodeList(pJson, jkRedistributeVgroupStmtDnodes, &pNode->pDnodes);
×
7277
  }
7278

7279
  return code;
×
7280
}
7281

7282
static const char* jkSplitVgroupStmtVgroupId = "VgroupId";
7283

7284
static int32_t splitVgroupStmtToJson(const void* pObj, SJson* pJson) {
×
7285
  const SSplitVgroupStmt* pNode = (const SSplitVgroupStmt*)pObj;
×
7286
  return tjsonAddIntegerToObject(pJson, jkSplitVgroupStmtVgroupId, pNode->vgId);
×
7287
}
7288

7289
static int32_t jsonToSplitVgroupStmt(const SJson* pJson, void* pObj) {
×
7290
  SSplitVgroupStmt* pNode = (SSplitVgroupStmt*)pObj;
×
7291
  return tjsonGetIntValue(pJson, jkSplitVgroupStmtVgroupId, &pNode->vgId);
×
7292
}
7293

7294
static const char* jkGrantStmtUserName = "UserName";
7295
static const char* jkGrantStmtObjName = "ObjName";
7296
static const char* jkGrantStmtPrivileges = "Privileges";
7297

7298
static int32_t grantStmtToJson(const void* pObj, SJson* pJson) {
×
7299
  const SGrantStmt* pNode = (const SGrantStmt*)pObj;
×
7300

7301
  int32_t code = tjsonAddStringToObject(pJson, jkGrantStmtUserName, pNode->userName);
×
7302
  if (TSDB_CODE_SUCCESS == code) {
×
7303
    code = tjsonAddStringToObject(pJson, jkGrantStmtObjName, pNode->objName);
×
7304
  }
7305
  if (TSDB_CODE_SUCCESS == code) {
×
7306
    code = tjsonAddIntegerToObject(pJson, jkGrantStmtPrivileges, pNode->privileges);
×
7307
  }
7308

7309
  return code;
×
7310
}
7311

7312
static int32_t jsonToGrantStmt(const SJson* pJson, void* pObj) {
×
7313
  SGrantStmt* pNode = (SGrantStmt*)pObj;
×
7314

7315
  int32_t code = tjsonGetStringValue(pJson, jkGrantStmtUserName, pNode->userName);
×
7316
  if (TSDB_CODE_SUCCESS == code) {
×
7317
    code = tjsonGetStringValue(pJson, jkGrantStmtObjName, pNode->objName);
×
7318
  }
7319
  if (TSDB_CODE_SUCCESS == code) {
×
7320
    code = tjsonGetBigIntValue(pJson, jkGrantStmtPrivileges, &pNode->privileges);
×
7321
  }
7322

7323
  return code;
×
7324
}
7325

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

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

7330
static const char* jkShowStmtDbName = "DbName";
7331
static const char* jkShowStmtTbName = "TbName";
7332
static const char* jkShowStmtTableCondType = "TableCondType";
7333

7334
static int32_t showStmtToJson(const void* pObj, SJson* pJson) {
×
7335
  const SShowStmt* pNode = (const SShowStmt*)pObj;
×
7336

7337
  int32_t code = tjsonAddObject(pJson, jkShowStmtDbName, nodeToJson, pNode->pDbName);
×
7338
  if (TSDB_CODE_SUCCESS == code) {
×
7339
    code = tjsonAddObject(pJson, jkShowStmtTbName, nodeToJson, pNode->pTbName);
×
7340
  }
7341
  if (TSDB_CODE_SUCCESS == code) {
×
7342
    code = tjsonAddIntegerToObject(pJson, jkShowStmtTableCondType, pNode->tableCondType);
×
7343
  }
7344

7345
  return code;
×
7346
}
7347

7348
static int32_t jsonToShowStmt(const SJson* pJson, void* pObj) {
×
7349
  SShowStmt* pNode = (SShowStmt*)pObj;
×
7350

7351
  int32_t code = jsonToNodeObject(pJson, jkShowStmtDbName, &pNode->pDbName);
×
7352
  if (TSDB_CODE_SUCCESS == code) {
×
7353
    code = jsonToNodeObject(pJson, jkShowStmtTbName, &pNode->pTbName);
×
7354
  }
7355
  if (TSDB_CODE_SUCCESS == code) {
×
7356
    tjsonGetNumberValue(pJson, jkShowStmtTableCondType, pNode->tableCondType, code);
×
7357
  }
7358

7359
  return code;
×
7360
}
7361

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7450
static int32_t showUsageStmtStmtToJson(const void* pObj, SJson* pJson) { return showStmtToJson(pObj, pJson); }
×
7451
static int32_t  jsonToShowUsageStmt(const SJson* pJson, void* pObj) { return jsonToShowStmt(pJson, pObj); }
×
7452

7453
static const char* jkShowDnodeVariablesStmtDnodeId = "DnodeId";
7454
static const char* jkShowDnodeVariablesStmtLikePattern = "LikePattern";
7455

7456
static int32_t showDnodeVariablesStmtToJson(const void* pObj, SJson* pJson) {
×
7457
  const SShowDnodeVariablesStmt* pNode = (const SShowDnodeVariablesStmt*)pObj;
×
7458

7459
  int32_t code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtDnodeId, nodeToJson, pNode->pDnodeId);
×
7460
  if (TSDB_CODE_SUCCESS == code) {
×
7461
    code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtLikePattern, nodeToJson, pNode->pLikePattern);
×
7462
  }
7463

7464
  return code;
×
7465
}
7466

7467
static int32_t jsonToShowDnodeVariablesStmt(const SJson* pJson, void* pObj) {
×
7468
  SShowDnodeVariablesStmt* pNode = (SShowDnodeVariablesStmt*)pObj;
×
7469

7470
  int32_t code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtDnodeId, &pNode->pDnodeId);
×
7471
  if (TSDB_CODE_SUCCESS == code) {
×
7472
    code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtLikePattern, &pNode->pLikePattern);
×
7473
  }
7474

7475
  return code;
×
7476
}
7477

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

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

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

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

7486
static const char* jkShowVnodesStmtDnodeId = "DnodeId";
7487
static const char* jkShowVnodesStmtDnodeEndpoint = "DnodeEndpoint";
7488

7489
static int32_t showVnodesStmtToJson(const void* pObj, SJson* pJson) {
×
7490
  const SShowVnodesStmt* pNode = (const SShowVnodesStmt*)pObj;
×
7491

7492
  int32_t code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeId, nodeToJson, pNode->pDnodeId);
×
7493
  if (TSDB_CODE_SUCCESS == code) {
×
7494
    code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeEndpoint, nodeToJson, pNode->pDnodeEndpoint);
×
7495
  }
7496

7497
  return code;
×
7498
}
7499

7500
static int32_t jsonToShowVnodesStmt(const SJson* pJson, void* pObj) {
×
7501
  SShowVnodesStmt* pNode = (SShowVnodesStmt*)pObj;
×
7502

7503
  int32_t code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeId, &pNode->pDnodeId);
×
7504
  if (TSDB_CODE_SUCCESS == code) {
×
7505
    code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeEndpoint, &pNode->pDnodeEndpoint);
×
7506
  }
7507

7508
  return code;
×
7509
}
7510

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

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

7515
static const char* jkShowCreateDatabaseStmtDbName = "DbName";
7516

7517
static int32_t showCreateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
7518
  const SShowCreateDatabaseStmt* pNode = (const SShowCreateDatabaseStmt*)pObj;
×
7519
  return tjsonAddStringToObject(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
×
7520
}
7521

7522
static int32_t jsonToShowCreateDatabaseStmt(const SJson* pJson, void* pObj) {
×
7523
  SShowCreateDatabaseStmt* pNode = (SShowCreateDatabaseStmt*)pObj;
×
7524
  return tjsonGetStringValue(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
×
7525
}
7526

7527
static const char* jkShowCreateTableStmtDbName = "DbName";
7528
static const char* jkShowCreateTableStmtTableName = "TableName";
7529

7530
static int32_t showCreateTableStmtToJson(const void* pObj, SJson* pJson) {
×
7531
  const SShowCreateTableStmt* pNode = (const SShowCreateTableStmt*)pObj;
×
7532

7533
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
×
7534
  if (TSDB_CODE_SUCCESS == code) {
×
7535
    code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
×
7536
  }
7537

7538
  return code;
×
7539
}
7540

7541
static int32_t jsonToShowCreateTableStmt(const SJson* pJson, void* pObj) {
×
7542
  SShowCreateTableStmt* pNode = (SShowCreateTableStmt*)pObj;
×
7543

7544
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
×
7545
  if (TSDB_CODE_SUCCESS == code) {
×
7546
    code = tjsonGetStringValue(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
×
7547
  }
7548

7549
  return code;
×
7550
}
7551

7552
static int32_t showCreateStableStmtToJson(const void* pObj, SJson* pJson) {
×
7553
  return showCreateTableStmtToJson(pObj, pJson);
×
7554
}
7555

7556
static int32_t jsonToShowCreateStableStmt(const SJson* pJson, void* pObj) {
×
7557
  return jsonToShowCreateTableStmt(pJson, pObj);
×
7558
}
7559

7560
static const char* jkShowCreateViewStmtDbName = "DbName";
7561
static const char* jkShowCreateViewStmtViewName = "ViewName";
7562

7563
static int32_t showCreateViewStmtToJson(const void* pObj, SJson* pJson) {
×
7564
  const SShowCreateViewStmt* pNode = (const SShowCreateViewStmt*)pObj;
×
7565

7566
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
7567
  if (TSDB_CODE_SUCCESS == code) {
×
7568
    code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
7569
  }
7570

7571
  return code;
×
7572
}
7573

7574
static int32_t jsonToShowCreateViewStmt(const SJson* pJson, void* pObj) {
×
7575
  SShowCreateViewStmt* pNode = (SShowCreateViewStmt*)pObj;
×
7576

7577
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
7578
  if (TSDB_CODE_SUCCESS == code) {
×
7579
    code = tjsonGetStringValue(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
7580
  }
7581

7582
  return code;
×
7583
}
7584

7585
static const char* jkShowTableDistributedStmtDbName = "DbName";
7586
static const char* jkShowTableDistributedStmtTableName = "TableName";
7587

7588
static int32_t showTableDistributedStmtToJson(const void* pObj, SJson* pJson) {
×
7589
  const SShowTableDistributedStmt* pNode = (const SShowTableDistributedStmt*)pObj;
×
7590

7591
  int32_t code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
×
7592
  if (TSDB_CODE_SUCCESS == code) {
×
7593
    code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
×
7594
  }
7595

7596
  return code;
×
7597
}
7598

7599
static int32_t jsonToShowTableDistributedStmt(const SJson* pJson, void* pObj) {
×
7600
  SShowTableDistributedStmt* pNode = (SShowTableDistributedStmt*)pObj;
×
7601

7602
  int32_t code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
×
7603
  if (TSDB_CODE_SUCCESS == code) {
×
7604
    code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
×
7605
  }
7606

7607
  return code;
×
7608
}
7609

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

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

7614
static const char* jkShowTableTagsStmtDbName = "DbName";
7615
static const char* jkShowTableTagsStmtTbName = "TbName";
7616
static const char* jkShowTableTagsStmtTags = "Tags";
7617

7618
static int32_t showTableTagsStmtToJson(const void* pObj, SJson* pJson) {
×
7619
  const SShowTableTagsStmt* pNode = (const SShowTableTagsStmt*)pObj;
×
7620

7621
  int32_t code = tjsonAddObject(pJson, jkShowTableTagsStmtDbName, nodeToJson, pNode->pDbName);
×
7622
  if (TSDB_CODE_SUCCESS == code) {
×
7623
    code = tjsonAddObject(pJson, jkShowTableTagsStmtTbName, nodeToJson, pNode->pTbName);
×
7624
  }
7625
  if (TSDB_CODE_SUCCESS == code) {
×
7626
    code = nodeListToJson(pJson, jkShowTableTagsStmtTags, pNode->pTags);
×
7627
  }
7628

7629
  return code;
×
7630
}
7631

7632
static int32_t jsonToShowTableTagsStmt(const SJson* pJson, void* pObj) {
×
7633
  SShowTableTagsStmt* pNode = (SShowTableTagsStmt*)pObj;
×
7634

7635
  int32_t code = jsonToNodeObject(pJson, jkShowTableTagsStmtDbName, &pNode->pDbName);
×
7636
  if (TSDB_CODE_SUCCESS == code) {
×
7637
    code = jsonToNodeObject(pJson, jkShowTableTagsStmtTbName, &pNode->pTbName);
×
7638
  }
7639
  if (TSDB_CODE_SUCCESS == code) {
×
7640
    code = jsonToNodeList(pJson, jkShowTableTagsStmtTags, &pNode->pTags);
×
7641
  }
7642

7643
  return code;
×
7644
}
7645

7646
static const char* jkDeleteStmtFromTable = "FromTable";
7647
static const char* jkDeleteStmtWhere = "Where";
7648
static const char* jkDeleteStmtCountFunc = "CountFunc";
7649
static const char* jkDeleteStmtTagIndexCond = "TagIndexCond";
7650
static const char* jkDeleteStmtTimeRangeStartKey = "TimeRangeStartKey";
7651
static const char* jkDeleteStmtTimeRangeEndKey = "TimeRangeEndKey";
7652
static const char* jkDeleteStmtPrecision = "Precision";
7653
static const char* jkDeleteStmtDeleteZeroRows = "DeleteZeroRows";
7654

7655
static int32_t deleteStmtToJson(const void* pObj, SJson* pJson) {
×
7656
  const SDeleteStmt* pNode = (const SDeleteStmt*)pObj;
×
7657

7658
  int32_t code = tjsonAddObject(pJson, jkDeleteStmtFromTable, nodeToJson, pNode->pFromTable);
×
7659
  if (TSDB_CODE_SUCCESS == code) {
×
7660
    code = tjsonAddObject(pJson, jkDeleteStmtWhere, nodeToJson, pNode->pWhere);
×
7661
  }
7662
  if (TSDB_CODE_SUCCESS == code) {
×
7663
    code = tjsonAddObject(pJson, jkDeleteStmtCountFunc, nodeToJson, pNode->pCountFunc);
×
7664
  }
7665
  if (TSDB_CODE_SUCCESS == code) {
×
7666
    code = tjsonAddObject(pJson, jkDeleteStmtTagIndexCond, nodeToJson, pNode->pTagCond);
×
7667
  }
7668
  if (TSDB_CODE_SUCCESS == code) {
×
7669
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeStartKey, pNode->timeRange.skey);
×
7670
  }
7671
  if (TSDB_CODE_SUCCESS == code) {
×
7672
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtTimeRangeEndKey, pNode->timeRange.ekey);
×
7673
  }
7674
  if (TSDB_CODE_SUCCESS == code) {
×
7675
    code = tjsonAddIntegerToObject(pJson, jkDeleteStmtPrecision, pNode->precision);
×
7676
  }
7677
  if (TSDB_CODE_SUCCESS == code) {
×
7678
    code = tjsonAddBoolToObject(pJson, jkDeleteStmtDeleteZeroRows, pNode->deleteZeroRows);
×
7679
  }
7680

7681
  return code;
×
7682
}
7683

7684
static int32_t jsonToDeleteStmt(const SJson* pJson, void* pObj) {
×
7685
  SDeleteStmt* pNode = (SDeleteStmt*)pObj;
×
7686

7687
  int32_t code = jsonToNodeObject(pJson, jkDeleteStmtFromTable, &pNode->pFromTable);
×
7688
  if (TSDB_CODE_SUCCESS == code) {
×
7689
    code = jsonToNodeObject(pJson, jkDeleteStmtWhere, &pNode->pWhere);
×
7690
  }
7691
  if (TSDB_CODE_SUCCESS == code) {
×
7692
    code = jsonToNodeObject(pJson, jkDeleteStmtCountFunc, &pNode->pCountFunc);
×
7693
  }
7694
  if (TSDB_CODE_SUCCESS == code) {
×
7695
    code = jsonToNodeObject(pJson, jkDeleteStmtTagIndexCond, &pNode->pTagCond);
×
7696
  }
7697
  if (TSDB_CODE_SUCCESS == code) {
×
7698
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeStartKey, &pNode->timeRange.skey);
×
7699
  }
7700
  if (TSDB_CODE_SUCCESS == code) {
×
7701
    code = tjsonGetBigIntValue(pJson, jkDeleteStmtTimeRangeEndKey, &pNode->timeRange.ekey);
×
7702
  }
7703
  if (TSDB_CODE_SUCCESS == code) {
×
7704
    code = tjsonGetUTinyIntValue(pJson, jkDeleteStmtPrecision, &pNode->precision);
×
7705
  }
7706
  if (TSDB_CODE_SUCCESS == code) {
×
7707
    code = tjsonGetBoolValue(pJson, jkDeleteStmtDeleteZeroRows, &pNode->deleteZeroRows);
×
7708
  }
7709

7710
  return code;
×
7711
}
7712

7713
static const char* jkInsertStmtTable = "Table";
7714
static const char* jkInsertStmtCols = "Cols";
7715
static const char* jkInsertStmtQuery = "Query";
7716
static const char* jkInsertStmtPrecision = "Precision";
7717

7718
static int32_t insertStmtToJson(const void* pObj, SJson* pJson) {
×
7719
  const SInsertStmt* pNode = (const SInsertStmt*)pObj;
×
7720

7721
  int32_t code = tjsonAddObject(pJson, jkInsertStmtTable, nodeToJson, pNode->pTable);
×
7722
  if (TSDB_CODE_SUCCESS == code) {
×
7723
    code = nodeListToJson(pJson, jkInsertStmtCols, pNode->pCols);
×
7724
  }
7725
  if (TSDB_CODE_SUCCESS == code) {
×
7726
    code = tjsonAddObject(pJson, jkInsertStmtQuery, nodeToJson, pNode->pQuery);
×
7727
  }
7728
  if (TSDB_CODE_SUCCESS == code) {
×
7729
    code = tjsonAddIntegerToObject(pJson, jkInsertStmtPrecision, pNode->precision);
×
7730
  }
7731

7732
  return code;
×
7733
}
7734

7735
static int32_t jsonToInsertStmt(const SJson* pJson, void* pObj) {
×
7736
  SInsertStmt* pNode = (SInsertStmt*)pObj;
×
7737

7738
  int32_t code = jsonToNodeObject(pJson, jkInsertStmtTable, &pNode->pTable);
×
7739
  if (TSDB_CODE_SUCCESS == code) {
×
7740
    code = jsonToNodeList(pJson, jkInsertStmtCols, &pNode->pCols);
×
7741
  }
7742
  if (TSDB_CODE_SUCCESS == code) {
×
7743
    code = jsonToNodeObject(pJson, jkInsertStmtQuery, &pNode->pQuery);
×
7744
  }
7745
  if (TSDB_CODE_SUCCESS == code) {
×
7746
    code = tjsonGetUTinyIntValue(pJson, jkInsertStmtPrecision, &pNode->precision);
×
7747
  }
7748

7749
  return code;
×
7750
}
7751

7752
static const char* jkTSMAOptionFuncs = "Funcs";
7753
static const char* jkTSMAOptionCols = "Cols";
7754
static const char* jkTSMAOptionInterval = "Interval";
7755
static const char* jkTSMAOptionTsPrecision = "Precision";
7756

7757
static int32_t tsmaOptionToJson(const void* pObj, SJson* pJson) {
×
7758
  const STSMAOptions* pNode = (const STSMAOptions*)pObj;
×
7759
  int32_t             code = nodeListToJson(pJson, jkTSMAOptionFuncs, pNode->pFuncs);
×
7760
  if (TSDB_CODE_SUCCESS == code) {
×
7761
    code = tjsonAddObject(pJson, jkTSMAOptionInterval, nodeToJson, pNode->pInterval);
×
7762
  }
7763
  if (TSDB_CODE_SUCCESS == code) {
×
7764
    code = tjsonAddIntegerToObject(pJson, jkTSMAOptionTsPrecision, pNode->tsPrecision);
×
7765
  }
7766
  return code;
×
7767
}
7768

7769
static int32_t jsonToTSMAOption(const SJson* pJson, void* pObj) {
×
7770
  STSMAOptions* pNode = (STSMAOptions*)pObj;
×
7771
  int32_t       code = jsonToNodeList(pJson, jkTSMAOptionFuncs, &pNode->pFuncs);
×
7772
  if (TSDB_CODE_SUCCESS == code) {
×
7773
    code = jsonToNodeObject(pJson, jkTSMAOptionInterval, &pNode->pInterval);
×
7774
  }
7775
  if (TSDB_CODE_SUCCESS == code) {
×
7776
    code = tjsonGetUTinyIntValue(pJson, jkTSMAOptionTsPrecision, &pNode->tsPrecision);
×
7777
  }
7778
  return code;
×
7779
}
7780

7781
static const char* jkCreateTSMAStmtIgnoreExists = "IgnoreExists";
7782
static const char* jkCreateTSMAStmtTsmaName = "TSMAName";
7783
static const char* jkCreateTSMAStmtDbName = "DbName";
7784
static const char* jkCreateTSMAStmtTableName = "TableName";
7785
static const char* jkCreateTSMAStmtpOptions = "Options";
7786

7787
static int32_t createTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
7788
  const SCreateTSMAStmt* pNode = (const SCreateTSMAStmt*)pObj;
×
7789
  int32_t                code = tjsonAddBoolToObject(pJson, jkCreateTSMAStmtIgnoreExists, pNode->ignoreExists);
×
7790
  if (TSDB_CODE_SUCCESS == code) {
×
7791
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
7792
  }
7793
  if (TSDB_CODE_SUCCESS == code) {
×
7794
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
7795
  }
7796
  if (TSDB_CODE_SUCCESS == code) {
×
7797
    code = tjsonAddStringToObject(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
7798
  }
7799
  if (TSDB_CODE_SUCCESS == code) {
×
7800
    code = tjsonAddObject(pJson, jkCreateTSMAStmtpOptions, nodeToJson, pNode->pOptions);
×
7801
  }
7802
  return code;
×
7803
}
7804

7805
static int32_t jsonToCreateTSMAStmt(const SJson* pJson, void* pObj) {
×
7806
  SCreateTSMAStmt* pNode = (SCreateTSMAStmt*)pObj;
×
7807
  int32_t          code = tjsonGetBoolValue(pJson, jkCreateTSMAStmtIgnoreExists, &pNode->ignoreExists);
×
7808
  if (TSDB_CODE_SUCCESS == code) {
×
7809
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTsmaName, pNode->tsmaName);
×
7810
  }
7811
  if (TSDB_CODE_SUCCESS == code) {
×
7812
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtDbName, pNode->dbName);
×
7813
  }
7814
  if (TSDB_CODE_SUCCESS == code) {
×
7815
    code = tjsonGetStringValue(pJson, jkCreateTSMAStmtTableName, pNode->tableName);
×
7816
  }
7817
  if (TSDB_CODE_SUCCESS == code) {
×
7818
    code = jsonToNodeObject(pJson, jkCreateTSMAStmtpOptions, (SNode**)&pNode->pOptions);
×
7819
  }
7820
  return code;
×
7821
}
7822

7823
static const char* jkDropTSMAStmtIgnoreNotExists = "IgnoreNotExists";
7824
static const char* jkDropTSMAStmtDbName = "DbName";
7825
static const char* jkDropTSMAStmtTsmaName = "TSMAName";
7826

7827
static int32_t dropTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
7828
  const SDropTSMAStmt* pNode = (const SDropTSMAStmt*)pObj;
×
7829
  int32_t              code = tjsonAddBoolToObject(pJson, jkDropTSMAStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7830
  if (TSDB_CODE_SUCCESS == code) {
×
7831
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
7832
  }
7833
  if (TSDB_CODE_SUCCESS == code) {
×
7834
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
7835
  }
7836
  return code;
×
7837
}
7838

7839
static int32_t jsonToDropTSMAStmt(const SJson* pJson, void* pObj) {
×
7840
  SDropTSMAStmt* pNode = (SDropTSMAStmt*)pObj;
×
7841
  int32_t        code = tjsonGetBoolValue(pJson, jkDropTSMAStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7842
  if (TSDB_CODE_SUCCESS == code) {
×
7843
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
7844
  }
7845
  if (TSDB_CODE_SUCCESS == code) {
×
7846
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
7847
  }
7848
  return code;
×
7849
}
7850

7851
static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
2,788,657✔
7852
  switch (nodeType(pObj)) {
2,788,657!
7853
    case QUERY_NODE_COLUMN:
822,314✔
7854
      return columnNodeToJson(pObj, pJson);
822,314✔
7855
    case QUERY_NODE_VALUE:
60,859✔
7856
      return valueNodeToJson(pObj, pJson);
60,859✔
7857
    case QUERY_NODE_OPERATOR:
6,595✔
7858
      return operatorNodeToJson(pObj, pJson);
6,595✔
7859
    case QUERY_NODE_LOGIC_CONDITION:
1,950✔
7860
      return logicConditionNodeToJson(pObj, pJson);
1,950✔
7861
    case QUERY_NODE_FUNCTION:
406,541✔
7862
      return functionNodeToJson(pObj, pJson);
406,541✔
7863
    case QUERY_NODE_REAL_TABLE:
1,483✔
7864
      return realTableNodeToJson(pObj, pJson);
1,483✔
7865
    case QUERY_NODE_TEMP_TABLE:
1✔
7866
      return tempTableNodeToJson(pObj, pJson);
1✔
7867
    case QUERY_NODE_JOIN_TABLE:
×
7868
      return joinTableNodeToJson(pObj, pJson);
×
7869
    case QUERY_NODE_GROUPING_SET:
×
7870
      return groupingSetNodeToJson(pObj, pJson);
×
7871
    case QUERY_NODE_ORDER_BY_EXPR:
×
7872
      return orderByExprNodeToJson(pObj, pJson);
×
7873
    case QUERY_NODE_LIMIT:
×
7874
      return limitNodeToJson(pObj, pJson);
×
7875
    case QUERY_NODE_STATE_WINDOW:
60✔
7876
      return stateWindowNodeToJson(pObj, pJson);
60✔
7877
    case QUERY_NODE_SESSION_WINDOW:
92✔
7878
      return sessionWindowNodeToJson(pObj, pJson);
92✔
7879
    case QUERY_NODE_INTERVAL_WINDOW:
710✔
7880
      return intervalWindowNodeToJson(pObj, pJson);
710✔
7881
    case QUERY_NODE_NODE_LIST:
3,059✔
7882
      return nodeListNodeToJson(pObj, pJson);
3,059✔
7883
    case QUERY_NODE_FILL:
156✔
7884
      return fillNodeToJson(pObj, pJson);
156✔
7885
    case QUERY_NODE_RAW_EXPR:
×
7886
      break;
×
7887
    case QUERY_NODE_TARGET:
705,093✔
7888
      return targetNodeToJson(pObj, pJson);
705,093✔
7889
    case QUERY_NODE_DATABLOCK_DESC:
29,562✔
7890
      return dataBlockDescNodeToJson(pObj, pJson);
29,562✔
7891
    case QUERY_NODE_SLOT_DESC:
704,446✔
7892
      return slotDescNodeToJson(pObj, pJson);
704,446✔
7893
    case QUERY_NODE_COLUMN_DEF:
×
7894
      return columnDefNodeToJson(pObj, pJson);
×
7895
    case QUERY_NODE_DOWNSTREAM_SOURCE:
×
7896
      return downstreamSourceNodeToJson(pObj, pJson);
×
7897
    case QUERY_NODE_DATABASE_OPTIONS:
×
7898
      return databaseOptionsToJson(pObj, pJson);
×
7899
    case QUERY_NODE_TABLE_OPTIONS:
×
7900
      return tableOptionsToJson(pObj, pJson);
×
7901
    case QUERY_NODE_COLUMN_OPTIONS:
×
7902
      return columnOptionsToJson(pObj, pJson);
×
7903
    case QUERY_NODE_INDEX_OPTIONS:
×
7904
      return indexOptionsToJson(pObj, pJson);
×
7905
    case QUERY_NODE_EXPLAIN_OPTIONS:
×
7906
      return explainOptionsToJson(pObj, pJson);
×
7907
    case QUERY_NODE_STREAM_OPTIONS:
×
7908
      return streamOptionsToJson(pObj, pJson);
×
7909
    case QUERY_NODE_LEFT_VALUE:
×
7910
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to serialize.
×
7911
    case QUERY_NODE_WHEN_THEN:
85✔
7912
      return whenThenNodeToJson(pObj, pJson);
85✔
7913
    case QUERY_NODE_CASE_WHEN:
85✔
7914
      return caseWhenNodeToJson(pObj, pJson);
85✔
7915
    case QUERY_NODE_EVENT_WINDOW:
9✔
7916
      return eventWindowNodeToJson(pObj, pJson);
9✔
7917
    case QUERY_NODE_WINDOW_OFFSET:
×
7918
      return windowOffsetNodeToJson(pObj, pJson);
×
7919
    case QUERY_NODE_COUNT_WINDOW:
13✔
7920
      return countWindowNodeToJson(pObj, pJson);
13✔
7921
    case QUERY_NODE_ANOMALY_WINDOW:
×
7922
      return anomalyWindowNodeToJson(pObj, pJson);
×
7923
    case QUERY_NODE_SET_OPERATOR:
×
7924
      return setOperatorToJson(pObj, pJson);
×
7925
    case QUERY_NODE_SELECT_STMT:
1,484✔
7926
      return selectStmtToJson(pObj, pJson);
1,484✔
7927
    case QUERY_NODE_VNODE_MODIFY_STMT:
×
7928
      return vnodeModifyStmtToJson(pObj, pJson);
×
7929
    case QUERY_NODE_CREATE_DATABASE_STMT:
×
7930
      return createDatabaseStmtToJson(pObj, pJson);
×
7931
    case QUERY_NODE_ALTER_DATABASE_STMT:
×
7932
      return alterDatabaseStmtToJson(pObj, pJson);
×
7933
    case QUERY_NODE_TRIM_DATABASE_STMT:
×
7934
      return trimDatabaseStmtToJson(pObj, pJson);
×
7935
    case QUERY_NODE_S3MIGRATE_DATABASE_STMT:
×
7936
      return s3migrateDatabaseStmtToJson(pObj, pJson);
×
7937
    case QUERY_NODE_CREATE_TABLE_STMT:
×
7938
      return createTableStmtToJson(pObj, pJson);
×
7939
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
×
7940
      return createSubTableClauseToJson(pObj, pJson);
×
7941
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
×
7942
      return createMultiTablesStmtToJson(pObj, pJson);
×
7943
    case QUERY_NODE_DROP_TABLE_CLAUSE:
×
7944
      return dropTableClauseToJson(pObj, pJson);
×
7945
    case QUERY_NODE_DROP_TABLE_STMT:
×
7946
      return dropTableStmtToJson(pObj, pJson);
×
7947
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
×
7948
      return dropStableStmtToJson(pObj, pJson);
×
7949
    case QUERY_NODE_ALTER_TABLE_STMT:
×
7950
      return alterTableStmtToJson(pObj, pJson);
×
7951
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
×
7952
      return alterStableStmtToJson(pObj, pJson);
×
7953
    case QUERY_NODE_CREATE_USER_STMT:
×
7954
      return createUserStmtToJson(pObj, pJson);
×
7955
    case QUERY_NODE_ALTER_USER_STMT:
×
7956
      return alterUserStmtToJson(pObj, pJson);
×
7957
    case QUERY_NODE_DROP_USER_STMT:
×
7958
      return dropUserStmtToJson(pObj, pJson);
×
7959
    case QUERY_NODE_USE_DATABASE_STMT:
×
7960
      return useDatabaseStmtToJson(pObj, pJson);
×
7961
    case QUERY_NODE_CREATE_DNODE_STMT:
×
7962
      return createDnodeStmtToJson(pObj, pJson);
×
7963
    case QUERY_NODE_DROP_DNODE_STMT:
×
7964
      return dropDnodeStmtToJson(pObj, pJson);
×
7965
    case QUERY_NODE_ALTER_DNODE_STMT:
×
7966
      return alterDnodeStmtToJson(pObj, pJson);
×
7967
    case QUERY_NODE_CREATE_INDEX_STMT:
×
7968
      return createIndexStmtToJson(pObj, pJson);
×
7969
    case QUERY_NODE_DROP_INDEX_STMT:
×
7970
      return dropIndexStmtToJson(pObj, pJson);
×
7971
    case QUERY_NODE_CREATE_QNODE_STMT:
×
7972
      return createQnodeStmtToJson(pObj, pJson);
×
7973
    case QUERY_NODE_DROP_QNODE_STMT:
×
7974
      return dropQnodeStmtToJson(pObj, pJson);
×
7975
    case QUERY_NODE_CREATE_ANODE_STMT:
×
7976
      return createAnodeStmtToJson(pObj, pJson);
×
7977
    case QUERY_NODE_DROP_ANODE_STMT:
×
7978
      return dropAnodeStmtToJson(pObj, pJson);
×
7979
    case QUERY_NODE_UPDATE_ANODE_STMT:
×
7980
      return updateAnodeStmtToJson(pObj, pJson);
×
7981
    case QUERY_NODE_CREATE_SNODE_STMT:
×
7982
      return createSnodeStmtToJson(pObj, pJson);
×
7983
    case QUERY_NODE_DROP_SNODE_STMT:
×
7984
      return dropSnodeStmtToJson(pObj, pJson);
×
7985
    case QUERY_NODE_CREATE_MNODE_STMT:
×
7986
      return createMnodeStmtToJson(pObj, pJson);
×
7987
    case QUERY_NODE_DROP_MNODE_STMT:
×
7988
      return dropMnodeStmtToJson(pObj, pJson);
×
7989
    case QUERY_NODE_CREATE_TOPIC_STMT:
×
7990
      return createTopicStmtToJson(pObj, pJson);
×
7991
    case QUERY_NODE_DROP_TOPIC_STMT:
×
7992
      return dropTopicStmtToJson(pObj, pJson);
×
7993
    case QUERY_NODE_DROP_CGROUP_STMT:
×
7994
      return dropConsumerGroupStmtToJson(pObj, pJson);
×
7995
    case QUERY_NODE_ALTER_LOCAL_STMT:
×
7996
      return alterLocalStmtToJson(pObj, pJson);
×
7997
    case QUERY_NODE_EXPLAIN_STMT:
×
7998
      return explainStmtToJson(pObj, pJson);
×
7999
    case QUERY_NODE_DESCRIBE_STMT:
×
8000
      return describeStmtToJson(pObj, pJson);
×
8001
    case QUERY_NODE_COMPACT_DATABASE_STMT:
×
8002
      return compactDatabaseStmtToJson(pObj, pJson);
×
8003
    case QUERY_NODE_CREATE_STREAM_STMT:
×
8004
      return createStreamStmtToJson(pObj, pJson);
×
8005
    case QUERY_NODE_DROP_STREAM_STMT:
×
8006
      return dropStreamStmtToJson(pObj, pJson);
×
8007
    case QUERY_NODE_BALANCE_VGROUP_STMT:
×
8008
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to serialize.
×
8009
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
×
8010
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to serialize.
×
8011
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
8012
      return TSDB_CODE_SUCCESS;
×
8013
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
8014
      return mergeVgroupStmtToJson(pObj, pJson);
×
8015
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
×
8016
      return redistributeVgroupStmtToJson(pObj, pJson);
×
8017
    case QUERY_NODE_SPLIT_VGROUP_STMT:
×
8018
      return splitVgroupStmtToJson(pObj, pJson);
×
8019
    case QUERY_NODE_GRANT_STMT:
×
8020
      return grantStmtToJson(pObj, pJson);
×
8021
    case QUERY_NODE_REVOKE_STMT:
×
8022
      return revokeStmtToJson(pObj, pJson);
×
8023
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
8024
      return alterClusterStmtToJson(pObj, pJson);
×
8025
    case QUERY_NODE_SHOW_DNODES_STMT:
×
8026
      return showDnodesStmtToJson(pObj, pJson);
×
8027
    case QUERY_NODE_SHOW_MNODES_STMT:
×
8028
      return showMnodesStmtToJson(pObj, pJson);
×
8029
    case QUERY_NODE_SHOW_QNODES_STMT:
×
8030
      return showQnodesStmtToJson(pObj, pJson);
×
8031
    case QUERY_NODE_SHOW_ANODES_STMT:
×
8032
      return showAnodesStmtToJson(pObj, pJson);
×
8033
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
8034
      return showAnodesFullStmtToJson(pObj, pJson);
×
8035
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
8036
      return showArbGroupsStmtToJson(pObj, pJson);
×
8037
    case QUERY_NODE_SHOW_CLUSTER_STMT:
×
8038
      return showClusterStmtToJson(pObj, pJson);
×
8039
    case QUERY_NODE_SHOW_DATABASES_STMT:
×
8040
      return showDatabasesStmtToJson(pObj, pJson);
×
8041
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
×
8042
      return showFunctionsStmtToJson(pObj, pJson);
×
8043
    case QUERY_NODE_SHOW_INDEXES_STMT:
×
8044
      return showIndexesStmtToJson(pObj, pJson);
×
8045
    case QUERY_NODE_SHOW_STABLES_STMT:
×
8046
      return showStablesStmtToJson(pObj, pJson);
×
8047
    case QUERY_NODE_SHOW_STREAMS_STMT:
×
8048
      return showStreamsStmtToJson(pObj, pJson);
×
8049
    case QUERY_NODE_SHOW_TABLES_STMT:
×
8050
      return showTablesStmtToJson(pObj, pJson);
×
8051
    case QUERY_NODE_SHOW_TAGS_STMT:
×
8052
      return showTagsStmtToJson(pObj, pJson);
×
8053
    case QUERY_NODE_SHOW_USERS_STMT:
×
8054
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
8055
      return showUsersStmtToJson(pObj, pJson);
×
8056
    case QUERY_NODE_SHOW_VGROUPS_STMT:
×
8057
      return showVgroupsStmtToJson(pObj, pJson);
×
8058
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
×
8059
      return showConsumersStmtToJson(pObj, pJson);
×
8060
    case QUERY_NODE_SHOW_VARIABLES_STMT:
×
8061
      return showVariablesStmtToJson(pObj, pJson);
×
8062
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
8063
      return showGrantsFullStmtToJson(pObj, pJson);
×
8064
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
8065
      return showGrantsLogsStmtToJson(pObj, pJson);
×
8066
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
8067
      return showClusterMachinesStmtToJson(pObj, pJson);
×
8068
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
8069
      return showEncryptionsStmtToJson(pObj, pJson);
×
8070
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
×
8071
      return showDnodeVariablesStmtToJson(pObj, pJson);
×
8072
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
×
8073
      return showTransactionsStmtToJson(pObj, pJson);
×
8074
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
×
8075
      return showSubscriptionsStmtToJson(pObj, pJson);
×
8076
    case QUERY_NODE_SHOW_VNODES_STMT:
×
8077
      return showVnodesStmtToJson(pObj, pJson);
×
8078
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
×
8079
      return showUserPrivilegesStmtToJson(pObj, pJson);
×
8080
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
×
8081
      return showCreateDatabaseStmtToJson(pObj, pJson);
×
8082
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
×
8083
      return showCreateTableStmtToJson(pObj, pJson);
×
8084
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
×
8085
      return showCreateStableStmtToJson(pObj, pJson);
×
8086
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
8087
      return showCreateViewStmtToJson(pObj, pJson);
×
8088
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
×
8089
      return showTableDistributedStmtToJson(pObj, pJson);
×
8090
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
×
8091
      return showLocalVariablesStmtToJson(pObj, pJson);
×
8092
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
×
8093
      return showTableTagsStmtToJson(pObj, pJson);
×
8094
    case QUERY_NODE_SHOW_USAGE_STMT:
×
8095
      return showUsageStmtStmtToJson(pObj, pJson);
×
8096
    case QUERY_NODE_DELETE_STMT:
×
8097
      return deleteStmtToJson(pObj, pJson);
×
8098
    case QUERY_NODE_INSERT_STMT:
×
8099
      return insertStmtToJson(pObj, pJson);
×
8100
    case QUERY_NODE_LOGIC_PLAN_SCAN:
×
8101
      return logicScanNodeToJson(pObj, pJson);
×
8102
    case QUERY_NODE_LOGIC_PLAN_JOIN:
×
8103
      return logicJoinNodeToJson(pObj, pJson);
×
8104
    case QUERY_NODE_LOGIC_PLAN_AGG:
×
8105
      return logicAggNodeToJson(pObj, pJson);
×
8106
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
×
8107
      return logicProjectNodeToJson(pObj, pJson);
×
8108
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
×
8109
      return logicVnodeModifyNodeToJson(pObj, pJson);
×
8110
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
×
8111
      return logicExchangeNodeToJson(pObj, pJson);
×
8112
    case QUERY_NODE_LOGIC_PLAN_MERGE:
×
8113
      return logicMergeNodeToJson(pObj, pJson);
×
8114
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
×
8115
      return logicWindowNodeToJson(pObj, pJson);
×
8116
    case QUERY_NODE_LOGIC_PLAN_FILL:
×
8117
      return logicFillNodeToJson(pObj, pJson);
×
8118
    case QUERY_NODE_LOGIC_PLAN_SORT:
×
8119
      return logicSortNodeToJson(pObj, pJson);
×
8120
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
×
8121
      return logicPartitionNodeToJson(pObj, pJson);
×
8122
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
×
8123
      return logicIndefRowsFuncNodeToJson(pObj, pJson);
×
8124
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
×
8125
      return logicInterpFuncNodeToJson(pObj, pJson);
×
8126
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
8127
      return logicForecastFuncNodeToJson(pObj, pJson);
×
8128
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
8129
      return logicGroupCacheNodeToJson(pObj, pJson);
×
8130
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
8131
      return logicDynQueryCtrlNodeToJson(pObj, pJson);
×
8132
    case QUERY_NODE_LOGIC_SUBPLAN:
×
8133
      return logicSubplanToJson(pObj, pJson);
×
8134
    case QUERY_NODE_LOGIC_PLAN:
×
8135
      return logicPlanToJson(pObj, pJson);
×
8136
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
3✔
8137
      return physiTagScanNodeToJson(pObj, pJson);
3✔
8138
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
×
8139
      return physiScanNodeToJson(pObj, pJson);
×
8140
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
×
8141
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
8142
      return physiLastRowScanNodeToJson(pObj, pJson);
×
8143
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
12,445✔
8144
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
8145
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
8146
      return physiTableScanNodeToJson(pObj, pJson);
12,445✔
8147
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
×
8148
      return physiSysTableScanNodeToJson(pObj, pJson);
×
8149
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
7,666✔
8150
      return physiProjectNodeToJson(pObj, pJson);
7,666✔
8151
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
×
8152
      return physiMergeJoinNodeToJson(pObj, pJson);
×
8153
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
8154
      return physiHashJoinNodeToJson(pObj, pJson);
×
8155
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
48✔
8156
      return physiAggNodeToJson(pObj, pJson);
48✔
8157
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
×
8158
      return physiExchangeNodeToJson(pObj, pJson);
×
8159
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
×
8160
      return physiMergeNodeToJson(pObj, pJson);
×
8161
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
×
8162
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
8163
      return physiSortNodeToJson(pObj, pJson);
×
8164
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
5,258✔
8165
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
8166
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
8167
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
8168
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
8169
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
8170
      return physiIntervalNodeToJson(pObj, pJson);
5,258✔
8171
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
647✔
8172
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
8173
      return physiFillNodeToJson(pObj, pJson);
647✔
8174
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
966✔
8175
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
8176
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
8177
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
8178
      return physiSessionWindowNodeToJson(pObj, pJson);
966✔
8179
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
427✔
8180
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
8181
      return physiStateWindowNodeToJson(pObj, pJson);
427✔
8182
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
261✔
8183
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
8184
      return physiEventWindowNodeToJson(pObj, pJson);
261✔
8185
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
366✔
8186
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
8187
      return physiCountWindowNodeToJson(pObj, pJson);
366✔
8188
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
8189
      return physiAnomalyWindowNodeToJson(pObj, pJson);
×
8190
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
×
8191
      return physiPartitionNodeToJson(pObj, pJson);
×
8192
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
1,435✔
8193
      return physiStreamPartitionNodeToJson(pObj, pJson);
1,435✔
8194
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
×
8195
      return physiIndefRowsFuncNodeToJson(pObj, pJson);
×
8196
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
40✔
8197
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
8198
      return physiInterpFuncNodeToJson(pObj, pJson);
40✔
8199
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
8200
      return physiForecastFuncNodeToJson(pObj, pJson);
×
8201
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
×
8202
      return physiDispatchNodeToJson(pObj, pJson);
×
8203
    case QUERY_NODE_PHYSICAL_PLAN_INSERT:
×
8204
      break;
×
8205
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
×
8206
      return physiQueryInsertNodeToJson(pObj, pJson);
×
8207
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
×
8208
      return physiDeleteNodeToJson(pObj, pJson);
×
8209
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
8210
      return physiGroupCacheNodeToJson(pObj, pJson);
×
8211
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
8212
      return physiDynQueryCtrlNodeToJson(pObj, pJson);
×
8213
    case QUERY_NODE_PHYSICAL_SUBPLAN:
12,448✔
8214
      return subplanToJson(pObj, pJson);
12,448✔
8215
    case QUERY_NODE_PHYSICAL_PLAN:
2,050✔
8216
      return planToJson(pObj, pJson);
2,050✔
8217
    default:
×
8218
      break;
×
8219
  }
8220
  nodesWarn("specificNodeToJson unknown node = %s", nodesNodeName(nodeType(pObj)));
×
8221
  return TSDB_CODE_SUCCESS;
×
8222
}
8223

8224
static int32_t jsonToSpecificNode(const SJson* pJson, void* pObj) {
3,669,576✔
8225
  switch (nodeType(pObj)) {
3,669,576!
8226
    case QUERY_NODE_COLUMN:
1,239,967✔
8227
      return jsonToColumnNode(pJson, pObj);
1,239,967✔
8228
    case QUERY_NODE_VALUE:
92,881✔
8229
      return jsonToValueNode(pJson, pObj);
92,881✔
8230
    case QUERY_NODE_OPERATOR:
16,339✔
8231
      return jsonToOperatorNode(pJson, pObj);
16,339✔
8232
    case QUERY_NODE_LOGIC_CONDITION:
6,446✔
8233
      return jsonToLogicConditionNode(pJson, pObj);
6,446✔
8234
    case QUERY_NODE_FUNCTION:
796,052✔
8235
      return jsonToFunctionNode(pJson, pObj);
796,052✔
8236
    case QUERY_NODE_REAL_TABLE:
11,103✔
8237
      return jsonToRealTableNode(pJson, pObj);
11,103✔
8238
    case QUERY_NODE_TEMP_TABLE:
1✔
8239
      return jsonToTempTableNode(pJson, pObj);
1✔
8240
    case QUERY_NODE_JOIN_TABLE:
×
8241
      return jsonToJoinTableNode(pJson, pObj);
×
8242
    case QUERY_NODE_GROUPING_SET:
×
8243
      return jsonToGroupingSetNode(pJson, pObj);
×
8244
    case QUERY_NODE_ORDER_BY_EXPR:
×
8245
      return jsonToOrderByExprNode(pJson, pObj);
×
8246
    case QUERY_NODE_LIMIT:
×
8247
      return jsonToLimitNode(pJson, pObj);
×
8248
    case QUERY_NODE_STATE_WINDOW:
2,012✔
8249
      return jsonToStateWindowNode(pJson, pObj);
2,012✔
8250
    case QUERY_NODE_SESSION_WINDOW:
198✔
8251
      return jsonToSessionWindowNode(pJson, pObj);
198✔
8252
    case QUERY_NODE_INTERVAL_WINDOW:
6,978✔
8253
      return jsonToIntervalWindowNode(pJson, pObj);
6,978✔
8254
    case QUERY_NODE_NODE_LIST:
3,234✔
8255
      return jsonToNodeListNode(pJson, pObj);
3,234✔
8256
    case QUERY_NODE_FILL:
219✔
8257
      return jsonToFillNode(pJson, pObj);
219✔
8258
    case QUERY_NODE_TARGET:
707,654✔
8259
      return jsonToTargetNode(pJson, pObj);
707,654✔
8260
    case QUERY_NODE_DATABLOCK_DESC:
28,643✔
8261
      return jsonToDataBlockDescNode(pJson, pObj);
28,643✔
8262
    case QUERY_NODE_SLOT_DESC:
706,859✔
8263
      return jsonToSlotDescNode(pJson, pObj);
706,859✔
8264
    case QUERY_NODE_COLUMN_DEF:
×
8265
      return jsonToColumnDefNode(pJson, pObj);
×
8266
    case QUERY_NODE_DOWNSTREAM_SOURCE:
×
8267
      return jsonToDownstreamSourceNode(pJson, pObj);
×
8268
    case QUERY_NODE_DATABASE_OPTIONS:
×
8269
      return jsonToDatabaseOptions(pJson, pObj);
×
8270
    case QUERY_NODE_TABLE_OPTIONS:
×
8271
      return jsonToTableOptions(pJson, pObj);
×
8272
    case QUERY_NODE_COLUMN_OPTIONS:
×
8273
      return jsonToColumnOptions(pJson, pObj);
×
8274
    case QUERY_NODE_INDEX_OPTIONS:
×
8275
      return jsonToIndexOptions(pJson, pObj);
×
8276
    case QUERY_NODE_EXPLAIN_OPTIONS:
×
8277
      return jsonToExplainOptions(pJson, pObj);
×
8278
    case QUERY_NODE_STREAM_OPTIONS:
×
8279
      return jsonToStreamOptions(pJson, pObj);
×
8280
    case QUERY_NODE_LEFT_VALUE:
×
8281
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to deserialize.
×
8282
    case QUERY_NODE_WHEN_THEN:
95✔
8283
      return jsonToWhenThenNode(pJson, pObj);
95✔
8284
    case QUERY_NODE_CASE_WHEN:
95✔
8285
      return jsonToCaseWhenNode(pJson, pObj);
95✔
8286
    case QUERY_NODE_EVENT_WINDOW:
50✔
8287
      return jsonToEventWindowNode(pJson, pObj);
50✔
8288
    case QUERY_NODE_WINDOW_OFFSET:
×
8289
      return jsonToWindowOffsetNode(pJson, pObj);
×
8290
    case QUERY_NODE_COUNT_WINDOW:
76✔
8291
      return jsonToCountWindowNode(pJson, pObj);
76✔
8292
    case QUERY_NODE_ANOMALY_WINDOW:
×
8293
      return jsonToAnomalyWindowNode(pJson, pObj);
×
8294
    case QUERY_NODE_SET_OPERATOR:
×
8295
      return jsonToSetOperator(pJson, pObj);
×
8296
    case QUERY_NODE_SELECT_STMT:
11,104✔
8297
      return jsonToSelectStmt(pJson, pObj);
11,104✔
8298
    case QUERY_NODE_VNODE_MODIFY_STMT:
×
8299
      return jsonToVnodeModifyStmt(pJson, pObj);
×
8300
    case QUERY_NODE_CREATE_DATABASE_STMT:
×
8301
      return jsonToCreateDatabaseStmt(pJson, pObj);
×
8302
    case QUERY_NODE_ALTER_DATABASE_STMT:
×
8303
      return jsonToAlterDatabaseStmt(pJson, pObj);
×
8304
    case QUERY_NODE_TRIM_DATABASE_STMT:
×
8305
      return jsonToTrimDatabaseStmt(pJson, pObj);
×
8306
    case QUERY_NODE_S3MIGRATE_DATABASE_STMT:
×
8307
      return jsonToS3MigrateDatabaseStmt(pJson, pObj);
×
8308
    case QUERY_NODE_CREATE_TABLE_STMT:
×
8309
      return jsonToCreateTableStmt(pJson, pObj);
×
8310
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
×
8311
      return jsonToCreateSubTableClause(pJson, pObj);
×
8312
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
×
8313
      return jsonToCreateMultiTablesStmt(pJson, pObj);
×
8314
    case QUERY_NODE_DROP_TABLE_CLAUSE:
×
8315
      return jsonToDropTableClause(pJson, pObj);
×
8316
    case QUERY_NODE_DROP_TABLE_STMT:
×
8317
      return jsonToDropTableStmt(pJson, pObj);
×
8318
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
×
8319
      return jsonToDropStableStmt(pJson, pObj);
×
8320
    case QUERY_NODE_ALTER_TABLE_STMT:
×
8321
      return jsonToAlterTableStmt(pJson, pObj);
×
8322
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
×
8323
      return jsonToAlterStableStmt(pJson, pObj);
×
8324
    case QUERY_NODE_CREATE_USER_STMT:
×
8325
      return jsonToCreateUserStmt(pJson, pObj);
×
8326
    case QUERY_NODE_ALTER_USER_STMT:
×
8327
      return jsonToAlterUserStmt(pJson, pObj);
×
8328
    case QUERY_NODE_DROP_USER_STMT:
×
8329
      return jsonToDropUserStmt(pJson, pObj);
×
8330
    case QUERY_NODE_USE_DATABASE_STMT:
×
8331
      return jsonToUseDatabaseStmt(pJson, pObj);
×
8332
    case QUERY_NODE_CREATE_DNODE_STMT:
×
8333
      return jsonToCreateDnodeStmt(pJson, pObj);
×
8334
    case QUERY_NODE_DROP_DNODE_STMT:
×
8335
      return jsonToDropDnodeStmt(pJson, pObj);
×
8336
    case QUERY_NODE_ALTER_DNODE_STMT:
×
8337
      return jsonToAlterDnodeStmt(pJson, pObj);
×
8338
    case QUERY_NODE_CREATE_INDEX_STMT:
×
8339
      return jsonToCreateIndexStmt(pJson, pObj);
×
8340
    case QUERY_NODE_DROP_INDEX_STMT:
×
8341
      return jsonToDropIndexStmt(pJson, pObj);
×
8342
    case QUERY_NODE_CREATE_QNODE_STMT:
×
8343
      return jsonToCreateQnodeStmt(pJson, pObj);
×
8344
    case QUERY_NODE_DROP_QNODE_STMT:
×
8345
      return jsonToDropQnodeStmt(pJson, pObj);
×
8346
    case QUERY_NODE_CREATE_SNODE_STMT:
×
8347
      return jsonToCreateSnodeStmt(pJson, pObj);
×
8348
    case QUERY_NODE_DROP_SNODE_STMT:
×
8349
      return jsonToDropSnodeStmt(pJson, pObj);
×
8350
    case QUERY_NODE_CREATE_MNODE_STMT:
×
8351
      return jsonToCreateMnodeStmt(pJson, pObj);
×
8352
    case QUERY_NODE_DROP_MNODE_STMT:
×
8353
      return jsonToDropMnodeStmt(pJson, pObj);
×
8354
    case QUERY_NODE_CREATE_TOPIC_STMT:
×
8355
      return jsonToCreateTopicStmt(pJson, pObj);
×
8356
    case QUERY_NODE_DROP_TOPIC_STMT:
×
8357
      return jsonToDropTopicStmt(pJson, pObj);
×
8358
    case QUERY_NODE_DROP_CGROUP_STMT:
×
8359
      return jsonToDropConsumerGroupStmt(pJson, pObj);
×
8360
    case QUERY_NODE_ALTER_LOCAL_STMT:
×
8361
      return jsonToAlterLocalStmt(pJson, pObj);
×
8362
    case QUERY_NODE_EXPLAIN_STMT:
×
8363
      return jsonToExplainStmt(pJson, pObj);
×
8364
    case QUERY_NODE_DESCRIBE_STMT:
×
8365
      return jsonToDescribeStmt(pJson, pObj);
×
8366
    case QUERY_NODE_COMPACT_DATABASE_STMT:
×
8367
      return jsonToCompactDatabaseStmt(pJson, pObj);
×
8368
    case QUERY_NODE_CREATE_STREAM_STMT:
×
8369
      return jsonToCreateStreamStmt(pJson, pObj);
×
8370
    case QUERY_NODE_DROP_STREAM_STMT:
×
8371
      return jsonToDropStreamStmt(pJson, pObj);
×
8372
    case QUERY_NODE_BALANCE_VGROUP_STMT:
×
8373
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to deserialize.
×
8374
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
×
8375
      return TSDB_CODE_SUCCESS;
×
8376
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
8377
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to deserialize.
×
8378
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
8379
      return jsonToMergeVgroupStmt(pJson, pObj);
×
8380
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
×
8381
      return jsonToRedistributeVgroupStmt(pJson, pObj);
×
8382
    case QUERY_NODE_SPLIT_VGROUP_STMT:
×
8383
      return jsonToSplitVgroupStmt(pJson, pObj);
×
8384
    case QUERY_NODE_GRANT_STMT:
×
8385
      return jsonToGrantStmt(pJson, pObj);
×
8386
    case QUERY_NODE_REVOKE_STMT:
×
8387
      return jsonToRevokeStmt(pJson, pObj);
×
8388
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
8389
      return jsonToAlterClusterStmt(pJson, pObj);
×
8390
    case QUERY_NODE_SHOW_DNODES_STMT:
×
8391
      return jsonToShowDnodesStmt(pJson, pObj);
×
8392
    case QUERY_NODE_SHOW_MNODES_STMT:
×
8393
      return jsonToShowMnodesStmt(pJson, pObj);
×
8394
    case QUERY_NODE_SHOW_QNODES_STMT:
×
8395
      return jsonToShowQnodesStmt(pJson, pObj);
×
8396
    case QUERY_NODE_SHOW_ANODES_STMT:
×
8397
      return jsonToShowAnodesStmt(pJson, pObj);
×
8398
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
8399
      return jsonToShowAnodesFullStmt(pJson, pObj);
×
8400
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
8401
      return jsonToShowArbGroupsStmt(pJson, pObj);
×
8402
    case QUERY_NODE_SHOW_CLUSTER_STMT:
×
8403
      return jsonToShowClusterStmt(pJson, pObj);
×
8404
    case QUERY_NODE_SHOW_DATABASES_STMT:
×
8405
      return jsonToShowDatabasesStmt(pJson, pObj);
×
8406
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
×
8407
      return jsonToShowFunctionsStmt(pJson, pObj);
×
8408
    case QUERY_NODE_SHOW_INDEXES_STMT:
×
8409
      return jsonToShowIndexesStmt(pJson, pObj);
×
8410
    case QUERY_NODE_SHOW_STABLES_STMT:
×
8411
      return jsonToShowStablesStmt(pJson, pObj);
×
8412
    case QUERY_NODE_SHOW_STREAMS_STMT:
×
8413
      return jsonToShowStreamsStmt(pJson, pObj);
×
8414
    case QUERY_NODE_SHOW_TABLES_STMT:
×
8415
      return jsonToShowTablesStmt(pJson, pObj);
×
8416
    case QUERY_NODE_SHOW_TAGS_STMT:
×
8417
      return jsonToShowTagsStmt(pJson, pObj);
×
8418
    case QUERY_NODE_SHOW_USERS_STMT:
×
8419
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
8420
      return jsonToShowUsersStmt(pJson, pObj);
×
8421
    case QUERY_NODE_SHOW_VGROUPS_STMT:
×
8422
      return jsonToShowVgroupsStmt(pJson, pObj);
×
8423
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
×
8424
      return jsonToShowConsumersStmt(pJson, pObj);
×
8425
    case QUERY_NODE_SHOW_VARIABLES_STMT:
×
8426
      return jsonToShowVariablesStmt(pJson, pObj);
×
8427
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
8428
      return jsonToShowGrantsFullStmt(pJson, pObj);
×
8429
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
8430
      return jsonToShowGrantsLogsStmt(pJson, pObj);
×
8431
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
8432
      return jsonToShowClusterMachinesStmt(pJson, pObj);
×
8433
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
8434
      return jsonToShowEncryptionsStmt(pJson, pObj);
×
8435
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
×
8436
      return jsonToShowDnodeVariablesStmt(pJson, pObj);
×
8437
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
×
8438
      return jsonToShowTransactionsStmt(pJson, pObj);
×
8439
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
×
8440
      return jsonToShowSubscriptionsStmt(pJson, pObj);
×
8441
    case QUERY_NODE_SHOW_VNODES_STMT:
×
8442
      return jsonToShowVnodesStmt(pJson, pObj);
×
8443
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
×
8444
      return jsonToShowUserPrivilegesStmt(pJson, pObj);
×
8445
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
×
8446
      return jsonToShowCreateDatabaseStmt(pJson, pObj);
×
8447
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
×
8448
      return jsonToShowCreateTableStmt(pJson, pObj);
×
8449
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
×
8450
      return jsonToShowCreateStableStmt(pJson, pObj);
×
8451
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
8452
      return jsonToShowCreateViewStmt(pJson, pObj);
×
8453
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
×
8454
      return jsonToShowTableDistributedStmt(pJson, pObj);
×
8455
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
×
8456
      return jsonToShowLocalVariablesStmt(pJson, pObj);
×
8457
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
×
8458
      return jsonToShowTableTagsStmt(pJson, pObj);
×
8459
    case QUERY_NODE_SHOW_USAGE_STMT:
×
8460
      return jsonToShowUsageStmt(pJson, pObj);
×
8461
    case QUERY_NODE_DELETE_STMT:
×
8462
      return jsonToDeleteStmt(pJson, pObj);
×
8463
    case QUERY_NODE_INSERT_STMT:
×
8464
      return jsonToInsertStmt(pJson, pObj);
×
8465
    case QUERY_NODE_RESTORE_DNODE_STMT:
×
8466
      return jsonToRestoreDnodeStmt(pJson, pObj);
×
8467
    case QUERY_NODE_RESTORE_QNODE_STMT:
×
8468
      return jsonToRestoreQnodeStmt(pJson, pObj);
×
8469
    case QUERY_NODE_RESTORE_MNODE_STMT:
×
8470
      return jsonToRestoreMnodeStmt(pJson, pObj);
×
8471
    case QUERY_NODE_RESTORE_VNODE_STMT:
×
8472
      return jsonToRestoreVnodeStmt(pJson, pObj);
×
8473
    case QUERY_NODE_LOGIC_PLAN_SCAN:
×
8474
      return jsonToLogicScanNode(pJson, pObj);
×
8475
    case QUERY_NODE_LOGIC_PLAN_JOIN:
×
8476
      return jsonToLogicJoinNode(pJson, pObj);
×
8477
    case QUERY_NODE_LOGIC_PLAN_AGG:
×
8478
      return jsonToLogicAggNode(pJson, pObj);
×
8479
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
×
8480
      return jsonToLogicProjectNode(pJson, pObj);
×
8481
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
×
8482
      return jsonToLogicVnodeModifyNode(pJson, pObj);
×
8483
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
×
8484
      return jsonToLogicExchangeNode(pJson, pObj);
×
8485
    case QUERY_NODE_LOGIC_PLAN_MERGE:
×
8486
      return jsonToLogicMergeNode(pJson, pObj);
×
8487
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
×
8488
      return jsonToLogicWindowNode(pJson, pObj);
×
8489
    case QUERY_NODE_LOGIC_PLAN_FILL:
×
8490
      return jsonToLogicFillNode(pJson, pObj);
×
8491
    case QUERY_NODE_LOGIC_PLAN_SORT:
×
8492
      return jsonToLogicSortNode(pJson, pObj);
×
8493
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
×
8494
      return jsonToLogicPartitionNode(pJson, pObj);
×
8495
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
×
8496
      return jsonToLogicIndefRowsFuncNode(pJson, pObj);
×
8497
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
×
8498
      return jsonToLogicInterpFuncNode(pJson, pObj);
×
8499
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
8500
      return jsonToLogicForecastFuncNode(pJson, pObj);
×
8501
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
8502
      return jsonToLogicGroupCacheNode(pJson, pObj);
×
8503
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
8504
      return jsonToLogicDynQueryCtrlNode(pJson, pObj);
×
8505
    case QUERY_NODE_LOGIC_SUBPLAN:
×
8506
      return jsonToLogicSubplan(pJson, pObj);
×
8507
    case QUERY_NODE_LOGIC_PLAN:
×
8508
      return jsonToLogicPlan(pJson, pObj);
×
8509
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
3✔
8510
      return jsonToPhysiTagScanNode(pJson, pObj);
3✔
8511
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
×
8512
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
8513
      return jsonToPhysiScanNode(pJson, pObj);
×
8514
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
×
8515
      return jsonToPhysiLastRowScanNode(pJson, pObj);
×
8516
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
11,939✔
8517
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
8518
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
8519
      return jsonToPhysiTableScanNode(pJson, pObj);
11,939✔
8520
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
×
8521
      return jsonToPhysiSysTableScanNode(pJson, pObj);
×
8522
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
7,189✔
8523
      return jsonToPhysiProjectNode(pJson, pObj);
7,189✔
8524
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
×
8525
      return jsonToPhysiMergeJoinNode(pJson, pObj);
×
8526
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
8527
      return jsonToPhysiHashJoinNode(pJson, pObj);
×
8528
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
33✔
8529
      return jsonToPhysiAggNode(pJson, pObj);
33✔
8530
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
×
8531
      return jsonToPhysiExchangeNode(pJson, pObj);
×
8532
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
×
8533
      return jsonToPhysiMergeNode(pJson, pObj);
×
8534
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
×
8535
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
8536
      return jsonToPhysiSortNode(pJson, pObj);
×
8537
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
5,321✔
8538
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
8539
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
8540
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
8541
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
8542
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
8543
      return jsonToPhysiIntervalNode(pJson, pObj);
5,321✔
8544
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
647✔
8545
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
8546
      return jsonToPhysiFillNode(pJson, pObj);
647✔
8547
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
966✔
8548
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
8549
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
8550
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
8551
      return jsonToPhysiSessionWindowNode(pJson, pObj);
966✔
8552
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
427✔
8553
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
8554
      return jsonToPhysiStateWindowNode(pJson, pObj);
427✔
8555
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
261✔
8556
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
8557
      return jsonToPhysiEventWindowNode(pJson, pObj);
261✔
8558
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
384✔
8559
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
8560
      return jsonToPhysiCountWindowNode(pJson, pObj);
384✔
8561
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
8562
      return jsonToPhysiAnomalyWindowNode(pJson, pObj);
×
8563
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
×
8564
      return jsonToPhysiPartitionNode(pJson, pObj);
×
8565
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
1,431✔
8566
      return jsonToPhysiStreamPartitionNode(pJson, pObj);
1,431✔
8567
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
×
8568
      return jsonToPhysiIndefRowsFuncNode(pJson, pObj);
×
8569
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
40✔
8570
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
8571
      return jsonToPhysiInterpFuncNode(pJson, pObj);
40✔
8572
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
8573
      return jsonToPhysiForecastFuncNode(pJson, pObj);
×
8574
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
×
8575
      return jsonToPhysiDispatchNode(pJson, pObj);
×
8576
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
×
8577
      return jsonToPhysiQueryInsertNode(pJson, pObj);
×
8578
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
×
8579
      return jsonToPhysiDeleteNode(pJson, pObj);
×
8580
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
8581
      return jsonToPhysiGroupCacheNode(pJson, pObj);
×
8582
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
8583
      return jsonToPhysiDynQueryCtrlNode(pJson, pObj);
×
8584
    case QUERY_NODE_PHYSICAL_SUBPLAN:
11,944✔
8585
      return jsonToSubplan(pJson, pObj);
11,944✔
8586
    case QUERY_NODE_PHYSICAL_PLAN:
2,041✔
8587
      return jsonToPlan(pJson, pObj);
2,041✔
8588
    default:
×
8589
      break;
×
8590
  }
8591
  nodesWarn("jsonToSpecificNode unknown node = %s", nodesNodeName(nodeType(pObj)));
×
8592
  return TSDB_CODE_SUCCESS;
×
8593
}
8594

8595
static const char* jkNodeType = "NodeType";
8596
static const char* jkNodeName = "Name";
8597

8598
static int32_t nodeToJson(const void* pObj, SJson* pJson) {
2,788,657✔
8599
  const SNode* pNode = (const SNode*)pObj;
2,788,657✔
8600

8601
  int32_t code = tjsonAddIntegerToObject(pJson, jkNodeType, pNode->type);
2,788,657✔
8602
  if (TSDB_CODE_SUCCESS == code) {
2,788,657!
8603
    code = tjsonAddStringToObject(pJson, jkNodeName, nodesNodeName(pNode->type));
2,788,657✔
8604
  }
8605
  if (TSDB_CODE_SUCCESS == code) {
2,788,657!
8606
    code = tjsonAddObject(pJson, nodesNodeName(pNode->type), specificNodeToJson, pNode);
2,788,657✔
8607
    if (TSDB_CODE_SUCCESS != code) {
2,788,657!
8608
      nodesError("%s ToJson error", nodesNodeName(pNode->type));
×
8609
    }
8610
  }
8611

8612
  return code;
2,788,657✔
8613
}
8614

8615
static int32_t jsonToNode(const SJson* pJson, void* pObj) {
3,668,558✔
8616
  SNode* pNode = (SNode*)pObj;
3,668,558✔
8617

8618
  int32_t code;
8619
  tjsonGetNumberValue(pJson, jkNodeType, pNode->type, code);
3,668,558✔
8620
  if (TSDB_CODE_SUCCESS == code) {
3,668,945!
8621
    code = tjsonToObject(pJson, nodesNodeName(pNode->type), jsonToSpecificNode, pNode);
3,668,946✔
8622
    if (TSDB_CODE_SUCCESS != code) {
3,667,069!
8623
      nodesError("%s toNode error", nodesNodeName(pNode->type));
×
8624
    }
8625
  }
8626

8627
  return code;
3,667,085✔
8628
}
8629

8630
static int32_t makeNodeByJson(const SJson* pJson, SNode** pNode) {
3,667,860✔
8631
  int32_t val = 0;
3,667,860✔
8632
  int32_t code = tjsonGetIntValue(pJson, jkNodeType, &val);
3,667,860✔
8633
  if (TSDB_CODE_SUCCESS == code) {
3,668,086!
8634
    code = nodesMakeNode(val, pNode);
3,668,095✔
8635
    if (NULL == *pNode) {
3,668,656!
8636
      return code;
×
8637
    }
8638
    code = jsonToNode(pJson, *pNode);
3,668,656✔
8639
  }
8640

8641
  return code;
3,667,090✔
8642
}
8643

8644
static int32_t jsonToNodeObject(const SJson* pJson, const char* pName, SNode** pNode) {
1,072,738✔
8645
  SJson* pJsonNode = tjsonGetObjectItem(pJson, pName);
1,072,738✔
8646
  if (NULL == pJsonNode) {
1,072,434✔
8647
    return TSDB_CODE_SUCCESS;
225,966✔
8648
  }
8649
  return makeNodeByJson(pJsonNode, pNode);
846,468✔
8650
}
8651

8652
int32_t nodesNodeToString(const SNode* pNode, bool format, char** pStr, int32_t* pLen) {
13,574✔
8653
  if (NULL == pNode || NULL == pStr) {
13,574!
8654
    terrno = TSDB_CODE_FAILED;
×
8655
    return TSDB_CODE_FAILED;
×
8656
  }
8657

8658
  SJson* pJson = tjsonCreateObject();
13,574✔
8659
  if (NULL == pJson) {
13,574!
8660
    return terrno;
×
8661
  }
8662

8663
  int32_t code = nodeToJson(pNode, pJson);
13,574✔
8664
  if (TSDB_CODE_SUCCESS != code) {
13,574!
8665
    terrno = code;
×
8666
    return code;
×
8667
  }
8668

8669
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
13,574!
8670
  tjsonDelete(pJson);
13,574✔
8671

8672
  if (NULL != pLen) {
13,574✔
8673
    *pLen = strlen(*pStr) + 1;
10,321✔
8674
  }
8675

8676
  return TSDB_CODE_SUCCESS;
13,574✔
8677
}
8678

8679
int32_t nodesStringToNode(const char* pStr, SNode** pNode) {
22,711✔
8680
  if (NULL == pStr || NULL == pNode) {
22,711!
8681
    return TSDB_CODE_SUCCESS;
×
8682
  }
8683
  SJson* pJson = tjsonParse(pStr);
22,712✔
8684
  if (NULL == pJson) {
22,712!
8685
    return TSDB_CODE_FAILED;
×
8686
  }
8687
  int32_t code = makeNodeByJson(pJson, pNode);
22,712✔
8688
  tjsonDelete(pJson);
22,712✔
8689
  if (TSDB_CODE_SUCCESS != code) {
22,712!
8690
    nodesDestroyNode(*pNode);
×
8691
    *pNode = NULL;
×
8692
    terrno = code;
×
8693
    return code;
×
8694
  }
8695
  return TSDB_CODE_SUCCESS;
22,712✔
8696
}
8697

8698
int32_t nodesListToString(const SNodeList* pList, bool format, char** pStr, int32_t* pLen) {
274✔
8699
  if (NULL == pList || NULL == pStr || NULL == pLen) {
274!
8700
    terrno = TSDB_CODE_FAILED;
×
8701
    return TSDB_CODE_FAILED;
×
8702
  }
8703

8704
  if (0 == LIST_LENGTH(pList)) {
274!
8705
    return TSDB_CODE_SUCCESS;
×
8706
  }
8707

8708
  SJson* pJson = tjsonCreateArray();
274✔
8709
  if (NULL == pJson) {
274!
8710
    return terrno;
×
8711
  }
8712

8713
  SNode* pNode;
8714
  FOREACH(pNode, pList) {
34,667!
8715
    int32_t code = tjsonAddItem(pJson, nodeToJson, pNode);
34,393✔
8716
    if (TSDB_CODE_SUCCESS != code) {
34,393!
8717
      terrno = code;
×
8718
      return code;
×
8719
    }
8720
  }
8721

8722
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
274!
8723
  tjsonDelete(pJson);
274✔
8724

8725
  *pLen = strlen(*pStr) + 1;
274✔
8726
  return TSDB_CODE_SUCCESS;
274✔
8727
}
8728

8729
int32_t nodesStringToList(const char* pStr, SNodeList** pList) {
259✔
8730
  if (NULL == pStr || NULL == pList) {
259!
8731
    return TSDB_CODE_SUCCESS;
×
8732
  }
8733
  SJson* pJson = tjsonParse(pStr);
259✔
8734
  if (NULL == pJson) {
259!
8735
    return TSDB_CODE_FAILED;
×
8736
  }
8737
  int32_t code = jsonToNodeListImpl(pJson, pList);
259✔
8738
  tjsonDelete(pJson);
259✔
8739
  if (TSDB_CODE_SUCCESS != code) {
259!
8740
    nodesDestroyList(*pList);
×
8741
    *pList = NULL;
×
8742
    terrno = code;
×
8743
    return code;
×
8744
  }
8745
  return TSDB_CODE_SUCCESS;
259✔
8746
}
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