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

taosdata / TDengine / #3544

30 Nov 2024 03:06AM UTC coverage: 60.88% (+0.04%) from 60.842%
#3544

push

travis-ci

web-flow
Merge pull request #28988 from taosdata/main

merge: from main to 3.0 branch

120724 of 253479 branches covered (47.63%)

Branch coverage included in aggregate %.

407 of 489 new or added lines in 21 files covered. (83.23%)

1148 existing lines in 113 files now uncovered.

201919 of 276488 relevant lines covered (73.03%)

18898587.44 hits per line

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

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

461
static int32_t nodeListToJson(SJson* pJson, const char* pName, const SNodeList* pList) {
563,841✔
462
  if (LIST_LENGTH(pList) > 0) {
563,841!
463
    SJson* jList = tjsonAddArrayToObject(pJson, pName);
473,203✔
464
    if (NULL == jList) {
473,203!
465
      return terrno;
×
466
    }
467
    SNode* pNode;
468
    FOREACH(pNode, pList) {
2,400,230!
469
      int32_t code = tjsonAddItem(jList, nodeToJson, pNode);
1,927,027✔
470
      if (TSDB_CODE_SUCCESS != code) {
1,927,027!
471
        return code;
×
472
      }
473
    }
474
  }
475
  return TSDB_CODE_SUCCESS;
563,841✔
476
}
477

478
static int32_t jsonToNodeListImpl(const SJson* pJsonArray, SNodeList** pList) {
1,025,258✔
479
  int32_t size = (NULL == pJsonArray ? 0 : tjsonGetArraySize(pJsonArray));
1,025,258✔
480
  if (size > 0) {
1,025,195✔
481
    int32_t code = nodesMakeList(pList);
876,753✔
482
    if (NULL == *pList) {
876,995!
483
      return code;
×
484
    }
485
  }
486

487
  int32_t code = TSDB_CODE_SUCCESS;
1,025,437✔
488
  for (int32_t i = 0; i < size; ++i) {
3,839,972✔
489
    SJson* pJsonItem = tjsonGetArrayItem(pJsonArray, i);
2,814,380✔
490
    SNode* pNode = NULL;
2,811,259✔
491
    code = makeNodeByJson(pJsonItem, &pNode);
2,811,259✔
492
    if (TSDB_CODE_SUCCESS == code) {
2,810,712!
493
      code = nodesListAppend(*pList, pNode);
2,810,728✔
494
    }
495
    if (TSDB_CODE_SUCCESS != code) {
2,814,535!
496
      break;
×
497
    }
498
  }
499
  return code;
1,025,592✔
500
}
501

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

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

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

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

525
  return code;
1,465✔
526
}
527

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

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

543
  return code;
11,306✔
544
}
545

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

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

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

569
  return code;
49,854✔
570
}
571

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

575
  int32_t code;
576
  tjsonGetNumberValue(pJson, jkSchemaType, pNode->type, code);
468,960✔
577
  if (TSDB_CODE_SUCCESS == code) {
468,955!
578
    tjsonGetNumberValue(pJson, jkSchemaColId, pNode->colId, code);
468,955✔
579
  }
580
  if (TSDB_CODE_SUCCESS == code) {
468,952!
581
    tjsonGetNumberValue(pJson, jkSchemaBytes, pNode->bytes, code);
468,952✔
582
  }
583
  if (TSDB_CODE_SUCCESS == code) {
468,956!
584
    code = tjsonGetStringValue(pJson, jkSchemaName, pNode->name);
468,956✔
585
  }
586
  if (TSDB_CODE_SUCCESS == code) {
468,953!
587
    tjsonGetNumberValue(pJson, jkSchemaFlags, pNode->flags, code);
468,953✔
588
  }
589

590
  return code;
468,959✔
591
}
592

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

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

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

629
  return code;
1,465✔
630
}
631

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

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

659
  return code;
11,306✔
660
}
661

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

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

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

697
  return code;
×
698
}
699

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

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

726
  return code;
×
727
}
728

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

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

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

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

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

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

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

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

875
  return code;
×
876
}
877

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

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

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

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

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

912
  return code;
×
913
}
914

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

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

929
  return code;
×
930
}
931

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

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

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

946
  return code;
×
947
}
948

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

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

960
  return code;
×
961
}
962

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

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

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

985
  return code;
×
986
}
987

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

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

1005
  return code;
×
1006
}
1007

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

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

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

1066
  return code;
×
1067
}
1068

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

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

1113
  return code;
×
1114
}
1115

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

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

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

1142
  return code;
×
1143
}
1144

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

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

1165
  return code;
×
1166
}
1167

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

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

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

1178
  return code;
×
1179
}
1180

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

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

1189
  return code;
×
1190
}
1191

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

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

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

1202
  return code;
×
1203
}
1204

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

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

1213
  return code;
×
1214
}
1215

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

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

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

1226
  return code;
×
1227
}
1228

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

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

1237
  return code;
×
1238
}
1239

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

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

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

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

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

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

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

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

1345
  return code;
×
1346
}
1347

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

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

1389
  return code;
×
1390
}
1391

1392
static const char* jkForecastFuncLogicPlanFuncs = "Funcs";
1393

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

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

1402
  return code;
×
1403
}
1404

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

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

1413
  return code;
×
1414
}
1415

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

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

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

1438
  return code;
×
1439
}
1440

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

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

1458
  return code;
×
1459
}
1460

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

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

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

1483
  return code;
×
1484
}
1485

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

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

1503
  return code;
×
1504
}
1505

1506
static const char* jkSubplanIdQueryId = "QueryId";
1507
static const char* jkSubplanIdGroupId = "GroupId";
1508
static const char* jkSubplanIdSubplanId = "SubplanId";
1509

1510
static int32_t subplanIdToJson(const void* pObj, SJson* pJson) {
12,250✔
1511
  const SSubplanId* pNode = (const SSubplanId*)pObj;
12,250✔
1512

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

1521
  return code;
12,250✔
1522
}
1523

1524
static int32_t jsonToSubplanId(const SJson* pJson, void* pObj) {
11,861✔
1525
  SSubplanId* pNode = (SSubplanId*)pObj;
11,861✔
1526

1527
  int32_t code = tjsonGetUBigIntValue(pJson, jkSubplanIdQueryId, &pNode->queryId);
11,861✔
1528
  if (TSDB_CODE_SUCCESS == code) {
11,862!
1529
    code = tjsonGetIntValue(pJson, jkSubplanIdGroupId, &pNode->groupId);
11,862✔
1530
  }
1531
  if (TSDB_CODE_SUCCESS == code) {
11,862!
1532
    code = tjsonGetIntValue(pJson, jkSubplanIdSubplanId, &pNode->subplanId);
11,862✔
1533
  }
1534

1535
  return code;
11,863✔
1536
}
1537

1538
static const char* jkEndPointFqdn = "Fqdn";
1539
static const char* jkEndPointPort = "Port";
1540

1541
static int32_t epToJson(const void* pObj, SJson* pJson) {
14,096✔
1542
  const SEp* pNode = (const SEp*)pObj;
14,096✔
1543

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

1549
  return code;
14,096✔
1550
}
1551

1552
static int32_t jsonToEp(const SJson* pJson, void* pObj) {
31,947✔
1553
  SEp* pNode = (SEp*)pObj;
31,947✔
1554

1555
  int32_t code = tjsonGetStringValue(pJson, jkEndPointFqdn, pNode->fqdn);
31,947✔
1556
  if (TSDB_CODE_SUCCESS == code) {
31,948!
1557
    code = tjsonGetSmallIntValue(pJson, jkEndPointPort, &pNode->port);
31,948✔
1558
  }
1559

1560
  return code;
31,946✔
1561
}
1562

1563
static const char* jkEpSetInUse = "InUse";
1564
static const char* jkEpSetNumOfEps = "NumOfEps";
1565
static const char* jkEpSetEps = "Eps";
1566

1567
static int32_t epSetToJson(const void* pObj, SJson* pJson) {
2,185✔
1568
  const SEpSet* pNode = (const SEpSet*)pObj;
2,185✔
1569

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

1578
  return code;
2,185✔
1579
}
1580

1581
static int32_t jsonToEpSet(const SJson* pJson, void* pObj) {
21,453✔
1582
  SEpSet* pNode = (SEpSet*)pObj;
21,453✔
1583

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

1592
  return code;
21,453✔
1593
}
1594

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

1601
static int32_t vgroupInfoToJson(const void* pObj, SJson* pJson) {
2,185✔
1602
  const SVgroupInfo* pNode = (const SVgroupInfo*)pObj;
2,185✔
1603

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

1618
  return code;
2,185✔
1619
}
1620

1621
static int32_t jsonToVgroupInfo(const SJson* pJson, void* pObj) {
21,453✔
1622
  SVgroupInfo* pNode = (SVgroupInfo*)pObj;
21,453✔
1623

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

1638
  return code;
21,453✔
1639
}
1640

1641
static const char* jkVgroupsInfoNum = "Num";
1642
static const char* jkVgroupsInfoVgroups = "Vgroups";
1643

1644
static int32_t vgroupsInfoToJson(const void* pObj, SJson* pJson) {
1,040✔
1645
  const SVgroupsInfo* pNode = (const SVgroupsInfo*)pObj;
1,040✔
1646

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

1653
  return code;
1,040✔
1654
}
1655

1656
static int32_t jsonToVgroupsInfo(const SJson* pJson, void* pObj) {
9,850✔
1657
  SVgroupsInfo* pNode = (SVgroupsInfo*)pObj;
9,850✔
1658

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

1664
  return code;
9,850✔
1665
}
1666

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

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

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

1706
  return code;
×
1707
}
1708

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

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

1739
  return code;
×
1740
}
1741

1742
static const char* jkLogicPlanSubplans = "Subplans";
1743

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

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

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

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

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

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

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

1814
  return code;
×
1815
}
1816

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

1823
static int32_t physicPlanNodeToJson(const void* pObj, SJson* pJson) {
28,896✔
1824
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
28,896✔
1825

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

1840
  return code;
28,896✔
1841
}
1842

1843
static int32_t jsonToPhysicPlanNode(const SJson* pJson, void* pObj) {
28,208✔
1844
  SPhysiNode* pNode = (SPhysiNode*)pObj;
28,208✔
1845

1846
  int32_t code = jsonToNodeObject(pJson, jkPhysiPlanOutputDataBlockDesc, (SNode**)&pNode->pOutputDataBlockDesc);
28,208✔
1847
  if (TSDB_CODE_SUCCESS == code) {
28,205!
1848
    code = jsonToNodeObject(pJson, jkPhysiPlanConditions, &pNode->pConditions);
28,205✔
1849
  }
1850
  if (TSDB_CODE_SUCCESS == code) {
28,183!
1851
    code = jsonToNodeList(pJson, jkPhysiPlanChildren, &pNode->pChildren);
28,183✔
1852
  }
1853
  if (TSDB_CODE_SUCCESS == code) {
28,209!
1854
    code = jsonToNodeObject(pJson, jkPhysiPlanLimit, &pNode->pLimit);
28,209✔
1855
  }
1856
  if (TSDB_CODE_SUCCESS == code) {
28,198!
1857
    code = jsonToNodeObject(pJson, jkPhysiPlanSlimit, &pNode->pSlimit);
28,198✔
1858
  }
1859

1860
  return code;
28,200✔
1861
}
1862

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

1868
static int32_t nameToJson(const void* pObj, SJson* pJson) {
12,250✔
1869
  const SName* pNode = (const SName*)pObj;
12,250✔
1870

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

1882
  return code;
12,250✔
1883
}
1884

1885
static int32_t jsonToName(const SJson* pJson, void* pObj) {
11,860✔
1886
  SName* pNode = (SName*)pObj;
11,860✔
1887

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

1899
  return code;
11,863✔
1900
}
1901

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

1910
static int32_t physiScanNodeToJson(const void* pObj, SJson* pJson) {
12,250✔
1911
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
12,250✔
1912

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

1936
  return code;
12,250✔
1937
}
1938

1939
static int32_t jsonToPhysiScanNode(const SJson* pJson, void* pObj) {
11,862✔
1940
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
11,862✔
1941

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

1965
  return code;
11,862✔
1966
}
1967

1968
static const char* jkTagScanPhysiOnlyMetaCtbIdx = "OnlyMetaCtbIdx";
1969

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

1973
  int32_t code = physiScanNodeToJson(pObj, pJson);
3✔
1974

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

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

1984
  int32_t code = jsonToPhysiScanNode(pJson, pObj);
3✔
1985

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

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

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

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

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

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

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

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

2029
  return code;
×
2030
}
2031

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

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

2049
  return code;
×
2050
}
2051

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

2078
static int32_t physiTableScanNodeToJson(const void* pObj, SJson* pJson) {
12,247✔
2079
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
12,247✔
2080

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

2160
static int32_t jsonToPhysiTableScanNode(const SJson* pJson, void* pObj) {
11,859✔
2161
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
11,859✔
2162

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

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

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

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

2264
  return code;
×
2265
}
2266

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

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

2284
  return code;
×
2285
}
2286

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

2292
static int32_t physiProjectNodeToJson(const void* pObj, SJson* pJson) {
7,508✔
2293
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
7,508✔
2294

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

2311
static int32_t jsonToPhysiProjectNode(const SJson* pJson, void* pObj) {
7,044✔
2312
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
7,044✔
2313

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

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

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

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

2425
  return code;
×
2426
}
2427

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

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

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

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

2558
  return code;
×
2559
}
2560

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

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

2623
  return code;
×
2624
}
2625

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

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

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

2656
  return code;
48✔
2657
}
2658

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

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

2682
  return code;
33✔
2683
}
2684

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

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

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

2707
  return code;
×
2708
}
2709

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

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

2727
  return code;
×
2728
}
2729

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

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

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

2768
  return code;
×
2769
}
2770

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

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

2797
  return code;
×
2798
}
2799

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

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

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

2826
  return code;
×
2827
}
2828

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

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

2849
  return code;
×
2850
}
2851

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

2864
static int32_t physiWindowNodeToJson(const void* pObj, SJson* pJson) {
7,091✔
2865
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
7,091✔
2866

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

2899
  return code;
7,091✔
2900
}
2901

2902
static int32_t jsonToPhysiWindowNode(const SJson* pJson, void* pObj) {
7,273✔
2903
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
7,273✔
2904

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

2937
  return code;
7,274✔
2938
}
2939

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

2946
static int32_t physiIntervalNodeToJson(const void* pObj, SJson* pJson) {
5,071✔
2947
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
5,071✔
2948

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

2966
  return code;
5,071✔
2967
}
2968

2969
static int32_t jsonToPhysiIntervalNode(const SJson* pJson, void* pObj) {
5,235✔
2970
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
5,235✔
2971

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

2989
  return code;
5,236✔
2990
}
2991

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

3001
static int32_t physiFillNodeToJson(const void* pObj, SJson* pJson) {
542✔
3002
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
542✔
3003

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

3030
  return code;
542✔
3031
}
3032

3033
static int32_t jsonToPhysiFillNode(const SJson* pJson, void* pObj) {
542✔
3034
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
542✔
3035

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

3062
  return code;
542✔
3063
}
3064

3065
static const char* jkSessionWindowPhysiPlanGap = "Gap";
3066

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

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

3075
  return code;
966✔
3076
}
3077

3078
static int32_t jsonToPhysiSessionWindowNode(const SJson* pJson, void* pObj) {
965✔
3079
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
965✔
3080

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

3086
  return code;
966✔
3087
}
3088

3089
static const char* jkStateWindowPhysiPlanStateKey = "StateKey";
3090

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

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

3099
  return code;
427✔
3100
}
3101

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

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

3110
  return code;
427✔
3111
}
3112

3113
static const char* jkEventWindowPhysiPlanStartCond = "StartCond";
3114
static const char* jkEventWindowPhysiPlanEndCond = "EndCond";
3115

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

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

3127
  return code;
261✔
3128
}
3129

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

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

3141
  return code;
261✔
3142
}
3143

3144
static const char* jkCountWindowPhysiPlanWindowCount = "WindowCount";
3145
static const char* jkCountWindowPhysiPlanWindowSliding = "WindowSliding";
3146

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

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

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

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

3171
  return code;
384✔
3172
}
3173

3174
static const char* jkAnomalyWindowPhysiPlanAnomalyKey = "AnomalyKey";
3175
static const char* jkAnomalyWindowPhysiPlanAnomalyOption = "AnomalyOpt";
3176

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

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

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

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

3201
  return code;
×
3202
}
3203

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

3210
static int32_t physiPartitionNodeToJson(const void* pObj, SJson* pJson) {
1,417✔
3211
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
1,417✔
3212

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

3230
  return code;
1,417✔
3231
}
3232

3233
static int32_t jsonToPhysiPartitionNode(const SJson* pJson, void* pObj) {
1,414✔
3234
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
1,414✔
3235

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

3253
  return code;
1,414✔
3254
}
3255

3256
static const char* jkStreamPartitionPhysiPlanTags = "Tags";
3257
static const char* jkStreamPartitionPhysiPlanSubtable = "Subtable";
3258

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

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

3270
  return code;
1,417✔
3271
}
3272

3273
static int32_t jsonToPhysiStreamPartitionNode(const SJson* pJson, void* pObj) {
1,414✔
3274
  SStreamPartitionPhysiNode* pNode = (SStreamPartitionPhysiNode*)pObj;
1,414✔
3275

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

3284
  return code;
1,414✔
3285
}
3286

3287
static const char* jkIndefRowsFuncPhysiPlanExprs = "Exprs";
3288
static const char* jkIndefRowsFuncPhysiPlanFuncs = "Funcs";
3289

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

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

3301
  return code;
×
3302
}
3303

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

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

3315
  return code;
×
3316
}
3317

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

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

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

3376
  return code;
40✔
3377
}
3378

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

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

3423
  return code;
40✔
3424
}
3425

3426
static const char* jkForecastFuncPhysiPlanExprs = "Exprs";
3427
static const char* jkForecastFuncPhysiPlanFuncs = "Funcs";
3428

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

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

3440
  return code;
×
3441
}
3442

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

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

3454
  return code;
×
3455
}
3456

3457
static const char* jkDataSinkInputDataBlockDesc = "InputDataBlockDesc";
3458

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

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

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

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

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

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

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

3511
  return code;
×
3512
}
3513

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

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

3543
  return code;
×
3544
}
3545

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

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

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

3588
  return code;
×
3589
}
3590

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

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

3623
  return code;
×
3624
}
3625

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

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

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

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

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

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

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

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

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

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

3762
  return code;
×
3763
}
3764

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

3770
static int32_t queryNodeAddrToJson(const void* pObj, SJson* pJson) {
12,250✔
3771
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
12,250✔
3772

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

3784
  return code;
12,250✔
3785
}
3786

3787
static int32_t jsonToQueryNodeAddr(const SJson* pJson, void* pObj) {
11,861✔
3788
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
11,861✔
3789

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

3801
  return code;
11,859✔
3802
}
3803

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

3821
static int32_t subplanToJson(const void* pObj, SJson* pJson) {
12,250✔
3822
  const SSubplan* pNode = (const SSubplan*)pObj;
12,250✔
3823

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

3871
  return code;
12,250✔
3872
}
3873

3874
static int32_t jsonToSubplan(const SJson* pJson, void* pObj) {
11,860✔
3875
  SSubplan* pNode = (SSubplan*)pObj;
11,860✔
3876

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

3924
  return code;
11,863✔
3925
}
3926

3927
static const char* jkPlanQueryId = "QueryId";
3928
static const char* jkPlanNumOfSubplans = "NumOfSubplans";
3929
static const char* jkPlanSubplans = "Subplans";
3930

3931
static int32_t planToJson(const void* pObj, SJson* pJson) {
2,002✔
3932
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
2,002✔
3933

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

3942
  return code;
2,002✔
3943
}
3944

3945
static int32_t jsonToPlan(const SJson* pJson, void* pObj) {
1,993✔
3946
  SQueryPlan* pNode = (SQueryPlan*)pObj;
1,993✔
3947

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

3956
  return code;
1,993✔
3957
}
3958

3959
static const char* jkAggLogicPlanGroupKeys = "GroupKeys";
3960
static const char* jkAggLogicPlanAggFuncs = "AggFuncs";
3961

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

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

3973
  return code;
×
3974
}
3975

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

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

3987
  return code;
×
3988
}
3989

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

3995
static int32_t dataTypeToJson(const void* pObj, SJson* pJson) {
1,974,409✔
3996
  const SDataType* pNode = (const SDataType*)pObj;
1,974,409✔
3997

3998
  int32_t code = tjsonAddIntegerToObject(pJson, jkDataTypeType, pNode->type);
1,974,409✔
3999
  if (TSDB_CODE_SUCCESS == code) {
1,974,409!
4000
    code = tjsonAddIntegerToObject(pJson, jkDataTypePrecision, pNode->precision);
1,974,409✔
4001
  }
4002
  if (TSDB_CODE_SUCCESS == code) {
1,974,409!
4003
    code = tjsonAddIntegerToObject(pJson, jkDataTypeScale, pNode->scale);
1,974,409✔
4004
  }
4005
  if (TSDB_CODE_SUCCESS == code) {
1,974,409!
4006
    code = tjsonAddIntegerToObject(pJson, jkDataTypeDataBytes, pNode->bytes);
1,974,409✔
4007
  }
4008

4009
  return code;
1,974,409✔
4010
}
4011

4012
static int32_t jsonToDataType(const SJson* pJson, void* pObj) {
2,885,437✔
4013
  SDataType* pNode = (SDataType*)pObj;
2,885,437✔
4014

4015
  int32_t code = tjsonGetUTinyIntValue(pJson, jkDataTypeType, &pNode->type);
2,885,437✔
4016
  if (TSDB_CODE_SUCCESS == code) {
2,882,973!
4017
    code = tjsonGetUTinyIntValue(pJson, jkDataTypePrecision, &pNode->precision);
2,882,974✔
4018
  }
4019
  if (TSDB_CODE_SUCCESS == code) {
2,883,276!
4020
    code = tjsonGetUTinyIntValue(pJson, jkDataTypeScale, &pNode->scale);
2,883,279✔
4021
  }
4022
  if (TSDB_CODE_SUCCESS == code) {
2,880,917!
4023
    code = tjsonGetIntValue(pJson, jkDataTypeDataBytes, &pNode->bytes);
2,880,923✔
4024
  }
4025

4026
  return TSDB_CODE_SUCCESS;
2,880,922✔
4027
}
4028

4029
static const char* jkExprDataType = "DataType";
4030
static const char* jkExprAliasName = "AliasName";
4031
static const char* jkExprUserAlias = "UserAlias";
4032

4033
static int32_t exprNodeToJson(const void* pObj, SJson* pJson) {
1,279,014✔
4034
  const SExprNode* pNode = (const SExprNode*)pObj;
1,279,014✔
4035

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

4044
  return code;
1,279,014✔
4045
}
4046

4047
static int32_t jsonToExprNode(const SJson* pJson, void* pObj) {
2,185,741✔
4048
  SExprNode* pNode = (SExprNode*)pObj;
2,185,741✔
4049

4050
  int32_t code = tjsonToObject(pJson, jkExprDataType, jsonToDataType, &pNode->resType);
2,185,741✔
4051
  if (TSDB_CODE_SUCCESS == code) {
2,184,267✔
4052
    code = tjsonGetStringValue(pJson, jkExprAliasName, pNode->aliasName);
2,184,265✔
4053
  }
4054
  if (TSDB_CODE_SUCCESS == code) {
2,186,251!
4055
    code = tjsonGetStringValue(pJson, jkExprUserAlias, pNode->userAlias);
2,186,254✔
4056
  }
4057

4058
  return code;
2,186,271✔
4059
}
4060

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

4076
static int32_t columnNodeToJson(const void* pObj, SJson* pJson) {
809,716✔
4077
  const SColumnNode* pNode = (const SColumnNode*)pObj;
809,716✔
4078

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

4125
static int32_t jsonToColumnNode(const SJson* pJson, void* pObj) {
1,249,589✔
4126
  SColumnNode* pNode = (SColumnNode*)pObj;
1,249,589✔
4127

4128
  int32_t code = jsonToExprNode(pJson, pObj);
1,249,589✔
4129
  if (TSDB_CODE_SUCCESS == code) {
1,249,816!
4130
    code = tjsonGetUBigIntValue(pJson, jkColumnTableId, &pNode->tableId);
1,249,821✔
4131
  }
4132
  if (TSDB_CODE_SUCCESS == code) {
1,249,771!
4133
    code = tjsonGetTinyIntValue(pJson, jkColumnTableType, &pNode->tableType);
1,249,777✔
4134
  }
4135
  if (TSDB_CODE_SUCCESS == code) {
1,249,859!
4136
    code = tjsonGetSmallIntValue(pJson, jkColumnColId, &pNode->colId);
1,249,866✔
4137
  }
4138
  if (TSDB_CODE_SUCCESS == code) {
1,249,351✔
4139
    code = tjsonGetSmallIntValue(pJson, jkColumnProjId, &pNode->projIdx);
1,249,349✔
4140
  }
4141
  if (TSDB_CODE_SUCCESS == code) {
1,249,721✔
4142
    tjsonGetNumberValue(pJson, jkColumnColType, pNode->colType, code);
1,249,719✔
4143
  }
4144
  if (TSDB_CODE_SUCCESS == code) {
1,249,893✔
4145
    code = tjsonGetStringValue(pJson, jkColumnDbName, pNode->dbName);
1,249,892✔
4146
  }
4147
  if (TSDB_CODE_SUCCESS == code) {
1,249,847✔
4148
    code = tjsonGetStringValue(pJson, jkColumnTableName, pNode->tableName);
1,249,846✔
4149
  }
4150
  if (TSDB_CODE_SUCCESS == code) {
1,250,011✔
4151
    code = tjsonGetStringValue(pJson, jkColumnTableAlias, pNode->tableAlias);
1,250,005✔
4152
  }
4153
  if (TSDB_CODE_SUCCESS == code) {
1,250,037✔
4154
    code = tjsonGetStringValue(pJson, jkColumnColName, pNode->colName);
1,250,033✔
4155
  }
4156
  if (TSDB_CODE_SUCCESS == code) {
1,249,965✔
4157
    code = tjsonGetSmallIntValue(pJson, jkColumnDataBlockId, &pNode->dataBlockId);
1,249,961✔
4158
  }
4159
  if (TSDB_CODE_SUCCESS == code) {
1,249,868✔
4160
    code = tjsonGetSmallIntValue(pJson, jkColumnSlotId, &pNode->slotId);
1,249,865✔
4161
  }
4162
  if (TSDB_CODE_SUCCESS == code) {
1,249,801✔
4163
    code = tjsonGetBoolValue(pJson, jkColumnTableHasPk, &pNode->tableHasPk);
1,249,793✔
4164
  }
4165
  if (TSDB_CODE_SUCCESS == code) {
1,249,946✔
4166
    code = tjsonGetBoolValue(pJson, jkColumnIsPk, &pNode->isPk);
1,249,938✔
4167
  }    
4168
  if (TSDB_CODE_SUCCESS == code) {
1,249,519✔
4169
    code = tjsonGetSmallIntValue(pJson, jkColumnNumOfPKs, &pNode->numOfPKs);
1,249,513✔
4170
  }  
4171
  return code;
1,249,968✔
4172
}
4173

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

4183
static int32_t datumToJson(const void* pObj, SJson* pJson) {
51,621✔
4184
  const SValueNode* pNode = (const SValueNode*)pObj;
51,621✔
4185

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

4250
  return code;
51,621✔
4251
}
4252

4253
static int32_t valueNodeToJson(const void* pObj, SJson* pJson) {
57,976✔
4254
  const SValueNode* pNode = (const SValueNode*)pObj;
57,976✔
4255

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

4282
  return code;
57,976✔
4283
}
4284

4285
static int32_t jsonToDatum(const SJson* pJson, void* pObj) {
83,554✔
4286
  SValueNode* pNode = (SValueNode*)pObj;
83,554✔
4287

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

4403
  return code;
83,558✔
4404
}
4405

4406
static int32_t jsonToValueNode(const SJson* pJson, void* pObj) {
90,456✔
4407
  SValueNode* pNode = (SValueNode*)pObj;
90,456✔
4408

4409
  int32_t code = jsonToExprNode(pJson, pObj);
90,456✔
4410
  int32_t literalSize = 0;
90,470✔
4411
  if (TSDB_CODE_SUCCESS == code) {
90,470!
4412
    code = tjsonGetIntValue(pJson, jkValueLiteralSize, &literalSize);
90,470✔
4413
  }
4414
  if (TSDB_CODE_SUCCESS == code && literalSize > 0) {
90,457!
4415
    code = tjsonDupStringValue(pJson, jkValueLiteral, &pNode->literal);
66,593✔
4416
  }
4417
  if (TSDB_CODE_SUCCESS == code) {
90,463!
4418
    code = tjsonGetIntValue(pJson, jkValueFlag, &pNode->flag);
90,470✔
4419
  }
4420
  if (TSDB_CODE_SUCCESS == code) {
90,441!
4421
    code = tjsonGetBoolValue(pJson, jkValueTranslate, &pNode->translate);
90,448✔
4422
  }
4423
  if (TSDB_CODE_SUCCESS == code) {
90,468!
4424
    code = tjsonGetBoolValue(pJson, jkValueNotReserved, &pNode->notReserved);
90,475✔
4425
  }
4426
  if (TSDB_CODE_SUCCESS == code) {
90,464!
4427
    code = tjsonGetBoolValue(pJson, jkValueIsNull, &pNode->isNull);
90,471✔
4428
  }
4429
  if (TSDB_CODE_SUCCESS == code) {
90,466!
4430
    code = tjsonGetTinyIntValue(pJson, jkValueUnit, &pNode->unit);
90,473✔
4431
  }
4432
  if (TSDB_CODE_SUCCESS == code && pNode->translate && !pNode->isNull) {
90,447!
4433
    code = jsonToDatum(pJson, pNode);
83,554✔
4434
  }
4435

4436
  return code;
90,463✔
4437
}
4438

4439
static const char* jkOperatorType = "OpType";
4440
static const char* jkOperatorLeft = "Left";
4441
static const char* jkOperatorRight = "Right";
4442

4443
static int32_t operatorNodeToJson(const void* pObj, SJson* pJson) {
6,377✔
4444
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
6,377✔
4445

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

4457
  return code;
6,377✔
4458
}
4459

4460
static int32_t jsonToOperatorNode(const SJson* pJson, void* pObj) {
16,502✔
4461
  SOperatorNode* pNode = (SOperatorNode*)pObj;
16,502✔
4462

4463
  int32_t code = jsonToExprNode(pJson, pObj);
16,502✔
4464
  if (TSDB_CODE_SUCCESS == code) {
16,500!
4465
    tjsonGetNumberValue(pJson, jkOperatorType, pNode->opType, code);
16,500✔
4466
  }
4467
  if (TSDB_CODE_SUCCESS == code) {
16,501!
4468
    code = jsonToNodeObject(pJson, jkOperatorLeft, &pNode->pLeft);
16,501✔
4469
  }
4470
  if (TSDB_CODE_SUCCESS == code) {
16,502!
4471
    code = jsonToNodeObject(pJson, jkOperatorRight, &pNode->pRight);
16,502✔
4472
  }
4473

4474
  return code;
16,495✔
4475
}
4476

4477
static const char* jkLogicCondType = "CondType";
4478
static const char* jkLogicCondParameters = "Parameters";
4479

4480
static int32_t logicConditionNodeToJson(const void* pObj, SJson* pJson) {
1,747✔
4481
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
1,747✔
4482

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

4491
  return code;
1,747✔
4492
}
4493

4494
static int32_t jsonToLogicConditionNode(const SJson* pJson, void* pObj) {
6,369✔
4495
  SLogicConditionNode* pNode = (SLogicConditionNode*)pObj;
6,369✔
4496

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

4505
  return code;
6,369✔
4506
}
4507

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

4519
static int32_t functionNodeToJson(const void* pObj, SJson* pJson) {
401,580✔
4520
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
401,580✔
4521

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

4556
static int32_t jsonToFunctionNode(const SJson* pJson, void* pObj) {
812,460✔
4557
  SFunctionNode* pNode = (SFunctionNode*)pObj;
812,460✔
4558

4559
  int32_t code = jsonToExprNode(pJson, pObj);
812,460✔
4560
  if (TSDB_CODE_SUCCESS == code) {
812,409!
4561
    code = tjsonGetStringValue(pJson, jkFunctionName, pNode->functionName);
812,409✔
4562
  }
4563
  if (TSDB_CODE_SUCCESS == code) {
812,169!
4564
    code = tjsonGetIntValue(pJson, jkFunctionId, &pNode->funcId);
812,170✔
4565
  }
4566
  if (TSDB_CODE_SUCCESS == code) {
811,957!
4567
    code = tjsonGetIntValue(pJson, jkFunctionType, &pNode->funcType);
811,958✔
4568
  }
4569
  if (TSDB_CODE_SUCCESS == code) {
812,224✔
4570
    code = jsonToNodeList(pJson, jkFunctionParameter, &pNode->pParameterList);
812,221✔
4571
  }
4572
  if (TSDB_CODE_SUCCESS == code) {
812,556✔
4573
    code = tjsonGetIntValue(pJson, jkFunctionUdfBufSize, &pNode->udfBufSize);
812,553✔
4574
  }
4575
  if (TSDB_CODE_SUCCESS == code) {
812,503✔
4576
    code = tjsonGetBoolValue(pJson, jkFunctionHasPk, &pNode->hasPk);
812,499✔
4577
  }
4578
  if (TSDB_CODE_SUCCESS == code) {
812,435✔
4579
    code = tjsonGetIntValue(pJson, jkFunctionPkBytes, &pNode->pkBytes);
812,433✔
4580
  }  
4581
  if (TSDB_CODE_SUCCESS == code) {
812,487✔
4582
    code = tjsonGetBoolValue(pJson, jkFunctionIsMergeFunc, &pNode->hasOriginalFunc);
812,483✔
4583
  }
4584
  if (TSDB_CODE_SUCCESS == code) {
812,491✔
4585
    code = tjsonGetIntValue(pJson, jkFunctionMergeFuncOf, &pNode->originalFuncId);
812,487✔
4586
  }
4587
  if (TSDB_CODE_SUCCESS == code) {
812,454✔
4588
    tjsonGetNumberValue(pJson, jkFunctionTrimType, pNode->trimType, code);
812,453✔
4589
  }
4590

4591
  return code;
812,521✔
4592
}
4593

4594
static const char* jkTableDbName = "DbName";
4595
static const char* jkTableTableName = "tableName";
4596
static const char* jkTableTableAlias = "tableAlias";
4597

4598
static int32_t tableNodeToJson(const void* pObj, SJson* pJson) {
1,466✔
4599
  const STableNode* pNode = (const STableNode*)pObj;
1,466✔
4600

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

4612
  return code;
1,466✔
4613
}
4614

4615
static int32_t jsonToTableNode(const SJson* pJson, void* pObj) {
11,307✔
4616
  STableNode* pNode = (STableNode*)pObj;
11,307✔
4617

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

4629
  return code;
11,307✔
4630
}
4631

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

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

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

4671
  return code;
×
4672
}
4673

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

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

4703
  return code;
×
4704
}
4705

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

4712
static int32_t realTableNodeToJson(const void* pObj, SJson* pJson) {
1,465✔
4713
  const SRealTableNode* pNode = (const SRealTableNode*)pObj;
1,465✔
4714

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

4732
  return code;
1,465✔
4733
}
4734

4735
static int32_t jsonToRealTableNode(const SJson* pJson, void* pObj) {
11,306✔
4736
  SRealTableNode* pNode = (SRealTableNode*)pObj;
11,306✔
4737

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

4757
  return code;
11,306✔
4758
}
4759

4760
static const char* jkTempTableSubquery = "Subquery";
4761

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

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

4770
  return code;
1✔
4771
}
4772

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

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

4781
  return code;
1✔
4782
}
4783

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

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

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

4810
  return code;
×
4811
}
4812

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

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

4833
  return code;
×
4834
}
4835

4836
static const char* jkGroupingSetType = "GroupingSetType";
4837
static const char* jkGroupingSetParameter = "Parameters";
4838

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

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

4847
  return code;
×
4848
}
4849

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

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

4859
  return code;
×
4860
}
4861

4862
static const char* jkOrderByExprExpr = "Expr";
4863
static const char* jkOrderByExprOrder = "Order";
4864
static const char* jkOrderByExprNullOrder = "NullOrder";
4865

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

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

4877
  return code;
×
4878
}
4879

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

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

4891
  return code;
×
4892
}
4893

4894
static const char* jkLimitLimit = "Limit";
4895
static const char* jkLimitOffset = "Offset";
4896

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

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

4905
  return code;
×
4906
}
4907

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

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

4916
  return code;
×
4917
}
4918

4919
static const char* jkStateWindowCol = "StateWindowCol";
4920
static const char* jkStateWindowExpr = "StateWindowExpr";
4921

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

4931
static int32_t jsonToStateWindowNode(const SJson* pJson, void* pObj) {
2,090✔
4932
  SStateWindowNode* pNode = (SStateWindowNode*)pObj;
2,090✔
4933

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

4941
static const char* jkSessionWindowTsPrimaryKey = "TsPrimaryKey";
4942
static const char* jkSessionWindowGap = "Gap";
4943

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

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

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

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

4964
static const char* jkEventWindowTsPrimaryKey = "TsPrimaryKey";
4965
static const char* jkEventWindowStartCond = "StartCond";
4966
static const char* jkEventWindowEndCond = "EndCond";
4967

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

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

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

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

4994
static const char* jkCountWindowTsPrimaryKey = "CountTsPrimaryKey";
4995
static const char* jkCountWindowCount = "CountWindowCount";
4996
static const char* jkCountWindowSliding = "CountWindowSliding";
4997

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

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

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

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

5024
static const char* jkAnomalyWindowTsPrimaryKey = "AnomalyTsPrimaryKey";
5025
static const char* jkAnomalyWindowExpr = "AnomalyWindowExpr";
5026
static const char* jkAnomalyWindowOption = "AnomalyWindowOpt";
5027

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

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

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

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

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

5060
static int32_t intervalWindowNodeToJson(const void* pObj, SJson* pJson) {
692✔
5061
  const SIntervalWindowNode* pNode = (const SIntervalWindowNode*)pObj;
692✔
5062

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

5077
  return code;
692✔
5078
}
5079

5080
static int32_t jsonToIntervalWindowNode(const SJson* pJson, void* pObj) {
7,103✔
5081
  SIntervalWindowNode* pNode = (SIntervalWindowNode*)pObj;
7,103✔
5082

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

5097
  return code;
7,103✔
5098
}
5099

5100
static const char* jkNodeListDataType = "DataType";
5101
static const char* jkNodeListNodeList = "NodeList";
5102

5103
static int32_t nodeListNodeToJson(const void* pObj, SJson* pJson) {
2,865✔
5104
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
2,865✔
5105

5106
  int32_t code = tjsonAddObject(pJson, jkNodeListDataType, dataTypeToJson, &pNode->node.resType);
2,865✔
5107
  if (TSDB_CODE_SUCCESS == code) {
2,865!
5108
    code = nodeListToJson(pJson, jkNodeListNodeList, pNode->pNodeList);
2,865✔
5109
  }
5110

5111
  return code;
2,865✔
5112
}
5113

5114
static int32_t jsonToNodeListNode(const SJson* pJson, void* pObj) {
3,026✔
5115
  SNodeListNode* pNode = (SNodeListNode*)pObj;
3,026✔
5116

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

5122
  return code;
3,026✔
5123
}
5124

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

5131
static int32_t fillNodeToJson(const void* pObj, SJson* pJson) {
138✔
5132
  const SFillNode* pNode = (const SFillNode*)pObj;
138✔
5133

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

5148
  return code;
138✔
5149
}
5150

5151
static int32_t jsonToFillNode(const SJson* pJson, void* pObj) {
186✔
5152
  SFillNode* pNode = (SFillNode*)pObj;
186✔
5153

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

5169
  return code;
186✔
5170
}
5171

5172
static const char* jkTargetDataBlockId = "DataBlockId";
5173
static const char* jkTargetSlotId = "SlotId";
5174
static const char* jkTargetExpr = "Expr";
5175

5176
static int32_t targetNodeToJson(const void* pObj, SJson* pJson) {
693,072✔
5177
  const STargetNode* pNode = (const STargetNode*)pObj;
693,072✔
5178

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

5187
  return code;
693,072✔
5188
}
5189

5190
static int32_t jsonToTargetNode(const SJson* pJson, void* pObj) {
696,355✔
5191
  STargetNode* pNode = (STargetNode*)pObj;
696,355✔
5192

5193
  int32_t code = tjsonGetSmallIntValue(pJson, jkTargetDataBlockId, &pNode->dataBlockId);
696,355✔
5194
  if (TSDB_CODE_SUCCESS == code) {
696,351!
5195
    code = tjsonGetSmallIntValue(pJson, jkTargetSlotId, &pNode->slotId);
696,351✔
5196
  }
5197
  if (TSDB_CODE_SUCCESS == code) {
696,199✔
5198
    code = jsonToNodeObject(pJson, jkTargetExpr, &pNode->pExpr);
696,195✔
5199
  }
5200

5201
  return code;
696,533✔
5202
}
5203

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

5210
static int32_t slotDescNodeToJson(const void* pObj, SJson* pJson) {
692,530✔
5211
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
692,530✔
5212

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

5227
  return code;
692,530✔
5228
}
5229

5230
static int32_t jsonToSlotDescNode(const SJson* pJson, void* pObj) {
695,792✔
5231
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
695,792✔
5232

5233
  int32_t code = tjsonGetSmallIntValue(pJson, jkSlotDescSlotId, &pNode->slotId);
695,792✔
5234
  if (TSDB_CODE_SUCCESS == code) {
695,590!
5235
    code = tjsonToObject(pJson, jkSlotDescDataType, jsonToDataType, &pNode->dataType);
695,590✔
5236
  }
5237
  if (TSDB_CODE_SUCCESS == code) {
694,790!
5238
    code = tjsonGetBoolValue(pJson, jkSlotDescReserve, &pNode->reserve);
694,790✔
5239
  }
5240
  if (TSDB_CODE_SUCCESS == code) {
695,498!
5241
    code = tjsonGetBoolValue(pJson, jkSlotDescOutput, &pNode->output);
695,498✔
5242
  }
5243
  if (TSDB_CODE_SUCCESS == code) {
695,400!
5244
    code = tjsonGetStringValue(pJson, jkSlotDescName, pNode->name);
695,401✔
5245
  }
5246

5247
  return code;
694,944✔
5248
}
5249

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

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

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

5270
  return code;
×
5271
}
5272

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

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

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

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

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

5316
  return code;
×
5317
}
5318

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

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

5339
  return code;
×
5340
}
5341

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

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

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

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

5364

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

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

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

5460
  return code;
×
5461
}
5462

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

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

5534
  return code;
×
5535
}
5536

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

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

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

5568
  return code;
×
5569
}
5570

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

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

5594
  return code;
×
5595
}
5596

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

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

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

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

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

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

5640
  return code;
×
5641
}
5642

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

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

5660
  return code;
×
5661
}
5662

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

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

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

5674
  return code;
×
5675
}
5676

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

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

5685
  return code;
×
5686
}
5687

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

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

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

5715
  return code;
×
5716
}
5717

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

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

5738
  return code;
×
5739
}
5740

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

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

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

5755
  return code;
76✔
5756
}
5757

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

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

5769
  return code;
83✔
5770
}
5771

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

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

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

5790
  return code;
76✔
5791
}
5792

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

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

5807
  return code;
83✔
5808
}
5809

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

5816
static int32_t dataBlockDescNodeToJson(const void* pObj, SJson* pJson) {
28,896✔
5817
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
28,896✔
5818

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

5833
  return code;
28,896✔
5834
}
5835

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

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

5853
  return code;
28,205✔
5854
}
5855

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

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

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

5883
  return code;
×
5884
}
5885

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

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

5907
  return code;
×
5908
}
5909

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

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

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

5989
  return code;
1,466✔
5990
}
5991

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

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

6051
  return code;
11,307✔
6052
}
6053

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

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

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

6069
  return code;
×
6070
}
6071

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

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

6084
  return code;
×
6085
}
6086

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

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

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

6102
  return code;
×
6103
}
6104

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

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

6116
  return code;
×
6117
}
6118

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

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

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

6130
  return code;
×
6131
}
6132

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

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

6141
  return code;
×
6142
}
6143

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

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

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

6155
  return code;
×
6156
}
6157

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

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

6166
  return code;
×
6167
}
6168

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

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

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

6176
  return code;
×
6177
}
6178

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

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

6184
  return code;
×
6185
}
6186

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

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

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

6214
  return code;
×
6215
}
6216

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

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

6237
  return code;
×
6238
}
6239

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

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

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

6275
  return code;
×
6276
}
6277

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

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

6304
  return code;
×
6305
}
6306

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

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

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

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

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

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

6334
  return code;
×
6335
}
6336

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

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

6348
  return code;
×
6349
}
6350

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

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

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

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

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

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

6382
  return code;
×
6383
}
6384

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

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

6399
  return code;
×
6400
}
6401

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

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

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

6437
  return code;
×
6438
}
6439

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

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

6466
  return code;
×
6467
}
6468

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

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

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

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

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

6488
  return code;
×
6489
}
6490

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

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

6502
  return code;
×
6503
}
6504

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

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

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

6532
  return code;
×
6533
}
6534

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

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

6555
  return code;
×
6556
}
6557

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

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

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

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

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

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

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

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

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

6593
  return code;
×
6594
}
6595

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

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

6604
  return code;
×
6605
}
6606

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

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

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

6622
  return code;
×
6623
}
6624

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

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

6636
  return code;
×
6637
}
6638

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

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

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

6674
  return code;
×
6675
}
6676

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

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

6704
  return code;
×
6705
}
6706

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

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

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

6722
  return code;
×
6723
}
6724

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

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

6736
  return code;
×
6737
}
6738

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

6855
  return code;
×
6856
}
6857

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

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

6875
  return code;
×
6876
}
6877

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

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

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

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

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

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

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

6922
  return code;
×
6923
}
6924

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

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

6939
  return code;
×
6940
}
6941

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

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

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

6953
  return code;
×
6954
}
6955

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

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

6964
  return code;
×
6965
}
6966

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

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

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

6982
  return code;
×
6983
}
6984

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

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

6996
  return code;
×
6997
}
6998

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

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

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

7010
  return code;
×
7011
}
7012

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

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

7021
  return code;
×
7022
}
7023

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

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

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

7035
  return code;
×
7036
}
7037

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

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

7046
  return code;
×
7047
}
7048

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

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

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

7064
  return code;
×
7065
}
7066

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

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

7078
  return code;
×
7079
}
7080

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

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

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

7092
  return code;
×
7093
}
7094

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

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

7103
  return code;
×
7104
}
7105

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

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

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

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

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

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

7153
  return code;
×
7154
}
7155

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

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

7182
  return code;
×
7183
}
7184

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

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

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

7196
  return code;
×
7197
}
7198

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

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

7207
  return code;
×
7208
}
7209

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

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

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

7221
  return code;
×
7222
}
7223

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

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

7232
  return code;
×
7233
}
7234

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

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

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

7258
  return code;
×
7259
}
7260

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

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

7278
  return code;
×
7279
}
7280

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

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

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

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

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

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

7308
  return code;
×
7309
}
7310

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

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

7322
  return code;
×
7323
}
7324

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

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

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

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

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

7344
  return code;
×
7345
}
7346

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

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

7358
  return code;
×
7359
}
7360

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7449
static const char* jkShowDnodeVariablesStmtDnodeId = "DnodeId";
7450
static const char* jkShowDnodeVariablesStmtLikePattern = "LikePattern";
7451

7452
static int32_t showDnodeVariablesStmtToJson(const void* pObj, SJson* pJson) {
×
7453
  const SShowDnodeVariablesStmt* pNode = (const SShowDnodeVariablesStmt*)pObj;
×
7454

7455
  int32_t code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtDnodeId, nodeToJson, pNode->pDnodeId);
×
7456
  if (TSDB_CODE_SUCCESS == code) {
×
7457
    code = tjsonAddObject(pJson, jkShowDnodeVariablesStmtLikePattern, nodeToJson, pNode->pLikePattern);
×
7458
  }
7459

7460
  return code;
×
7461
}
7462

7463
static int32_t jsonToShowDnodeVariablesStmt(const SJson* pJson, void* pObj) {
×
7464
  SShowDnodeVariablesStmt* pNode = (SShowDnodeVariablesStmt*)pObj;
×
7465

7466
  int32_t code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtDnodeId, &pNode->pDnodeId);
×
7467
  if (TSDB_CODE_SUCCESS == code) {
×
7468
    code = jsonToNodeObject(pJson, jkShowDnodeVariablesStmtLikePattern, &pNode->pLikePattern);
×
7469
  }
7470

7471
  return code;
×
7472
}
7473

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

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

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

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

7482
static const char* jkShowVnodesStmtDnodeId = "DnodeId";
7483
static const char* jkShowVnodesStmtDnodeEndpoint = "DnodeEndpoint";
7484

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

7488
  int32_t code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeId, nodeToJson, pNode->pDnodeId);
×
7489
  if (TSDB_CODE_SUCCESS == code) {
×
7490
    code = tjsonAddObject(pJson, jkShowVnodesStmtDnodeEndpoint, nodeToJson, pNode->pDnodeEndpoint);
×
7491
  }
7492

7493
  return code;
×
7494
}
7495

7496
static int32_t jsonToShowVnodesStmt(const SJson* pJson, void* pObj) {
×
7497
  SShowVnodesStmt* pNode = (SShowVnodesStmt*)pObj;
×
7498

7499
  int32_t code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeId, &pNode->pDnodeId);
×
7500
  if (TSDB_CODE_SUCCESS == code) {
×
7501
    code = jsonToNodeObject(pJson, jkShowVnodesStmtDnodeEndpoint, &pNode->pDnodeEndpoint);
×
7502
  }
7503

7504
  return code;
×
7505
}
7506

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

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

7511
static const char* jkShowCreateDatabaseStmtDbName = "DbName";
7512

7513
static int32_t showCreateDatabaseStmtToJson(const void* pObj, SJson* pJson) {
×
7514
  const SShowCreateDatabaseStmt* pNode = (const SShowCreateDatabaseStmt*)pObj;
×
7515
  return tjsonAddStringToObject(pJson, jkShowCreateDatabaseStmtDbName, pNode->dbName);
×
7516
}
7517

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

7523
static const char* jkShowCreateTableStmtDbName = "DbName";
7524
static const char* jkShowCreateTableStmtTableName = "TableName";
7525

7526
static int32_t showCreateTableStmtToJson(const void* pObj, SJson* pJson) {
×
7527
  const SShowCreateTableStmt* pNode = (const SShowCreateTableStmt*)pObj;
×
7528

7529
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
×
7530
  if (TSDB_CODE_SUCCESS == code) {
×
7531
    code = tjsonAddStringToObject(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
×
7532
  }
7533

7534
  return code;
×
7535
}
7536

7537
static int32_t jsonToShowCreateTableStmt(const SJson* pJson, void* pObj) {
×
7538
  SShowCreateTableStmt* pNode = (SShowCreateTableStmt*)pObj;
×
7539

7540
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateTableStmtDbName, pNode->dbName);
×
7541
  if (TSDB_CODE_SUCCESS == code) {
×
7542
    code = tjsonGetStringValue(pJson, jkShowCreateTableStmtTableName, pNode->tableName);
×
7543
  }
7544

7545
  return code;
×
7546
}
7547

7548
static int32_t showCreateStableStmtToJson(const void* pObj, SJson* pJson) {
×
7549
  return showCreateTableStmtToJson(pObj, pJson);
×
7550
}
7551

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

7556
static const char* jkShowCreateViewStmtDbName = "DbName";
7557
static const char* jkShowCreateViewStmtViewName = "ViewName";
7558

7559
static int32_t showCreateViewStmtToJson(const void* pObj, SJson* pJson) {
×
7560
  const SShowCreateViewStmt* pNode = (const SShowCreateViewStmt*)pObj;
×
7561

7562
  int32_t code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
7563
  if (TSDB_CODE_SUCCESS == code) {
×
7564
    code = tjsonAddStringToObject(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
7565
  }
7566

7567
  return code;
×
7568
}
7569

7570
static int32_t jsonToShowCreateViewStmt(const SJson* pJson, void* pObj) {
×
7571
  SShowCreateViewStmt* pNode = (SShowCreateViewStmt*)pObj;
×
7572

7573
  int32_t code = tjsonGetStringValue(pJson, jkShowCreateViewStmtDbName, pNode->dbName);
×
7574
  if (TSDB_CODE_SUCCESS == code) {
×
7575
    code = tjsonGetStringValue(pJson, jkShowCreateViewStmtViewName, pNode->viewName);
×
7576
  }
7577

7578
  return code;
×
7579
}
7580

7581
static const char* jkShowTableDistributedStmtDbName = "DbName";
7582
static const char* jkShowTableDistributedStmtTableName = "TableName";
7583

7584
static int32_t showTableDistributedStmtToJson(const void* pObj, SJson* pJson) {
×
7585
  const SShowTableDistributedStmt* pNode = (const SShowTableDistributedStmt*)pObj;
×
7586

7587
  int32_t code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
×
7588
  if (TSDB_CODE_SUCCESS == code) {
×
7589
    code = tjsonAddStringToObject(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
×
7590
  }
7591

7592
  return code;
×
7593
}
7594

7595
static int32_t jsonToShowTableDistributedStmt(const SJson* pJson, void* pObj) {
×
7596
  SShowTableDistributedStmt* pNode = (SShowTableDistributedStmt*)pObj;
×
7597

7598
  int32_t code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtDbName, pNode->dbName);
×
7599
  if (TSDB_CODE_SUCCESS == code) {
×
7600
    code = tjsonGetStringValue(pJson, jkShowTableDistributedStmtTableName, pNode->tableName);
×
7601
  }
7602

7603
  return code;
×
7604
}
7605

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

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

7610
static const char* jkShowTableTagsStmtDbName = "DbName";
7611
static const char* jkShowTableTagsStmtTbName = "TbName";
7612
static const char* jkShowTableTagsStmtTags = "Tags";
7613

7614
static int32_t showTableTagsStmtToJson(const void* pObj, SJson* pJson) {
×
7615
  const SShowTableTagsStmt* pNode = (const SShowTableTagsStmt*)pObj;
×
7616

7617
  int32_t code = tjsonAddObject(pJson, jkShowTableTagsStmtDbName, nodeToJson, pNode->pDbName);
×
7618
  if (TSDB_CODE_SUCCESS == code) {
×
7619
    code = tjsonAddObject(pJson, jkShowTableTagsStmtTbName, nodeToJson, pNode->pTbName);
×
7620
  }
7621
  if (TSDB_CODE_SUCCESS == code) {
×
7622
    code = nodeListToJson(pJson, jkShowTableTagsStmtTags, pNode->pTags);
×
7623
  }
7624

7625
  return code;
×
7626
}
7627

7628
static int32_t jsonToShowTableTagsStmt(const SJson* pJson, void* pObj) {
×
7629
  SShowTableTagsStmt* pNode = (SShowTableTagsStmt*)pObj;
×
7630

7631
  int32_t code = jsonToNodeObject(pJson, jkShowTableTagsStmtDbName, &pNode->pDbName);
×
7632
  if (TSDB_CODE_SUCCESS == code) {
×
7633
    code = jsonToNodeObject(pJson, jkShowTableTagsStmtTbName, &pNode->pTbName);
×
7634
  }
7635
  if (TSDB_CODE_SUCCESS == code) {
×
7636
    code = jsonToNodeList(pJson, jkShowTableTagsStmtTags, &pNode->pTags);
×
7637
  }
7638

7639
  return code;
×
7640
}
7641

7642
static const char* jkDeleteStmtFromTable = "FromTable";
7643
static const char* jkDeleteStmtWhere = "Where";
7644
static const char* jkDeleteStmtCountFunc = "CountFunc";
7645
static const char* jkDeleteStmtTagIndexCond = "TagIndexCond";
7646
static const char* jkDeleteStmtTimeRangeStartKey = "TimeRangeStartKey";
7647
static const char* jkDeleteStmtTimeRangeEndKey = "TimeRangeEndKey";
7648
static const char* jkDeleteStmtPrecision = "Precision";
7649
static const char* jkDeleteStmtDeleteZeroRows = "DeleteZeroRows";
7650

7651
static int32_t deleteStmtToJson(const void* pObj, SJson* pJson) {
×
7652
  const SDeleteStmt* pNode = (const SDeleteStmt*)pObj;
×
7653

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

7677
  return code;
×
7678
}
7679

7680
static int32_t jsonToDeleteStmt(const SJson* pJson, void* pObj) {
×
7681
  SDeleteStmt* pNode = (SDeleteStmt*)pObj;
×
7682

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

7706
  return code;
×
7707
}
7708

7709
static const char* jkInsertStmtTable = "Table";
7710
static const char* jkInsertStmtCols = "Cols";
7711
static const char* jkInsertStmtQuery = "Query";
7712
static const char* jkInsertStmtPrecision = "Precision";
7713

7714
static int32_t insertStmtToJson(const void* pObj, SJson* pJson) {
×
7715
  const SInsertStmt* pNode = (const SInsertStmt*)pObj;
×
7716

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

7728
  return code;
×
7729
}
7730

7731
static int32_t jsonToInsertStmt(const SJson* pJson, void* pObj) {
×
7732
  SInsertStmt* pNode = (SInsertStmt*)pObj;
×
7733

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

7745
  return code;
×
7746
}
7747

7748
static const char* jkTSMAOptionFuncs = "Funcs";
7749
static const char* jkTSMAOptionCols = "Cols";
7750
static const char* jkTSMAOptionInterval = "Interval";
7751
static const char* jkTSMAOptionTsPrecision = "Precision";
7752

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

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

7777
static const char* jkCreateTSMAStmtIgnoreExists = "IgnoreExists";
7778
static const char* jkCreateTSMAStmtTsmaName = "TSMAName";
7779
static const char* jkCreateTSMAStmtDbName = "DbName";
7780
static const char* jkCreateTSMAStmtTableName = "TableName";
7781
static const char* jkCreateTSMAStmtpOptions = "Options";
7782

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

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

7819
static const char* jkDropTSMAStmtIgnoreNotExists = "IgnoreNotExists";
7820
static const char* jkDropTSMAStmtDbName = "DbName";
7821
static const char* jkDropTSMAStmtTsmaName = "TSMAName";
7822

7823
static int32_t dropTSMAStmtToJson(const void* pObj, SJson* pJson) {
×
7824
  const SDropTSMAStmt* pNode = (const SDropTSMAStmt*)pObj;
×
7825
  int32_t code = tjsonAddBoolToObject(pJson, jkDropTSMAStmtIgnoreNotExists, pNode->ignoreNotExists);
×
7826
  if (TSDB_CODE_SUCCESS == code) {
×
7827
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
7828
  }
7829
  if (TSDB_CODE_SUCCESS == code) {
×
7830
    code = tjsonAddStringToObject(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
7831
  }
7832
  return code;
×
7833
}
7834

7835
static int32_t jsonToDropTSMAStmt(const SJson* pJson, void* pObj) {
×
7836
  SDropTSMAStmt* pNode = (SDropTSMAStmt*)pObj;
×
7837
  int32_t code = tjsonGetBoolValue(pJson, jkDropTSMAStmtIgnoreNotExists, &pNode->ignoreNotExists);
×
7838
  if (TSDB_CODE_SUCCESS == code) {
×
7839
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtDbName, pNode->dbName);
×
7840
  }
7841
  if (TSDB_CODE_SUCCESS == code) {
×
7842
    code = tjsonGetStringValue(pJson, jkDropTSMAStmtTsmaName, pNode->tsmaName);
×
7843
  }
7844
  return code;
×
7845
}
7846

7847
static int32_t specificNodeToJson(const void* pObj, SJson* pJson) {
2,741,995✔
7848
  switch (nodeType(pObj)) {
2,741,995!
7849
    case QUERY_NODE_COLUMN:
809,716✔
7850
      return columnNodeToJson(pObj, pJson);
809,716✔
7851
    case QUERY_NODE_VALUE:
57,976✔
7852
      return valueNodeToJson(pObj, pJson);
57,976✔
7853
    case QUERY_NODE_OPERATOR:
6,377✔
7854
      return operatorNodeToJson(pObj, pJson);
6,377✔
7855
    case QUERY_NODE_LOGIC_CONDITION:
1,747✔
7856
      return logicConditionNodeToJson(pObj, pJson);
1,747✔
7857
    case QUERY_NODE_FUNCTION:
401,580✔
7858
      return functionNodeToJson(pObj, pJson);
401,580✔
7859
    case QUERY_NODE_REAL_TABLE:
1,465✔
7860
      return realTableNodeToJson(pObj, pJson);
1,465✔
7861
    case QUERY_NODE_TEMP_TABLE:
1✔
7862
      return tempTableNodeToJson(pObj, pJson);
1✔
7863
    case QUERY_NODE_JOIN_TABLE:
×
7864
      return joinTableNodeToJson(pObj, pJson);
×
7865
    case QUERY_NODE_GROUPING_SET:
×
7866
      return groupingSetNodeToJson(pObj, pJson);
×
7867
    case QUERY_NODE_ORDER_BY_EXPR:
×
7868
      return orderByExprNodeToJson(pObj, pJson);
×
7869
    case QUERY_NODE_LIMIT:
×
7870
      return limitNodeToJson(pObj, pJson);
×
7871
    case QUERY_NODE_STATE_WINDOW:
60✔
7872
      return stateWindowNodeToJson(pObj, pJson);
60✔
7873
    case QUERY_NODE_SESSION_WINDOW:
92✔
7874
      return sessionWindowNodeToJson(pObj, pJson);
92✔
7875
    case QUERY_NODE_INTERVAL_WINDOW:
692✔
7876
      return intervalWindowNodeToJson(pObj, pJson);
692✔
7877
    case QUERY_NODE_NODE_LIST:
2,865✔
7878
      return nodeListNodeToJson(pObj, pJson);
2,865✔
7879
    case QUERY_NODE_FILL:
138✔
7880
      return fillNodeToJson(pObj, pJson);
138✔
7881
    case QUERY_NODE_RAW_EXPR:
×
7882
      break;
×
7883
    case QUERY_NODE_TARGET:
693,072✔
7884
      return targetNodeToJson(pObj, pJson);
693,072✔
7885
    case QUERY_NODE_DATABLOCK_DESC:
28,896✔
7886
      return dataBlockDescNodeToJson(pObj, pJson);
28,896✔
7887
    case QUERY_NODE_SLOT_DESC:
692,530✔
7888
      return slotDescNodeToJson(pObj, pJson);
692,530✔
7889
    case QUERY_NODE_COLUMN_DEF:
×
7890
      return columnDefNodeToJson(pObj, pJson);
×
7891
    case QUERY_NODE_DOWNSTREAM_SOURCE:
×
7892
      return downstreamSourceNodeToJson(pObj, pJson);
×
7893
    case QUERY_NODE_DATABASE_OPTIONS:
×
7894
      return databaseOptionsToJson(pObj, pJson);
×
7895
    case QUERY_NODE_TABLE_OPTIONS:
×
7896
      return tableOptionsToJson(pObj, pJson);
×
7897
    case QUERY_NODE_COLUMN_OPTIONS:
×
7898
      return columnOptionsToJson(pObj, pJson);
×
7899
    case QUERY_NODE_INDEX_OPTIONS:
×
7900
      return indexOptionsToJson(pObj, pJson);
×
7901
    case QUERY_NODE_EXPLAIN_OPTIONS:
×
7902
      return explainOptionsToJson(pObj, pJson);
×
7903
    case QUERY_NODE_STREAM_OPTIONS:
×
7904
      return streamOptionsToJson(pObj, pJson);
×
7905
    case QUERY_NODE_LEFT_VALUE:
×
7906
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to serialize.
×
7907
    case QUERY_NODE_WHEN_THEN:
76✔
7908
      return whenThenNodeToJson(pObj, pJson);
76✔
7909
    case QUERY_NODE_CASE_WHEN:
76✔
7910
      return caseWhenNodeToJson(pObj, pJson);
76✔
7911
    case QUERY_NODE_EVENT_WINDOW:
9✔
7912
      return eventWindowNodeToJson(pObj, pJson);
9✔
7913
    case QUERY_NODE_WINDOW_OFFSET:
×
7914
      return windowOffsetNodeToJson(pObj, pJson);
×
7915
    case QUERY_NODE_COUNT_WINDOW:
13✔
7916
      return countWindowNodeToJson(pObj, pJson);
13✔
7917
    case QUERY_NODE_ANOMALY_WINDOW:
×
7918
      return anomalyWindowNodeToJson(pObj, pJson);
×
7919
    case QUERY_NODE_SET_OPERATOR:
×
7920
      return setOperatorToJson(pObj, pJson);
×
7921
    case QUERY_NODE_SELECT_STMT:
1,466✔
7922
      return selectStmtToJson(pObj, pJson);
1,466✔
7923
    case QUERY_NODE_VNODE_MODIFY_STMT:
×
7924
      return vnodeModifyStmtToJson(pObj, pJson);
×
7925
    case QUERY_NODE_CREATE_DATABASE_STMT:
×
7926
      return createDatabaseStmtToJson(pObj, pJson);
×
7927
    case QUERY_NODE_ALTER_DATABASE_STMT:
×
7928
      return alterDatabaseStmtToJson(pObj, pJson);
×
7929
    case QUERY_NODE_TRIM_DATABASE_STMT:
×
7930
      return trimDatabaseStmtToJson(pObj, pJson);
×
7931
    case QUERY_NODE_S3MIGRATE_DATABASE_STMT:
×
7932
      return s3migrateDatabaseStmtToJson(pObj, pJson);
×
7933
    case QUERY_NODE_CREATE_TABLE_STMT:
×
7934
      return createTableStmtToJson(pObj, pJson);
×
7935
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
×
7936
      return createSubTableClauseToJson(pObj, pJson);
×
7937
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
×
7938
      return createMultiTablesStmtToJson(pObj, pJson);
×
7939
    case QUERY_NODE_DROP_TABLE_CLAUSE:
×
7940
      return dropTableClauseToJson(pObj, pJson);
×
7941
    case QUERY_NODE_DROP_TABLE_STMT:
×
7942
      return dropTableStmtToJson(pObj, pJson);
×
7943
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
×
7944
      return dropStableStmtToJson(pObj, pJson);
×
7945
    case QUERY_NODE_ALTER_TABLE_STMT:
×
7946
      return alterTableStmtToJson(pObj, pJson);
×
7947
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
×
7948
      return alterStableStmtToJson(pObj, pJson);
×
7949
    case QUERY_NODE_CREATE_USER_STMT:
×
7950
      return createUserStmtToJson(pObj, pJson);
×
7951
    case QUERY_NODE_ALTER_USER_STMT:
×
7952
      return alterUserStmtToJson(pObj, pJson);
×
7953
    case QUERY_NODE_DROP_USER_STMT:
×
7954
      return dropUserStmtToJson(pObj, pJson);
×
7955
    case QUERY_NODE_USE_DATABASE_STMT:
×
7956
      return useDatabaseStmtToJson(pObj, pJson);
×
7957
    case QUERY_NODE_CREATE_DNODE_STMT:
×
7958
      return createDnodeStmtToJson(pObj, pJson);
×
7959
    case QUERY_NODE_DROP_DNODE_STMT:
×
7960
      return dropDnodeStmtToJson(pObj, pJson);
×
7961
    case QUERY_NODE_ALTER_DNODE_STMT:
×
7962
      return alterDnodeStmtToJson(pObj, pJson);
×
7963
    case QUERY_NODE_CREATE_INDEX_STMT:
×
7964
      return createIndexStmtToJson(pObj, pJson);
×
7965
    case QUERY_NODE_DROP_INDEX_STMT:
×
7966
      return dropIndexStmtToJson(pObj, pJson);
×
7967
    case QUERY_NODE_CREATE_QNODE_STMT:
×
7968
      return createQnodeStmtToJson(pObj, pJson);
×
7969
    case QUERY_NODE_DROP_QNODE_STMT:
×
7970
      return dropQnodeStmtToJson(pObj, pJson);
×
7971
    case QUERY_NODE_CREATE_ANODE_STMT:
×
7972
      return createAnodeStmtToJson(pObj, pJson);
×
7973
    case QUERY_NODE_DROP_ANODE_STMT:
×
7974
      return dropAnodeStmtToJson(pObj, pJson);
×
7975
    case QUERY_NODE_UPDATE_ANODE_STMT:
×
7976
      return updateAnodeStmtToJson(pObj, pJson);
×
7977
    case QUERY_NODE_CREATE_SNODE_STMT:
×
7978
      return createSnodeStmtToJson(pObj, pJson);
×
7979
    case QUERY_NODE_DROP_SNODE_STMT:
×
7980
      return dropSnodeStmtToJson(pObj, pJson);
×
7981
    case QUERY_NODE_CREATE_MNODE_STMT:
×
7982
      return createMnodeStmtToJson(pObj, pJson);
×
7983
    case QUERY_NODE_DROP_MNODE_STMT:
×
7984
      return dropMnodeStmtToJson(pObj, pJson);
×
7985
    case QUERY_NODE_CREATE_TOPIC_STMT:
×
7986
      return createTopicStmtToJson(pObj, pJson);
×
7987
    case QUERY_NODE_DROP_TOPIC_STMT:
×
7988
      return dropTopicStmtToJson(pObj, pJson);
×
7989
    case QUERY_NODE_DROP_CGROUP_STMT:
×
7990
      return dropConsumerGroupStmtToJson(pObj, pJson);
×
7991
    case QUERY_NODE_ALTER_LOCAL_STMT:
×
7992
      return alterLocalStmtToJson(pObj, pJson);
×
7993
    case QUERY_NODE_EXPLAIN_STMT:
×
7994
      return explainStmtToJson(pObj, pJson);
×
7995
    case QUERY_NODE_DESCRIBE_STMT:
×
7996
      return describeStmtToJson(pObj, pJson);
×
7997
    case QUERY_NODE_COMPACT_DATABASE_STMT:
×
7998
      return compactDatabaseStmtToJson(pObj, pJson);
×
7999
    case QUERY_NODE_CREATE_STREAM_STMT:
×
8000
      return createStreamStmtToJson(pObj, pJson);
×
8001
    case QUERY_NODE_DROP_STREAM_STMT:
×
8002
      return dropStreamStmtToJson(pObj, pJson);
×
8003
    case QUERY_NODE_BALANCE_VGROUP_STMT:
×
8004
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to serialize.
×
8005
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
×
8006
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupLeaderStmt has no fields to serialize.
×
8007
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
8008
      return TSDB_CODE_SUCCESS;
×
8009
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
8010
      return mergeVgroupStmtToJson(pObj, pJson);
×
8011
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
×
8012
      return redistributeVgroupStmtToJson(pObj, pJson);
×
8013
    case QUERY_NODE_SPLIT_VGROUP_STMT:
×
8014
      return splitVgroupStmtToJson(pObj, pJson);
×
8015
    case QUERY_NODE_GRANT_STMT:
×
8016
      return grantStmtToJson(pObj, pJson);
×
8017
    case QUERY_NODE_REVOKE_STMT:
×
8018
      return revokeStmtToJson(pObj, pJson);
×
8019
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
8020
      return alterClusterStmtToJson(pObj, pJson);
×
8021
    case QUERY_NODE_SHOW_DNODES_STMT:
×
8022
      return showDnodesStmtToJson(pObj, pJson);
×
8023
    case QUERY_NODE_SHOW_MNODES_STMT:
×
8024
      return showMnodesStmtToJson(pObj, pJson);
×
8025
    case QUERY_NODE_SHOW_QNODES_STMT:
×
8026
      return showQnodesStmtToJson(pObj, pJson);
×
8027
    case QUERY_NODE_SHOW_ANODES_STMT:
×
8028
      return showAnodesStmtToJson(pObj, pJson);
×
8029
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
8030
      return showAnodesFullStmtToJson(pObj, pJson);
×
8031
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
8032
      return showArbGroupsStmtToJson(pObj, pJson);
×
8033
    case QUERY_NODE_SHOW_CLUSTER_STMT:
×
8034
      return showClusterStmtToJson(pObj, pJson);
×
8035
    case QUERY_NODE_SHOW_DATABASES_STMT:
×
8036
      return showDatabasesStmtToJson(pObj, pJson);
×
8037
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
×
8038
      return showFunctionsStmtToJson(pObj, pJson);
×
8039
    case QUERY_NODE_SHOW_INDEXES_STMT:
×
8040
      return showIndexesStmtToJson(pObj, pJson);
×
8041
    case QUERY_NODE_SHOW_STABLES_STMT:
×
8042
      return showStablesStmtToJson(pObj, pJson);
×
8043
    case QUERY_NODE_SHOW_STREAMS_STMT:
×
8044
      return showStreamsStmtToJson(pObj, pJson);
×
8045
    case QUERY_NODE_SHOW_TABLES_STMT:
×
8046
      return showTablesStmtToJson(pObj, pJson);
×
8047
    case QUERY_NODE_SHOW_TAGS_STMT:
×
8048
      return showTagsStmtToJson(pObj, pJson);
×
8049
    case QUERY_NODE_SHOW_USERS_STMT:
×
8050
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
8051
      return showUsersStmtToJson(pObj, pJson);
×
8052
    case QUERY_NODE_SHOW_VGROUPS_STMT:
×
8053
      return showVgroupsStmtToJson(pObj, pJson);
×
8054
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
×
8055
      return showConsumersStmtToJson(pObj, pJson);
×
8056
    case QUERY_NODE_SHOW_VARIABLES_STMT:
×
8057
      return showVariablesStmtToJson(pObj, pJson);
×
8058
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
8059
      return showGrantsFullStmtToJson(pObj, pJson);
×
8060
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
8061
      return showGrantsLogsStmtToJson(pObj, pJson);
×
8062
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
8063
      return showClusterMachinesStmtToJson(pObj, pJson);
×
8064
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
8065
      return showEncryptionsStmtToJson(pObj, pJson);
×
8066
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
×
8067
      return showDnodeVariablesStmtToJson(pObj, pJson);
×
8068
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
×
8069
      return showTransactionsStmtToJson(pObj, pJson);
×
8070
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
×
8071
      return showSubscriptionsStmtToJson(pObj, pJson);
×
8072
    case QUERY_NODE_SHOW_VNODES_STMT:
×
8073
      return showVnodesStmtToJson(pObj, pJson);
×
8074
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
×
8075
      return showUserPrivilegesStmtToJson(pObj, pJson);
×
8076
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
×
8077
      return showCreateDatabaseStmtToJson(pObj, pJson);
×
8078
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
×
8079
      return showCreateTableStmtToJson(pObj, pJson);
×
8080
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
×
8081
      return showCreateStableStmtToJson(pObj, pJson);
×
8082
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
8083
      return showCreateViewStmtToJson(pObj, pJson);
×
8084
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
×
8085
      return showTableDistributedStmtToJson(pObj, pJson);
×
8086
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
×
8087
      return showLocalVariablesStmtToJson(pObj, pJson);
×
8088
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
×
8089
      return showTableTagsStmtToJson(pObj, pJson);
×
8090
    case QUERY_NODE_DELETE_STMT:
×
8091
      return deleteStmtToJson(pObj, pJson);
×
8092
    case QUERY_NODE_INSERT_STMT:
×
8093
      return insertStmtToJson(pObj, pJson);
×
8094
    case QUERY_NODE_LOGIC_PLAN_SCAN:
×
8095
      return logicScanNodeToJson(pObj, pJson);
×
8096
    case QUERY_NODE_LOGIC_PLAN_JOIN:
×
8097
      return logicJoinNodeToJson(pObj, pJson);
×
8098
    case QUERY_NODE_LOGIC_PLAN_AGG:
×
8099
      return logicAggNodeToJson(pObj, pJson);
×
8100
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
×
8101
      return logicProjectNodeToJson(pObj, pJson);
×
8102
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
×
8103
      return logicVnodeModifyNodeToJson(pObj, pJson);
×
8104
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
×
8105
      return logicExchangeNodeToJson(pObj, pJson);
×
8106
    case QUERY_NODE_LOGIC_PLAN_MERGE:
×
8107
      return logicMergeNodeToJson(pObj, pJson);
×
8108
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
×
8109
      return logicWindowNodeToJson(pObj, pJson);
×
8110
    case QUERY_NODE_LOGIC_PLAN_FILL:
×
8111
      return logicFillNodeToJson(pObj, pJson);
×
8112
    case QUERY_NODE_LOGIC_PLAN_SORT:
×
8113
      return logicSortNodeToJson(pObj, pJson);
×
8114
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
×
8115
      return logicPartitionNodeToJson(pObj, pJson);
×
8116
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
×
8117
      return logicIndefRowsFuncNodeToJson(pObj, pJson);
×
8118
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
×
8119
      return logicInterpFuncNodeToJson(pObj, pJson);
×
8120
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
8121
      return logicForecastFuncNodeToJson(pObj, pJson);
×
8122
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
8123
      return logicGroupCacheNodeToJson(pObj, pJson);
×
8124
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
8125
      return logicDynQueryCtrlNodeToJson(pObj, pJson);
×
8126
    case QUERY_NODE_LOGIC_SUBPLAN:
×
8127
      return logicSubplanToJson(pObj, pJson);
×
8128
    case QUERY_NODE_LOGIC_PLAN:
×
8129
      return logicPlanToJson(pObj, pJson);
×
8130
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
3✔
8131
      return physiTagScanNodeToJson(pObj, pJson);
3✔
8132
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
×
8133
      return physiScanNodeToJson(pObj, pJson);
×
8134
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
×
8135
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
8136
      return physiLastRowScanNodeToJson(pObj, pJson);
×
8137
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
12,247✔
8138
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
8139
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
8140
      return physiTableScanNodeToJson(pObj, pJson);
12,247✔
8141
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
×
8142
      return physiSysTableScanNodeToJson(pObj, pJson);
×
8143
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
7,508✔
8144
      return physiProjectNodeToJson(pObj, pJson);
7,508✔
8145
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
×
8146
      return physiMergeJoinNodeToJson(pObj, pJson);
×
8147
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
8148
      return physiHashJoinNodeToJson(pObj, pJson);
×
8149
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
48✔
8150
      return physiAggNodeToJson(pObj, pJson);
48✔
8151
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
×
8152
      return physiExchangeNodeToJson(pObj, pJson);
×
8153
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
×
8154
      return physiMergeNodeToJson(pObj, pJson);
×
8155
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
×
8156
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
8157
      return physiSortNodeToJson(pObj, pJson);
×
8158
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
5,071✔
8159
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
8160
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
8161
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
8162
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
8163
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
8164
      return physiIntervalNodeToJson(pObj, pJson);
5,071✔
8165
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
542✔
8166
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
8167
      return physiFillNodeToJson(pObj, pJson);
542✔
8168
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
966✔
8169
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
8170
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
8171
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
8172
      return physiSessionWindowNodeToJson(pObj, pJson);
966✔
8173
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
427✔
8174
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
8175
      return physiStateWindowNodeToJson(pObj, pJson);
427✔
8176
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
261✔
8177
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
8178
      return physiEventWindowNodeToJson(pObj, pJson);
261✔
8179
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
366✔
8180
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
8181
      return physiCountWindowNodeToJson(pObj, pJson);
366✔
8182
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
8183
      return physiAnomalyWindowNodeToJson(pObj, pJson);
×
8184
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
×
8185
      return physiPartitionNodeToJson(pObj, pJson);
×
8186
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
1,417✔
8187
      return physiStreamPartitionNodeToJson(pObj, pJson);
1,417✔
8188
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
×
8189
      return physiIndefRowsFuncNodeToJson(pObj, pJson);
×
8190
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
40✔
8191
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
8192
      return physiInterpFuncNodeToJson(pObj, pJson);
40✔
8193
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
8194
      return physiForecastFuncNodeToJson(pObj, pJson);
×
8195
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
×
8196
      return physiDispatchNodeToJson(pObj, pJson);
×
8197
    case QUERY_NODE_PHYSICAL_PLAN_INSERT:
×
8198
      break;
×
8199
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
×
8200
      return physiQueryInsertNodeToJson(pObj, pJson);
×
8201
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
×
8202
      return physiDeleteNodeToJson(pObj, pJson);
×
8203
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
8204
      return physiGroupCacheNodeToJson(pObj, pJson);
×
8205
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
8206
      return physiDynQueryCtrlNodeToJson(pObj, pJson);
×
8207
    case QUERY_NODE_PHYSICAL_SUBPLAN:
12,250✔
8208
      return subplanToJson(pObj, pJson);
12,250✔
8209
    case QUERY_NODE_PHYSICAL_PLAN:
2,002✔
8210
      return planToJson(pObj, pJson);
2,002✔
8211
    default:
×
8212
      break;
×
8213
  }
8214
  nodesWarn("specificNodeToJson unknown node = %s", nodesNodeName(nodeType(pObj)));
×
8215
  return TSDB_CODE_SUCCESS;
×
8216
}
8217

8218
static int32_t jsonToSpecificNode(const SJson* pJson, void* pObj) {
3,669,728✔
8219
  switch (nodeType(pObj)) {
3,669,728!
8220
    case QUERY_NODE_COLUMN:
1,249,591✔
8221
      return jsonToColumnNode(pJson, pObj);
1,249,591✔
8222
    case QUERY_NODE_VALUE:
90,456✔
8223
      return jsonToValueNode(pJson, pObj);
90,456✔
8224
    case QUERY_NODE_OPERATOR:
16,502✔
8225
      return jsonToOperatorNode(pJson, pObj);
16,502✔
8226
    case QUERY_NODE_LOGIC_CONDITION:
6,369✔
8227
      return jsonToLogicConditionNode(pJson, pObj);
6,369✔
8228
    case QUERY_NODE_FUNCTION:
812,465✔
8229
      return jsonToFunctionNode(pJson, pObj);
812,465✔
8230
    case QUERY_NODE_REAL_TABLE:
11,306✔
8231
      return jsonToRealTableNode(pJson, pObj);
11,306✔
8232
    case QUERY_NODE_TEMP_TABLE:
1✔
8233
      return jsonToTempTableNode(pJson, pObj);
1✔
8234
    case QUERY_NODE_JOIN_TABLE:
×
8235
      return jsonToJoinTableNode(pJson, pObj);
×
8236
    case QUERY_NODE_GROUPING_SET:
×
8237
      return jsonToGroupingSetNode(pJson, pObj);
×
8238
    case QUERY_NODE_ORDER_BY_EXPR:
×
8239
      return jsonToOrderByExprNode(pJson, pObj);
×
8240
    case QUERY_NODE_LIMIT:
×
8241
      return jsonToLimitNode(pJson, pObj);
×
8242
    case QUERY_NODE_STATE_WINDOW:
2,090✔
8243
      return jsonToStateWindowNode(pJson, pObj);
2,090✔
8244
    case QUERY_NODE_SESSION_WINDOW:
198✔
8245
      return jsonToSessionWindowNode(pJson, pObj);
198✔
8246
    case QUERY_NODE_INTERVAL_WINDOW:
7,103✔
8247
      return jsonToIntervalWindowNode(pJson, pObj);
7,103✔
8248
    case QUERY_NODE_NODE_LIST:
3,026✔
8249
      return jsonToNodeListNode(pJson, pObj);
3,026✔
8250
    case QUERY_NODE_FILL:
186✔
8251
      return jsonToFillNode(pJson, pObj);
186✔
8252
    case QUERY_NODE_TARGET:
696,356✔
8253
      return jsonToTargetNode(pJson, pObj);
696,356✔
8254
    case QUERY_NODE_DATABLOCK_DESC:
28,209✔
8255
      return jsonToDataBlockDescNode(pJson, pObj);
28,209✔
8256
    case QUERY_NODE_SLOT_DESC:
695,801✔
8257
      return jsonToSlotDescNode(pJson, pObj);
695,801✔
8258
    case QUERY_NODE_COLUMN_DEF:
×
8259
      return jsonToColumnDefNode(pJson, pObj);
×
8260
    case QUERY_NODE_DOWNSTREAM_SOURCE:
×
8261
      return jsonToDownstreamSourceNode(pJson, pObj);
×
8262
    case QUERY_NODE_DATABASE_OPTIONS:
×
8263
      return jsonToDatabaseOptions(pJson, pObj);
×
8264
    case QUERY_NODE_TABLE_OPTIONS:
×
8265
      return jsonToTableOptions(pJson, pObj);
×
8266
    case QUERY_NODE_COLUMN_OPTIONS:
×
8267
      return jsonToColumnOptions(pJson, pObj);
×
8268
    case QUERY_NODE_INDEX_OPTIONS:
×
8269
      return jsonToIndexOptions(pJson, pObj);
×
8270
    case QUERY_NODE_EXPLAIN_OPTIONS:
×
8271
      return jsonToExplainOptions(pJson, pObj);
×
8272
    case QUERY_NODE_STREAM_OPTIONS:
×
8273
      return jsonToStreamOptions(pJson, pObj);
×
8274
    case QUERY_NODE_LEFT_VALUE:
×
8275
      return TSDB_CODE_SUCCESS;  // SLeftValueNode has no fields to deserialize.
×
8276
    case QUERY_NODE_WHEN_THEN:
83✔
8277
      return jsonToWhenThenNode(pJson, pObj);
83✔
8278
    case QUERY_NODE_CASE_WHEN:
83✔
8279
      return jsonToCaseWhenNode(pJson, pObj);
83✔
8280
    case QUERY_NODE_EVENT_WINDOW:
50✔
8281
      return jsonToEventWindowNode(pJson, pObj);
50✔
8282
    case QUERY_NODE_WINDOW_OFFSET:
×
8283
      return jsonToWindowOffsetNode(pJson, pObj);
×
8284
    case QUERY_NODE_COUNT_WINDOW:
76✔
8285
      return jsonToCountWindowNode(pJson, pObj);
76✔
8286
    case QUERY_NODE_ANOMALY_WINDOW:
×
8287
      return jsonToAnomalyWindowNode(pJson, pObj);
×
8288
    case QUERY_NODE_SET_OPERATOR:
×
8289
      return jsonToSetOperator(pJson, pObj);
×
8290
    case QUERY_NODE_SELECT_STMT:
11,307✔
8291
      return jsonToSelectStmt(pJson, pObj);
11,307✔
8292
    case QUERY_NODE_VNODE_MODIFY_STMT:
×
8293
      return jsonToVnodeModifyStmt(pJson, pObj);
×
8294
    case QUERY_NODE_CREATE_DATABASE_STMT:
×
8295
      return jsonToCreateDatabaseStmt(pJson, pObj);
×
8296
    case QUERY_NODE_ALTER_DATABASE_STMT:
×
8297
      return jsonToAlterDatabaseStmt(pJson, pObj);
×
8298
    case QUERY_NODE_TRIM_DATABASE_STMT:
×
8299
      return jsonToTrimDatabaseStmt(pJson, pObj);
×
8300
    case QUERY_NODE_S3MIGRATE_DATABASE_STMT:
×
8301
      return jsonToS3MigrateDatabaseStmt(pJson, pObj);
×
8302
    case QUERY_NODE_CREATE_TABLE_STMT:
×
8303
      return jsonToCreateTableStmt(pJson, pObj);
×
8304
    case QUERY_NODE_CREATE_SUBTABLE_CLAUSE:
×
8305
      return jsonToCreateSubTableClause(pJson, pObj);
×
8306
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
×
8307
      return jsonToCreateMultiTablesStmt(pJson, pObj);
×
8308
    case QUERY_NODE_DROP_TABLE_CLAUSE:
×
8309
      return jsonToDropTableClause(pJson, pObj);
×
8310
    case QUERY_NODE_DROP_TABLE_STMT:
×
8311
      return jsonToDropTableStmt(pJson, pObj);
×
8312
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
×
8313
      return jsonToDropStableStmt(pJson, pObj);
×
8314
    case QUERY_NODE_ALTER_TABLE_STMT:
×
8315
      return jsonToAlterTableStmt(pJson, pObj);
×
8316
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
×
8317
      return jsonToAlterStableStmt(pJson, pObj);
×
8318
    case QUERY_NODE_CREATE_USER_STMT:
×
8319
      return jsonToCreateUserStmt(pJson, pObj);
×
8320
    case QUERY_NODE_ALTER_USER_STMT:
×
8321
      return jsonToAlterUserStmt(pJson, pObj);
×
8322
    case QUERY_NODE_DROP_USER_STMT:
×
8323
      return jsonToDropUserStmt(pJson, pObj);
×
8324
    case QUERY_NODE_USE_DATABASE_STMT:
×
8325
      return jsonToUseDatabaseStmt(pJson, pObj);
×
8326
    case QUERY_NODE_CREATE_DNODE_STMT:
×
8327
      return jsonToCreateDnodeStmt(pJson, pObj);
×
8328
    case QUERY_NODE_DROP_DNODE_STMT:
×
8329
      return jsonToDropDnodeStmt(pJson, pObj);
×
8330
    case QUERY_NODE_ALTER_DNODE_STMT:
×
8331
      return jsonToAlterDnodeStmt(pJson, pObj);
×
8332
    case QUERY_NODE_CREATE_INDEX_STMT:
×
8333
      return jsonToCreateIndexStmt(pJson, pObj);
×
8334
    case QUERY_NODE_DROP_INDEX_STMT:
×
8335
      return jsonToDropIndexStmt(pJson, pObj);
×
8336
    case QUERY_NODE_CREATE_QNODE_STMT:
×
8337
      return jsonToCreateQnodeStmt(pJson, pObj);
×
8338
    case QUERY_NODE_DROP_QNODE_STMT:
×
8339
      return jsonToDropQnodeStmt(pJson, pObj);
×
8340
    case QUERY_NODE_CREATE_SNODE_STMT:
×
8341
      return jsonToCreateSnodeStmt(pJson, pObj);
×
8342
    case QUERY_NODE_DROP_SNODE_STMT:
×
8343
      return jsonToDropSnodeStmt(pJson, pObj);
×
8344
    case QUERY_NODE_CREATE_MNODE_STMT:
×
8345
      return jsonToCreateMnodeStmt(pJson, pObj);
×
8346
    case QUERY_NODE_DROP_MNODE_STMT:
×
8347
      return jsonToDropMnodeStmt(pJson, pObj);
×
8348
    case QUERY_NODE_CREATE_TOPIC_STMT:
×
8349
      return jsonToCreateTopicStmt(pJson, pObj);
×
8350
    case QUERY_NODE_DROP_TOPIC_STMT:
×
8351
      return jsonToDropTopicStmt(pJson, pObj);
×
8352
    case QUERY_NODE_DROP_CGROUP_STMT:
×
8353
      return jsonToDropConsumerGroupStmt(pJson, pObj);
×
8354
    case QUERY_NODE_ALTER_LOCAL_STMT:
×
8355
      return jsonToAlterLocalStmt(pJson, pObj);
×
8356
    case QUERY_NODE_EXPLAIN_STMT:
×
8357
      return jsonToExplainStmt(pJson, pObj);
×
8358
    case QUERY_NODE_DESCRIBE_STMT:
×
8359
      return jsonToDescribeStmt(pJson, pObj);
×
8360
    case QUERY_NODE_COMPACT_DATABASE_STMT:
×
8361
      return jsonToCompactDatabaseStmt(pJson, pObj);
×
8362
    case QUERY_NODE_CREATE_STREAM_STMT:
×
8363
      return jsonToCreateStreamStmt(pJson, pObj);
×
8364
    case QUERY_NODE_DROP_STREAM_STMT:
×
8365
      return jsonToDropStreamStmt(pJson, pObj);
×
8366
    case QUERY_NODE_BALANCE_VGROUP_STMT:
×
8367
      return TSDB_CODE_SUCCESS;  // SBalanceVgroupStmt has no fields to deserialize.
×
8368
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
×
8369
      return TSDB_CODE_SUCCESS;
×
8370
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
×
8371
      return TSDB_CODE_SUCCESS;   // SBalanceVgroupLeaderStmt has no fields to deserialize.
×
8372
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
8373
      return jsonToMergeVgroupStmt(pJson, pObj);
×
8374
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
×
8375
      return jsonToRedistributeVgroupStmt(pJson, pObj);
×
8376
    case QUERY_NODE_SPLIT_VGROUP_STMT:
×
8377
      return jsonToSplitVgroupStmt(pJson, pObj);
×
8378
    case QUERY_NODE_GRANT_STMT:
×
8379
      return jsonToGrantStmt(pJson, pObj);
×
8380
    case QUERY_NODE_REVOKE_STMT:
×
8381
      return jsonToRevokeStmt(pJson, pObj);
×
8382
    case QUERY_NODE_ALTER_CLUSTER_STMT:
×
8383
      return jsonToAlterClusterStmt(pJson, pObj);
×
8384
    case QUERY_NODE_SHOW_DNODES_STMT:
×
8385
      return jsonToShowDnodesStmt(pJson, pObj);
×
8386
    case QUERY_NODE_SHOW_MNODES_STMT:
×
8387
      return jsonToShowMnodesStmt(pJson, pObj);
×
8388
    case QUERY_NODE_SHOW_QNODES_STMT:
×
8389
      return jsonToShowQnodesStmt(pJson, pObj);
×
8390
    case QUERY_NODE_SHOW_ANODES_STMT:
×
8391
      return jsonToShowAnodesStmt(pJson, pObj);
×
8392
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
8393
      return jsonToShowAnodesFullStmt(pJson, pObj);
×
8394
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
8395
      return jsonToShowArbGroupsStmt(pJson, pObj);
×
8396
    case QUERY_NODE_SHOW_CLUSTER_STMT:
×
8397
      return jsonToShowClusterStmt(pJson, pObj);
×
8398
    case QUERY_NODE_SHOW_DATABASES_STMT:
×
8399
      return jsonToShowDatabasesStmt(pJson, pObj);
×
8400
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
×
8401
      return jsonToShowFunctionsStmt(pJson, pObj);
×
8402
    case QUERY_NODE_SHOW_INDEXES_STMT:
×
8403
      return jsonToShowIndexesStmt(pJson, pObj);
×
8404
    case QUERY_NODE_SHOW_STABLES_STMT:
×
8405
      return jsonToShowStablesStmt(pJson, pObj);
×
8406
    case QUERY_NODE_SHOW_STREAMS_STMT:
×
8407
      return jsonToShowStreamsStmt(pJson, pObj);
×
8408
    case QUERY_NODE_SHOW_TABLES_STMT:
×
8409
      return jsonToShowTablesStmt(pJson, pObj);
×
8410
    case QUERY_NODE_SHOW_TAGS_STMT:
×
8411
      return jsonToShowTagsStmt(pJson, pObj);
×
8412
    case QUERY_NODE_SHOW_USERS_STMT:
×
8413
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
8414
      return jsonToShowUsersStmt(pJson, pObj);
×
8415
    case QUERY_NODE_SHOW_VGROUPS_STMT:
×
8416
      return jsonToShowVgroupsStmt(pJson, pObj);
×
8417
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
×
8418
      return jsonToShowConsumersStmt(pJson, pObj);
×
8419
    case QUERY_NODE_SHOW_VARIABLES_STMT:
×
8420
      return jsonToShowVariablesStmt(pJson, pObj);
×
8421
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
×
8422
      return jsonToShowGrantsFullStmt(pJson, pObj);
×
8423
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
×
8424
      return jsonToShowGrantsLogsStmt(pJson, pObj);
×
8425
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
×
8426
      return jsonToShowClusterMachinesStmt(pJson, pObj);
×
8427
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
8428
      return jsonToShowEncryptionsStmt(pJson, pObj);
×
8429
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
×
8430
      return jsonToShowDnodeVariablesStmt(pJson, pObj);
×
8431
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
×
8432
      return jsonToShowTransactionsStmt(pJson, pObj);
×
8433
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
×
8434
      return jsonToShowSubscriptionsStmt(pJson, pObj);
×
8435
    case QUERY_NODE_SHOW_VNODES_STMT:
×
8436
      return jsonToShowVnodesStmt(pJson, pObj);
×
8437
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
×
8438
      return jsonToShowUserPrivilegesStmt(pJson, pObj);
×
8439
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
×
8440
      return jsonToShowCreateDatabaseStmt(pJson, pObj);
×
8441
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
×
8442
      return jsonToShowCreateTableStmt(pJson, pObj);
×
8443
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
×
8444
      return jsonToShowCreateStableStmt(pJson, pObj);
×
8445
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
8446
      return jsonToShowCreateViewStmt(pJson, pObj);
×
8447
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
×
8448
      return jsonToShowTableDistributedStmt(pJson, pObj);
×
8449
    case QUERY_NODE_SHOW_LOCAL_VARIABLES_STMT:
×
8450
      return jsonToShowLocalVariablesStmt(pJson, pObj);
×
8451
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
×
8452
      return jsonToShowTableTagsStmt(pJson, pObj);
×
8453
    case QUERY_NODE_DELETE_STMT:
×
8454
      return jsonToDeleteStmt(pJson, pObj);
×
8455
    case QUERY_NODE_INSERT_STMT:
×
8456
      return jsonToInsertStmt(pJson, pObj);
×
8457
    case QUERY_NODE_RESTORE_DNODE_STMT:
×
8458
      return jsonToRestoreDnodeStmt(pJson, pObj);
×
8459
    case QUERY_NODE_RESTORE_QNODE_STMT:
×
8460
      return jsonToRestoreQnodeStmt(pJson, pObj);
×
8461
    case QUERY_NODE_RESTORE_MNODE_STMT:
×
8462
      return jsonToRestoreMnodeStmt(pJson, pObj);
×
8463
    case QUERY_NODE_RESTORE_VNODE_STMT:
×
8464
      return jsonToRestoreVnodeStmt(pJson, pObj);
×
8465
    case QUERY_NODE_LOGIC_PLAN_SCAN:
×
8466
      return jsonToLogicScanNode(pJson, pObj);
×
8467
    case QUERY_NODE_LOGIC_PLAN_JOIN:
×
8468
      return jsonToLogicJoinNode(pJson, pObj);
×
8469
    case QUERY_NODE_LOGIC_PLAN_AGG:
×
8470
      return jsonToLogicAggNode(pJson, pObj);
×
8471
    case QUERY_NODE_LOGIC_PLAN_PROJECT:
×
8472
      return jsonToLogicProjectNode(pJson, pObj);
×
8473
    case QUERY_NODE_LOGIC_PLAN_VNODE_MODIFY:
×
8474
      return jsonToLogicVnodeModifyNode(pJson, pObj);
×
8475
    case QUERY_NODE_LOGIC_PLAN_EXCHANGE:
×
8476
      return jsonToLogicExchangeNode(pJson, pObj);
×
8477
    case QUERY_NODE_LOGIC_PLAN_MERGE:
×
8478
      return jsonToLogicMergeNode(pJson, pObj);
×
8479
    case QUERY_NODE_LOGIC_PLAN_WINDOW:
×
8480
      return jsonToLogicWindowNode(pJson, pObj);
×
8481
    case QUERY_NODE_LOGIC_PLAN_FILL:
×
8482
      return jsonToLogicFillNode(pJson, pObj);
×
8483
    case QUERY_NODE_LOGIC_PLAN_SORT:
×
8484
      return jsonToLogicSortNode(pJson, pObj);
×
8485
    case QUERY_NODE_LOGIC_PLAN_PARTITION:
×
8486
      return jsonToLogicPartitionNode(pJson, pObj);
×
8487
    case QUERY_NODE_LOGIC_PLAN_INDEF_ROWS_FUNC:
×
8488
      return jsonToLogicIndefRowsFuncNode(pJson, pObj);
×
8489
    case QUERY_NODE_LOGIC_PLAN_INTERP_FUNC:
×
8490
      return jsonToLogicInterpFuncNode(pJson, pObj);
×
8491
    case QUERY_NODE_LOGIC_PLAN_FORECAST_FUNC:
×
8492
      return jsonToLogicForecastFuncNode(pJson, pObj);
×
8493
    case QUERY_NODE_LOGIC_PLAN_GROUP_CACHE:
×
8494
      return jsonToLogicGroupCacheNode(pJson, pObj);
×
8495
    case QUERY_NODE_LOGIC_PLAN_DYN_QUERY_CTRL:
×
8496
      return jsonToLogicDynQueryCtrlNode(pJson, pObj);
×
8497
    case QUERY_NODE_LOGIC_SUBPLAN:
×
8498
      return jsonToLogicSubplan(pJson, pObj);
×
8499
    case QUERY_NODE_LOGIC_PLAN:
×
8500
      return jsonToLogicPlan(pJson, pObj);
×
8501
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
3✔
8502
      return jsonToPhysiTagScanNode(pJson, pObj);
3✔
8503
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
×
8504
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
8505
      return jsonToPhysiScanNode(pJson, pObj);
×
8506
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
×
8507
      return jsonToPhysiLastRowScanNode(pJson, pObj);
×
8508
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
11,860✔
8509
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
8510
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
8511
      return jsonToPhysiTableScanNode(pJson, pObj);
11,860✔
8512
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
×
8513
      return jsonToPhysiSysTableScanNode(pJson, pObj);
×
8514
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
7,044✔
8515
      return jsonToPhysiProjectNode(pJson, pObj);
7,044✔
8516
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
×
8517
      return jsonToPhysiMergeJoinNode(pJson, pObj);
×
8518
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
8519
      return jsonToPhysiHashJoinNode(pJson, pObj);
×
8520
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
33✔
8521
      return jsonToPhysiAggNode(pJson, pObj);
33✔
8522
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
×
8523
      return jsonToPhysiExchangeNode(pJson, pObj);
×
8524
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
×
8525
      return jsonToPhysiMergeNode(pJson, pObj);
×
8526
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
×
8527
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
8528
      return jsonToPhysiSortNode(pJson, pObj);
×
8529
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
5,236✔
8530
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
8531
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
8532
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
8533
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
8534
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
8535
      return jsonToPhysiIntervalNode(pJson, pObj);
5,236✔
8536
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
542✔
8537
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
8538
      return jsonToPhysiFillNode(pJson, pObj);
542✔
8539
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
965✔
8540
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
8541
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
8542
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
8543
      return jsonToPhysiSessionWindowNode(pJson, pObj);
965✔
8544
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
427✔
8545
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
8546
      return jsonToPhysiStateWindowNode(pJson, pObj);
427✔
8547
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
261✔
8548
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
8549
      return jsonToPhysiEventWindowNode(pJson, pObj);
261✔
8550
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
384✔
8551
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
8552
      return jsonToPhysiCountWindowNode(pJson, pObj);
384✔
8553
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
8554
      return jsonToPhysiAnomalyWindowNode(pJson, pObj);
×
8555
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
×
8556
      return jsonToPhysiPartitionNode(pJson, pObj);
×
8557
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
1,414✔
8558
      return jsonToPhysiStreamPartitionNode(pJson, pObj);
1,414✔
8559
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
×
8560
      return jsonToPhysiIndefRowsFuncNode(pJson, pObj);
×
8561
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
40✔
8562
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
8563
      return jsonToPhysiInterpFuncNode(pJson, pObj);
40✔
8564
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
8565
      return jsonToPhysiForecastFuncNode(pJson, pObj);
×
8566
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
×
8567
      return jsonToPhysiDispatchNode(pJson, pObj);
×
8568
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
×
8569
      return jsonToPhysiQueryInsertNode(pJson, pObj);
×
8570
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
×
8571
      return jsonToPhysiDeleteNode(pJson, pObj);
×
8572
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
8573
      return jsonToPhysiGroupCacheNode(pJson, pObj);
×
8574
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
8575
      return jsonToPhysiDynQueryCtrlNode(pJson, pObj);
×
8576
    case QUERY_NODE_PHYSICAL_SUBPLAN:
11,862✔
8577
      return jsonToSubplan(pJson, pObj);
11,862✔
8578
    case QUERY_NODE_PHYSICAL_PLAN:
1,993✔
8579
      return jsonToPlan(pJson, pObj);
1,993✔
8580
    default:
×
8581
      break;
×
8582
  }
8583
  nodesWarn("jsonToSpecificNode unknown node = %s", nodesNodeName(nodeType(pObj)));
×
8584
  return TSDB_CODE_SUCCESS;
×
8585
}
8586

8587
static const char* jkNodeType = "NodeType";
8588
static const char* jkNodeName = "Name";
8589

8590
static int32_t nodeToJson(const void* pObj, SJson* pJson) {
2,741,995✔
8591
  const SNode* pNode = (const SNode*)pObj;
2,741,995✔
8592

8593
  int32_t code = tjsonAddIntegerToObject(pJson, jkNodeType, pNode->type);
2,741,995✔
8594
  if (TSDB_CODE_SUCCESS == code) {
2,741,995!
8595
    code = tjsonAddStringToObject(pJson, jkNodeName, nodesNodeName(pNode->type));
2,741,995✔
8596
  }
8597
  if (TSDB_CODE_SUCCESS == code) {
2,741,995!
8598
    code = tjsonAddObject(pJson, nodesNodeName(pNode->type), specificNodeToJson, pNode);
2,741,995✔
8599
    if (TSDB_CODE_SUCCESS != code) {
2,741,995!
8600
      nodesError("%s ToJson error", nodesNodeName(pNode->type));
×
8601
    }
8602
  }
8603

8604
  return code;
2,741,995✔
8605
}
8606

8607
static int32_t jsonToNode(const SJson* pJson, void* pObj) {
3,670,141✔
8608
  SNode* pNode = (SNode*)pObj;
3,670,141✔
8609

8610
  int32_t code;
8611
  tjsonGetNumberValue(pJson, jkNodeType, pNode->type, code);
3,670,141✔
8612
  if (TSDB_CODE_SUCCESS == code) {
3,670,028✔
8613
    code = tjsonToObject(pJson, nodesNodeName(pNode->type), jsonToSpecificNode, pNode);
3,670,027✔
8614
    if (TSDB_CODE_SUCCESS != code) {
3,669,173!
8615
      nodesError("%s toNode error", nodesNodeName(pNode->type));
×
8616
    }
8617
  }
8618

8619
  return code;
3,669,191✔
8620
}
8621

8622
static int32_t makeNodeByJson(const SJson* pJson, SNode** pNode) {
3,667,564✔
8623
  int32_t val = 0;
3,667,564✔
8624
  int32_t code = tjsonGetIntValue(pJson, jkNodeType, &val);
3,667,564✔
8625
  if (TSDB_CODE_SUCCESS == code) {
3,669,231!
8626
    code = nodesMakeNode(val, pNode);
3,669,243✔
8627
    if (NULL == *pNode) {
3,670,244!
8628
      return code;
×
8629
    }
8630
    code = jsonToNode(pJson, *pNode);
3,670,244✔
8631
  }
8632

8633
  return code;
3,669,185✔
8634
}
8635

8636
static int32_t jsonToNodeObject(const SJson* pJson, const char* pName, SNode** pNode) {
1,061,760✔
8637
  SJson* pJsonNode = tjsonGetObjectItem(pJson, pName);
1,061,760✔
8638
  if (NULL == pJsonNode) {
1,061,245✔
8639
    return TSDB_CODE_SUCCESS;
225,618✔
8640
  }
8641
  return makeNodeByJson(pJsonNode, pNode);
835,627✔
8642
}
8643

8644
int32_t nodesNodeToString(const SNode* pNode, bool format, char** pStr, int32_t* pLen) {
13,376✔
8645
  if (NULL == pNode || NULL == pStr) {
13,376!
8646
    terrno = TSDB_CODE_FAILED;
×
8647
    return TSDB_CODE_FAILED;
×
8648
  }
8649

8650
  SJson* pJson = tjsonCreateObject();
13,376✔
8651
  if (NULL == pJson) {
13,376!
8652
    return terrno;
×
8653
  }
8654

8655
  int32_t code = nodeToJson(pNode, pJson);
13,376✔
8656
  if (TSDB_CODE_SUCCESS != code) {
13,376!
8657
    terrno = code;
×
8658
    return code;
×
8659
  }
8660

8661
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
13,376!
8662
  tjsonDelete(pJson);
13,376✔
8663

8664
  if (NULL != pLen) {
13,376✔
8665
    *pLen = strlen(*pStr) + 1;
10,189✔
8666
  }
8667

8668
  return TSDB_CODE_SUCCESS;
13,376✔
8669
}
8670

8671
int32_t nodesStringToNode(const char* pStr, SNode** pNode) {
22,849✔
8672
  if (NULL == pStr || NULL == pNode) {
22,849!
8673
    return TSDB_CODE_SUCCESS;
×
8674
  }
8675
  SJson* pJson = tjsonParse(pStr);
22,849✔
8676
  if (NULL == pJson) {
22,851!
8677
    return TSDB_CODE_FAILED;
×
8678
  }
8679
  int32_t code = makeNodeByJson(pJson, pNode);
22,851✔
8680
  tjsonDelete(pJson);
22,851✔
8681
  if (TSDB_CODE_SUCCESS != code) {
22,850!
8682
    nodesDestroyNode(*pNode);
×
8683
    *pNode = NULL;
×
8684
    terrno = code;
×
8685
    return code;
×
8686
  }
8687
  return TSDB_CODE_SUCCESS;
22,850✔
8688
}
8689

8690
int32_t nodesListToString(const SNodeList* pList, bool format, char** pStr, int32_t* pLen) {
274✔
8691
  if (NULL == pList || NULL == pStr || NULL == pLen) {
274!
8692
    terrno = TSDB_CODE_FAILED;
×
8693
    return TSDB_CODE_FAILED;
×
8694
  }
8695

8696
  if (0 == LIST_LENGTH(pList)) {
274!
8697
    return TSDB_CODE_SUCCESS;
×
8698
  }
8699

8700
  SJson* pJson = tjsonCreateArray();
274✔
8701
  if (NULL == pJson) {
274!
8702
    return terrno;
×
8703
  }
8704

8705
  SNode* pNode;
8706
  FOREACH(pNode, pList) {
34,667!
8707
    int32_t code = tjsonAddItem(pJson, nodeToJson, pNode);
34,393✔
8708
    if (TSDB_CODE_SUCCESS != code) {
34,393!
8709
      terrno = code;
×
8710
      return code;
×
8711
    }
8712
  }
8713

8714
  *pStr = format ? tjsonToString(pJson) : tjsonToUnformattedString(pJson);
274!
8715
  tjsonDelete(pJson);
274✔
8716

8717
  *pLen = strlen(*pStr) + 1;
274✔
8718
  return TSDB_CODE_SUCCESS;
274✔
8719
}
8720

8721
int32_t nodesStringToList(const char* pStr, SNodeList** pList) {
259✔
8722
  if (NULL == pStr || NULL == pList) {
259!
8723
    return TSDB_CODE_SUCCESS;
×
8724
  }
8725
  SJson* pJson = tjsonParse(pStr);
259✔
8726
  if (NULL == pJson) {
259!
8727
    return TSDB_CODE_FAILED;
×
8728
  }
8729
  int32_t code = jsonToNodeListImpl(pJson, pList);
259✔
8730
  tjsonDelete(pJson);
259✔
8731
  if (TSDB_CODE_SUCCESS != code) {
259!
8732
    nodesDestroyList(*pList);
×
8733
    *pList = NULL;
×
8734
    terrno = code;
×
8735
    return code;
×
8736
  }
8737
  return TSDB_CODE_SUCCESS;
259✔
8738
}
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